summaryrefslogtreecommitdiff
path: root/src/KingSystem/Map
diff options
context:
space:
mode:
authorBrian Savage <savage13@gmail.com>2022-01-19 19:21:05 -0500
committerBrian Savage <savage13@gmail.com>2022-01-19 19:21:05 -0500
commit7d97bb6f4008ae15ab8ca6c94fb09bf03c3d307e (patch)
tree7555bf1ea2f27c55a6197b0eefe03944e35c3dbd /src/KingSystem/Map
parentd61a13e4bd4a3bafab46280f65b0364895880a54 (diff)
Moved functions to correct places/files, formatting
Diffstat (limited to 'src/KingSystem/Map')
-rw-r--r--src/KingSystem/Map/CMakeLists.txt6
-rw-r--r--src/KingSystem/Map/mapPlacementMap.cpp37
-rw-r--r--src/KingSystem/Map/mapPlacementMap.h247
-rw-r--r--src/KingSystem/Map/mapPlacementMapMgr.cpp7
-rw-r--r--src/KingSystem/Map/mapPlacementMapMgr.h63
5 files changed, 190 insertions, 170 deletions
diff --git a/src/KingSystem/Map/CMakeLists.txt b/src/KingSystem/Map/CMakeLists.txt
index def6b794..4c612d59 100644
--- a/src/KingSystem/Map/CMakeLists.txt
+++ b/src/KingSystem/Map/CMakeLists.txt
@@ -14,6 +14,10 @@ target_sources(uking PRIVATE
mapObjectLink.h
mapPlacementActors.cpp
mapPlacementActors.h
+ mapPlacementMap.cpp
+ mapPlacementMap.h
+ mapPlacementMapMgr.cpp
+ mapPlacementMapMgr.h
mapPlacementMgr.cpp
mapPlacementMgr.h
mapPlacementTree.cpp
@@ -22,6 +26,4 @@ target_sources(uking PRIVATE
mapRail.h
mapStagePreActorCache.cpp
mapStagePreActorCache.h
- mapPlacementMap.cpp
- mapPlacementMap.h
)
diff --git a/src/KingSystem/Map/mapPlacementMap.cpp b/src/KingSystem/Map/mapPlacementMap.cpp
index 66e4bd48..d5b04963 100644
--- a/src/KingSystem/Map/mapPlacementMap.cpp
+++ b/src/KingSystem/Map/mapPlacementMap.cpp
@@ -2,14 +2,35 @@
namespace ksys::map {
-SEAD_SINGLETON_DISPOSER_IMPL(PlacementMapMgr)
-
-void PlacementMapMgr::junk() {
- /* Here to force the compiler to include PlacementMap */
- PlacementMap x;
- auto y = new PlacementMap;
- (void)(x);
- (void)(y);
+PlacementMap::PlacementMap() {
+ mInitStatus = InitStatus::None;
+ mParsedNumStaticObjs = 0xFFFFFFFF;
+ mStaticMapLoaded = StaticMap_None;
+ mNumStaticObjs = 0xFFFFFFFF;
+ mMat = sead::Matrix34f::ident;
+ mDistanceToCurrentMapUnit = 0;
+ mSkipLoadStaticMap = 0;
+ _38c = 0xFFFFFFFF;
+ mIdx = 0;
+ _388 = 0;
+ mCol = 0;
+ mRow = 0;
+ mNumRoutes = 0;
+ mP18 = 0;
+ mMgr = 0;
+ mPa = 0;
+ mDynamicGroupIdx = 0xFFFFFFFF;
+ mRes[0].mStatus = HkscRes::Status::_0;
+ mRes[1].mStatus = HkscRes::Status::_0;
+ mRes[2].mStatus = HkscRes::Status::_0;
+ mRes[3].mStatus = HkscRes::Status::_0;
+}
+
+PlacementMap::~PlacementMap() {
+ mRoutes.freeBuffer();
+ for (auto& r : mRes) {
+ r.cleanup();
+ }
}
} // namespace ksys::map
diff --git a/src/KingSystem/Map/mapPlacementMap.h b/src/KingSystem/Map/mapPlacementMap.h
index f59cff01..b28e8844 100644
--- a/src/KingSystem/Map/mapPlacementMap.h
+++ b/src/KingSystem/Map/mapPlacementMap.h
@@ -1,91 +1,72 @@
#pragma once
+#include <basis/seadTypes.h>
#include <container/seadBuffer.h>
#include <container/seadPtrArray.h>
-#include <heap/seadDisposer.h>
-#include <heap/seadExpHeap.h>
+#include <container/seadSafeArray.h>
+#include <heap/seadHeap.h>
#include <math/seadMatrix.h>
+#include <prim/seadSafeString.h>
#include "KingSystem/Map/mapPlacementActors.h"
+#include "KingSystem/Map/mapPlacementMapMgr.h"
#include "KingSystem/Physics/StaticCompound/physStaticCompound.h"
#include "KingSystem/Resource/resHandle.h"
+#include "KingSystem/Utils/Types.h"
namespace ksys::map {
-class PlacementMapMgr; /* See Below */
-class MapProperties;
-class Placement18;
-class FarActorMerge;
-
-class PlacementMapHkscRes {
- enum {
- Status_2 = 2, // Call cleanupHkscMaybe(), if ok, set to 3
- Status_3 = 3,
- Status_4 = 4, // Call staticCompoundStuff, if ok, set to 5
- Status_5 = 5,
- };
+class PlacementMapMgr;
+class PlacementMap {
public:
- PlacementMapHkscRes() = default;
- ~PlacementMapHkscRes() = default;
-
- ksys::res::Handle res;
- s32 statusMaybe;
- bool _54;
- bool _55;
- bool _56;
- bool _57;
-
- void cleanup() {
- auto r = res.getResource();
- if (auto ptr = sead::DynamicCast<ksys::phys::StaticCompound>(r)) {
- if (ptr->calledFromMapDtor()) {
- ptr->cleanUp();
+ struct HkscRes {
+ enum class Status {
+ _0 = 0,
+ _1 = 1,
+ _2 = 2, // Call cleanupHkscMaybe(), if ok, set to 3
+ _3 = 3,
+ _4 = 4, // Call staticCompoundStuff, if ok, set to 5
+ _5 = 5,
+ };
+
+ HkscRes() = default;
+ ~HkscRes() = default;
+
+ res::Handle mRes;
+ Status mStatus;
+ // bool _pad[4];
+
+ void cleanup() {
+ auto* r = mRes.getResource();
+ if (auto sc = sead::DynamicCast<phys::StaticCompound>(r)) {
+ if (sc->calledFromMapDtor()) {
+ sc->cleanUp();
+ }
}
}
- }
-};
-KSYS_CHECK_SIZE_NX150(PlacementMapHkscRes, 0x58);
+ };
+ KSYS_CHECK_SIZE_NX150(HkscRes, 0x58);
-class PlacementMap {
+ // This enum is used on a u16. enum classses are 32 bit
enum { StaticMap_None = 0, StaticMap_Loaded = 1 << 0, StaticMap_Parsed = 1 << 8 };
-
-public:
- __attribute__((noinline)) PlacementMap() {
- initStatus = PlacementMap::InitStatus_None;
- parsedNumStaticObjs = 0xFFFFFFFF;
- staticMapLoaded = StaticMap_None;
- numStaticObjs = 0xFFFFFFFF;
- mat = sead::Matrix34f::ident;
- distanceToCurrentMapUnit = 0;
- skipLoadStaticMap = 0;
- _38c = 0xFFFFFFFF;
- idx = 0;
- _388 = 0;
- col = 0;
- row = 0;
- numRoutes = 0;
- p18 = 0;
- mgr = 0;
- pa = 0;
- dynamicGroupIdx = 0xFFFFFFFF;
- res[0].statusMaybe = 0;
- res[1].statusMaybe = 0;
- res[2].statusMaybe = 0;
- res[3].statusMaybe = 0;
+ enum class InitStatus {
+ None = 0,
+ StaticLoaded = 1,
+ DynamicLoadStarted = 2,
+ DynamicLoaded = 3,
+ _4 = 4,
+ _5 = 5, // x_9 takes initStatus from 4 to 5 in pmm->updateHkscLoadStatuesMaybe()
};
+ KSYS_CHECK_SIZE_NX150(InitStatus, 4);
- ~PlacementMap() {
- routes.freeBuffer();
- for (auto& r : res) {
- r.cleanup();
- }
- }
+ PlacementMap();
+ ~PlacementMap();
- s32 loadStaticMap_(u8 load);
+ s32 loadStaticMap_(bool load);
void doLoadStaticMap_(bool load);
- bool parseStaticMap_(sead::ExpHeap* heap, u8* data);
- void parseMap_(sead::ExpHeap* heap, u8* data, int group, u32 idx);
+ bool parseStaticMap_(sead::Heap* heap, u8* data);
+ void parseMap_(sead::Heap* heap, u8* data, int group, u32 idx);
bool loadDynamicMap();
@@ -96,109 +77,55 @@ public:
void unloadStaticMubin();
s32 x_6();
void x_5();
- s64 traverseStuff(sead::Vector3f vec, map::PlacementActors* pa, int a4);
+ s64 traverseStuff(sead::Vector3f* vec, PlacementActors* pa, int id);
- phys::BodyGroup* getFieldBodyGroup(u32 a2);
+ phys::BodyGroup* getFieldBodyGroup(u32 field_body_group_id);
void cleanupPhysics();
- bool loadStaticCompound(int wl_0, bool a3, bool a4);
- s32 x_2(s32 a2);
- void x(int a2, map::Object* obj);
- void unloadHksc(s32 a2);
- s32 x_4(s64 a2);
- s32 x_1(s64 a2);
- bool staticCompoundStuff(s32 scId, bool cleanup);
- s64 cleanHkscMaybe(s32 a2);
- bool sub_7100D43F18(sead::Vector3f* pos);
- void doDisableObjStaticCompound(map::Object* obj, bool disable);
+ bool loadStaticCompound(int id, bool is_auto_gen_mu, bool load_maybe);
+ s32 x_2(s32 id);
+ void x(int id, Object* obj);
+ void unloadHksc(s32 id);
+ s32 x_4(s64 id);
+ s32 x_1(s64 id);
+ bool staticCompoundStuff(s32 sc_id, bool cleanup);
+ s64 cleanHkscMaybe(s32 id);
+ bool sub_7100D43F18(sead::Vector3f& pos);
+ void doDisableObjStaticCompound(Object* obj, bool disable);
void x_9();
- void x_7(int idx, int a3, char column, char row, sead::SafeString* mubinPath,
- sead::SafeString* folderAndFile, int a8, bool a9);
-
- enum {
- InitStatus_None = 0,
- InitStatus_StaticLoaded = 1,
- InitStatus_DynamicLoadStarted = 2,
- InitStatus_DynamicLoaded = 3,
- InitStatus_4 = 4,
- InitStatus_5 = 5, // x_9 takes initStatus from 4 to 5 in pmm->updateHkscLoadStatuesMaybe()
+ void x_7(int idx, int unknown, char column, char row, sead::SafeString* mubinPath,
+ sead::SafeString* folderAndFile, int map_id_maybe, bool skip_load_static_map);
- };
-
- u16 skipLoadStaticMap;
- u16 staticMapLoaded;
+ u16 mSkipLoadStaticMap;
+ u16 mStaticMapLoaded;
u16 _04;
s16 _06;
- sead::FixedSafeString<128> mubinPath; // 008
- sead::FixedSafeString<128> folderAndFile; // 0a0
- u32 idx; //
- sead::SafeArray<PlacementMapHkscRes, 4> res; // 140
- ksys::res::Handle staticMubinRes; // 2a0
- ksys::res::Handle dynamicMubinRes; // 2f0
- s32 dynamicGroupIdx; // 340
- s32 parsedNumStaticObjs; // 344
- s32 numStaticObjs; // 348
- u32 initStatus; // 34c
- s8 col; // 350
- s8 row; // 351
- u16 field_352; // 352
- sead::Matrix34f mat; // 354
- s32 distanceToCurrentMapUnit; // 384
- u32 _388; // 388 check x_7() called ....
- u32 _38c; // 38c ... from MapMgr::ctor (a8)
- ksys::map::PlacementActors* pa; // 390
- ksys::map::PlacementMapMgr* mgr; // 398
- void* p18; // 3a0
- sead::Buffer<void*> routes; // 3a8 Raw Object Data
- s32 numRoutes; // 3b8
- s32 gap_38c; // 3bc
- sead::CriticalSection cs; // 3c0
+ sead::FixedSafeString<128> mMubinPath;
+ sead::FixedSafeString<128> mFolderAndFile;
+ u32 mIdx;
+ sead::SafeArray<HkscRes, 4> mRes;
+ res::Handle mStaticMubinRes;
+ res::Handle mDynamicMubinRes;
+ s32 mDynamicGroupIdx;
+ s32 mParsedNumStaticObjs;
+ s32 mNumStaticObjs;
+ InitStatus mInitStatus;
+ s8 mCol;
+ s8 mRow;
+ u16 _352;
+ sead::Matrix34f mMat;
+ s32 mDistanceToCurrentMapUnit;
+ u32 _388; // 388 check x_7() called ....
+ u32 _38c; // 38c ... from MapMgr::ctor (a8)
+ PlacementActors* mPa;
+ PlacementMapMgr* mMgr;
+ void* mP18;
+ sead::Buffer<void*> mRoutes;
+ s32 mNumRoutes;
+ s32 gap_38c;
+ sead::CriticalSection mCs;
};
KSYS_CHECK_SIZE_NX150(PlacementMap, 0x400);
-/* NOT WORKING */
-class PlacementMapMgrMapArray {
-public:
- PlacementMapMgrMapArray() = default;
- ~PlacementMapMgrMapArray() = default;
-
- sead::PtrArray<PlacementMap> maps; /* 0x00 */
- sead::PtrArray<PlacementMap> ptrs; /* 0x10 */
- map::PlacementActors* pa; /* 0x20 */
- s64 _28; /* 0x28 */
- ksys::res::Handle res; /* 0x30 */
- Placement18* p18; /* 0x80 */
- s32 _88; /* 0x88 */
- s32 _8c; /* 0x8c */
- void* _90; /* 0x90 */
-};
-KSYS_CHECK_SIZE_NX150(PlacementMapMgrMapArray, 0x98);
-
-/* NOT WORKING */
-class PlacementMapMgr {
- SEAD_SINGLETON_DISPOSER(PlacementMapMgr)
-public:
- PlacementMapMgr() = default;
- ~PlacementMapMgr() = default;
-
- void junk(); // Here to make compiler include MapPlacement - REMOVE
-
- s32 numMaps; /* 0x00 */
- s32 _4; /* 0x04 */
- ksys::map::PlacementMap* maps; /* 0x08 */
- ksys::map::MapProperties* mapProps; /* 0x10 */
- s32 _18; /* 0x18 */
- s32 _1c; /* 0x1c */
- ksys::map::PlacementMapMgrMapArray mapArray; /* 0x20 */
- ksys::map::FarActorMerge* farActorMerge; /* 0xB8 */
- s32 needLoadDynMap; /* 0xC0 */
- s32 needLoadDynMapPhysics; /* 0xC4 */
- char isShrineOrDivineBeast; /* 0xC8 */
- char isShrine; /* 0xC9 */
- char _ca[6]; /* 0xCA */
-};
-/* Size - D0 ? */
-KSYS_CHECK_SIZE_NX150(PlacementMapMgr, 0xF0);
-
} // namespace ksys::map
diff --git a/src/KingSystem/Map/mapPlacementMapMgr.cpp b/src/KingSystem/Map/mapPlacementMapMgr.cpp
new file mode 100644
index 00000000..cef6d483
--- /dev/null
+++ b/src/KingSystem/Map/mapPlacementMapMgr.cpp
@@ -0,0 +1,7 @@
+#include "KingSystem/Map/mapPlacementMapMgr.h"
+
+namespace ksys::map {
+
+SEAD_SINGLETON_DISPOSER_IMPL(PlacementMapMgr)
+
+} // namespace ksys::map
diff --git a/src/KingSystem/Map/mapPlacementMapMgr.h b/src/KingSystem/Map/mapPlacementMapMgr.h
new file mode 100644
index 00000000..f5146203
--- /dev/null
+++ b/src/KingSystem/Map/mapPlacementMapMgr.h
@@ -0,0 +1,63 @@
+#pragma once
+
+#include <basis/seadTypes.h>
+#include <container/seadPtrArray.h>
+#include <heap/seadDisposer.h>
+#include "KingSystem/Map/mapPlacementMap.h"
+#include "KingSystem/Resource/resHandle.h"
+#include "KingSystem/Utils/Types.h"
+
+namespace ksys::map {
+
+class MapProperties;
+class Placement18;
+class FarActorMerge;
+
+class PlacementMap;
+
+/* NOT WORKING */
+class PlacementMapArray {
+public:
+ PlacementMapArray() = default;
+ ~PlacementMapArray() = default;
+
+ sead::PtrArray<PlacementMap> mMaps;
+ sead::PtrArray<PlacementMap> mPtrs;
+ PlacementActors* mPa;
+ s64 _28;
+ res::Handle mRes;
+ Placement18* mP18;
+ s32 _88;
+ s32 _8c;
+ void* _90;
+};
+KSYS_CHECK_SIZE_NX150(PlacementMapArray, 0x98);
+
+/* NOT WORKING */
+class PlacementMapMgr {
+ SEAD_SINGLETON_DISPOSER(PlacementMapMgr)
+
+public:
+ PlacementMapMgr() = default;
+ ~PlacementMapMgr() = default;
+
+ void junk(); // Here to make compiler include MapPlacement - REMOVE
+
+ s32 mNumMaps;
+ s32 _4;
+ PlacementMap* mMaps;
+ MapProperties* mMapProps;
+ s32 _18;
+ s32 _1c;
+ PlacementMapArray mMapArray;
+ FarActorMerge* mFarActorMerge;
+ s32 mNeedLoadDynMap;
+ s32 mNeedLoadDynMapPhysics;
+ bool mIsShrineOrDivineBeast;
+ bool mIsShrine;
+ // char pad[6];
+};
+/* Size - D0 ? */
+KSYS_CHECK_SIZE_NX150(PlacementMapMgr, 0xF0);
+
+} // namespace ksys::map