From bfdc1f6d2af1cdc56311050a11a57ecdc2aef612 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20P=C4=99kalski?= Date: Sat, 29 Aug 2020 04:36:58 +0200 Subject: [PATCH] Close #12430: Refactor OBJ_STRING_ID to use strong enum (#12796) --- src/openrct2/object/BannerObject.cpp | 2 +- src/openrct2/object/EntranceObject.cpp | 2 +- src/openrct2/object/FootpathItemObject.cpp | 2 +- src/openrct2/object/FootpathObject.cpp | 2 +- src/openrct2/object/LargeSceneryObject.cpp | 2 +- src/openrct2/object/Object.cpp | 10 ++++---- src/openrct2/object/Object.h | 4 ++-- src/openrct2/object/ObjectJsonHelpers.cpp | 14 +++++------ src/openrct2/object/RideObject.cpp | 10 ++++---- src/openrct2/object/SceneryGroupObject.cpp | 2 +- src/openrct2/object/SmallSceneryObject.cpp | 2 +- src/openrct2/object/StringTable.cpp | 8 +++---- src/openrct2/object/StringTable.h | 28 +++++++++++----------- src/openrct2/object/WallObject.cpp | 2 +- src/openrct2/object/WaterObject.cpp | 2 +- 15 files changed, 46 insertions(+), 46 deletions(-) diff --git a/src/openrct2/object/BannerObject.cpp b/src/openrct2/object/BannerObject.cpp index 8290694441..70f0a6ae54 100644 --- a/src/openrct2/object/BannerObject.cpp +++ b/src/openrct2/object/BannerObject.cpp @@ -26,7 +26,7 @@ void BannerObject::ReadLegacy(IReadObjectContext* context, OpenRCT2::IStream* st _legacyType.banner.scenery_tab_id = OBJECT_ENTRY_INDEX_NULL; stream->Seek(2, OpenRCT2::STREAM_SEEK_CURRENT); - GetStringTable().Read(context, stream, OBJ_STRING_ID_NAME); + GetStringTable().Read(context, stream, ObjectStringID::NAME); rct_object_entry sgEntry = stream->ReadValue(); SetPrimarySceneryGroup(&sgEntry); diff --git a/src/openrct2/object/EntranceObject.cpp b/src/openrct2/object/EntranceObject.cpp index c5c82244e6..be979fdcd5 100644 --- a/src/openrct2/object/EntranceObject.cpp +++ b/src/openrct2/object/EntranceObject.cpp @@ -21,7 +21,7 @@ void EntranceObject::ReadLegacy(IReadObjectContext* context, OpenRCT2::IStream* _legacyType.scrolling_mode = stream->ReadValue(); _legacyType.text_height = stream->ReadValue(); - GetStringTable().Read(context, stream, OBJ_STRING_ID_NAME); + GetStringTable().Read(context, stream, ObjectStringID::NAME); GetImageTable().Read(context, stream); } diff --git a/src/openrct2/object/FootpathItemObject.cpp b/src/openrct2/object/FootpathItemObject.cpp index 65dc72ac0e..8c9fb14e6d 100644 --- a/src/openrct2/object/FootpathItemObject.cpp +++ b/src/openrct2/object/FootpathItemObject.cpp @@ -30,7 +30,7 @@ void FootpathItemObject::ReadLegacy(IReadObjectContext* context, OpenRCT2::IStre _legacyType.path_bit.scenery_tab_id = OBJECT_ENTRY_INDEX_NULL; stream->Seek(2, OpenRCT2::STREAM_SEEK_CURRENT); - GetStringTable().Read(context, stream, OBJ_STRING_ID_NAME); + GetStringTable().Read(context, stream, ObjectStringID::NAME); rct_object_entry sgEntry = stream->ReadValue(); SetPrimarySceneryGroup(&sgEntry); diff --git a/src/openrct2/object/FootpathObject.cpp b/src/openrct2/object/FootpathObject.cpp index 8cc976e4ad..4356a9ceb1 100644 --- a/src/openrct2/object/FootpathObject.cpp +++ b/src/openrct2/object/FootpathObject.cpp @@ -23,7 +23,7 @@ void FootpathObject::ReadLegacy(IReadObjectContext* context, OpenRCT2::IStream* _legacyType.scrolling_mode = stream->ReadValue(); stream->Seek(1, OpenRCT2::STREAM_SEEK_CURRENT); - GetStringTable().Read(context, stream, OBJ_STRING_ID_NAME); + GetStringTable().Read(context, stream, ObjectStringID::NAME); GetImageTable().Read(context, stream); // Validate properties diff --git a/src/openrct2/object/LargeSceneryObject.cpp b/src/openrct2/object/LargeSceneryObject.cpp index f1d11978dd..3358d79f7c 100644 --- a/src/openrct2/object/LargeSceneryObject.cpp +++ b/src/openrct2/object/LargeSceneryObject.cpp @@ -35,7 +35,7 @@ void LargeSceneryObject::ReadLegacy(IReadObjectContext* context, OpenRCT2::IStre _legacyType.large_scenery.scrolling_mode = stream->ReadValue(); stream->Seek(4, OpenRCT2::STREAM_SEEK_CURRENT); - GetStringTable().Read(context, stream, OBJ_STRING_ID_NAME); + GetStringTable().Read(context, stream, ObjectStringID::NAME); rct_object_entry sgEntry = stream->ReadValue(); SetPrimarySceneryGroup(&sgEntry); diff --git a/src/openrct2/object/Object.cpp b/src/openrct2/object/Object.cpp index 15b12c6b16..7d57fc80e5 100644 --- a/src/openrct2/object/Object.cpp +++ b/src/openrct2/object/Object.cpp @@ -51,9 +51,9 @@ std::string Object::GetOverrideString(uint8_t index) const return String::ToStd(result); } -std::string Object::GetString(uint8_t index) const +std::string Object::GetString(ObjectStringID index) const { - auto sz = GetOverrideString(index); + auto sz = GetOverrideString(static_cast(index)); if (sz.empty()) { sz = GetStringTable().GetString(index); @@ -61,7 +61,7 @@ std::string Object::GetString(uint8_t index) const return sz; } -std::string Object::GetString(int32_t language, uint8_t index) const +std::string Object::GetString(int32_t language, ObjectStringID index) const { return GetStringTable().GetString(language, index); } @@ -102,12 +102,12 @@ void Object::SetSourceGames(const std::vector& sourceGames) std::string Object::GetName() const { - return GetString(OBJ_STRING_ID_NAME); + return GetString(ObjectStringID::NAME); } std::string Object::GetName(int32_t language) const { - return GetString(language, OBJ_STRING_ID_NAME); + return GetString(language, ObjectStringID::NAME); } void rct_object_entry::SetName(const std::string_view& value) diff --git a/src/openrct2/object/Object.h b/src/openrct2/object/Object.h index 714d72f0d6..f7db713dcb 100644 --- a/src/openrct2/object/Object.h +++ b/src/openrct2/object/Object.h @@ -187,8 +187,8 @@ protected: } std::string GetOverrideString(uint8_t index) const; - std::string GetString(uint8_t index) const; - std::string GetString(int32_t language, uint8_t index) const; + std::string GetString(ObjectStringID index) const; + std::string GetString(int32_t language, ObjectStringID index) const; public: explicit Object(const rct_object_entry& entry); diff --git a/src/openrct2/object/ObjectJsonHelpers.cpp b/src/openrct2/object/ObjectJsonHelpers.cpp index 433bd379bf..57867cf17d 100644 --- a/src/openrct2/object/ObjectJsonHelpers.cpp +++ b/src/openrct2/object/ObjectJsonHelpers.cpp @@ -459,17 +459,17 @@ namespace ObjectJsonHelpers return result; } - static uint8_t ParseStringId(const std::string& s) + static ObjectStringID ParseStringId(const std::string& s) { if (s == "name") - return OBJ_STRING_ID_NAME; + return ObjectStringID::NAME; if (s == "description") - return OBJ_STRING_ID_DESCRIPTION; + return ObjectStringID::DESCRIPTION; if (s == "capacity") - return OBJ_STRING_ID_CAPACITY; + return ObjectStringID::CAPACITY; if (s == "vehicleName") - return OBJ_STRING_ID_VEHICLE_NAME; - return OBJ_STRING_ID_UNKNOWN; + return ObjectStringID::VEHICLE_NAME; + return ObjectStringID::UNKNOWN; } void LoadStrings(const json_t* root, StringTable& stringTable) @@ -480,7 +480,7 @@ namespace ObjectJsonHelpers json_object_foreach(jsonStrings, key, jlanguages) { auto stringId = ParseStringId(key); - if (stringId != OBJ_STRING_ID_UNKNOWN) + if (stringId != ObjectStringID::UNKNOWN) { const char* locale; json_t* jstring; diff --git a/src/openrct2/object/RideObject.cpp b/src/openrct2/object/RideObject.cpp index 00b0e83d67..3e2e7cac68 100644 --- a/src/openrct2/object/RideObject.cpp +++ b/src/openrct2/object/RideObject.cpp @@ -86,9 +86,9 @@ void RideObject::ReadLegacy(IReadObjectContext* context, IStream* stream) _legacyType.shop_item[0] = stream->ReadValue(); _legacyType.shop_item[1] = stream->ReadValue(); - GetStringTable().Read(context, stream, OBJ_STRING_ID_NAME); - GetStringTable().Read(context, stream, OBJ_STRING_ID_DESCRIPTION); - GetStringTable().Read(context, stream, OBJ_STRING_ID_CAPACITY); + GetStringTable().Read(context, stream, ObjectStringID::NAME); + GetStringTable().Read(context, stream, ObjectStringID::DESCRIPTION); + GetStringTable().Read(context, stream, ObjectStringID::CAPACITY); // Read preset colours, by default there are 32 _presetColours.count = stream->ReadValue(); @@ -393,12 +393,12 @@ void RideObject::DrawPreview(rct_drawpixelinfo* dpi, [[maybe_unused]] int32_t wi std::string RideObject::GetDescription() const { - return GetString(OBJ_STRING_ID_DESCRIPTION); + return GetString(ObjectStringID::DESCRIPTION); } std::string RideObject::GetCapacity() const { - return GetString(OBJ_STRING_ID_CAPACITY); + return GetString(ObjectStringID::CAPACITY); } void RideObject::SetRepositoryItem(ObjectRepositoryItem* item) const diff --git a/src/openrct2/object/SceneryGroupObject.cpp b/src/openrct2/object/SceneryGroupObject.cpp index 4119a36552..234c84727c 100644 --- a/src/openrct2/object/SceneryGroupObject.cpp +++ b/src/openrct2/object/SceneryGroupObject.cpp @@ -36,7 +36,7 @@ void SceneryGroupObject::ReadLegacy(IReadObjectContext* context, IStream* stream stream->Seek(1, STREAM_SEEK_CURRENT); // pad_109; _legacyType.entertainer_costumes = stream->ReadValue(); - GetStringTable().Read(context, stream, OBJ_STRING_ID_NAME); + GetStringTable().Read(context, stream, ObjectStringID::NAME); _items = ReadItems(stream); GetImageTable().Read(context, stream); } diff --git a/src/openrct2/object/SmallSceneryObject.cpp b/src/openrct2/object/SmallSceneryObject.cpp index dd604428a3..d2d89c75c9 100644 --- a/src/openrct2/object/SmallSceneryObject.cpp +++ b/src/openrct2/object/SmallSceneryObject.cpp @@ -37,7 +37,7 @@ void SmallSceneryObject::ReadLegacy(IReadObjectContext* context, OpenRCT2::IStre _legacyType.small_scenery.num_frames = stream->ReadValue(); _legacyType.small_scenery.scenery_tab_id = OBJECT_ENTRY_INDEX_NULL; - GetStringTable().Read(context, stream, OBJ_STRING_ID_NAME); + GetStringTable().Read(context, stream, ObjectStringID::NAME); rct_object_entry sgEntry = stream->ReadValue(); SetPrimarySceneryGroup(&sgEntry); diff --git a/src/openrct2/object/StringTable.cpp b/src/openrct2/object/StringTable.cpp index b51e4f3d92..02eb7abc90 100644 --- a/src/openrct2/object/StringTable.cpp +++ b/src/openrct2/object/StringTable.cpp @@ -47,7 +47,7 @@ static bool StringIsBlank(const utf8* str) return true; } -void StringTable::Read(IReadObjectContext* context, OpenRCT2::IStream* stream, uint8_t id) +void StringTable::Read(IReadObjectContext* context, OpenRCT2::IStream* stream, ObjectStringID id) { try { @@ -78,7 +78,7 @@ void StringTable::Read(IReadObjectContext* context, OpenRCT2::IStream* stream, u Sort(); } -std::string StringTable::GetString(uint8_t id) const +std::string StringTable::GetString(ObjectStringID id) const { for (auto& string : _strings) { @@ -90,7 +90,7 @@ std::string StringTable::GetString(uint8_t id) const return std::string(); } -std::string StringTable::GetString(uint8_t language, uint8_t id) const +std::string StringTable::GetString(uint8_t language, ObjectStringID id) const { for (auto& string : _strings) { @@ -102,7 +102,7 @@ std::string StringTable::GetString(uint8_t language, uint8_t id) const return std::string(); } -void StringTable::SetString(uint8_t id, uint8_t language, const std::string& text) +void StringTable::SetString(ObjectStringID id, uint8_t language, const std::string& text) { StringTableEntry entry; entry.Id = id; diff --git a/src/openrct2/object/StringTable.h b/src/openrct2/object/StringTable.h index a4f5fdac9e..a6f4a2b124 100644 --- a/src/openrct2/object/StringTable.h +++ b/src/openrct2/object/StringTable.h @@ -21,21 +21,21 @@ namespace OpenRCT2 struct IStream; } -enum OBJ_STRING_ID : uint8_t +enum class ObjectStringID : uint8_t { - OBJ_STRING_ID_UNKNOWN = 255, - OBJ_STRING_ID_NAME = 0, - OBJ_STRING_ID_DESCRIPTION, - OBJ_STRING_ID_SCENARIO_NAME = 0, - OBJ_STRING_ID_PARK_NAME = 1, - OBJ_STRING_ID_SCENARIO_DETAILS = 2, - OBJ_STRING_ID_CAPACITY = 2, - OBJ_STRING_ID_VEHICLE_NAME = 3, + UNKNOWN = 255, + NAME = 0, + DESCRIPTION, + SCENARIO_NAME = 0, + PARK_NAME = 1, + SCENARIO_DETAILS = 2, + CAPACITY = 2, + VEHICLE_NAME = 3, }; struct StringTableEntry { - uint8_t Id = OBJ_STRING_ID_UNKNOWN; + ObjectStringID Id = ObjectStringID::UNKNOWN; uint8_t LanguageId = LANGUAGE_UNDEFINED; std::string Text; }; @@ -50,9 +50,9 @@ public: StringTable(const StringTable&) = delete; StringTable& operator=(const StringTable&) = delete; - void Read(IReadObjectContext* context, OpenRCT2::IStream* stream, uint8_t id); + void Read(IReadObjectContext* context, OpenRCT2::IStream* stream, ObjectStringID id); void Sort(); - std::string GetString(uint8_t id) const; - std::string GetString(uint8_t language, uint8_t id) const; - void SetString(uint8_t id, uint8_t language, const std::string& text); + std::string GetString(ObjectStringID id) const; + std::string GetString(uint8_t language, ObjectStringID id) const; + void SetString(ObjectStringID id, uint8_t language, const std::string& text); }; diff --git a/src/openrct2/object/WallObject.cpp b/src/openrct2/object/WallObject.cpp index 3d13eee584..806c27b789 100644 --- a/src/openrct2/object/WallObject.cpp +++ b/src/openrct2/object/WallObject.cpp @@ -29,7 +29,7 @@ void WallObject::ReadLegacy(IReadObjectContext* context, OpenRCT2::IStream* stre stream->Seek(1, OpenRCT2::STREAM_SEEK_CURRENT); _legacyType.wall.scrolling_mode = stream->ReadValue(); - GetStringTable().Read(context, stream, OBJ_STRING_ID_NAME); + GetStringTable().Read(context, stream, ObjectStringID::NAME); rct_object_entry sgEntry = stream->ReadValue(); SetPrimarySceneryGroup(&sgEntry); diff --git a/src/openrct2/object/WaterObject.cpp b/src/openrct2/object/WaterObject.cpp index 926a02a9d9..9925372db0 100644 --- a/src/openrct2/object/WaterObject.cpp +++ b/src/openrct2/object/WaterObject.cpp @@ -25,7 +25,7 @@ void WaterObject::ReadLegacy(IReadObjectContext* context, OpenRCT2::IStream* str stream->Seek(14, OpenRCT2::STREAM_SEEK_CURRENT); _legacyType.flags = stream->ReadValue(); - GetStringTable().Read(context, stream, OBJ_STRING_ID_NAME); + GetStringTable().Read(context, stream, ObjectStringID::NAME); GetImageTable().Read(context, stream); }