A reimplementation of Mario Kart Wii's physics engine in C++
Loading...
Searching...
No Matches
KartParamFileManager.hh
1#pragma once
2
3#include "game/kart/KartParam.hh"
4
5#include "game/system/ResourceManager.hh"
6
7namespace Kinoko {
8
9namespace Host {
10
11class Context;
12
13} // namespace Host
14
15namespace Kart {
16
21 friend class Host::Context;
22
23public:
24 void clear();
25 void init();
26 [[nodiscard]] EGG::RamStream getDriverStream(Character character) const;
27 [[nodiscard]] EGG::RamStream getVehicleStream(Vehicle vehicle) const;
28 [[nodiscard]] EGG::RamStream getHitboxStream(Vehicle vehicle) const;
29 [[nodiscard]] EGG::RamStream getBikeDispParamsStream(Vehicle vehicle) const;
30 [[nodiscard]] EGG::RamStream getKartDispParamsStream(Vehicle vehicle) const;
31 [[nodiscard]] EGG::RamStream getKartCameraStream(Character character) const;
32
33 static KartParamFileManager *CreateInstance();
34 static void DestroyInstance();
35
36 [[nodiscard]] static KartParamFileManager *Instance() {
37 return s_instance;
38 }
39
40private:
41 template <typename T>
42 struct ParamFile {
43 u32 count;
44 T params[];
45 };
46
47 struct FileInfo {
48 void clear() {
49 file = nullptr;
50 size = 0;
51 }
52
53 void load(const char *filename) {
54 auto *resourceManager = System::ResourceManager::Instance();
55 file = resourceManager->getFile(filename, &size, System::ArchiveId::Core);
56 }
57
58 void *file;
59 size_t size;
60 };
61
63 ~KartParamFileManager() override;
64
65 [[nodiscard]] bool validate() const;
66
67 FileInfo m_kartParam; // kartParam.bin
68 FileInfo m_driverParam; // driverParam.bin
69 FileInfo m_bikeDispParam; // bikePartsDispParam.bin
70 FileInfo m_kartDispParam; // kartPartsDispParam.bin
71 FileInfo m_kartCameraParam; // kartCameraParam.bin
72
73 static KartParamFileManager *s_instance;
74};
75
76} // namespace Kart
77
78} // namespace Kinoko
An interface for ensuring certain structures and classes are destroyed with the heap.
Definition Disposer.hh:11
A stream of data stored in memory.
Definition Stream.hh:83
Contexts can be used to restore a previous memory state for the current session.
Definition Context.hh:71
Abstraction for the process of retrieving kart parameters from files.
bool validate() const
Performs a few checks to make sure the files were loaded successfully.
void init()
Loads and validates the kart parameter files.