mirror of https://github.com/OpenRCT2/OpenRCT2.git
Implement read / write of invention list
This commit is contained in:
parent
b8025e763e
commit
62c6daecc0
|
@ -383,16 +383,50 @@ namespace OpenRCT2
|
||||||
cs.ReadWrite(gResearchProgress);
|
cs.ReadWrite(gResearchProgress);
|
||||||
cs.ReadWrite(gResearchExpectedMonth);
|
cs.ReadWrite(gResearchExpectedMonth);
|
||||||
cs.ReadWrite(gResearchExpectedDay);
|
cs.ReadWrite(gResearchExpectedDay);
|
||||||
cs.ReadWrite(gResearchLastItem);
|
ReadWriteResearchItem(cs, gResearchLastItem);
|
||||||
cs.ReadWrite(gResearchNextItem);
|
ReadWriteResearchItem(cs, gResearchNextItem);
|
||||||
|
|
||||||
// Research order
|
// Invention list
|
||||||
// type (uint8_t)
|
cs.ReadWriteVector(gResearchItemsUninvented, [&cs](ResearchItem& item) { ReadWriteResearchItem(cs, item); });
|
||||||
// flags (uint8_t)
|
cs.ReadWriteVector(gResearchItemsInvented, [&cs](ResearchItem& item) { ReadWriteResearchItem(cs, item); });
|
||||||
// entry (uint32_t)
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void ReadWriteResearchItem(OrcaStream::ChunkStream& cs, std::optional<ResearchItem>& item)
|
||||||
|
{
|
||||||
|
if (cs.GetMode() == OrcaStream::Mode::READING)
|
||||||
|
{
|
||||||
|
auto hasValue = cs.Read<bool>();
|
||||||
|
if (hasValue)
|
||||||
|
{
|
||||||
|
ResearchItem placeholder;
|
||||||
|
ReadWriteResearchItem(cs, placeholder);
|
||||||
|
item = placeholder;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (item)
|
||||||
|
{
|
||||||
|
cs.Write<bool>(true);
|
||||||
|
ReadWriteResearchItem(cs, *item);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cs.Write<bool>(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void ReadWriteResearchItem(OrcaStream::ChunkStream& cs, ResearchItem& item)
|
||||||
|
{
|
||||||
|
cs.ReadWrite(item.type);
|
||||||
|
cs.ReadWrite(item.baseRideType);
|
||||||
|
cs.ReadWrite(item.entryIndex);
|
||||||
|
cs.ReadWrite(item.flags);
|
||||||
|
cs.ReadWrite(item.category);
|
||||||
|
}
|
||||||
|
|
||||||
void ReadWriteNotificationsChunk(OrcaStream& os)
|
void ReadWriteNotificationsChunk(OrcaStream& os)
|
||||||
{
|
{
|
||||||
os.ReadWriteChunk(ParkFileChunkType::NOTIFICATIONS, [](OrcaStream::ChunkStream& cs) {
|
os.ReadWriteChunk(ParkFileChunkType::NOTIFICATIONS, [](OrcaStream::ChunkStream& cs) {
|
||||||
|
|
Loading…
Reference in New Issue