32 [[nodiscard]]
u16 checkpointId()
const {
33 return m_checkpointId;
36 [[nodiscard]] f32 raceCompletion()
const {
37 return m_raceCompletion;
40 [[nodiscard]] s8 jugemId()
const {
44 [[nodiscard]]
const std::array<Timer, 3> &lapTimers()
const {
48 [[nodiscard]]
const Timer &lapTimer(
size_t idx)
const {
49 ASSERT(idx < m_lapTimers.size());
50 return m_lapTimers[idx];
53 [[nodiscard]]
const Timer &raceTimer()
const {
57 [[nodiscard]]
const KPad *inputs()
const {
65 u16 nextCheckpointId)
const;
69 void endRace(
const Timer &finishTime);
74 f32 m_checkpointStartLapCompletion;
80 std::array<Timer, 3> m_lapTimers;
96 void endPlayerRace(
u32 idx);
101 [[nodiscard]]
bool isStageReached(Stage stage)
const {
102 return static_cast<std::underlying_type_t<Stage>
>(m_stage) >=
103 static_cast<std::underlying_type_t<Stage>
>(stage);
106 [[nodiscard]] MapdataJugemPoint *jugemPoint()
const;
110 [[nodiscard]]
int getCountdownTimer()
const {
111 return STAGE_COUNTDOWN_DURATION - m_timer;
114 [[nodiscard]]
const Player &player()
const {
118 [[nodiscard]]
const TimerManager &timerManager()
const {
119 return m_timerManager;
122 [[nodiscard]] Stage stage()
const {
126 [[nodiscard]]
u32 timer()
const {
131 static RaceManager *CreateInstance();
132 static void DestroyInstance();
134 [[nodiscard]]
static RaceManager *Instance() {
140 ~RaceManager()
override;
144 TimerManager m_timerManager;
149 static constexpr u16 STAGE_COUNTDOWN_DURATION = 240;
150 static constexpr u32 RNG_SEED = 0x74A1B095;
152 static RaceManager *s_instance;