42 [[nodiscard]]
u16 checkpointId()
const {
43 return m_checkpointId;
46 [[nodiscard]] f32 raceCompletion()
const {
47 return m_raceCompletion;
50 [[nodiscard]] s8 jugemId()
const {
54 [[nodiscard]]
const std::array<Timer, 3> &lapTimers()
const {
58 [[nodiscard]]
const Timer &lapTimer(
size_t idx)
const {
59 ASSERT(idx < m_lapTimers.size());
60 return m_lapTimers[idx];
63 [[nodiscard]]
const Timer &raceTimer()
const {
67 [[nodiscard]]
const KPad *inputs()
const {
75 u16 nextCheckpointId)
const;
79 void endRace(
const Timer &finishTime);
84 f32 m_checkpointStartLapCompletion;
90 std::array<Timer, 3> m_lapTimers;
106 void endPlayerRace(u32 idx);
111 [[nodiscard]]
bool isStageReached(Stage stage)
const {
112 return static_cast<std::underlying_type_t<Stage>
>(m_stage) >=
113 static_cast<std::underlying_type_t<Stage>
>(stage);
116 [[nodiscard]] MapdataJugemPoint *jugemPoint()
const;
120 [[nodiscard]]
int getCountdownTimer()
const {
121 return STAGE_COUNTDOWN_DURATION - m_timer;
124 [[nodiscard]] Random &random() {
128 [[nodiscard]]
const Player &player()
const {
132 [[nodiscard]]
const TimerManager &timerManager()
const {
133 return m_timerManager;
136 [[nodiscard]] Stage stage()
const {
140 [[nodiscard]] u32 timer()
const {
145 static RaceManager *CreateInstance();
146 static void DestroyInstance();
148 [[nodiscard]]
static RaceManager *Instance() {
154 ~RaceManager()
override;
158 TimerManager m_timerManager;
163 static constexpr u16 STAGE_COUNTDOWN_DURATION = 240;
164 static constexpr u32 RNG_SEED = 0x74A1B095;
166 static RaceManager *s_instance;
Contexts can be used to restore a previous memory state for the current session.