A reimplementation of Mario Kart Wii's physics engine in C++
Loading...
Searching...
No Matches
Kinoko::System::RaceManager Class Reference0x809BD730

#include <RaceManager.hh>

Description

Manages the timers that track the stages of a race. Also acts as the interface between the physics engine and CourseMap.

The physics engine leverages the RaceManager in order to determine what stage of the race we're in, as that affects several things like acceleration. This class also retrieves the player start position from CourseMap and communicates it to the physics engine.

Definition at line 27 of file RaceManager.hh.

Inheritance diagram for Kinoko::System::RaceManager:

Classes

class  Player
 

Public Types

enum class  Stage {
  Intro = 0 ,
  Countdown = 1 ,
  Race = 2 ,
  FinishLocal = 3 ,
  FinishGlobal = 4
}
 

Public Member Functions

void init ()
 
void findKartStartPoint (EGG::Vector3f &pos, EGG::Vector3f &angles)
 
void endPlayerRace (u32 idx)
 
void calc ()
 
bool isStageReached (Stage stage) const
 
MapdataJugemPointjugemPoint () const
 

Static Public Member Functions

static RaceManagerCreateInstance ()
 
static void DestroyInstance ()
 
static RaceManagerInstance ()
 

Getters

int getCountdownTimer () const
 
Randomrandom ()
 
const Playerplayer () const
 
const TimerManagertimerManager () const
 
Stage stage () const
 
u32 timer () const
 

Private Attributes

Random m_random
 
Player m_player
 
TimerManager m_timerManager
 
Stage m_stage
 
u16 m_introTimer
 
u32 m_timer
 

Static Private Attributes

static constexpr u16 STAGE_COUNTDOWN_DURATION = 240
 
static constexpr u32 RNG_SEED = 0x74A1B095
 
static RaceManagers_instance = nullptr
 

Additional Inherited Members

- Private Member Functions inherited from Kinoko::EGG::Disposer
- Static Private Member Functions inherited from Kinoko::EGG::Disposer
static constexpr u16 getLinkOffset ()
 

Member Enumeration Documentation

◆ Stage

enum class Kinoko::System::RaceManager::Stage
strong

Definition at line 95 of file RaceManager.hh.

Constructor & Destructor Documentation

◆ RaceManager()

Kinoko::System::RaceManager::RaceManager ( )
private0x805327A0

Definition at line 92 of file RaceManager.cc.

Member Function Documentation

◆ ~RaceManager()

Kinoko::System::RaceManager::~RaceManager ( )
overrideprivate0x80532E3C

Definition at line 96 of file RaceManager.cc.

◆ calc()

void Kinoko::System::RaceManager::calc ( )
0x805331B4

Definition at line 43 of file RaceManager.cc.

◆ CreateInstance()

RaceManager * Kinoko::System::RaceManager::CreateInstance ( )
static0x80532084

Definition at line 77 of file RaceManager.cc.

◆ DestroyInstance()

void Kinoko::System::RaceManager::DestroyInstance ( )
static0x805320D4

Definition at line 84 of file RaceManager.cc.

◆ endPlayerRace()

void Kinoko::System::RaceManager::endPlayerRace ( u32 idx)
0x80533C6C

Definition at line 37 of file RaceManager.cc.

◆ findKartStartPoint()

void Kinoko::System::RaceManager::findKartStartPoint ( EGG::Vector3f & pos,
EGG::Vector3f & angles )
0x805362DC
Todo
When expanding to other gamemodes, we will need to pass the player index

Definition at line 21 of file RaceManager.cc.

◆ getCountdownTimer()

int Kinoko::System::RaceManager::getCountdownTimer ( ) const
inlinenodiscard

Definition at line 120 of file RaceManager.hh.

◆ init()

void Kinoko::System::RaceManager::init ( )
0x80532F88

Definition at line 15 of file RaceManager.cc.

◆ Instance()

static RaceManager * Kinoko::System::RaceManager::Instance ( )
inlinestaticnodiscard

Definition at line 148 of file RaceManager.hh.

◆ isStageReached()

bool Kinoko::System::RaceManager::isStageReached ( Stage stage) const
inlinenodiscard0x80536230

Definition at line 111 of file RaceManager.hh.

◆ jugemPoint()

MapdataJugemPoint * Kinoko::System::RaceManager::jugemPoint ( ) const
nodiscard0x8053621C

Definition at line 71 of file RaceManager.cc.

◆ player()

const Player & Kinoko::System::RaceManager::player ( ) const
inlinenodiscard

Definition at line 128 of file RaceManager.hh.

◆ random()

Random & Kinoko::System::RaceManager::random ( )
inlinenodiscard

Definition at line 124 of file RaceManager.hh.

◆ stage()

Stage Kinoko::System::RaceManager::stage ( ) const
inlinenodiscard

Definition at line 136 of file RaceManager.hh.

◆ timer()

u32 Kinoko::System::RaceManager::timer ( ) const
inlinenodiscard

Definition at line 140 of file RaceManager.hh.

◆ timerManager()

const TimerManager & Kinoko::System::RaceManager::timerManager ( ) const
inlinenodiscard

Definition at line 132 of file RaceManager.hh.

Member Data Documentation

◆ m_introTimer

u16 Kinoko::System::RaceManager::m_introTimer
private

Definition at line 160 of file RaceManager.hh.

◆ m_player

Player Kinoko::System::RaceManager::m_player
private

Definition at line 157 of file RaceManager.hh.

◆ m_random

Random Kinoko::System::RaceManager::m_random
private

Definition at line 156 of file RaceManager.hh.

◆ m_stage

Stage Kinoko::System::RaceManager::m_stage
private

Definition at line 159 of file RaceManager.hh.

◆ m_timer

u32 Kinoko::System::RaceManager::m_timer
private

Definition at line 161 of file RaceManager.hh.

◆ m_timerManager

TimerManager Kinoko::System::RaceManager::m_timerManager
private

Definition at line 158 of file RaceManager.hh.

◆ RNG_SEED

u32 Kinoko::System::RaceManager::RNG_SEED = 0x74A1B095
staticconstexprprivate

Definition at line 164 of file RaceManager.hh.

◆ s_instance

RaceManager * Kinoko::System::RaceManager::s_instance = nullptr
staticprivate0x809BD730

Definition at line 166 of file RaceManager.hh.

◆ STAGE_COUNTDOWN_DURATION

u16 Kinoko::System::RaceManager::STAGE_COUNTDOWN_DURATION = 240
staticconstexprprivate

Definition at line 163 of file RaceManager.hh.