mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2026-11-15 00:07:13 +00:00
fix: a zone file's boundaries and scene colours are named and kept as main has them
ZoneBoundary's destinationZone and destinationSceneID and the scene's NiColor, so main's scene tools and tests read the zone this branch's reader loads. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -124,9 +124,11 @@ void ZoneFile::ReadScene(std::istream& file, uint32_t index) {
|
||||
}
|
||||
|
||||
if (fileFormatVersion >= FileFormatVersion::LatePreAlpha) {
|
||||
BinaryIO::BinaryRead(file, scene.color_r);
|
||||
BinaryIO::BinaryRead(file, scene.color_b);
|
||||
BinaryIO::BinaryRead(file, scene.color_g);
|
||||
uint8_t r, b, g;
|
||||
BinaryIO::BinaryRead(file, r);
|
||||
BinaryIO::BinaryRead(file, b);
|
||||
BinaryIO::BinaryRead(file, g);
|
||||
scene.color = NiColor(r / 255.0f, g / 255.0f, b / 255.0f);
|
||||
}
|
||||
|
||||
scenes.push_back(std::move(scene));
|
||||
@@ -180,8 +182,8 @@ void ZoneFile::ReadZoneBoundaries(std::istream& file) {
|
||||
LWOINSTANCEID instanceID = 0;
|
||||
BinaryIO::BinaryRead(file, mapID);
|
||||
BinaryIO::BinaryRead(file, instanceID);
|
||||
boundary.destZoneID = LWOZONEID(mapID, instanceID, 0);
|
||||
BinaryIO::BinaryRead(file, boundary.destSceneID);
|
||||
boundary.destinationZone = LWOZONEID(mapID, instanceID, 0);
|
||||
BinaryIO::BinaryRead(file, boundary.destinationSceneID);
|
||||
BinaryIO::BinaryRead(file, boundary.spawnLocation);
|
||||
zoneBoundaries.push_back(boundary);
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
#include "dCommonVars.h"
|
||||
#include "NiPoint3.h"
|
||||
#include "NiQuaternion.h"
|
||||
#include "NiColor.h"
|
||||
#include "LDFFormat.h"
|
||||
#include "eSceneType.h"
|
||||
#include "eWaypointCommandType.h"
|
||||
@@ -34,17 +35,15 @@ struct ZoneScene {
|
||||
std::string name;
|
||||
NiPoint3 unknown1;
|
||||
float unknown2{};
|
||||
uint8_t color_r{};
|
||||
uint8_t color_g{};
|
||||
uint8_t color_b{};
|
||||
NiColor color;
|
||||
};
|
||||
|
||||
// A line the player crosses to leave the zone (the client's LuzReader::ReadZoneBoundaryLines)
|
||||
struct ZoneBoundary {
|
||||
NiPoint3 normal;
|
||||
NiPoint3 point;
|
||||
LWOZONEID destZoneID; // clone 0
|
||||
uint32_t destSceneID{};
|
||||
LWOZONEID destinationZone; // clone 0
|
||||
uint32_t destinationSceneID{};
|
||||
NiPoint3 spawnLocation;
|
||||
};
|
||||
|
||||
|
||||
@@ -121,10 +121,10 @@ TEST(ZoneFileTests, ReadsZoneBoundaries) {
|
||||
const auto& boundary = zone.zoneBoundaries[0];
|
||||
EXPECT_EQ(boundary.normal, NiPoint3(1, 0, 0));
|
||||
EXPECT_EQ(boundary.point, NiPoint3(10, 20, 30));
|
||||
EXPECT_EQ(boundary.destZoneID, LWOZONEID(1100, 7, 0));
|
||||
EXPECT_EQ(boundary.destSceneID, 4u);
|
||||
EXPECT_EQ(boundary.destinationZone, LWOZONEID(1100, 7, 0));
|
||||
EXPECT_EQ(boundary.destinationSceneID, 4u);
|
||||
EXPECT_EQ(boundary.spawnLocation, NiPoint3(5, 6, 7));
|
||||
EXPECT_EQ(zone.zoneBoundaries[1].destZoneID, LWOZONEID(1200, 0, 0));
|
||||
EXPECT_EQ(zone.zoneBoundaries[1].destinationZone, LWOZONEID(1200, 0, 0));
|
||||
EXPECT_EQ(zone.zoneRawPath, "zone.raw");
|
||||
EXPECT_EQ(zone.zoneName, "Name");
|
||||
EXPECT_EQ(zone.zoneDesc, "Description");
|
||||
|
||||
Reference in New Issue
Block a user