1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2025-12-24 00:03:11 +01:00

Update OrcaStream::Header fields to new code style

This commit is contained in:
Gymnasiast
2025-08-21 20:29:13 +02:00
parent d0090a33f2
commit 91133d96da
2 changed files with 65 additions and 65 deletions

View File

@@ -48,14 +48,14 @@ namespace OpenRCT2
#pragma pack(push, 1)
struct Header
{
uint32_t Magic{};
uint32_t TargetVersion{};
uint32_t MinVersion{};
uint32_t NumChunks{};
uint64_t UncompressedSize{};
CompressionType Compression{};
uint64_t CompressedSize{};
std::array<uint8_t, 8> FNV1a{};
uint32_t magic{};
uint32_t targetVersion{};
uint32_t minVersion{};
uint32_t numChunks{};
uint64_t uncompressedSize{};
CompressionType compression{};
uint64_t compressedSize{};
std::array<uint8_t, 8> fnv1a{};
uint8_t padding[20]{};
};
static_assert(sizeof(Header) == 64, "Header should be 64 bytes");
@@ -87,55 +87,55 @@ namespace OpenRCT2
_header = _stream->ReadValue<Header>();
_chunks.clear();
for (uint32_t i = 0; i < _header.NumChunks; i++)
for (uint32_t i = 0; i < _header.numChunks; i++)
{
auto entry = _stream->ReadValue<ChunkEntry>();
_chunks.push_back(entry);
}
// Uncompress
if (_header.Compression != CompressionType::none)
if (_header.compression != CompressionType::none)
{
bool decompressStatus = false;
switch (_header.Compression)
switch (_header.compression)
{
case CompressionType::gzip:
decompressStatus = Compression::zlibDecompress(
*_stream, _header.CompressedSize, _buffer, _header.UncompressedSize,
*_stream, _header.compressedSize, _buffer, _header.uncompressedSize,
Compression::ZlibHeaderType::gzip);
break;
case CompressionType::zstd:
decompressStatus = Compression::zstdDecompress(
*_stream, _header.CompressedSize, _buffer, _header.UncompressedSize);
*_stream, _header.compressedSize, _buffer, _header.uncompressedSize);
break;
default:
throw IOException("Unknown Park Compression Type");
throw IOException("Unknown park compression type");
}
if (!decompressStatus)
throw IOException("Decompression Error");
throw IOException("Decompression error!");
}
else
{
if (_header.UncompressedSize != _header.CompressedSize)
throw IOException("None Compression Sizes Don't Match");
_buffer.CopyFromStream(*_stream, _header.UncompressedSize);
if (_header.uncompressedSize != _header.compressedSize)
throw IOException("Compressed and uncompressed sizes don't match!");
_buffer.CopyFromStream(*_stream, _header.uncompressedSize);
}
// early in-dev versions used SHA1 instead of FNV1a, so just assume any file
// with a verison number of 0 may be one of these, and don't check their hashes.
if (_header.TargetVersion > 0)
if (_header.targetVersion > 0)
{
auto checksum = Crypt::FNV1a(_buffer.GetData(), _buffer.GetLength());
if (checksum != _header.FNV1a)
throw IOException("Checksum Is Not Valid");
if (checksum != _header.fnv1a)
throw IOException("Checksum is not valid!");
}
}
else
{
_header = {};
_header.Compression = _compressionLevel == Compression::kNoCompressionLevel ? CompressionType::none
_header.compression = _compressionLevel == Compression::kNoCompressionLevel ? CompressionType::none
: CompressionType::zstd;
_buffer = MemoryStream{};
}
@@ -147,22 +147,22 @@ namespace OpenRCT2
{
if (_mode == Mode::writing)
{
_header.NumChunks = static_cast<uint32_t>(_chunks.size());
_header.UncompressedSize = _buffer.GetLength();
_header.CompressedSize = _buffer.GetLength();
_header.FNV1a = Crypt::FNV1a(_buffer.GetData(), _buffer.GetLength());
_header.numChunks = static_cast<uint32_t>(_chunks.size());
_header.uncompressedSize = _buffer.GetLength();
_header.compressedSize = _buffer.GetLength();
_header.fnv1a = Crypt::FNV1a(_buffer.GetData(), _buffer.GetLength());
if (_compressionLevel == Compression::kNoCompressionLevel)
_header.Compression = CompressionType::none;
_header.compression = CompressionType::none;
// Compress data
if (_header.Compression != CompressionType::none)
if (_header.compression != CompressionType::none)
{
MemoryStream compressed;
bool compressStatus = false;
_buffer.SetPosition(0);
switch (_header.Compression)
switch (_header.compression)
{
case CompressionType::gzip:
compressStatus = Compression::zlibCompress(
@@ -180,12 +180,12 @@ namespace OpenRCT2
if (compressStatus && compressed.GetLength() < _buffer.GetLength())
{
_buffer = std::move(compressed);
_header.CompressedSize = _buffer.GetLength();
_header.compressedSize = _buffer.GetLength();
}
else
{
// Compression increases filesize, so just store uncompressed data
_header.Compression = CompressionType::none;
_header.compression = CompressionType::none;
}
}

View File

@@ -118,9 +118,9 @@ namespace OpenRCT2
void ThrowIfIncompatibleVersion()
{
const auto& header = _os->GetHeader();
if (/*header.TargetVersion < kParkFileMinSupportedVersion || */ header.MinVersion > kParkFileCurrentVersion)
if (/*header.targetVersion < kParkFileMinSupportedVersion || */ header.minVersion > kParkFileCurrentVersion)
{
throw UnsupportedVersionException(header.MinVersion, header.TargetVersion);
throw UnsupportedVersionException(header.minVersion, header.targetVersion);
}
}
@@ -128,8 +128,8 @@ namespace OpenRCT2
bool IsSemiCompatibleVersion(uint32_t& minVersion, uint32_t& targetVersion)
{
const auto& header = _os->GetHeader();
minVersion = header.MinVersion;
targetVersion = header.TargetVersion;
minVersion = header.minVersion;
targetVersion = header.targetVersion;
return targetVersion > kParkFileCurrentVersion;
}
@@ -169,7 +169,7 @@ namespace OpenRCT2
ReadWriteCheatsChunk(gameState, os);
ReadWriteRestrictedObjectsChunk(gameState, os);
ReadWritePluginStorageChunk(gameState, os);
if (os.GetHeader().TargetVersion < 0x4)
if (os.GetHeader().targetVersion < 0x4)
{
UpdateTrackElementsRideType();
}
@@ -183,9 +183,9 @@ namespace OpenRCT2
OrcaStream os(stream, OrcaStream::Mode::writing, compressionLevel);
auto& header = os.GetHeader();
header.Magic = kParkFileMagic;
header.TargetVersion = kParkFileCurrentVersion;
header.MinVersion = kParkFileMinVersion;
header.magic = kParkFileMagic;
header.targetVersion = kParkFileCurrentVersion;
header.minVersion = kParkFileMinVersion;
ReadWriteAuthoringChunk(os);
ReadWriteObjectsChunk(os);
@@ -312,7 +312,7 @@ namespace OpenRCT2
auto* pathToSurfaceMap = _pathToSurfaceMap;
auto* pathToQueueSurfaceMap = _pathToQueueSurfaceMap;
auto* pathToRailingsMap = _pathToRailingsMap;
const auto version = os.GetHeader().TargetVersion;
const auto version = os.GetHeader().targetVersion;
ObjectList requiredObjects;
struct LegacyFootpathMapping
@@ -520,7 +520,7 @@ namespace OpenRCT2
cs.Write(AllowEarlyCompletion());
}
if (os.GetHeader().TargetVersion >= 1)
if (os.GetHeader().targetVersion >= 1)
{
cs.ReadWrite(gameState.scenarioFileName);
}
@@ -556,7 +556,7 @@ namespace OpenRCT2
void ReadWriteGeneralChunk(GameState_t& gameState, OrcaStream& os)
{
const auto version = os.GetHeader().TargetVersion;
const auto version = os.GetHeader().targetVersion;
auto found = os.ReadWriteChunk(ParkFileChunkType::GENERAL, [&](OrcaStream::ChunkStream& cs) {
// Only GAME_PAUSED_NORMAL from gGamePaused is relevant.
if (cs.GetMode() == OrcaStream::Mode::reading)
@@ -641,7 +641,7 @@ namespace OpenRCT2
cs.ReadWrite(gameState.widePathTileLoopPosition);
auto& rideRatings = gameState.rideRatingUpdateStates;
if (os.GetHeader().TargetVersion >= 21)
if (os.GetHeader().targetVersion >= 21)
{
cs.ReadWriteArray(rideRatings, [this, &cs](OpenRCT2::RideRating::UpdateState& calcData) {
ReadWriteRideRatingCalculationData(cs, calcData);
@@ -660,7 +660,7 @@ namespace OpenRCT2
ReadWriteRideRatingCalculationData(cs, rideRatingUpdateState);
}
if (os.GetHeader().TargetVersion >= 14)
if (os.GetHeader().targetVersion >= 14)
{
cs.ReadWrite(gIsAutosave);
}
@@ -868,7 +868,7 @@ namespace OpenRCT2
void ReadWriteClimateChunk(GameState_t& gameState, OrcaStream& os)
{
os.ReadWriteChunk(ParkFileChunkType::CLIMATE, [&os, &gameState](OrcaStream::ChunkStream& cs) {
auto version = os.GetHeader().TargetVersion;
auto version = os.GetHeader().targetVersion;
if (version < kClimateObjectsVersion)
{
// Legacy climate is converted elsewhere, so we can skip it here.
@@ -891,7 +891,7 @@ namespace OpenRCT2
void ReadWriteParkChunk(GameState_t& gameState, OrcaStream& os)
{
os.ReadWriteChunk(
ParkFileChunkType::PARK, [version = os.GetHeader().TargetVersion, &gameState](OrcaStream::ChunkStream& cs) {
ParkFileChunkType::PARK, [version = os.GetHeader().targetVersion, &gameState](OrcaStream::ChunkStream& cs) {
cs.ReadWrite(gameState.park.Name);
cs.ReadWrite(gameState.park.cash);
cs.ReadWrite(gameState.park.bankLoan);
@@ -1226,11 +1226,11 @@ namespace OpenRCT2
auto* trackElement = it.element->AsTrack();
auto trackType = trackElement->GetTrackType();
if (TrackTypeMustBeMadeInvisible(
trackElement->GetRideType(), trackType, os.GetHeader().TargetVersion))
trackElement->GetRideType(), trackType, os.GetHeader().targetVersion))
{
it.element->SetInvisible(true);
}
if (os.GetHeader().TargetVersion < kBlockBrakeImprovementsVersion)
if (os.GetHeader().targetVersion < kBlockBrakeImprovementsVersion)
{
if (trackType == TrackElemType::Brakes)
trackElement->SetBrakeClosed(true);
@@ -1239,7 +1239,7 @@ namespace OpenRCT2
}
}
else if (
it.element->GetType() == TileElementType::SmallScenery && os.GetHeader().TargetVersion < 23)
it.element->GetType() == TileElementType::SmallScenery && os.GetHeader().targetVersion < 23)
{
auto* sceneryElement = it.element->AsSmallScenery();
// Previous formats stored the needs supports flag in the primary colour
@@ -1300,7 +1300,7 @@ namespace OpenRCT2
void ReadWriteBannersChunk(GameState_t& gameState, OrcaStream& os)
{
os.ReadWriteChunk(ParkFileChunkType::BANNERS, [&os](OrcaStream::ChunkStream& cs) {
auto version = os.GetHeader().TargetVersion;
auto version = os.GetHeader().targetVersion;
if (cs.GetMode() == OrcaStream::Mode::writing)
{
auto numBanners = GetNumBanners();
@@ -1377,7 +1377,7 @@ namespace OpenRCT2
void ReadWriteRidesChunk(GameState_t& gameState, OrcaStream& os)
{
const auto version = os.GetHeader().TargetVersion;
const auto version = os.GetHeader().targetVersion;
os.ReadWriteChunk(ParkFileChunkType::RIDES, [this, &version, &os](OrcaStream::ChunkStream& cs) {
std::vector<RideId> rideIds;
if (cs.GetMode() == OrcaStream::Mode::reading)
@@ -1553,7 +1553,7 @@ namespace OpenRCT2
}
}
if (os.GetHeader().TargetVersion < kHigherInversionsHolesHelicesStatsVersion)
if (os.GetHeader().targetVersion < kHigherInversionsHolesHelicesStatsVersion)
{
uint8_t combinedValue = cs.Read<uint8_t>();
auto split = splitCombinedHelicesAndSpecialElements(combinedValue);
@@ -1790,7 +1790,7 @@ namespace OpenRCT2
static void ReadWritePeep(OrcaStream& os, OrcaStream::ChunkStream& cs, Peep& entity)
{
auto version = os.GetHeader().TargetVersion;
auto version = os.GetHeader().targetVersion;
ReadWriteEntityCommon(cs, entity);
@@ -2220,7 +2220,7 @@ namespace OpenRCT2
cs.ReadWrite(entity.next_vehicle_on_ride);
cs.ReadWrite(entity.var_44);
cs.ReadWrite(entity.mass);
if (cs.GetMode() == OrcaStream::Mode::reading && os.GetHeader().TargetVersion < 18)
if (cs.GetMode() == OrcaStream::Mode::reading && os.GetHeader().targetVersion < 18)
{
uint16_t updateFlags = 0;
cs.ReadWrite(updateFlags);
@@ -2258,7 +2258,7 @@ namespace OpenRCT2
cs.ReadWrite(entity.powered_acceleration);
cs.ReadWrite(entity.CollisionDetectionTimer);
cs.ReadWrite(entity.animation_frame);
if (cs.GetMode() == OrcaStream::Mode::reading && os.GetHeader().TargetVersion <= 2)
if (cs.GetMode() == OrcaStream::Mode::reading && os.GetHeader().targetVersion <= 2)
{
uint16_t lower = 0, upper = 0;
cs.ReadWrite(lower);
@@ -2272,7 +2272,7 @@ namespace OpenRCT2
cs.ReadWrite(entity.scream_sound_id);
cs.ReadWrite(entity.TrackSubposition);
cs.ReadWrite(entity.NumLaps);
if (cs.GetMode() == OrcaStream::Mode::reading && os.GetHeader().TargetVersion < kBlockBrakeImprovementsVersion)
if (cs.GetMode() == OrcaStream::Mode::reading && os.GetHeader().targetVersion < kBlockBrakeImprovementsVersion)
{
uint8_t brakeSpeed;
cs.ReadWrite(brakeSpeed);
@@ -2293,7 +2293,7 @@ namespace OpenRCT2
cs.ReadWrite(entity.colours.Tertiary);
cs.ReadWrite(entity.seat_rotation);
cs.ReadWrite(entity.target_seat_rotation);
if (cs.GetMode() == OrcaStream::Mode::reading && os.GetHeader().TargetVersion < 18)
if (cs.GetMode() == OrcaStream::Mode::reading && os.GetHeader().targetVersion < 18)
{
bool isCrashedVehicle = false;
cs.ReadWrite(isCrashedVehicle);
@@ -2302,7 +2302,7 @@ namespace OpenRCT2
entity.SetFlag(VehicleFlags::Crashed);
}
}
if (cs.GetMode() == OrcaStream::Mode::reading && os.GetHeader().TargetVersion < kBlockBrakeImprovementsVersion)
if (cs.GetMode() == OrcaStream::Mode::reading && os.GetHeader().targetVersion < kBlockBrakeImprovementsVersion)
{
entity.BlockBrakeSpeed = kRCT2DefaultBlockBrakeSpeed;
}
@@ -2316,7 +2316,7 @@ namespace OpenRCT2
void ParkFile::ReadWriteEntity(OrcaStream& os, OrcaStream::ChunkStream& cs, Guest& guest)
{
ReadWritePeep(os, cs, guest);
auto version = os.GetHeader().TargetVersion;
auto version = os.GetHeader().targetVersion;
if (version <= 1)
{
@@ -2372,7 +2372,7 @@ namespace OpenRCT2
}
cs.ReadWrite(guest.NauseaTolerance);
if (os.GetHeader().TargetVersion < 3)
if (os.GetHeader().targetVersion < 3)
{
std::array<uint8_t, 16> rideTypeBeenOn;
cs.ReadWriteArray(rideTypeBeenOn, [&cs](uint8_t& rideType) {
@@ -2383,7 +2383,7 @@ namespace OpenRCT2
}
cs.ReadWrite(guest.TimeInQueue);
if (os.GetHeader().TargetVersion < 3)
if (os.GetHeader().targetVersion < 3)
{
std::array<uint8_t, 32> ridesBeenOn;
cs.ReadWriteArray(ridesBeenOn, [&cs](uint8_t& rideType) {
@@ -2449,7 +2449,7 @@ namespace OpenRCT2
cs.ReadWrite(guest.RejoinQueueTimeout);
cs.ReadWrite(guest.PreviousRide);
cs.ReadWrite(guest.PreviousRideTimeOut);
cs.ReadWriteArray(guest.Thoughts, [version = os.GetHeader().TargetVersion, &cs](PeepThought& thought) {
cs.ReadWriteArray(guest.Thoughts, [version = os.GetHeader().targetVersion, &cs](PeepThought& thought) {
cs.ReadWrite(thought.type);
if (version <= 2)
{
@@ -2512,7 +2512,7 @@ namespace OpenRCT2
}
}
if (os.GetHeader().TargetVersion <= 1)
if (os.GetHeader().targetVersion <= 1)
{
return;
}
@@ -2520,7 +2520,7 @@ namespace OpenRCT2
cs.ReadWrite(entity.AssignedStaffType);
cs.ReadWrite(entity.MechanicTimeSinceCall);
cs.ReadWrite(entity.HireDate);
if (os.GetHeader().TargetVersion <= 4)
if (os.GetHeader().targetVersion <= 4)
{
cs.Ignore<uint8_t>();
}
@@ -2693,7 +2693,7 @@ namespace OpenRCT2
Vehicle, Guest, Staff, Litter, SteamParticle, MoneyEffect, VehicleCrashParticle, ExplosionCloud,
CrashSplashParticle, ExplosionFlare, JumpingFountain, Balloon, Duck>(os, cs);
auto version = os.GetHeader().TargetVersion;
auto version = os.GetHeader().targetVersion;
if (version < kPeepAnimationObjectsVersion)
{
ConvertPeepAnimationTypeToObjects(gameState);