diff --git a/stepmania/src/MenuElements.cpp b/stepmania/src/MenuElements.cpp index a087f58adc..1e8e328ddf 100644 --- a/stepmania/src/MenuElements.cpp +++ b/stepmania/src/MenuElements.cpp @@ -119,8 +119,11 @@ void MenuElements::Load( CString sBackgroundPath, CString sTopEdgePath, CString m_soundBack.Load( THEME->GetPathTo("Sounds","menu back") ); } -void MenuElements::TweenTopLayerOnScreen() +void MenuElements::TweenTopLayerOnScreen(float tm) { + if(tm == -1) + tm = MENU_ELEMENTS_TWEEN_TIME; + CArray apActorsInTopFrame; apActorsInTopFrame.push_back( &m_sprTopEdge ); apActorsInTopFrame.push_back( &m_sprStyleIcon ); @@ -129,13 +132,13 @@ void MenuElements::TweenTopLayerOnScreen() { float fOriginalX = apActorsInTopFrame[i]->GetX(); apActorsInTopFrame[i]->SetX( fOriginalX+SCREEN_WIDTH ); - apActorsInTopFrame[i]->BeginTweening( MENU_ELEMENTS_TWEEN_TIME, TWEEN_SPRING ); + apActorsInTopFrame[i]->BeginTweening( tm, TWEEN_SPRING ); apActorsInTopFrame[i]->SetTweenX( fOriginalX ); } float fOriginalZoom = m_textHelp.GetZoomY(); m_textHelp.SetZoomY( 0 ); - m_textHelp.BeginTweening( MENU_ELEMENTS_TWEEN_TIME/2 ); + m_textHelp.BeginTweening( tm/2 ); m_textHelp.SetTweenZoomY( fOriginalZoom ); } @@ -202,6 +205,17 @@ void MenuElements::TweenOffScreenToMenu( ScreenMessage smSendWhenDone ) m_soundSwoosh.Play(); } +void MenuElements::ImmedOnScreenFromMenu( bool bLeaveKeepAliveOn ) +{ + TweenTopLayerOnScreen(0); + Update(0); + + if( !bLeaveKeepAliveOn ) + m_KeepAlive.SetOpened(); + else + m_KeepAlive.SetClosed(); +} + void MenuElements::ImmedOffScreenToMenu() { m_MenuTimer.StopTimer(); diff --git a/stepmania/src/MenuElements.h b/stepmania/src/MenuElements.h index ca59955d3a..b66c649993 100644 --- a/stepmania/src/MenuElements.h +++ b/stepmania/src/MenuElements.h @@ -48,6 +48,7 @@ public: void TweenOnScreenFromMenu( ScreenMessage smSendWhenDone, bool bLeaveKeepAliveOn = false ); void TweenOffScreenToMenu( ScreenMessage smSendWhenDone ); + void ImmedOnScreenFromMenu( bool bLeaveKeepAliveOn = false ); void ImmedOffScreenToMenu(); void TweenOnScreenFromBlack( ScreenMessage smSendWhenDone ); @@ -56,7 +57,7 @@ public: bool IsClosing() { return m_Wipe.IsClosing() || m_KeepAlive.IsClosing(); }; protected: - void TweenTopLayerOnScreen(); + void TweenTopLayerOnScreen(float tm=-1); void TweenTopLayerOffScreen(float tm=-1); void TweenBottomLayerOnScreen();