diff --git a/stepmania/src/MeterDisplay.cpp b/stepmania/src/MeterDisplay.cpp index 2c528493f4..1a74879ab7 100644 --- a/stepmania/src/MeterDisplay.cpp +++ b/stepmania/src/MeterDisplay.cpp @@ -1,6 +1,8 @@ #include "global.h" #include "MeterDisplay.h" #include "RageUtil.h" +#include "GameState.h" +#include "song.h" MeterDisplay::MeterDisplay() @@ -31,6 +33,18 @@ void MeterDisplay::SetPercent( float fPercent ) m_sprTip->SetX( SCALE(fPercent, 0.f, 1.f, -m_fStreamWidth/2, m_fStreamWidth/2) ); } +void SongMeterDisplay::Update( float fDeltaTime ) +{ + float fSongStartSeconds = GAMESTATE->m_pCurSong->m_Timing.GetElapsedTimeFromBeat( GAMESTATE->m_pCurSong->m_fFirstBeat ); + float fSongEndSeconds = GAMESTATE->m_pCurSong->m_Timing.GetElapsedTimeFromBeat( GAMESTATE->m_pCurSong->m_fLastBeat ); + float fPercentPositionSong = SCALE( GAMESTATE->m_fMusicSeconds, fSongStartSeconds, fSongEndSeconds, 0.0f, 1.0f ); + CLAMP( fPercentPositionSong, 0, 1 ); + + SetPercent( fPercentPositionSong ); + + MeterDisplay::Update( fDeltaTime ); +} + /* * (c) 2003-2004 Chris Danford * All rights reserved. diff --git a/stepmania/src/MeterDisplay.h b/stepmania/src/MeterDisplay.h index 928e17c57a..9e71e874f7 100644 --- a/stepmania/src/MeterDisplay.h +++ b/stepmania/src/MeterDisplay.h @@ -21,6 +21,12 @@ private: AutoActor m_sprTip; }; +class SongMeterDisplay: public MeterDisplay +{ +public: + virtual void Update( float fDeltaTime ); +}; + #endif /* diff --git a/stepmania/src/ScreenGameplay.cpp b/stepmania/src/ScreenGameplay.cpp index ebfef85179..ba1a86bfb6 100644 --- a/stepmania/src/ScreenGameplay.cpp +++ b/stepmania/src/ScreenGameplay.cpp @@ -1551,14 +1551,6 @@ void ScreenGameplay::Update( float fDeltaTime ) // update lights // UpdateLights(); - // - // update song position meter - // - float fSongStartSeconds = GAMESTATE->m_pCurSong->m_Timing.GetElapsedTimeFromBeat( GAMESTATE->m_pCurSong->m_fFirstBeat ); - float fSongEndSeconds = GAMESTATE->m_pCurSong->m_Timing.GetElapsedTimeFromBeat( GAMESTATE->m_pCurSong->m_fLastBeat ); - float fPercentPositionSong = SCALE( GAMESTATE->m_fMusicSeconds, fSongStartSeconds, fSongEndSeconds, 0.0f, 1.0f ); - CLAMP( fPercentPositionSong, 0, 1 ); - m_meterSongPosition.SetPercent( fPercentPositionSong ); if( NSMAN->useSMserver ) { diff --git a/stepmania/src/ScreenGameplay.h b/stepmania/src/ScreenGameplay.h index 8dc6218456..7965cdd69d 100644 --- a/stepmania/src/ScreenGameplay.h +++ b/stepmania/src/ScreenGameplay.h @@ -134,7 +134,7 @@ protected: BitmapText m_textSurviveTime; // used in extra stage BitmapText m_textSongTitle; - MeterDisplay m_meterSongPosition; + SongMeterDisplay m_meterSongPosition; Player m_Player[NUM_PLAYERS];