diff options
| author | Léo Lam <leo@leolam.fr> | 2021-03-26 21:07:12 +0100 |
|---|---|---|
| committer | Léo Lam <leo@leolam.fr> | 2021-03-27 02:34:08 +0100 |
| commit | aa766a1977251cf3be30795a947af979ebd21bad (patch) | |
| tree | d0eb49defb567d502187096756d7f320c63153cc /src/Game/DLC/aocManager.cpp | |
| parent | 1bd2f03de8a21803fb192a09f37fd52b43b44cd1 (diff) | |
Implement more parts of aocManager
Diffstat (limited to 'src/Game/DLC/aocManager.cpp')
| -rw-r--r-- | src/Game/DLC/aocManager.cpp | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/src/Game/DLC/aocManager.cpp b/src/Game/DLC/aocManager.cpp index 80d2711a..947bbba4 100644 --- a/src/Game/DLC/aocManager.cpp +++ b/src/Game/DLC/aocManager.cpp @@ -1 +1,46 @@ #include "Game/DLC/aocManager.h" +#include <filedevice/seadFileDeviceMgr.h> +#include "KingSystem/Utils/SafeDelete.h" + +#ifdef NNSDK +#include <nn/fs.h> +#endif + +namespace uking::aoc { + +SEAD_SINGLETON_DISPOSER_IMPL(Manager) + +Manager::Manager() : mGdtReinitSlot{this, &Manager::onGdtReinit} { + resetFlags(); +} + +Manager::~Manager() { + if (auto* gdm = ksys::gdt::Manager::instance()) + gdm->removeReinitCallback(mGdtReinitSlot); + + mFileDevicePrefix.deregister(); + mFileDevicePrefix2.deregister(); + mVersionFileDevPrefix.deregister(); + + if (mFileDevice) { + sead::FileDeviceMgr::instance()->unmount("aoc"); + ksys::util::safeDelete(mFileDevice); + } + +#ifdef NNSDK + if (mAocFsCache) { + nn::fs::Unmount("aoc"); + ksys::util::safeDelete(mAocFsCache); + } +#endif +} + +void Manager::resetFlags() { + mFlagAocVerAtLastPlay = ksys::gdt::InvalidHandle; + mFlagLatestAocVerPlayed = ksys::gdt::InvalidHandle; + mFlagHasAocVer1 = ksys::gdt::InvalidHandle; + mFlagHasAocVer2 = ksys::gdt::InvalidHandle; + mFlagHasAocVer3 = ksys::gdt::InvalidHandle; +} + +} // namespace uking::aoc |
