diff --git a/src/Game/DLC/CMakeLists.txt b/src/Game/DLC/CMakeLists.txt index 448f098f..27f64e8c 100644 --- a/src/Game/DLC/CMakeLists.txt +++ b/src/Game/DLC/CMakeLists.txt @@ -1,4 +1,6 @@ target_sources(uking PRIVATE aoc2.cpp aoc2.h + aocManager.cpp + aocManager.h ) diff --git a/src/Game/DLC/aocManager.cpp b/src/Game/DLC/aocManager.cpp new file mode 100644 index 00000000..80d2711a --- /dev/null +++ b/src/Game/DLC/aocManager.cpp @@ -0,0 +1 @@ +#include "Game/DLC/aocManager.h" diff --git a/src/Game/DLC/aocManager.h b/src/Game/DLC/aocManager.h new file mode 100644 index 00000000..db3c39f4 --- /dev/null +++ b/src/Game/DLC/aocManager.h @@ -0,0 +1,39 @@ +#pragma once + +#include +#include +#include "KingSystem/Resource/resHandle.h" +#include "KingSystem/Resource/resResourceMgrTask.h" + +namespace sead { +class FileDevice; +} + +namespace uking::aoc { + +// TODO +class Manager { + SEAD_SINGLETON_DISPOSER(Manager) + Manager(); + ~Manager(); + +public: + u32 getVersion() const { return mVersion; } + + /// @return Whether the Master Trials DLC is supported. + bool hasAoc2() const { return mVersion >= 0x200; } + + /// @return Whether the Champion's Ballad DLC is supported. + bool hasAoc3() const { return mVersion >= 0x300; } + +private: + sead::FileDevice* mFileDevice{}; + ksys::res::FileDevicePrefix mFileDevicePrefix; + + ksys::res::Handle mVersionResHandle; + sead::FixedSafeString<16> mVersionString; + u32 mVersion{}; + // TODO: more fields +}; + +} // namespace uking::aoc