diff --git a/stepmania/src/Screen.cpp b/stepmania/src/Screen.cpp index 43e8399226..2327d7e835 100644 --- a/stepmania/src/Screen.cpp +++ b/stepmania/src/Screen.cpp @@ -129,7 +129,7 @@ void Screen::Input( const DeviceInput& DeviceI, const InputEventType type, const /* Don't make the user hold the back button if they're pressing escape. */ if( DeviceI.device == DEVICE_KEYBOARD && DeviceI.button == SDLK_ESCAPE ) { - this->MenuBack( MenuI.player ); + this->MenuBack( MenuI.player, type ); return; } diff --git a/stepmania/src/ScreenMiniMenu.cpp b/stepmania/src/ScreenMiniMenu.cpp index b4cf361e7c..3bd063258f 100644 --- a/stepmania/src/ScreenMiniMenu.cpp +++ b/stepmania/src/ScreenMiniMenu.cpp @@ -144,19 +144,6 @@ void ScreenMiniMenu::Input( const DeviceInput& DeviceI, const InputEventType typ if( m_In.IsTransitioning() || m_Out.IsTransitioning() ) return; - if( DeviceI.device==DEVICE_KEYBOARD && type==IET_FIRST_PRESS ) - { - switch( DeviceI.button ) - { - case SDLK_LEFT: - this->MenuLeft( StyleI.player ); - return; - case SDLK_RIGHT: - this->MenuRight( StyleI.player ); - return; - } - } - Screen::Input( DeviceI, type, GameI, MenuI, StyleI ); } @@ -173,8 +160,11 @@ void ScreenMiniMenu::HandleScreenMessage( const ScreenMessage SM ) } } -void ScreenMiniMenu::MenuUp( PlayerNumber pn ) +void ScreenMiniMenu::MenuUp( PlayerNumber pn, const InputEventType type ) { + if( type == IET_RELEASE ) + return; + if( GetGoUpSpot() != -1 ) { BeforeLineChanged(); @@ -183,8 +173,11 @@ void ScreenMiniMenu::MenuUp( PlayerNumber pn ) } } -void ScreenMiniMenu::MenuDown( PlayerNumber pn ) +void ScreenMiniMenu::MenuDown( PlayerNumber pn, const InputEventType type ) { + if( type == IET_RELEASE ) + return; + if( GetGoDownSpot() != -1 ) { BeforeLineChanged(); @@ -193,8 +186,11 @@ void ScreenMiniMenu::MenuDown( PlayerNumber pn ) } } -void ScreenMiniMenu::MenuLeft( PlayerNumber pn ) +void ScreenMiniMenu::MenuLeft( PlayerNumber pn, const InputEventType type ) { + if( type == IET_RELEASE ) + return; + if( CanGoLeft() ) { m_iCurAnswers[m_iCurLine]--; @@ -202,8 +198,11 @@ void ScreenMiniMenu::MenuLeft( PlayerNumber pn ) } } -void ScreenMiniMenu::MenuRight( PlayerNumber pn ) +void ScreenMiniMenu::MenuRight( PlayerNumber pn, const InputEventType type ) { + if( type == IET_RELEASE ) + return; + if( CanGoRight() ) { m_iCurAnswers[m_iCurLine]++; @@ -211,8 +210,11 @@ void ScreenMiniMenu::MenuRight( PlayerNumber pn ) } } -void ScreenMiniMenu::MenuStart( PlayerNumber pn ) +void ScreenMiniMenu::MenuStart( PlayerNumber pn, const InputEventType type ) { + if( type == IET_RELEASE ) + return; + m_Out.StartTransitioning( SM_GoToOK ); SOUND->PlayOnce( THEME->GetPathToS("Common start") ); @@ -221,8 +223,11 @@ void ScreenMiniMenu::MenuStart( PlayerNumber pn ) COPY( s_iLastAnswers, m_iCurAnswers ); } -void ScreenMiniMenu::MenuBack( PlayerNumber pn ) +void ScreenMiniMenu::MenuBack( PlayerNumber pn, const InputEventType type ) { + if( type == IET_RELEASE ) + return; + m_Out.StartTransitioning( SM_GoToCancel ); } diff --git a/stepmania/src/ScreenMiniMenu.h b/stepmania/src/ScreenMiniMenu.h index 8cce14ea04..2d453236d1 100644 --- a/stepmania/src/ScreenMiniMenu.h +++ b/stepmania/src/ScreenMiniMenu.h @@ -75,12 +75,12 @@ public: virtual void HandleScreenMessage( const ScreenMessage SM ); protected: - void MenuUp( PlayerNumber pn ); - void MenuDown( PlayerNumber pn ); - void MenuLeft( PlayerNumber pn ); - void MenuRight( PlayerNumber pn ); - void MenuBack( PlayerNumber pn ); - void MenuStart( PlayerNumber pn ); + void MenuUp( PlayerNumber pn, const InputEventType type ); + void MenuDown( PlayerNumber pn, const InputEventType type ); + void MenuLeft( PlayerNumber pn, const InputEventType type ); + void MenuRight( PlayerNumber pn, const InputEventType type ); + void MenuBack( PlayerNumber pn, const InputEventType type ); + void MenuStart( PlayerNumber pn, const InputEventType type ); int GetGoUpSpot(); // return -1 if can't go up int GetGoDownSpot(); // return -1 if can't go down