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:
@@ -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
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user