From a617d393ed82d78ed90c5fe5219f21147e47f118 Mon Sep 17 00:00:00 2001 From: spacek531 Date: Wed, 23 Nov 2022 14:20:44 -0800 Subject: [PATCH] Read and write version field of .park --- src/openrct2/object/Object.h | 9 +++++++++ src/openrct2/object/ObjectFactory.cpp | 4 +++- src/openrct2/object/ObjectRepository.cpp | 1 + src/openrct2/object/ObjectRepository.h | 1 + src/openrct2/park/ParkFile.cpp | 2 +- 5 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/openrct2/object/Object.h b/src/openrct2/object/Object.h index ca0457c900ab..6a2b37b7bb9f 100644 --- a/src/openrct2/object/Object.h +++ b/src/openrct2/object/Object.h @@ -250,6 +250,7 @@ class Object { private: std::string _identifier; + std::string _version; ObjectEntryDescriptor _descriptor{}; StringTable _stringTable; ImageTable _imageTable; @@ -363,6 +364,14 @@ class Object const std::vector& GetAuthors() const; void SetAuthors(std::vector&& authors); + const std::string& GetVersion() const + { + return _version; + } + void SetVersion(const std::string& version) + { + _version = version; + } const ImageTable& GetImageTable() const { diff --git a/src/openrct2/object/ObjectFactory.cpp b/src/openrct2/object/ObjectFactory.cpp index df02b97dd9bd..7ebf361fe851 100644 --- a/src/openrct2/object/ObjectFactory.cpp +++ b/src/openrct2/object/ObjectFactory.cpp @@ -521,6 +521,7 @@ namespace ObjectFactory if (id == OpenRCT2::Audio::AudioObjectIdentifiers::Rct2cBase) id = OpenRCT2::Audio::AudioObjectIdentifiers::Rct2Base; + auto version = Json::GetString(jRoot["version"]); ObjectEntryDescriptor descriptor; auto originalId = Json::GetString(jRoot["originalId"]); if (originalId.length() == 8 + 1 + 8 + 1 + 8) @@ -539,8 +540,9 @@ namespace ObjectFactory { descriptor = ObjectEntryDescriptor(objectType, id); } - + descriptor.Version = version; result = CreateObject(objectType); + result->SetVersion(version); result->SetIdentifier(id); result->SetDescriptor(descriptor); result->MarkAsJsonObject(); diff --git a/src/openrct2/object/ObjectRepository.cpp b/src/openrct2/object/ObjectRepository.cpp index 788696de37d0..aeeeb12f3b6c 100644 --- a/src/openrct2/object/ObjectRepository.cpp +++ b/src/openrct2/object/ObjectRepository.cpp @@ -121,6 +121,7 @@ class ObjectFileIndex final : public FileIndex item.Generation = object->GetGeneration(); item.Identifier = object->GetIdentifier(); item.ObjectEntry = object->GetObjectEntry(); + item.Version = object->GetVersion(); item.Path = path; item.Name = object->GetName(); item.Authors = object->GetAuthors(); diff --git a/src/openrct2/object/ObjectRepository.h b/src/openrct2/object/ObjectRepository.h index feb75ed72bc2..1456b84ca7cc 100644 --- a/src/openrct2/object/ObjectRepository.h +++ b/src/openrct2/object/ObjectRepository.h @@ -43,6 +43,7 @@ struct ObjectRepositoryItem rct_object_entry ObjectEntry; std::string Path; std::string Name; + std::string Version; std::vector Authors; std::vector Sources; std::shared_ptr LoadedObject{}; diff --git a/src/openrct2/park/ParkFile.cpp b/src/openrct2/park/ParkFile.cpp index 9a5eb9ce97b7..dcfc28dba18a 100644 --- a/src/openrct2/park/ParkFile.cpp +++ b/src/openrct2/park/ParkFile.cpp @@ -388,7 +388,7 @@ namespace OpenRCT2 { cs.Write(DESCRIPTOR_JSON); cs.Write(entry.Identifier); - cs.Write(""); // reserved for version + cs.Write(entry.Version); } else {