SuperTuxKart
|
A WorldWithRank is a world where the karts are ranked. More...
#include <world_with_rank.hpp>
Public Member Functions | |
virtual void | init () OVERRIDE |
call just after instanciating. | |
virtual void | reset (bool restart=false) OVERRIDE |
This function is called before a race is started (i.e. | |
bool | displayRank () const |
void | beginSetKartPositions () |
This function must be called before starting to set all kart positions again. | |
bool | setKartPosition (unsigned int kart_id, unsigned int position) |
Sets the position of a kart. | |
void | endSetKartPositions () |
Called once the last position was set. | |
AbstractKart * | getKartAtPosition (unsigned int p) const |
Returns the kart with a given position. | |
virtual AbstractKart * | getKartAtDrawingPosition (unsigned int p) const |
Returns the kart at which position (start from 1) to draw race icon. | |
virtual int | getScoreForPosition (int p) |
Returns the number of points for a kart at a specified position. | |
virtual unsigned int | getRescuePositionIndex (AbstractKart *kart) OVERRIDE |
Determines the rescue position for a kart. | |
TrackSector * | getTrackSector (unsigned int kart_index) const |
Returns the track_sector object for the specified kart. | |
bool | isOnRoad (unsigned int kart_index) const |
Returns true if the kart is on a valid graph quad. | |
int | getSectorForKart (const AbstractKart *kart) const |
Gets the sector a kart is on. | |
Public Member Functions inherited from World | |
World () | |
The main world class is used to handle the track and the karts. | |
virtual const std::string & | getIdent () const =0 |
Each game mode should have a unique identifier. | |
virtual unsigned int | getNumberOfRescuePositions () const |
Returns the number of rescue positions on a given track and game mode. | |
virtual unsigned int | getRescuePositionIndex (AbstractKart *kart)=0 |
Determines the rescue position index of the specified kart. | |
virtual btTransform | getRescueTransform (unsigned int index) const |
Returns the bullet transformation for the specified rescue index. | |
virtual void | moveKartAfterRescue (AbstractKart *kart) |
Places a kart that is rescued. | |
virtual bool | raceHasLaps ()=0 |
Called when it is needed to know whether this kind of race involves counting laps. | |
virtual bool | showLapsTarget () |
If true lap counter shows lap count in format: 4/20 or if false then in format: 4. | |
virtual int | getFinishedLapsOfKart (unsigned int kart_index) const |
Returns the number of laps for a given kart. | |
virtual void | getKartsDisplayInfo (std::vector< RaceGUIBase::KartIconDisplayInfo > *info)=0 |
Called by the code that draws the list of karts on the race GUI to know what needs to be drawn in the current mode. | |
virtual void | init () |
This function is called after instanciating. | |
virtual void | updateGraphics (float dt) |
This updates all only graphical elements. | |
virtual void | terminateRace () OVERRIDE |
Called at the end of a race. | |
virtual void | reset (bool restart=false) OVERRIDE |
This function is called before a race is started (i.e. | |
virtual void | pause (Phase phase) OVERRIDE |
Pauses the music (and then pauses WorldStatus). | |
virtual void | unpause () OVERRIDE |
Switches back from a pause state to the previous state. | |
virtual void | getDefaultCollectibles (int *collectible_type, int *amount) |
Called to determine the default collectibles to give each player at the start for this kind of race. | |
virtual void | collectedItem (const AbstractKart *kart, const ItemState *item) |
Receives notification if an item is collected. | |
virtual void | endRaceEarly () |
virtual bool | hasRaceEndedEarly () const |
virtual bool | haveBonusBoxes () |
Called to determine whether this race mode uses bonus boxes. | |
virtual bool | useFastMusicNearEnd () const |
Returns if this mode should use fast music (if available). | |
virtual void | kartAdded (AbstractKart *kart, scene::ISceneNode *node) |
If you want to do something to karts or their graphics at the start of the race, override this. | |
virtual void | newLap (unsigned int kart_index) |
Called whenever a kart starts a new lap. | |
virtual bool | kartHit (int kart_id, int hitter=-1) |
Called when a kart was hit by a projectile. | |
virtual void | onMouseClick (int x, int y) |
Highscores * | getHighscores () const |
Highscores * | getGPHighscores () const |
void | schedulePause (Phase phase) |
void | scheduleUnpause () |
void | scheduleExitRace () |
void | scheduleTutorial () |
void | updateWorld (int ticks) |
This is the main interface to update the world. | |
void | handleExplosion (const Vec3 &xyz, AbstractKart *kart_hit, PhysicalObject *object) |
AbstractKart * | getPlayerKart (unsigned int player) const |
Returns the n-th player kart. | |
AbstractKart * | getLocalPlayerKart (unsigned int n) const |
Returns the nth local player kart, i.e. | |
virtual const btTransform & | getStartTransform (int index) |
Returns the start coordinates for a kart with a given index. | |
void | moveKartTo (AbstractKart *kart, const btTransform &t) |
Places the kart at a given position and rotation. | |
void | updateTimeTargetSound () |
RaceGUIBase * | getRaceGUI () const |
Returns a pointer to the race gui. | |
unsigned int | getNumKarts () const |
Returns the number of karts in the race. | |
AbstractKart * | getKart (int kartId) const |
Returns the kart with a given world id. | |
const KartList & | getKarts () const |
Returns all karts. | |
unsigned int | getCurrentNumKarts () const |
Returns the number of currently active (i.e.non-elikminated) karts. | |
unsigned int | getCurrentNumPlayers () const |
Returns the number of currently active (i.e. | |
void | resetElimination () |
virtual void | addReservedKart (int kart_id) |
virtual void | saveCompleteState (BareNetworkString *bns, STKPeer *peer) |
virtual void | restoreCompleteState (const BareNetworkString &buffer) |
virtual bool | shouldDrawTimer () const |
The code that draws the timer should call this first to know whether the game mode wants a timer drawn. | |
bool | useHighScores () const |
virtual void | onFirePressed (Controller *who) |
Override if you want to know when a kart presses fire. | |
virtual bool | useChecklineRequirements () const |
Whether to compute checkline requirements for each world on the quadgraph. | |
virtual void | escapePressed () |
virtual void | loadCustomModels () |
void | eliminateKart (int kart_number, bool notify_of_elimination=true) |
Remove (eliminate) a kart from the race. | |
void | setUnfairTeam (bool val) |
virtual bool | hasTeam () const |
KartTeam | getKartTeam (unsigned int kart_id) const |
Get the team of kart in world (including AIs) | |
int | getTeamNum (KartTeam team) const |
void | setNetworkWorld (bool is_networked) |
Set the network mode (true if networked) | |
bool | isNetworkWorld () const |
void | initTeamArrows (AbstractKart *k) |
Set the team arrow on karts if necessary. | |
virtual std::pair< uint32_t, uint32_t > | getGameStartedProgress () const |
Used by server to get the current started game progress in either or both remaining time or progress in percent. | |
virtual bool | isGoalPhase () const |
Public Member Functions inherited from WorldStatus | |
virtual | ~WorldStatus () |
Destructor of WorldStatus. | |
virtual void | reset (bool restart) |
Resets all status information, used when starting a new race. | |
virtual void | updateTime (int ticks) |
Updates the world time and clock (which might be running backwards), and all status information, called once per frame at the end of the main loop. | |
virtual void | update (int ticks) |
Update, called once per frame. | |
void | startReadySetGo () |
virtual void | pause (Phase phase) |
Pauses the game and switches to the specified phase. | |
virtual void | unpause () |
Switches back from a pause state to the previous state. | |
virtual void | enterRaceOverState () |
Called when the race is finished, but it still leaves some time for an end of race animation, and potentially let some more AI karts finish the race. | |
virtual void | terminateRace () |
Called when it's really over (delay over if any). | |
void | setTime (const float time) |
Sets the time for the clock. | |
void | setTicks (int ticks) |
Sets a new time for the world time, measured in ticks. | |
void | setTicksForRewind (int ticks) |
Sets a new time for the world time (used by rewind), measured in ticks. | |
bool | isStartPhase () const |
bool | isRacePhase () const |
bool | isActiveRacePhase () const |
bool | isFinishPhase () const |
While the race menu is being displayed, m_phase is limbo, and m_previous_phase is finish. | |
const Phase | getPhase () const |
Returns the current race phase. | |
void | setPhase (Phase phase) |
Sets the current race phase. | |
void | setClockMode (const ClockType mode, const float initial_time=0.0f) |
Call to specify what kind of clock you want. | |
int | getClockMode () const |
Returns the current clock mode. | |
float | getTime () const |
Returns the current race time. | |
uint64_t | getStart () const |
Returns the start time. | |
int | getTimeTicks () const |
Returns the current race time in time ticks (i.e. | |
virtual void | countdownReachedZero () |
Will be called to notify your derived class that the clock, which is in COUNTDOWN mode, has reached zero. | |
virtual void | onGo () |
Called when the race actually starts. | |
int | getTicksSinceStart () const |
Get the ticks since start regardless of which way the clock counts. | |
int | getAuxiliaryTicks () const |
bool | isLiveJoinWorld () const |
void | setLiveJoinWorld (bool val) |
int | getMusicDescriptionTicks () const |
void | endLiveJoinWorld (int ticks_now) |
Base on the network timer set current world count up ticks to tick_now. | |
Protected Member Functions | |
unsigned int | getClosestStartPoint (AbstractKart *kart) |
void | updateSectorForKarts () |
Localize each kart on the graph using its center xyz. | |
Protected Member Functions inherited from World | |
void | updateHighscores (int *best_highscore_rank) |
Called at the end of a race. | |
void | resetAllKarts () |
Waits till each kart is resting on the ground. | |
Controller * | loadAIController (AbstractKart *kart) |
Creates an AI controller for the kart. | |
virtual std::shared_ptr< AbstractKart > | createKart (const std::string &kart_ident, int index, int local_player_id, int global_player_id, RaceManager::KartType type, HandicapLevel handicap) |
Creates a kart, having a certain position, starting location, and local and global player id (if applicable). | |
virtual void | onGo () OVERRIDE |
Called when 'go' is being displayed for the first time. | |
virtual bool | isRaceOver ()=0 |
Returns true if the race is over. | |
virtual void | update (int ticks) OVERRIDE |
Updates the physics, all karts, the track, and projectile manager. | |
virtual void | createRaceGUI () |
void | updateTrack (int ticks) |
Only updates the track. | |
virtual float | estimateFinishTimeForKart (AbstractKart *kart) |
Used for AI karts that are still racing when all player kart finished. | |
void | updateAchievementDataEndRace () |
void | updateAchievementModeCounters (bool start) |
Protected Attributes | |
std::vector< int > | m_position_index |
This contains a mapping from race position to kart index. | |
bool | m_display_rank |
Whether to display the rank in the race GUI. | |
std::vector< int > | m_score_for_position |
The points given to a kart on a given position (index is 0 based, so using race-position - 1. | |
std::vector< TrackSector * > | m_kart_track_sector |
Stores the current graph node and track coordinates for each kart. | |
Protected Attributes inherited from World | |
int | m_red_ai |
int | m_blue_ai |
std::map< int, KartTeam > | m_kart_team_map |
std::map< int, unsigned int > | m_kart_position_map |
KartList | m_karts |
The list of all karts. | |
RandomGenerator | m_random |
AbstractKart * | m_fastest_kart |
int | m_eliminated_karts |
Number of eliminated karts. | |
int | m_eliminated_players |
Number of eliminated players. | |
int | m_num_players |
OVerall number of players. | |
bool | m_faster_music_active |
bool | m_stop_music_when_dialog_open |
bool | m_unfair_team |
bool | m_use_highscores |
Whether highscores should be used for this kind of race. | |
RaceGUIBase * | m_race_gui |
Pointer to the race GUI. | |
RaceGUIBase * | m_saved_race_gui |
The actual race gui needs to be saved when the race result gui is displayed since it is still needed in case of a restart, and it can't simply be created again (since it assumes that it can render to texture without having any scene nodes, but in case of a restart there are scene nodes). | |
bool | m_schedule_pause |
Pausing/unpausing are not done immediately, but at next udpdate. | |
bool | m_schedule_unpause |
Pausing/unpausing are not done immediately, but at next udpdate. | |
bool | m_schedule_exit_race |
bool | m_schedule_tutorial |
Phase | m_scheduled_pause_phase |
bool | m_self_destruct |
Set when the world needs to be deleted but you can't do it immediately because you are e.g. | |
bool | m_is_network_world |
Set when the world is online and counts network players. | |
bool | m_ended_early |
Protected Attributes inherited from WorldStatus | |
double | m_time |
Elasped/remaining time in seconds. | |
int | m_time_ticks |
Time in number of ticks (in terms of physics time steps). | |
bool | m_play_racestart_sounds |
If the start race should be played, disabled in cutscenes. | |
const ProcessType | m_process_type |
Process type of this world (main or child). | |
bool | m_play_track_intro_sound |
bool | m_play_ready_set_go_sounds |
std::atomic< Phase > | m_phase |
Additional Inherited Members | |
Public Types inherited from World | |
typedef std::vector< std::shared_ptr< AbstractKart > > | KartList |
Public Types inherited from WorldStatus | |
enum | ClockType { CLOCK_NONE , CLOCK_CHRONO , CLOCK_COUNTDOWN } |
Different clock types for a race. | |
enum | Phase { TRACK_INTRO_PHASE , SETUP_PHASE , WAIT_FOR_SERVER_PHASE , SERVER_READY_PHASE , READY_PHASE , SET_PHASE , GO_PHASE , MUSIC_PHASE , RACE_PHASE , DELAY_FINISH_PHASE , RESULT_DISPLAY_PHASE , FINISH_PHASE , IN_GAME_MENU_PHASE , UNDEFINED_PHASE } |
Static Public Member Functions inherited from World | |
static World * | getWorld () |
Returns a pointer to the (singleton) world object. | |
static void | deleteWorld () |
Delete the )singleton) world object, if it exists, and sets the singleton pointer to NULL. | |
static void | setWorld (World *world) |
Sets the pointer to the world object. | |
static void | clear () |
A WorldWithRank is a world where the karts are ranked.
This is the base class for races and battle modes - all of which rank the kart. A class using this as a subclass must call setKartPosition(kart id, position) and this class is used to access the ranks from other objects. This class adds a convenient rescue implementation: a kart is rescued to the closest start point. This is useful for battle, soccer, ... modes. Linear world defines its own rescue functions and will overwrite this.
void WorldWithRank::beginSetKartPositions | ( | ) |
This function must be called before starting to set all kart positions again.
It's mainly used to add some debug support, i.e. detect if the same position is set in different karts.
void WorldWithRank::endSetKartPositions | ( | ) |
Called once the last position was set.
Note that we should not test if all positions were set, since e.g. for eliminated and finished karts the position won't be set anymore.
|
inlinevirtual |
Returns the kart at which position (start from 1) to draw race icon.
p | Position of the kart. |
Reimplemented in SoccerWorld.
AbstractKart * WorldWithRank::getKartAtPosition | ( | unsigned int | p | ) | const |
Returns the kart with a given position.
p | The position of the kart, 1<=p<=num_karts). |
|
virtual |
Determines the rescue position for a kart.
The rescue position is the start position which is has the biggest accumulated distance to all other karts, and which has no other kart very close. The latter avoids dropping a kart on top of another kart. This is the method used
kart | The kart that is going to be rescued. |
Implements World.
Reimplemented in CaptureTheFlag, LinearWorld, SoccerWorld, and TutorialWorld.
|
virtual |
Returns the number of points for a kart at a specified position.
p | Position (starting with 1). |
Reimplemented in FollowTheLeaderRace.
int WorldWithRank::getSectorForKart | ( | const AbstractKart * | kart | ) | const |
Gets the sector a kart is on.
This function returns UNKNOWN_SECTOR if the kart_id is larger than the current kart sector. This is necessary in the case that a collision with the track happens during resetAllKarts: at this time m_kart_track_sector is not initialised (and has size 0), so it would trigger this assert. While this normally does not happen, it is useful for track designers that STK does not crash.
kart | Kart for which to return the sector. |
|
inline |
Returns the track_sector object for the specified kart.
kart_index | World index of the kart. |
|
virtual |
call just after instanciating.
can't be moved to the contructor as child classes must be instanciated, otherwise polymorphism will fail and the results will be incorrect
Reimplemented from World.
Reimplemented in CaptureTheFlag, EasterEggHunt, FollowTheLeaderRace, FreeForAll, LinearWorld, SoccerWorld, and ThreeStrikesBattle.
bool WorldWithRank::isOnRoad | ( | unsigned int | kart_index | ) | const |
Returns true if the kart is on a valid graph quad.
kart_index | Index of the kart. |
|
virtual |
This function is called before a race is started (i.e.
either after calling init() when starting a race for the first time, or after restarting a race, in which case no init() is called.
Reimplemented from World.
Reimplemented in CaptureTheFlag, EasterEggHunt, FollowTheLeaderRace, FreeForAll, LapTrial, LinearWorld, SoccerWorld, and ThreeStrikesBattle.
bool WorldWithRank::setKartPosition | ( | unsigned int | kart_id, |
unsigned int | position | ||
) |
Sets the position of a kart.
This will be saved in this object to allow quick lookup of which kart is on a given position, but also in the kart objects.
kart_id | The index of the kart to set the position for. |
position | The position of the kart (1<=position<=num karts). |