SuperTuxKart
follow_the_leader.hpp
1 // SuperTuxKart - a fun racing game with go-kart
2 // Copyright (C) 2004-2015 SuperTuxKart-Team
3 //
4 // This program is free software; you can redistribute it and/or
5 // modify it under the terms of the GNU General Public License
6 // as published by the Free Software Foundation; either version 3
7 // of the License, or (at your option) any later version.
8 //
9 // This program is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 // GNU General Public License for more details.
13 //
14 // You should have received a copy of the GNU General Public License
15 // along with this program; if not, write to the Free Software
16 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
17 
18 #ifndef _follow_the_leader_hpp_
19 #define _follow_the_leader_hpp_
20 
21 #include "modes/linear_world.hpp"
22 
28 {
29 private:
30  // time till elimination in follow leader
31  std::vector<float> m_leader_intervals;
32 
35 
39 public:
40 
42  virtual ~FollowTheLeaderRace();
43 
44  // clock events
45  virtual void countdownReachedZero() OVERRIDE;
46  virtual int getScoreForPosition(int p) OVERRIDE;
47 
48  // overriding World methods
49  virtual void reset(bool restart=false) OVERRIDE;
50  virtual const std::string& getIdent() const OVERRIDE;
51  virtual const btTransform &getStartTransform(int index) OVERRIDE;
52  virtual void getKartsDisplayInfo(
53  std::vector<RaceGUIBase::KartIconDisplayInfo> *info) OVERRIDE;
54  virtual void init() OVERRIDE;
55  virtual void terminateRace() OVERRIDE;
56  virtual bool isRaceOver() OVERRIDE;
57  // ------------------------------------------------------------------------
59  virtual bool raceHasLaps() OVERRIDE { return false; }
60  // ------------------------------------------------------------------------
62  virtual bool useFastMusicNearEnd() const OVERRIDE { return false; }
63 
64  bool isLeader(int kart_id) { return (kart_id == 0); }
65  void leaderHit();
66  // For now, use a similar countdown change as with leaderHit
67  void leaderRescued() { leaderHit(); }
68 }; // FollowTheLeader
69 
70 
71 #endif
float m_last_eliminated_time
Time the last kart was eliminated.
Definition: follow_the_leader.hpp:38
virtual bool isRaceOver() OVERRIDE
The follow the leader race is over if there is only one kart left (plus the leader),...
Definition: follow_the_leader.cpp:204
An abstract base class for the two race guis (race_gui and race_result gui)
Definition: race_gui_base.hpp:49
virtual int getScoreForPosition(int p) OVERRIDE
Returns the number of points for a kart at a specified position.
Definition: follow_the_leader.cpp:98
virtual bool useFastMusicNearEnd() const OVERRIDE
Returns if faster music should be used at the end.
Definition: follow_the_leader.hpp:62
virtual bool raceHasLaps() OVERRIDE
Returns if this type of race has laps.
Definition: follow_the_leader.hpp:59
virtual void reset(bool restart=false) OVERRIDE
Called just before a race is started.
Definition: follow_the_leader.cpp:79
float m_is_over_delay
A timer used before terminating the race.
Definition: follow_the_leader.hpp:34
void leaderHit()
If the leader kart is hit, increase the delay to the next elimination.
Definition: follow_the_leader.cpp:227
virtual void countdownReachedZero() OVERRIDE
Called when a kart must be eliminated.
Definition: follow_the_leader.cpp:123
virtual const btTransform & getStartTransform(int index) OVERRIDE
Returns the start coordinates for a kart with a given index.
Definition: follow_the_leader.cpp:109
virtual void terminateRace() OVERRIDE
Called at the end of a race.
Definition: follow_the_leader.cpp:240
virtual const std::string & getIdent() const OVERRIDE
Returns the internal identifier for this kind of race.
Definition: follow_the_leader.cpp:284
virtual void getKartsDisplayInfo(std::vector< RaceGUIBase::KartIconDisplayInfo > *info) OVERRIDE
Sets the title for all karts that is displayed in the icon list.
Definition: follow_the_leader.cpp:293
An implementation of World, based on LinearWorld, to provide the Follow-the-leader game mode.
Definition: follow_the_leader.hpp:27
Definition: linear_world.hpp:35
virtual void init() OVERRIDE
Called immediately after the constructor.
Definition: follow_the_leader.cpp:56