diff --git a/stepmania/src/MusicWheel.cpp b/stepmania/src/MusicWheel.cpp index 1353d10dc1..6539fbbc4e 100644 --- a/stepmania/src/MusicWheel.cpp +++ b/stepmania/src/MusicWheel.cpp @@ -189,7 +189,7 @@ MusicWheel::MusicWheel() // fade the wheel in - m_WheelState = STATE_FADING_ON; + m_WheelState = STATE_IDLE; m_fTimeLeftInState = FADE_TIME; @@ -316,19 +316,32 @@ float MusicWheel::GetBannerBrightness( float fPosOffsetsFromMiddle ) float MusicWheel::GetBannerAlpha( float fPosOffsetsFromMiddle ) { - if( m_WheelState == STATE_FADING_OFF ) + if( m_WheelState == STATE_FLYING_OFF_BEFORE_NEXT_SORT + || m_WheelState == STATE_TWEENING_OFF_SCREEN ) + { return m_fTimeLeftInState / FADE_TIME; - else if( m_WheelState == STATE_FADING_ON ) + } + else if( m_WheelState == STATE_FLYING_ON_AFTER_NEXT_SORT + || m_WheelState == STATE_TWEENING_ON_SCREEN ) + { return 1 - (m_fTimeLeftInState / FADE_TIME); + } + else if( m_WheelState == STATE_WAITING_OFF_SCREEN ) + { + return 0; + } else + { return 1; + } } float MusicWheel::GetBannerX( float fPosOffsetsFromMiddle ) { float fX = (1-cos((fPosOffsetsFromMiddle)/3))*95.0f; - if( m_WheelState == STATE_FADING_OFF ) + if( m_WheelState == STATE_FLYING_OFF_BEFORE_NEXT_SORT + || m_WheelState == STATE_TWEENING_OFF_SCREEN ) { float fDistFromCenter = fabs( fPosOffsetsFromMiddle ); float fPercentOffScreen = 1- (m_fTimeLeftInState / FADE_TIME); @@ -337,7 +350,8 @@ float MusicWheel::GetBannerX( float fPosOffsetsFromMiddle ) float fXPixelOffset = fXLogicalOffset * 600; fX += fXPixelOffset; } - else if( m_WheelState == STATE_FADING_ON ) + else if( m_WheelState == STATE_FLYING_ON_AFTER_NEXT_SORT + || m_WheelState == STATE_TWEENING_ON_SCREEN ) { float fDistFromCenter = fabs( fPosOffsetsFromMiddle ); float fPercentOffScreen = m_fTimeLeftInState / FADE_TIME; @@ -427,9 +441,9 @@ void MusicWheel::Update( float fDeltaTime ) m_WheelState = STATE_IDLE; // now, wait for input PlayMusicSample(); break; - case STATE_FADING_OFF: + case STATE_FLYING_OFF_BEFORE_NEXT_SORT: { - m_WheelState = STATE_FADING_ON; + m_WheelState = STATE_FLYING_ON_AFTER_NEXT_SORT; m_fTimeLeftInState = FADE_TIME; Song* pPrevSelectedSong = m_WheelItems[m_iSelection].m_pSong; @@ -454,10 +468,19 @@ void MusicWheel::Update( float fDeltaTime ) } } break; - case STATE_FADING_ON: + case STATE_FLYING_ON_AFTER_NEXT_SORT: PlayMusicSample(); m_WheelState = STATE_IDLE; // now, wait for input break; + case STATE_TWEENING_ON_SCREEN: + PlayMusicSample(); + m_WheelState = STATE_IDLE; + m_fTimeLeftInState = 0; + break; + case STATE_TWEENING_OFF_SCREEN: + m_WheelState = STATE_WAITING_OFF_SCREEN; + m_fTimeLeftInState = 0; + break; case STATE_IDLE: m_fTimeLeftInState = 0; break; @@ -510,7 +533,7 @@ void MusicWheel::NextSort() m_MusicSortDisplay.BeginTweening( FADE_TIME, TWEEN_BIAS_END ); m_MusicSortDisplay.SetTweenXY( SORT_ICON_OFF_SCREEN_X, SORT_ICON_OFF_SCREEN_Y ); - m_WheelState = STATE_FADING_OFF; + m_WheelState = STATE_FLYING_OFF_BEFORE_NEXT_SORT; m_fTimeLeftInState = FADE_TIME; } diff --git a/stepmania/src/MusicWheel.h b/stepmania/src/MusicWheel.h index 9f0c092fc7..65b47d3324 100644 --- a/stepmania/src/MusicWheel.h +++ b/stepmania/src/MusicWheel.h @@ -78,8 +78,11 @@ class MusicWheel : public ActorFrame public: MusicWheel(); - void Update( float fDeltaTime ); - void RenderPrimitives(); + virtual void Update( float fDeltaTime ); + virtual void RenderPrimitives(); + + virtual void TweenOnScreen() { m_WheelState = STATE_TWEENING_ON_SCREEN; m_fTimeLeftInState = FADE_TIME; }; + virtual void TweenOffScreen() { m_WheelState = STATE_TWEENING_OFF_SCREEN; m_fTimeLeftInState = FADE_TIME; }; void PrevMusic(); void NextMusic(); @@ -114,7 +117,16 @@ protected: CString m_sExpandedSectionName; - enum WheelState { STATE_IDLE, STATE_SWITCHING_TO_PREV_MUSIC, STATE_SWITCHING_TO_NEXT_MUSIC, STATE_FADING_OFF, STATE_FADING_ON }; + enum WheelState { + STATE_IDLE, + STATE_SWITCHING_TO_PREV_MUSIC, + STATE_SWITCHING_TO_NEXT_MUSIC, + STATE_FLYING_OFF_BEFORE_NEXT_SORT, + STATE_FLYING_ON_AFTER_NEXT_SORT, + STATE_TWEENING_ON_SCREEN, + STATE_TWEENING_OFF_SCREEN, + STATE_WAITING_OFF_SCREEN + }; WheelState m_WheelState; float m_fTimeLeftInState; diff --git a/stepmania/src/StepMania.dsp b/stepmania/src/StepMania.dsp index 14d90eff25..a6d1a11ba1 100644 --- a/stepmania/src/StepMania.dsp +++ b/stepmania/src/StepMania.dsp @@ -564,14 +564,6 @@ SOURCE=.\BitmapText.h # End Source File # Begin Source File -SOURCE=.\BlurredSprite.cpp -# End Source File -# Begin Source File - -SOURCE=.\BlurredSprite.h -# End Source File -# Begin Source File - SOURCE=.\BPMDisplay.cpp # End Source File # Begin Source File @@ -588,6 +580,14 @@ SOURCE=.\ColorArrow.h # End Source File # Begin Source File +SOURCE=.\FocusingSprite.cpp +# End Source File +# Begin Source File + +SOURCE=.\FocusingSprite.h +# End Source File +# Begin Source File + SOURCE=.\GhostArrow.cpp # End Source File # Begin Source File @@ -636,6 +636,14 @@ SOURCE=.\MiniBackground.h # End Source File # Begin Source File +SOURCE=.\MotionBlurSprite.cpp +# End Source File +# Begin Source File + +SOURCE=.\MotionBlurSprite.h +# End Source File +# Begin Source File + SOURCE=.\MusicSortDisplay.cpp # End Source File # Begin Source File