summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLéo Lam <leo@leolam.fr>2021-05-19 15:25:50 +0200
committerLéo Lam <leo@leolam.fr>2021-05-19 15:38:37 +0200
commit0c73c0d670ccc80da2d6805eaf70d4afd437a030 (patch)
treeabf7d8ef96dbbe29936bb21d653c77538408eae9
parent38ffb1f16091f301f6503814dfcf778c468e9ca3 (diff)
ksys/eco: Implement LevelSensor::init
-rw-r--r--data/uking_functions.csv2
-rw-r--r--src/KingSystem/Ecosystem/ecoLevelSensor.cpp13
-rw-r--r--src/KingSystem/Ecosystem/ecoLevelSensor.h2
3 files changed, 13 insertions, 4 deletions
diff --git a/data/uking_functions.csv b/data/uking_functions.csv
index 809c57cc..29c582c6 100644
--- a/data/uking_functions.csv
+++ b/data/uking_functions.csv
@@ -77869,7 +77869,7 @@
0x0000007100e424f4,Ecosystem::LevelSensor::ctor,40,_ZN4ksys3eco11LevelSensorC1Ev
0x0000007100e4251c,Ecosystem::LevelSensor::dtor,72,_ZN4ksys3eco11LevelSensorD1Ev
0x0000007100e42564,Ecosystem::LevelSensor::dtor_delete,80,_ZN4ksys3eco11LevelSensorD0Ev
-0x0000007100e425b4,Ecosystem::LevelSensor::init,288,
+0x0000007100e425b4,Ecosystem::LevelSensor::init,288,_ZN4ksys3eco11LevelSensor4initEPN4sead4HeapE
0x0000007100e426d4,Ecosystem::LevelSensor::scaleWeapon,1552,
0x0000007100e42ce4,Ecosystem::LevelSensor::scaleActor,1308,
0x0000007100e43200,Ecosystem::LevelSensor::calculatePoints,576,
diff --git a/src/KingSystem/Ecosystem/ecoLevelSensor.cpp b/src/KingSystem/Ecosystem/ecoLevelSensor.cpp
index f7db37fd..a5b74df2 100644
--- a/src/KingSystem/Ecosystem/ecoLevelSensor.cpp
+++ b/src/KingSystem/Ecosystem/ecoLevelSensor.cpp
@@ -1,4 +1,5 @@
#include "KingSystem/Ecosystem/ecoLevelSensor.h"
+#include "KingSystem/Resource/resLoadRequest.h"
#include "KingSystem/Utils/Byaml/Byaml.h"
namespace ksys::eco {
@@ -7,8 +8,16 @@ LevelSensor::LevelSensor() = default;
LevelSensor::~LevelSensor() {
mResHandle.requestUnload2();
- if (mBymlIter)
- delete mBymlIter;
+ if (mRootIter)
+ delete mRootIter;
+}
+
+void LevelSensor::init(sead::Heap* heap) {
+ res::LoadRequest req;
+ req.mRequester = "LevelSensor";
+ mResHandle.load("Ecosystem/LevelSensor.byml", &req);
+ auto* res = sead::DynamicCast<sead::DirectResource>(mResHandle.getResource());
+ mRootIter = new (heap) al::ByamlIter(res->getRawData());
}
} // namespace ksys::eco
diff --git a/src/KingSystem/Ecosystem/ecoLevelSensor.h b/src/KingSystem/Ecosystem/ecoLevelSensor.h
index 5b5d97f7..6d6d3fbb 100644
--- a/src/KingSystem/Ecosystem/ecoLevelSensor.h
+++ b/src/KingSystem/Ecosystem/ecoLevelSensor.h
@@ -52,7 +52,7 @@ private:
f32 mEnemyPoints{};
bool _14{};
f32 mDefaultPoints = -1;
- al::ByamlIter* mBymlIter = nullptr;
+ al::ByamlIter* mRootIter = nullptr;
res::Handle mResHandle;
};
KSYS_CHECK_SIZE_NX150(LevelSensor, 0x78);