From f8ea776dba906ff1f4e5a2ad090a15bf243a7f1c Mon Sep 17 00:00:00 2001 From: Aaron van Geffen Date: Wed, 30 Oct 2024 21:34:37 +0100 Subject: [PATCH] Rework AppendRequiredObjects to take a std::string_view instead --- src/openrct2/park/ParkFile.cpp | 2 +- src/openrct2/rct1/S4Importer.cpp | 13 +++++++------ src/openrct2/rct12/EntryList.h | 5 ++--- src/openrct2/rct12/RCT12.cpp | 2 +- src/openrct2/rct12/RCT12.h | 2 +- src/openrct2/rct2/S6Importer.cpp | 10 ++++++---- src/openrct2/scenario/ScenarioSources.cpp | 6 +++--- src/openrct2/scenario/ScenarioSources.h | 2 +- 8 files changed, 22 insertions(+), 20 deletions(-) diff --git a/src/openrct2/park/ParkFile.cpp b/src/openrct2/park/ParkFile.cpp index 47b5b92280..cf2c503ec6 100644 --- a/src/openrct2/park/ParkFile.cpp +++ b/src/openrct2/park/ParkFile.cpp @@ -380,7 +380,7 @@ namespace OpenRCT2 if (version < kPeepNamesObjectsVersion) { AppendRequiredObjects( - requiredObjects, ObjectType::PeepNames, std::vector({ "rct2.peep_names.original" })); + requiredObjects, ObjectType::PeepNames, std::vector({ "rct2.peep_names.original" })); } RequiredObjects = std::move(requiredObjects); diff --git a/src/openrct2/rct1/S4Importer.cpp b/src/openrct2/rct1/S4Importer.cpp index 993599ddc4..c7058a5277 100644 --- a/src/openrct2/rct1/S4Importer.cpp +++ b/src/openrct2/rct1/S4Importer.cpp @@ -260,7 +260,7 @@ namespace OpenRCT2::RCT1 String::Set(dst->InternalName, sizeof(dst->InternalName), desc.title); - if (desc.textObjectId != nullptr) + if (!desc.textObjectId.empty()) { auto& objManager = GetContext()->GetObjectManager(); @@ -1514,13 +1514,14 @@ namespace OpenRCT2::RCT1 AppendRequiredObjects(result, ObjectType::PathAdditions, _pathAdditionEntries); AppendRequiredObjects(result, ObjectType::SceneryGroup, _sceneryGroupEntries); AppendRequiredObjects(result, ObjectType::Banners, _bannerEntries); - AppendRequiredObjects(result, ObjectType::ParkEntrance, std::vector({ "rct2.park_entrance.pkent1" })); + AppendRequiredObjects( + result, ObjectType::ParkEntrance, std::vector({ "rct2.park_entrance.pkent1" })); AppendRequiredObjects(result, ObjectType::Water, _waterEntry); AppendRequiredObjects(result, ObjectType::TerrainSurface, _terrainSurfaceEntries); AppendRequiredObjects(result, ObjectType::TerrainEdge, _terrainEdgeEntries); AppendRequiredObjects(result, ObjectType::FootpathSurface, _footpathSurfaceEntries); AppendRequiredObjects(result, ObjectType::FootpathRailings, _footpathRailingsEntries); - AppendRequiredObjects(result, ObjectType::PeepNames, std::vector({ "rct2.peep_names.original" })); + AppendRequiredObjects(result, ObjectType::PeepNames, std::vector({ "rct2.peep_names.original" })); RCT12AddDefaultObjects(result); // Normalise the name to make the scenario as recognisable as possible @@ -1528,8 +1529,8 @@ namespace OpenRCT2::RCT1 // Infer what scenario text object to use, if any SourceDescriptor desc; - if (ScenarioSources::TryGetByName(normalisedName.c_str(), &desc) && desc.textObjectId != nullptr) - AppendRequiredObjects(result, ObjectType::ScenarioText, std::vector({ desc.textObjectId })); + if (ScenarioSources::TryGetByName(normalisedName.c_str(), &desc) && !desc.textObjectId.empty()) + AppendRequiredObjects(result, ObjectType::ScenarioText, std::vector({ desc.textObjectId })); return result; } @@ -2345,7 +2346,7 @@ namespace OpenRCT2::RCT1 if (scNumber != -1) { SourceDescriptor desc; - if (ScenarioSources::TryGetById(scNumber, &desc) && desc.textObjectId != nullptr) + if (ScenarioSources::TryGetById(scNumber, &desc) && !desc.textObjectId.empty()) { auto& objManager = GetContext()->GetObjectManager(); diff --git a/src/openrct2/rct12/EntryList.h b/src/openrct2/rct12/EntryList.h index 36e2478d27..4efddd8005 100644 --- a/src/openrct2/rct12/EntryList.h +++ b/src/openrct2/rct12/EntryList.h @@ -10,7 +10,6 @@ #pragma once #include -#include #include #include @@ -21,7 +20,7 @@ namespace OpenRCT2::RCT12 class EntryList { private: - std::vector _entries; + std::vector _entries; public: size_t GetCount() const @@ -29,7 +28,7 @@ namespace OpenRCT2::RCT12 return _entries.size(); } - const std::vector& GetEntries() const + const std::vector& GetEntries() const { return _entries; } diff --git a/src/openrct2/rct12/RCT12.cpp b/src/openrct2/rct12/RCT12.cpp index 4cb535081d..d36961380d 100644 --- a/src/openrct2/rct12/RCT12.cpp +++ b/src/openrct2/rct12/RCT12.cpp @@ -818,7 +818,7 @@ void RCT12AddDefaultObjects(ObjectList& objectList) } } -void AppendRequiredObjects(ObjectList& objectList, ObjectType objectType, const std::vector& objectNames) +void AppendRequiredObjects(ObjectList& objectList, ObjectType objectType, const std::vector& objectNames) { for (const auto& objectName : objectNames) { diff --git a/src/openrct2/rct12/RCT12.h b/src/openrct2/rct12/RCT12.h index 42abe290bb..98d169f7f4 100644 --- a/src/openrct2/rct12/RCT12.h +++ b/src/openrct2/rct12/RCT12.h @@ -1197,7 +1197,7 @@ std::string_view GetStationIdentifierFromStyle(uint8_t style); uint8_t GetStationStyleFromIdentifier(u8string_view identifier); std::optional GetStyleFromMusicIdentifier(std::string_view identifier); void RCT12AddDefaultObjects(ObjectList& objectList); -void AppendRequiredObjects(ObjectList& objectList, ObjectType objectType, const std::vector& objectNames); +void AppendRequiredObjects(ObjectList& objectList, ObjectType objectType, const std::vector& objectNames); void AppendRequiredObjects(ObjectList& objectList, ObjectType objectType, const OpenRCT2::RCT12::EntryList& entryList); bool IsUserStringID(StringId stringId); diff --git a/src/openrct2/rct2/S6Importer.cpp b/src/openrct2/rct2/S6Importer.cpp index 3bdf808a7c..72ad05dd03 100644 --- a/src/openrct2/rct2/S6Importer.cpp +++ b/src/openrct2/rct2/S6Importer.cpp @@ -294,7 +294,7 @@ namespace OpenRCT2::RCT2 String::Set(dst->InternalName, sizeof(dst->InternalName), dst->Name); String::Set(dst->Details, sizeof(dst->Details), _s6.Info.Details); - if (desc.textObjectId != nullptr) + if (!desc.textObjectId.empty()) { auto& objManager = GetContext()->GetObjectManager(); @@ -1887,7 +1887,8 @@ namespace OpenRCT2::RCT2 AppendRequiredObjects(objectList, ObjectType::TerrainSurface, _terrainSurfaceEntries); AppendRequiredObjects(objectList, ObjectType::TerrainEdge, _terrainEdgeEntries); - AppendRequiredObjects(objectList, ObjectType::PeepNames, std::vector({ "rct2.peep_names.original" })); + AppendRequiredObjects( + objectList, ObjectType::PeepNames, std::vector({ "rct2.peep_names.original" })); RCT12AddDefaultObjects(objectList); // Normalise the name to make the scenario as recognisable as possible @@ -1895,8 +1896,9 @@ namespace OpenRCT2::RCT2 // Infer what scenario text object to use, if any SourceDescriptor desc; - if (ScenarioSources::TryGetByName(normalisedName.c_str(), &desc) && desc.textObjectId != nullptr) - AppendRequiredObjects(objectList, ObjectType::ScenarioText, std::vector({ desc.textObjectId })); + if (ScenarioSources::TryGetByName(normalisedName.c_str(), &desc) && !desc.textObjectId.empty()) + AppendRequiredObjects( + objectList, ObjectType::ScenarioText, std::vector({ desc.textObjectId })); return objectList; } diff --git a/src/openrct2/scenario/ScenarioSources.cpp b/src/openrct2/scenario/ScenarioSources.cpp index 5030ad234b..e7e8d8287d 100644 --- a/src/openrct2/scenario/ScenarioSources.cpp +++ b/src/openrct2/scenario/ScenarioSources.cpp @@ -31,7 +31,7 @@ namespace OpenRCT2::ScenarioSources const uint8_t Id; const utf8* Title; const uint8_t Category; - const char* TextObjectId; + u8string_view TextObjectId; }; #pragma region Scenario Data @@ -386,7 +386,7 @@ namespace OpenRCT2::ScenarioSources outDesc->source = static_cast(ScenarioSource::Other); outDesc->index = -1; outDesc->category = SCENARIO_CATEGORY_OTHER; - outDesc->textObjectId = nullptr; + outDesc->textObjectId = {}; return false; } @@ -419,7 +419,7 @@ namespace OpenRCT2::ScenarioSources outDesc->source = static_cast(ScenarioSource::Other); outDesc->index = -1; outDesc->category = SCENARIO_CATEGORY_OTHER; - outDesc->textObjectId = nullptr; + outDesc->textObjectId = {}; return false; } diff --git a/src/openrct2/scenario/ScenarioSources.h b/src/openrct2/scenario/ScenarioSources.h index e3a77d8bcf..b6604a2908 100644 --- a/src/openrct2/scenario/ScenarioSources.h +++ b/src/openrct2/scenario/ScenarioSources.h @@ -18,7 +18,7 @@ struct SourceDescriptor uint8_t source; int32_t index; uint8_t category; - const char* textObjectId; + u8string_view textObjectId; }; namespace OpenRCT2::ScenarioSources