1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-29 17:54:50 +01:00

Simplify Serialise for FileIndex

This commit is contained in:
duncanspumpkin
2020-12-06 18:13:03 +00:00
parent ee9ede6c33
commit 60729113d9
6 changed files with 69 additions and 118 deletions

View File

@@ -76,7 +76,7 @@ class ObjectFileIndex final : public FileIndex<ObjectRepositoryItem>
{
private:
static constexpr uint32_t MAGIC_NUMBER = 0x5844494F; // OIDX
static constexpr uint16_t VERSION = 25;
static constexpr uint16_t VERSION = 26;
static constexpr auto PATTERN = "*.dat;*.pob;*.json;*.parkobj";
IObjectRepository& _objectRepository;
@@ -126,27 +126,26 @@ public:
}
protected:
void Serialise(IStream* stream, const ObjectRepositoryItem& item) const override
void Serialise(DataSerialiser& ds, ObjectRepositoryItem& item) const override
{
DataSerialiser serialiser(true, *stream);
serialiser << item.Identifier;
serialiser << item.ObjectEntry;
serialiser << item.Path;
serialiser << item.Name;
ds << item.Identifier;
ds << item.ObjectEntry;
ds << item.Path;
ds << item.Name;
serialiser << item.Sources;
serialiser << item.Authors;
ds << item.Sources;
ds << item.Authors;
switch (item.ObjectEntry.GetType())
{
case ObjectType::Ride:
serialiser << item.RideInfo.RideFlags;
serialiser << item.RideInfo.RideCategory;
serialiser << item.RideInfo.RideType;
ds << item.RideInfo.RideFlags;
ds << item.RideInfo.RideCategory;
ds << item.RideInfo.RideType;
break;
case ObjectType::SceneryGroup:
{
serialiser << item.SceneryGroupInfo.Entries;
ds << item.SceneryGroupInfo.Entries;
break;
}
default:
@@ -155,38 +154,6 @@ protected:
}
}
ObjectRepositoryItem Deserialise(IStream* stream) const override
{
ObjectRepositoryItem item;
DataSerialiser serialiser(false, *stream);
serialiser << item.Identifier;
serialiser << item.ObjectEntry;
serialiser << item.Path;
serialiser << item.Name;
serialiser << item.Sources;
serialiser << item.Authors;
switch (item.ObjectEntry.GetType())
{
case ObjectType::Ride:
serialiser << item.RideInfo.RideFlags;
serialiser << item.RideInfo.RideCategory;
serialiser << item.RideInfo.RideType;
break;
case ObjectType::SceneryGroup:
{
serialiser << item.SceneryGroupInfo.Entries;
break;
}
default:
// Switch processes only ObjectType::Ride and ObjectType::SceneryGroup
break;
}
return item;
}
private:
bool IsTrackReadOnly(const std::string& path) const
{