From 8d44f2f5da762b245afcadffbc5c1d6b8ab9fe5d Mon Sep 17 00:00:00 2001 From: Aaron Kimbrell Date: Mon, 24 Oct 2022 00:54:21 -0500 Subject: [PATCH] Add missing property path checks for new zones (#783) Co-authored-by: Jett <55758076+Jettford@users.noreply.github.com> --- dZoneManager/Zone.cpp | 56 ++++++++++++++++++++++++++----------------- 1 file changed, 34 insertions(+), 22 deletions(-) diff --git a/dZoneManager/Zone.cpp b/dZoneManager/Zone.cpp index 9072080a..b670849b 100644 --- a/dZoneManager/Zone.cpp +++ b/dZoneManager/Zone.cpp @@ -403,30 +403,42 @@ void Zone::LoadPath(std::ifstream& file) { BinaryIO::BinaryRead(file, path.property.price); BinaryIO::BinaryRead(file, path.property.rentalTime); BinaryIO::BinaryRead(file, path.property.associatedZone); - uint8_t count1; - BinaryIO::BinaryRead(file, count1); - for (uint8_t i = 0; i < count1; ++i) { - uint16_t character; - BinaryIO::BinaryRead(file, character); - path.property.displayName.push_back(character); + + if (path.pathVersion >= 5) { + uint8_t count1; + BinaryIO::BinaryRead(file, count1); + for (uint8_t i = 0; i < count1; ++i) { + uint16_t character; + BinaryIO::BinaryRead(file, character); + path.property.displayName.push_back(character); + } + uint32_t count2; + BinaryIO::BinaryRead(file, count2); + for (uint8_t i = 0; i < count2; ++i) { + uint16_t character; + BinaryIO::BinaryRead(file, character); + path.property.displayDesc.push_back(character); + } } - uint32_t count2; - BinaryIO::BinaryRead(file, count2); - for (uint8_t i = 0; i < count2; ++i) { - uint16_t character; - BinaryIO::BinaryRead(file, character); - path.property.displayDesc.push_back(character); + + if (path.pathVersion >= 6) { + int32_t unknown1; + BinaryIO::BinaryRead(file, unknown1); + } + + if (path.pathVersion >= 7) { + BinaryIO::BinaryRead(file, path.property.cloneLimit); + BinaryIO::BinaryRead(file, path.property.repMultiplier); + BinaryIO::BinaryRead(file, path.property.rentalTimeUnit); + } + + if (path.pathVersion >= 8) { + BinaryIO::BinaryRead(file, path.property.achievementRequired); + BinaryIO::BinaryRead(file, path.property.playerZoneCoords.x); + BinaryIO::BinaryRead(file, path.property.playerZoneCoords.y); + BinaryIO::BinaryRead(file, path.property.playerZoneCoords.z); + BinaryIO::BinaryRead(file, path.property.maxBuildHeight); } - int32_t unknown1; - BinaryIO::BinaryRead(file, unknown1); - BinaryIO::BinaryRead(file, path.property.cloneLimit); - BinaryIO::BinaryRead(file, path.property.repMultiplier); - BinaryIO::BinaryRead(file, path.property.rentalTimeUnit); - BinaryIO::BinaryRead(file, path.property.achievementRequired); - BinaryIO::BinaryRead(file, path.property.playerZoneCoords.x); - BinaryIO::BinaryRead(file, path.property.playerZoneCoords.y); - BinaryIO::BinaryRead(file, path.property.playerZoneCoords.z); - BinaryIO::BinaryRead(file, path.property.maxBuildHeight); } else if (path.pathType == PathType::Camera) { uint8_t count; BinaryIO::BinaryRead(file, count);