full encapsulation of 'raceHasLaps'

git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/trunk/supertuxkart@2318 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
auria 2008-10-01 01:53:35 +00:00
parent 60b3f0ea6e
commit f38e47954c
6 changed files with 12 additions and 5 deletions

View File

@ -730,7 +730,7 @@ void RaceGUI::drawLap(const KartIconDisplayInfo* info, Kart* kart, int offset_x,
int offset_y, float ratio_x, float ratio_y )
{
// Don't display laps in follow the leader mode
if(!race_manager->raceHasLaps()) return;
if(!RaceManager::getWorld()->raceHasLaps()) return;
const int lap = info[kart->getWorldKartId()].lap;

View File

@ -38,6 +38,8 @@ public:
virtual std::string getInternalCode() const;
virtual bool useFastMusicNearEnd() const { return false; }
virtual KartIconDisplayInfo* getKartsDisplayInfo(const RaceGUI* caller);
virtual bool raceHasLaps(){ return false; }
};

View File

@ -239,7 +239,7 @@ void LinearWorld::doLapCounting ( KartInfo& kart_info, Kart* kart )
}
// Race finished
if(kart_info.m_race_lap >= race_manager->getNumLaps() &&
race_manager->getMinorMode() != race_manager->raceHasLaps())
race_manager->getMinorMode() != RaceManager::getWorld()->raceHasLaps())
{
// A client wait does not detect race finished by itself, it will
// receive a message from the server. So a client does not do
@ -263,7 +263,7 @@ void LinearWorld::doLapCounting ( KartInfo& kart_info, Kart* kart )
// if new fastest lap
if(time_per_lap < RaceManager::getWorld()->getFastestLapTime() &&
race_manager->raceHasLaps())
RaceManager::getWorld()->raceHasLaps())
{
RaceManager::getWorld()->setFastestLap(kart, time_per_lap);
RaceGUI* m=(RaceGUI*)menu_manager->getRaceMenu();
@ -377,7 +377,7 @@ KartIconDisplayInfo* LinearWorld::getKartsDisplayInfo(const RaceGUI* caller)
if(laps_of_leader>0 && // Don't compare times when crossing the start line first
(getTime() - getTimeAtLapForKart(kart->getWorldKartId())<5.0f || rank_info.lap != laps_of_leader) &&
race_manager->raceHasLaps())
RaceManager::getWorld()->raceHasLaps())
{ // Display for 5 seconds
char str[256];
if(position==1)

View File

@ -86,6 +86,8 @@ public:
float estimateFinishTimeForKart (Kart* kart, KartInfo& kart_info);
void updateRacePosition ( Kart* kart, KartInfo& kart_info );
virtual bool raceHasLaps(){ return true; }
};
#endif

View File

@ -190,6 +190,10 @@ public:
* kart is dropped, this method will be called and each mode can implement it.
*/
virtual void moveKartAfterRescue(Kart* kart, btRigidBody* body) = 0;
/** Called when it is needed to know whether this kind of race involves counting laps.
*/
virtual bool raceHasLaps() = 0;
};
#endif

View File

@ -194,7 +194,6 @@ public:
double getOverallTime(int kart) const { return m_kart_status[kart].m_overall_time;}
KartType getKartType(int kart) const { return m_kart_status[kart].m_kart_type;}
int getCoinTarget() const { return m_coin_target; }
bool raceHasLaps() const { return m_minor_mode!=MINOR_MODE_FOLLOW_LEADER; }
int getPositionScore(int p) const { return m_score_for_position[p-1]; }
int allPlayerFinished() const {return
m_num_finished_players==m_player_karts.size();}