From 0c73c0d670ccc80da2d6805eaf70d4afd437a030 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Lam?= Date: Wed, 19 May 2021 15:25:50 +0200 Subject: [PATCH] ksys/eco: Implement LevelSensor::init --- data/uking_functions.csv | 2 +- src/KingSystem/Ecosystem/ecoLevelSensor.cpp | 13 +++++++++++-- src/KingSystem/Ecosystem/ecoLevelSensor.h | 2 +- 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(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);