mirror of
https://github.com/zeldaret/botw
synced 2026-09-10 11:55:19 -04:00
ksys/act: Add GlobalParameter
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user