Kinoko
A reimplementation of Mario Kart Wii's physics engine in C++
Toggle main menu visibility
Loading...
Searching...
No Matches
RaceConfig.hh
1
#pragma once
2
3
#include "game/system/GhostFile.hh"
4
5
#include <functional>
6
7
namespace
Kinoko {
8
9
namespace
Host
{
10
11
class
Context
;
12
13
}
// namespace Host
14
15
namespace
System
{
16
23
class
RaceConfig :
EGG::Disposer
{
24
friend
class
Host::Context
;
25
26
public
:
27
struct
Player
{
28
public
:
29
enum class
Type {
30
Local = 0,
// Inputs managed by ML algorithm
31
Ghost = 3,
// Inputs managed by ghost
32
None = 5,
33
};
34
35
Character character;
36
Vehicle vehicle;
37
Type type;
38
bool
driftIsAuto;
39
};
40
41
struct
Scenario
{
42
public
:
43
enum class
GameMode {
44
Time_Trial = 2,
45
Ghost_Race = 5,
46
};
47
48
void
init();
49
50
std::array<Player, 12> players;
51
u8 playerCount;
52
Course course;
53
};
54
55
typedef
std::function<void(RaceConfig *,
void
*)> InitCallback;
56
57
void
init();
58
void
initRace
();
59
void
initControllers
();
60
void
initGhost
();
61
62
[[nodiscard]]
const
Scenario
&raceScenario()
const
{
63
return
m_raceScenario;
64
}
65
66
[[nodiscard]] Scenario &raceScenario() {
67
return
m_raceScenario;
68
}
69
70
void
setGhost(
const
u8 *rkg) {
71
m_ghost = rkg;
72
}
73
74
static
void
RegisterInitCallback(
const
InitCallback &callback,
void
*arg) {
75
s_onInitCallback
= callback;
76
s_onInitCallbackArg
= arg;
77
}
78
79
static
RaceConfig *CreateInstance();
80
static
void
DestroyInstance();
81
82
[[nodiscard]]
static
RaceConfig *Instance() {
83
return
s_instance;
84
}
85
86
private
:
87
EGG_NEW_DELETE_FRIEND
88
89
RaceConfig();
90
~RaceConfig()
override
;
91
92
Scenario
m_raceScenario;
93
RawGhostFile m_ghost;
94
95
static
RaceConfig *s_instance;
96
static
InitCallback
s_onInitCallback
;
97
static
void
*
s_onInitCallbackArg
;
98
};
99
100
}
// namespace System
101
102
}
// namespace Kinoko
Kinoko::EGG::Disposer
An interface for ensuring certain structures and classes are destroyed with the heap.
Definition
Disposer.hh:11
Kinoko::Host::Context
Contexts can be used to restore a previous memory state for the current session.
Definition
Context.hh:71
Kinoko::System::RaceConfig::s_onInitCallbackArg
static void * s_onInitCallbackArg
The argument sent into the callback. This is expected to be reinterpret_casted.
Definition
RaceConfig.hh:97
Kinoko::System::RaceConfig::initGhost
void initGhost()
Initializes the ghost.
Definition
RaceConfig.cc:47
Kinoko::System::RaceConfig::initRace
void initRace()
Definition
RaceConfig.cc:17
Kinoko::System::RaceConfig::initControllers
void initControllers()
Initializes the controllers.
Definition
RaceConfig.cc:30
Kinoko::System::RaceConfig::s_onInitCallback
static InitCallback s_onInitCallback
Host-agnostic way of initializing RaceConfig. The type of the first player must be set to either Loca...
Definition
RaceConfig.hh:96
Kinoko::Host
Represents the host application.
Definition
HeapCommon.hh:11
Kinoko::System
High-level handling for generic system operations, such as input reading, race configuration,...
Definition
CourseMap.cc:5
Kinoko::System::RaceConfig::Player
Definition
RaceConfig.hh:27
Kinoko::System::RaceConfig::Scenario
Definition
RaceConfig.hh:41
game
system
RaceConfig.hh
Made by
Malleo
. Logo by
vabold
. Website generated by
Doxygen
1.17.0