diff options
| author | Léo Lam <leo@leolam.fr> | 2021-03-13 14:23:05 +0100 |
|---|---|---|
| committer | Léo Lam <leo@leolam.fr> | 2021-03-13 14:36:06 +0100 |
| commit | afb4e218fa99a055a2231c347f53ca3badd42e37 (patch) | |
| tree | 385f4cdacf1e8998b035ed1de42025e36b8a773d /src/KingSystem/Resource/resGameResourceSystem.h | |
| parent | 5638f4a4e991c86269be841bafccccaee89d7c19 (diff) | |
ksys/res: Add GameResourceSystem header
Diffstat (limited to 'src/KingSystem/Resource/resGameResourceSystem.h')
| -rw-r--r-- | src/KingSystem/Resource/resGameResourceSystem.h | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/KingSystem/Resource/resGameResourceSystem.h b/src/KingSystem/Resource/resGameResourceSystem.h new file mode 100644 index 00000000..cab62608 --- /dev/null +++ b/src/KingSystem/Resource/resGameResourceSystem.h @@ -0,0 +1,41 @@ +#pragma once + +#include <heap/seadDisposer.h> + +namespace ksys::res { + +class CompactionMgr; + +// Also known as game::ResourceSystem (?) +class GameResourceSystem { + SEAD_SINGLETON_DISPOSER(GameResourceSystem) + GameResourceSystem() = default; + virtual ~GameResourceSystem(); + +public: + struct InitArg { + sead::Heap* heap; + }; + + bool init(const InitArg& arg); + + void calc(); + void pauseCompaction(); + void resumeCompaction(); + +private: + CompactionMgr* mCompactionMgr = nullptr; + bool mPauseCompaction = false; +}; + +class ScopedCompactionPauser { +public: + ScopedCompactionPauser() { GameResourceSystem::instance()->pauseCompaction(); } + ~ScopedCompactionPauser() { GameResourceSystem::instance()->resumeCompaction(); } + ScopedCompactionPauser(const ScopedCompactionPauser&) = delete; + ScopedCompactionPauser(ScopedCompactionPauser&&) = delete; + auto operator=(const ScopedCompactionPauser&) = delete; + auto operator=(ScopedCompactionPauser&&) = delete; +}; + +} // namespace ksys::res |
