made faster music a choice of the base class. various 'for' loop optimisations. replaced incorrect 'int' with 'bool'
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/trunk/supertuxkart@2299 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
@@ -31,7 +31,7 @@ class AutoKart : public Kart
|
||||
const btTransform& init_pos) :
|
||||
Kart(kart_name, position, init_pos) {}
|
||||
|
||||
int isPlayerKart() const {return 0;}
|
||||
bool isPlayerKart() const {return false;}
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -219,7 +219,7 @@ public:
|
||||
void handleExplosion (const Vec3& pos, bool direct_hit);
|
||||
const std::string& getName () const {return m_kart_properties->getName();}
|
||||
const std::string& getIdent () const {return m_kart_properties->getIdent();}
|
||||
virtual int isPlayerKart () const {return 0; }
|
||||
virtual bool isPlayerKart () const {return false; }
|
||||
// addMessages gets called by world to add messages to the gui
|
||||
virtual void addMessages () {};
|
||||
virtual void collectedHerring (const Herring &herring, int random_attachment);
|
||||
|
||||
@@ -80,17 +80,18 @@ void FollowTheLeaderRace::update(float delta)
|
||||
// kart, otherwise remove the last kart.
|
||||
int position_to_remove = m_kart[0]->getPosition()==1
|
||||
? getCurrentNumKarts() : 1;
|
||||
for (kart_number=0; kart_number<(int)m_kart.size(); kart_number++)
|
||||
const int kart_amount = m_kart.size();
|
||||
for (kart_number=0; kart_number<kart_amount; kart_number++)
|
||||
{
|
||||
if(m_kart[kart_number]->isEliminated()) continue;
|
||||
if(m_kart[kart_number]->getPosition()==position_to_remove)
|
||||
break;
|
||||
}
|
||||
if(kart_number==(int)m_kart.size())
|
||||
if(kart_number==kart_amount)
|
||||
{
|
||||
fprintf(stderr,"Problem with removing leader: position %d not found\n",
|
||||
position_to_remove);
|
||||
for(int i=0; i<(int)m_kart.size(); i++)
|
||||
for(int i=0; i<kart_amount; i++)
|
||||
{
|
||||
fprintf(stderr,"kart %d: eliminated %d position %d\n",
|
||||
i,m_kart[i]->isEliminated(), m_kart[i]->getPosition());
|
||||
|
||||
@@ -36,6 +36,7 @@ public:
|
||||
virtual void update(float delta);
|
||||
virtual void restartRace();
|
||||
virtual std::string getInternalCode() const;
|
||||
virtual bool useFastMusicNearEnd() const { return false; }
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -20,6 +20,10 @@
|
||||
|
||||
#include "modes/world.hpp"
|
||||
|
||||
/**
|
||||
* Represents a standard race, i.e. with a start, end and laps.
|
||||
* Used in Grand Prix, Quick Race and Time Trial.
|
||||
*/
|
||||
class StandardRace : public World, public Clock::ClockListener
|
||||
{
|
||||
public:
|
||||
|
||||
@@ -268,7 +268,8 @@ void World::update(float dt)
|
||||
|
||||
if(!user_config->m_replay_history) history->StoreDelta(dt);
|
||||
if(network_manager->getMode()!=NetworkManager::NW_CLIENT) m_physics->update(dt);
|
||||
for (int i = 0 ; i <(int) m_kart.size(); ++i)
|
||||
const int kart_amount = m_kart.size();
|
||||
for (int i = 0 ; i < kart_amount; ++i)
|
||||
{
|
||||
// Update all karts that are not eliminated
|
||||
if(!m_kart[i]->isEliminated()) m_kart[i]->update(dt) ;
|
||||
@@ -277,7 +278,7 @@ void World::update(float dt)
|
||||
projectile_manager->update(dt);
|
||||
herring_manager->update(dt);
|
||||
|
||||
for ( Karts::size_type i = 0 ; i < m_kart.size(); ++i)
|
||||
for ( Karts::size_type i = 0 ; i < kart_amount; ++i)
|
||||
{
|
||||
if(m_kart[i]->isEliminated()) continue; // ignore eliminated kart
|
||||
if(!m_kart[i]->hasFinishedRace()) updateRacePosition((int)i);
|
||||
@@ -318,12 +319,13 @@ void World::updateHighscores()
|
||||
// again by a faster kart in the same race), which might be confusing
|
||||
// if we ever decide to display a message (e.g. during a race)
|
||||
unsigned int *index = new unsigned int[m_kart.size()];
|
||||
for (unsigned int i=0; i<m_kart.size(); i++ )
|
||||
const int kart_amount = m_kart.size();
|
||||
for (unsigned int i=0; i<kart_amount; i++ )
|
||||
{
|
||||
index[m_kart[i]->getPosition()-1] = i;
|
||||
}
|
||||
|
||||
for(unsigned int pos=0; pos<m_kart.size(); pos++)
|
||||
for(unsigned int pos=0; pos<kart_amount; pos++)
|
||||
{
|
||||
#ifdef DEBUG
|
||||
// FIXME begin: triggered if the positions of the karts are incorrect:
|
||||
@@ -358,7 +360,8 @@ void World::updateHighscores()
|
||||
//-----------------------------------------------------------------------------
|
||||
void World::estimateFinishTimes()
|
||||
{
|
||||
for ( Karts::size_type i = 0; i < m_kart.size(); ++i)
|
||||
const int kart_amount = m_kart.size();
|
||||
for ( Karts::size_type i = 0; i < kart_amount; ++i)
|
||||
{
|
||||
if(!m_kart[i]->hasFinishedRace())
|
||||
{
|
||||
@@ -439,7 +442,8 @@ void World::updateRacePosition ( int k )
|
||||
|
||||
/* Find position of kart 'k' */
|
||||
|
||||
for ( Karts::size_type j = 0 ; j < m_kart.size() ; ++j )
|
||||
const unsigned int kart_amount = m_kart.size();
|
||||
for ( Karts::size_type j = 0 ; j < kart_amount ; ++j )
|
||||
{
|
||||
if(int(j) == k) continue;
|
||||
if(m_kart[j]->isEliminated()) continue; // eliminated karts
|
||||
@@ -455,14 +459,14 @@ void World::updateRacePosition ( int k )
|
||||
}
|
||||
|
||||
m_kart[k]->setPosition(p);
|
||||
// Switch on faster music (except in follow leader mode) if not already
|
||||
// done so, and the first kart is doing its last lap, and the estimated
|
||||
// Switch on faster music if not already done so, if the
|
||||
// first kart is doing its last lap, and if the estimated
|
||||
// remaining time is less than 30 seconds.
|
||||
if(!m_faster_music_active &&
|
||||
m_kart[k]->getLap()==race_manager->getNumLaps()-1 &&
|
||||
p==1 &&
|
||||
race_manager->getMinorMode()!=RaceManager::MINOR_MODE_FOLLOW_LEADER &&
|
||||
m_kart[k]->estimateFinishTime()-getTime()<30.0f )
|
||||
if(!m_faster_music_active &&
|
||||
m_kart[k]->getLap()==race_manager->getNumLaps()-1 &&
|
||||
p==1 &&
|
||||
useFastMusicNearEnd() &&
|
||||
m_kart[k]->estimateFinishTime()-getTime()<30.0f )
|
||||
{
|
||||
sound_manager->switchToFastMusic();
|
||||
m_faster_music_active=true;
|
||||
|
||||
@@ -173,6 +173,8 @@ public:
|
||||
*/
|
||||
virtual std::string getInternalCode() const = 0;
|
||||
|
||||
virtual bool useFastMusicNearEnd() const { return true; }
|
||||
|
||||
void pause();
|
||||
void unpause();
|
||||
|
||||
|
||||
@@ -65,7 +65,7 @@ public:
|
||||
virtual void crashed (Kart *k);
|
||||
virtual void setPosition (int p);
|
||||
virtual void raceFinished (float time);
|
||||
int isPlayerKart () const {return 1;}
|
||||
bool isPlayerKart () const {return true;}
|
||||
Camera* getCamera () {return m_camera;}
|
||||
void reset();
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user