1#pragma once
2
3#include <heap/seadHeap.h>
4
5namespace al {
6class FileLoader;
7class ResourceSystem;
8class SaveDataDirector;
9class MemorySystem;
10
11class SystemKit {
12public:
13 SystemKit();
14
15 void createFileLoader(s32 threadPriority);
16 void createMemorySystem(sead::Heap* heap);
17 void createResourceSystem(const char* archivePath, s32 threadPriority,
18 s32 decompressDestinationSize, bool useSubCore);
19 void createSaveDataSystem(u32 workBufferSize, s32 threadPriority);
20
21 MemorySystem* getMemorySystem() { return mMemorySystem; }
22
23 FileLoader* getFileLoader() { return mFileLoader; }
24
25 ResourceSystem* getResourceSystem() { return mResourceSystem; }
26
27 SaveDataDirector* getSaveDataDirector() { return mSaveDataDirector; }
28
29protected:
30 friend class alProjectInterface;
31
32private:
33 MemorySystem* mMemorySystem = nullptr;
34 FileLoader* mFileLoader = nullptr;
35 ResourceSystem* mResourceSystem = nullptr;
36 SaveDataDirector* mSaveDataDirector = nullptr;
37};
38
39static_assert(sizeof(SystemKit) == 0x20);
40} // namespace al
41