1#pragma once
2
3#include <heap/seadFrameHeap.h>
4
5#include "Library/Resource/Resource.h"
6#include "Library/Thread/AsyncFunctorThread.h"
7
8#include "System/GameDataHolder.h"
9
10class WorldResourceLoader : public al::HioNode {
11public:
12 WorldResourceLoader(GameDataHolder*);
13 virtual ~WorldResourceLoader();
14 void loadResource();
15 void cancelLoadWorldResource();
16 void tryDestroyWorldResource();
17 bool requestLoadWorldHomeStageResource(s32 worldIndex, s32 scenario);
18 bool isEndLoadWorldResource() const;
19 void requestLoadWorldResourceCommon(s32);
20 bool requestLoadWorldResource(s32);
21 void createResourcePlayer();
22 void tryDestroyWorldResourceOnlyCap();
23 f32 calcLoadPercent() const;
24 s32 getLoadWorldId() const;
25 al::Resource* tryLoadResource(const char*, const char*, const char*);
26 void loadWorldResource(s32, s32, bool, const char*);
27 f32 calcWorldResourceHeapSize() const;
28
29private:
30 al::AsyncFunctorThread* mWorldResourceLoader = nullptr; // WorldResourceLoader::loadResource
31 sead::Heap* mWorldResourceHeap = nullptr;
32 sead::FrameHeap* mCapWorldHeap = nullptr;
33 sead::FrameHeap* mWaterfallWorldHeap = nullptr;
34 s32 mLoadWorldId = -1;
35 s32 mScenarioNo = -1;
36 bool mIsScenarioRes = true;
37 bool mIsCancelled = false;
38 void* unkPtr4 = nullptr;
39 void* unkPtr5 = nullptr;
40 s32 unkInt3 = 0;
41 bool mIsLoadResTable = true;
42 s32 mCurLoadCount = 0;
43 s32 mMaxLoadCount = 1;
44 GameDataHolder* mDataHolder = nullptr;
45 bool mIsLoadedPlayerModel = false;
46 s32 unkInt6 = 0;
47};
48