A reimplementation of Mario Kart Wii's physics engine in C++
Loading...
Searching...
No Matches
ResourceManager.hh
1#pragma once
2
3#include "game/system/MultiDvdArchive.hh"
4
5namespace Kinoko {
6
7namespace Host {
8
9class Context;
10
11} // namespace Host
12
13namespace System {
14
15enum class ArchiveId {
16 Core = 0,
17 Course = 1,
18};
19
25 friend class Host::Context;
26
27public:
28 void *getFile(const char *filename, size_t *size, ArchiveId id);
29 void *getBsp(Vehicle vehicle, size_t *size);
30 [[nodiscard]] MultiDvdArchive *load(Course courseId);
31 [[nodiscard]] MultiDvdArchive *load(s32 idx, const char *filename);
32 void unmount(MultiDvdArchive *archive);
33
35 [[nodiscard]] static const char *GetVehicleName(Vehicle vehicle) {
36 return vehicle < Vehicle::Max ? VEHICLE_NAMES[static_cast<u8>(vehicle)] : nullptr;
37 }
38
39 static ResourceManager *CreateInstance();
40 static void DestroyInstance();
41
42 [[nodiscard]] static ResourceManager *Instance() {
43 return s_instance;
44 }
45
46private:
48 ~ResourceManager() override;
49
50 // 0: Core archive
51 // 1: Course archive
52 MultiDvdArchive **m_archives;
53
54 [[nodiscard]] static MultiDvdArchive *Create(u8 i);
55 static ResourceManager *s_instance;
56};
57
58} // namespace System
59
60} // namespace Kinoko
An interface for ensuring certain structures and classes are destroyed with the heap.
Definition Disposer.hh:11
Contexts can be used to restore a previous memory state for the current session.
Definition Context.hh:71
Highest level abstraction for archive management and subsequent file retrieval.