| 1 | #pragma once |
|---|---|
| 2 | |
| 3 | #include <container/seadStrTreeMap.h> |
| 4 | #include <heap/seadExpHeap.h> |
| 5 | #include <heap/seadHeapMgr.h> |
| 6 | |
| 7 | namespace al { |
| 8 | class AudioResourceDirector; |
| 9 | |
| 10 | class MemorySystem { |
| 11 | public: |
| 12 | MemorySystem(sead::Heap* heap); |
| 13 | |
| 14 | void allocFailedCallbackFunc(const sead::HeapMgr::AllocFailedCallbackArg*); |
| 15 | void createSequenceHeap(); |
| 16 | void freeAllSequenceHeap(); |
| 17 | bool printSequenceHeap(); |
| 18 | bool createSceneHeap(const char* stageName, bool backwards); |
| 19 | void createSceneResourceHeap(const char* stageName, bool backwards); |
| 20 | void destroySceneHeap(); |
| 21 | void destroySceneResourceHeap(); |
| 22 | void createCourseSelectHeap(); |
| 23 | void destroyCourseSelectHeap(); |
| 24 | void createWorldResourceHeap(); |
| 25 | void destroyWorldResourceHeap(); |
| 26 | void freeAllPlayerHeap(); |
| 27 | sead::Heap* tryFindNamedHeap(const char* heapName); |
| 28 | sead::Heap* findNamedHeap(const char* heapName); |
| 29 | void addNamedHeap(sead::Heap* heap, const char* heapName); |
| 30 | void removeNamedHeap(const char* heapName); |
| 31 | |
| 32 | sead::ExpHeap* getStationedHeap() { return mStationedHeap; } |
| 33 | |
| 34 | sead::ExpHeap* getSequenceHeap() { return mSequenceHeap; } |
| 35 | |
| 36 | sead::ExpHeap* getSceneResourceHeap() { return mSceneResourceHeap; } |
| 37 | |
| 38 | sead::ExpHeap* getSceneHeap() { return mSceneHeap; } |
| 39 | |
| 40 | sead::ExpHeap* getPlayerResourceHeap() { return mPlayerResourceHeap; } |
| 41 | |
| 42 | sead::ExpHeap* getCourseSelectResourceHeap() { return mCourseSelectResourceHeap; } |
| 43 | |
| 44 | sead::ExpHeap* getCourseSelectHeap() { return mCourseSelectHeap; } |
| 45 | |
| 46 | sead::ExpHeap* getWorldResourceHeap() { return mWorldResourceHeap; } |
| 47 | |
| 48 | AudioResourceDirector* getAudioResourceDirector() { return mAudioResourceDirector; } |
| 49 | |
| 50 | void setAudioResourceDirector(AudioResourceDirector* audioResourceDirector) { |
| 51 | mAudioResourceDirector = audioResourceDirector; |
| 52 | } |
| 53 | |
| 54 | private: |
| 55 | sead::ExpHeap* mStationedHeap; |
| 56 | sead::ExpHeap* mSequenceHeap; |
| 57 | sead::ExpHeap* mSceneResourceHeap; |
| 58 | sead::ExpHeap* mSceneHeap; |
| 59 | sead::ExpHeap* mPlayerResourceHeap; |
| 60 | sead::ExpHeap* mCourseSelectResourceHeap; |
| 61 | sead::ExpHeap* mCourseSelectHeap; |
| 62 | sead::ExpHeap* mWorldResourceHeap; |
| 63 | sead::StrTreeMap<32, sead::Heap*> mHeapList; |
| 64 | AudioResourceDirector* mAudioResourceDirector; |
| 65 | bool mIsExistFileResource; |
| 66 | sead::Delegate1<MemorySystem, const sead::HeapMgr::AllocFailedCallbackArg*> mDelegate; |
| 67 | }; |
| 68 | |
| 69 | static_assert(sizeof(MemorySystem) == 0x90); |
| 70 | } // namespace al |
| 71 |