Fix musical note hiccup bug by preparing track music in 2 phases

git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/trunk@8551 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
auria
2011-05-11 01:47:27 +00:00
parent 449f99be62
commit 11e925f867
5 changed files with 12 additions and 7 deletions

View File

@@ -140,7 +140,7 @@ void MusicManager::addMusicToTracks()
} // addMusicToTracks
//-----------------------------------------------------------------------------
void MusicManager::startMusic(MusicInformation* mi)
void MusicManager::startMusic(MusicInformation* mi, bool startRightNow)
{
// If this music is already playing, ignore this call.
if (m_current_music != NULL &&
@@ -157,7 +157,7 @@ void MusicManager::startMusic(MusicInformation* mi)
if(!mi || !UserConfigParams::m_music || !m_initialized) return;
mi->volumeMusic(m_masterGain);
mi->startMusic();
if (startRightNow) mi->startMusic();
} // startMusic
//-----------------------------------------------------------------------------

View File

@@ -54,7 +54,7 @@ public:
MusicManager();
virtual ~MusicManager();
void startMusic(MusicInformation* mi);
void startMusic(MusicInformation* mi, bool startRightNow=true);
void stopMusic();
bool initialized() const {return m_initialized; }
void update(float dt) {if(m_current_music)

View File

@@ -153,14 +153,18 @@ void WorldStatus::update(const float dt)
m_phase=GO_PHASE;
m_start_sound->play();
World::getWorld()->getTrack()->startMusic();
// event
onGo();
}
m_auxiliary_timer += dt;
return;
case GO_PHASE :
if(m_auxiliary_timer>2.5f)
World::getWorld()->getTrack()->startMusic();
if (m_auxiliary_timer>2.5f && music_manager->getCurrentMusic())
music_manager->startMusic(music_manager->getCurrentMusic());
if(m_auxiliary_timer>3.0f) // how long to display the 'go' message
m_phase=MUSIC_PHASE;
m_auxiliary_timer += dt;

View File

@@ -380,7 +380,7 @@ void Track::startMusic() const
{
// In case that the music wasn't found (a warning was already printed)
if(m_music.size()>0)
music_manager->startMusic(m_music[rand()% m_music.size()]);
music_manager->startMusic(m_music[rand()% m_music.size()], false);
} // startMusic
//-----------------------------------------------------------------------------

View File

@@ -256,8 +256,9 @@ public:
const std::vector<std::string>
getGroups () const {return m_groups; }
/** Starts the music for this track. */
/** Select and set the music for this track (doesn't actually start it yet) */
void startMusic () const;
bool setTerrainHeight(Vec3 *pos) const;
void createPhysicsModel(unsigned int main_track_count);
void update(float dt);