1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-26 16:24:35 +01:00

Don't Double-Compress Park Chunks in Replay File (#24728)

This commit is contained in:
LRFLEW
2025-07-20 19:03:52 -05:00
committed by GitHub
parent 9d5b21cebf
commit c79eb0609b
4 changed files with 58 additions and 39 deletions

View File

@@ -177,9 +177,9 @@ namespace OpenRCT2
gameState.initialCash = gameState.cash;
}
void Save(GameState_t& gameState, IStream& stream)
void Save(GameState_t& gameState, IStream& stream, int16_t compressionLevel)
{
OrcaStream os(stream, OrcaStream::Mode::WRITING);
OrcaStream os(stream, OrcaStream::Mode::WRITING, compressionLevel);
auto& header = os.GetHeader();
header.Magic = kParkFileMagic;
@@ -206,10 +206,10 @@ namespace OpenRCT2
ReadWritePackedObjectsChunk(os);
}
void Save(GameState_t& gameState, const std::string_view path)
void Save(GameState_t& gameState, const std::string_view path, int16_t compressionLevel)
{
FileStream fs(path, FileMode::write);
Save(gameState, fs);
Save(gameState, fs, compressionLevel);
}
ScenarioIndexEntry ReadScenarioChunk()
@@ -2706,21 +2706,21 @@ namespace OpenRCT2
}
});
}
void ParkFileExporter::Export(GameState_t& gameState, std::string_view path, int16_t compressionLevel)
{
auto parkFile = std::make_unique<OpenRCT2::ParkFile>();
parkFile->Save(gameState, path, compressionLevel);
}
void ParkFileExporter::Export(GameState_t& gameState, IStream& stream, int16_t compressionLevel)
{
auto parkFile = std::make_unique<OpenRCT2::ParkFile>();
parkFile->ExportObjectsList = ExportObjectsList;
parkFile->Save(gameState, stream, compressionLevel);
}
} // namespace OpenRCT2
void ParkFileExporter::Export(GameState_t& gameState, std::string_view path)
{
auto parkFile = std::make_unique<OpenRCT2::ParkFile>();
parkFile->Save(gameState, path);
}
void ParkFileExporter::Export(GameState_t& gameState, IStream& stream)
{
auto parkFile = std::make_unique<OpenRCT2::ParkFile>();
parkFile->ExportObjectsList = ExportObjectsList;
parkFile->Save(gameState, stream);
}
enum : uint32_t
{
S6_SAVE_FLAG_EXPORT = 1 << 0,
@@ -2766,7 +2766,7 @@ int32_t ScenarioSave(GameState_t& gameState, u8string_view path, int32_t flags)
{
// s6exporter->SaveGame(path);
}
parkFile->Save(gameState, path);
parkFile->Save(gameState, path, Compression::kZlibDefaultCompressionLevel);
result = true;
}
catch (const std::exception& e)