mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2026-10-02 10:53:44 +00:00
fix(level): read pre-chunk scene files of versions 31 and 33
Two fields of the scene files from before chunks were read for versions the client does not read them for (SceneLoader::ReadLvlFile, 1.10.64): - the "important" byte after the version and type is there only from version 32 (SceneLoader::ReadLvlHeader, 0x010117d0: headerVersion < 32 sets it to 0); - the five strings after the skydome's file are there only from version 34 (SceneLoader::ReadSkydomeInfo, 0x0102f550: headerVersion > 33); the reader took them from version 33. Seven scenes of the alpha leak (versions 31 and 33: Gnarled_assetsMIKET, dennis_gnarled_forest_02/_03-ninja/_03-pirate_0, scale_TEST_2, scale_test_2_0, scale_test_general) now read with all their objects. Every other scene file on disk reads the same objects as before. Check in game: every world spawns its objects as before. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -276,7 +276,7 @@ TEST(LevelFileTests, ReadsChunkedObjects) {
|
||||
// Some live scenes (e.g. Nimbus Station's Gnarled Forest launch pad) are from before chunks
|
||||
TEST(LevelFileTests, ReadsFilesWithoutChunks) {
|
||||
ZoneBytes w;
|
||||
w.Put<uint16_t>(30).Put<uint16_t>(0).Put<uint8_t>(1); // version, type, important
|
||||
w.Put<uint16_t>(30).Put<uint16_t>(0); // version, type; no important byte before 32
|
||||
w.data.append(48 + 12, '\0'); // version 30 settings the world skips
|
||||
w.Put<uint32_t>(0); // no skydome
|
||||
w.Put<uint32_t>(1);
|
||||
@@ -293,7 +293,7 @@ TEST(LevelFileTests, ReadsFilesWithoutChunks) {
|
||||
|
||||
TEST(LevelFileTests, DamagedFilesKeepWhatWasRead) {
|
||||
ZoneBytes w;
|
||||
w.Put<uint16_t>(30).Put<uint16_t>(0).Put<uint8_t>(1);
|
||||
w.Put<uint16_t>(30).Put<uint16_t>(0);
|
||||
w.data.append(48 + 12, '\0');
|
||||
w.Put<uint32_t>(0).Put<uint32_t>(2);
|
||||
w.Object(30, 1, 0, "a=0:b");
|
||||
|
||||
Reference in New Issue
Block a user