cleanup and define all unknowns in zone reading (#826)

* cleanup and define all unknowns in zone reading
fix for movement path config reading

* simplify reading and don't use intermediates

* fix spelling

* remove dup variable in struct
read to the proper name that relates to the enum
This commit is contained in:
Aaron Kimbrell
2022-11-12 08:44:03 -06:00
committed by GitHub
parent 1eff3ae454
commit cf7fa8e52d
2 changed files with 68 additions and 66 deletions

View File

@@ -59,16 +59,32 @@ struct MovingPlatformPathWaypoint {
struct CameraPathWaypoint {
float time;
float fov;
float tension;
float continuity;
float bias;
};
struct RacingPathWaypoint {
uint8_t isResetNode;
uint8_t isNonHorizontalCamera;
float planeWidth;
float planeHeight;
float shortestDistanceToEnd;
};
struct RailPathWaypoint {
float speed;
std::vector<LDFBaseData*> config;
};
struct PathWaypoint {
NiPoint3 position;
NiQuaternion rotation; // not included in all, but it's more convenient here
MovingPlatformPathWaypoint movingPlatform;
CameraPathWaypoint camera;
RacingPathWaypoint racing;
RailPathWaypoint rail;
std::vector<LDFBaseData*> config;
};
@@ -89,6 +105,19 @@ enum class PathBehavior : uint32_t {
Once = 2
};
enum class PropertyPathType : int32_t {
Path = 0,
EntireZone = 1,
GenetatedRectangle = 2
};
enum class PropertyType : int32_t{
Premiere = 0,
Prize = 1,
LUP = 2,
Headspace = 3
};
enum class PropertyRentalTimeUnit : int32_t {
Forever = 0,
Seconds = 1,
@@ -116,17 +145,19 @@ enum class PropertyAchievmentRequired : int32_t {
struct MovingPlatformPath {
std::string platformTravelSound;
uint8_t timeBasedMovement;
};
struct PropertyPath {
PropertyPathType pathType;
int32_t price;
int32_t rentalTime;
PropertyRentalTimeUnit rentalTimeUnit;
uint64_t associatedZone;
std::string displayName;
std::string displayDesc;
PropertyType type;
int32_t cloneLimit;
float repMultiplier;
PropertyRentalTimeUnit rentalTimeUnit;
PropertyAchievmentRequired achievementRequired;
NiPoint3 playerZoneCoords;
float maxBuildHeight;
@@ -134,6 +165,7 @@ struct PropertyPath {
struct CameraPath {
std::string nextPath;
uint8_t rotatePlayer;
};
struct SpawnerPath {
@@ -150,6 +182,7 @@ struct Path {
uint32_t pathVersion;
PathType pathType;
std::string pathName;
uint32_t flags;
PathBehavior pathBehavior;
uint32_t waypointCount;
std::vector<PathWaypoint> pathWaypoints;
@@ -219,9 +252,11 @@ private:
std::map<LWOSCENEID, SceneRef, mapCompareLwoSceneIDs> m_Scenes;
std::vector<SceneTransition> m_SceneTransitions;
uint32_t m_PathDataLength;
//std::vector<char> m_PathData; //Binary path data
std::vector<Path> m_Paths;
uint32_t m_PathChunkVersion;
std::vector<Path> m_Paths;
std::map<LWOSCENEID, uint32_t, mapCompareLwoSceneIDs> m_MapRevisions; //rhs is the revision!
//private ("helper") functions: