ksys/act: Add GlobalParameter

This commit is contained in:
Léo Lam
2021-01-09 18:34:58 +01:00
parent 8569722db6
commit 1999ea8721
5 changed files with 105 additions and 11 deletions
+10 -9
View File
@@ -78166,15 +78166,16 @@
0x0000007100e4cf18,_ZNK5uking2ai11DefWanderAI18getRuntimeTypeInfoEv,92,_ZNK5uking2ai11DefWanderAI18getRuntimeTypeInfoEv
0x0000007100e4cf74,_ZN5uking2ai11DefWanderAID1Ev,4,_ZN5uking2ai11DefWanderAID1Ev
0x0000007100e4cf78,_ZN5uking2ai11DefWanderAID0Ev,36,_ZN5uking2ai11DefWanderAID0Ev
0x0000007100e4cf9c,sub_7100E4CF9C,96,
0x0000007100e4cffc,sub_7100E4CFFC,104,
0x0000007100e4d064,GlobalParameter::createInstance,132,
0x0000007100e4d0e8,GlobalParameter::deleteInstance,92,
0x0000007100e4d144,GlobalParameter::stubbed,8,
0x0000007100e4d14c,GlobalParameter::unload,92,
0x0000007100e4d1a8,GlobalParameter::loadActorPack,84,
0x0000007100e4d1fc,GlobalParameter::resIsReady,60,
0x0000007100e4d238,GlobalParameter::loadActorFiles,256,
0x0000007100e4cf9c,sub_7100E4CF9C,96,_ZN4ksys3act15GlobalParameter18SingletonDisposer_D2Ev
0x0000007100e4cffc,sub_7100E4CFFC,104,_ZN4ksys3act15GlobalParameter18SingletonDisposer_D0Ev
0x0000007100e4d064,GlobalParameter::createInstance,132,_ZN4ksys3act15GlobalParameter14createInstanceEPN4sead4HeapE
0x0000007100e4d0e8,GlobalParameter::deleteInstance,92,_ZN4ksys3act15GlobalParameter14deleteInstanceEv
0x0000007100e4d144,GlobalParameter::stubbed,8,_ZN4ksys3act15GlobalParameter4initEPN4sead4HeapE
0x0000007100e4d14c,GlobalParameter::unload,92,_ZN4ksys3act15GlobalParameter8finalizeEv
0x0000007100e4d1a8,GlobalParameter::loadActorPack,84,_ZN4ksys3act15GlobalParameter13loadActorPackEPN4sead4HeapE
0x0000007100e4d1fc,GlobalParameter::resIsReady,60,_ZNK4ksys3act15GlobalParameter16isActorPackReadyEv
0x0000007100e4d238,GlobalParameter::loadActorFiles,4,_ZN4ksys3act15GlobalParameter15loadActorParamsEv
0x0000007100e4d23c,GlobalParameter::loadActorFiles_,252,_ZN4ksys3act15GlobalParameter16loadActorParams_Ev
0x0000007100e4d338,ActorLimiter::List::init,236,_ZN4ksys3act12ActorLimiter4List4initEPN4sead4HeapEi
0x0000007100e4d424,ActorLimiter::List::addActor,428,_ZN4ksys3act12ActorLimiter4List8addActorEPNS0_8BaseProcEb
0x0000007100e4d5d0,ActorLimiter::Disposer::dtor,204,_ZN4ksys3act12ActorLimiter18SingletonDisposer_D2Ev
Can't render this file because it is too large.
@@ -66,6 +66,8 @@ target_sources(uking PRIVATE
actBaseProcUnit.h
actDebug.cpp
actDebug.h
actGlobalParameter.cpp
actGlobalParameter.h
actInfoCommon.cpp
actInfoCommon.h
actInfoData.cpp
@@ -46,6 +46,9 @@ public:
u32 load_req_c);
void unloadParam(ActorParam* param);
bool requestLoadActorPack(res::Handle* handle, const sead::SafeString& actor_name,
u32 load_req_c);
ActorParam* loadParamAsync(const char* actor_name, res::Handle* pack_handle,
bool* allocated_new, void* x, u32 load_req_c);
bool finishLoadingActorLink(ActorParam* param, void* x);
@@ -65,8 +68,6 @@ private:
void loadFiles(ActorParam* param, sead::Heap* heap, res::Handle* pack_handle, void* x,
u32 load_req_c);
bool requestLoadActorPack(res::Handle* handle, const sead::SafeString& actor_name,
u32 load_req_c);
bool prepareLoadFromActorPack(sead::BufferedSafeString* path, res::LoadRequest* req, void* x,
const sead::SafeString& dir_name,
const sead::SafeString& extension,
@@ -0,0 +1,53 @@
#include "KingSystem/ActorSystem/actGlobalParameter.h"
#include "KingSystem/ActorSystem/actActorParam.h"
#include "KingSystem/ActorSystem/actActorParamMgr.h"
#include "KingSystem/Resource/resResourceArchive.h"
#include "KingSystem/Resource/resResourceGParamList.h"
namespace ksys::act {
SEAD_SINGLETON_DISPOSER_IMPL(GlobalParameter)
bool GlobalParameter::init(sead::Heap* heap) {
return true;
}
void GlobalParameter::finalize() {
if (mActorParam) {
ActorParamMgr::instance()->unloadParam(mActorParam);
mActorParam = nullptr;
}
mGlobalParam = nullptr;
if (mResHandle.getResource())
mResHandle.requestUnload();
}
void GlobalParameter::loadActorPack(sead::Heap* heap) {
ActorParamMgr::instance()->requestLoadActorPack(&mResHandle, "GlobalParameter", 1);
}
bool GlobalParameter::isActorPackReady() const {
return mResHandle.checkLoadStatus() || mResHandle.isReady();
}
bool GlobalParameter::loadActorParams() {
return loadActorParams_();
}
bool GlobalParameter::loadActorParams_() {
const auto* res = sead::DynamicCast<res::Archive>(mResHandle.getResource());
if (!res)
return false;
void* x;
mActorParam = ActorParamMgr::instance()->loadParam("GlobalParameter", &mResHandle, &x, 1);
if (mActorParam->getRes().mGParamList)
mGlobalParam = mActorParam->getRes().mGParamList->getGlobal();
return mGlobalParam != nullptr;
}
} // namespace ksys::act
@@ -0,0 +1,37 @@
#pragma once
#include <heap/seadDisposer.h>
#include "KingSystem/Resource/resHandle.h"
namespace ksys::res {
class GParamListObjectGlobal;
}
namespace ksys::act {
class ActorParam;
class GlobalParameter {
SEAD_SINGLETON_DISPOSER(GlobalParameter)
GlobalParameter() = default;
~GlobalParameter() = default;
public:
bool init(sead::Heap* heap);
void finalize();
void loadActorPack(sead::Heap* heap);
bool isActorPackReady() const;
bool loadActorParams();
const res::GParamListObjectGlobal* getGlobalParam() const { return mGlobalParam; }
private:
bool loadActorParams_();
ActorParam* mActorParam{};
const res::GParamListObjectGlobal* mGlobalParam{};
res::Handle mResHandle{};
};
} // namespace ksys::act