summaryrefslogtreecommitdiff
path: root/ZAPD/ZPath.h
diff options
context:
space:
mode:
authorAnghelo Carvajal <angheloalf95@gmail.com>2021-05-10 12:25:39 -0400
committerGitHub <noreply@github.com>2021-05-10 12:25:39 -0400
commit769f5702a422d14bfb0a60a39319da4b4bf9ec1f (patch)
tree11e12a20fb2880792722babdee0b5222ea86504f /ZAPD/ZPath.h
parenta357277e412b5e8f0f2f0578c7d7d213e8744c8d (diff)
ZRoom refactor (#124)
* Remove redundant methods * first pass os cleaning * More cleaning * Fix compilation errors * Fix dumb crashes * Fix dumb issues * Removing most uses of GenerateSourceCodePass1 * more cleanup * Move segmentOffset to ZRoomCommand * Half of ParseRawData * somehow broken... * fix broken stuff * This may or may not be broken * More cleaning * Remove GenerateSourceCodePass2 * More cleanup and pointer removal * Use PolygonType2 in SetMesh * another small cleanup * Merge PolygonDlist and PolygonDlist2 * More code merging * GetDeclarationPtrName * Remove most repeated externs and a bit of redundant code * Dumb MM fixes * small fix (cherry picked from commit 0813fd69538491c5aceb00d79d19bf59fd082ca7) * Another dumb fix * Remove GenerateExterns * Change DeclareReferences signature * Refactor SetAnimatedTextureList * const std::vector<uint8_t>& * another small bunch of changes * last parserawdata and declarereferences separation probably * Move parserawdata * Remove GenerateSourceCodePass1 * Use macros for commands * Make ZRoomCommand inherit ZResource * shrink scenes tluts * ProcessTextureIntersections * small output improvements * Small changes * run format * SCENE_CMD -> SCENECMD * fix merge errors * run format * fix some warnings * update macros names * Add again different commands for each game ni SCENE_CMD_ROOM_BEHAVIOR * macro update * More booleans * Move declaration to its own file * minor changes * Update according to latest reviews in oot * run format * Yet another cutscene change * Remove special scene/room segment code * This is crashing and I don't know why * remove includeFilePrefix * fix merge issues * always pass a parent to zresource * move path to its own zclass and properly implement parserawdata in commands * Fix GetDeclarationPtrName uses * Some ZPath fixes (still broken tho) * Fix ZPath declarations * Fix weird problem * Add `Path` to the docs * run format * clean syotes code * A bunch of changes for MM * run format
Diffstat (limited to 'ZAPD/ZPath.h')
-rw-r--r--ZAPD/ZPath.h51
1 files changed, 51 insertions, 0 deletions
diff --git a/ZAPD/ZPath.h b/ZAPD/ZPath.h
new file mode 100644
index 0000000..d02f163
--- /dev/null
+++ b/ZAPD/ZPath.h
@@ -0,0 +1,51 @@
+#pragma once
+
+#include "ZResource.h"
+#include "ZVector.h"
+
+class PathwayEntry : public ZResource
+{
+public:
+ PathwayEntry(ZFile* nParent);
+
+ void ParseRawData() override;
+ void DeclareReferences(const std::string& prefix) override;
+
+ std::string GetBodySourceCode() const;
+ void DeclareVar();
+
+ size_t GetRawDataSize() const;
+ segptr_t GetListAddress() const;
+
+protected:
+ int32_t numPoints;
+ int8_t unk1; // (MM Only)
+ int16_t unk2; // (MM Only)
+ segptr_t listSegmentAddress;
+ std::vector<ZVector> points;
+};
+
+class ZPath : public ZResource
+{
+public:
+ ZPath(ZFile* nParent);
+
+ void ExtractFromXML(tinyxml2::XMLElement* reader, const std::vector<uint8_t>& nRawData,
+ const uint32_t nRawDataIndex);
+
+ void ParseXML(tinyxml2::XMLElement* reader) override;
+ void ParseRawData() override;
+ void DeclareReferences(const std::string& prefix) override;
+
+ std::string GetBodySourceCode() const;
+ std::string GetSourceOutputCode(const std::string& prefix) override;
+
+ std::string GetSourceTypeName() const override;
+
+ size_t GetRawDataSize() const override;
+ void SetNumPaths(uint32_t nNumPaths);
+
+protected:
+ uint32_t numPaths;
+ std::vector<PathwayEntry> pathways;
+};