diff --git a/stepmania/Themes/default/metrics.ini b/stepmania/Themes/default/metrics.ini index 3501a46007..2d57c154cb 100644 --- a/stepmania/Themes/default/metrics.ini +++ b/stepmania/Themes/default/metrics.ini @@ -510,6 +510,8 @@ OptionsMenuAvailable=OptionsMenuAvailable() SelectMenuAvailable=false ModeMenuAvailable=ModeMenuAvailable() ScreenBeginCommand=setupmusicstagemods +PreviousSongButton="MenuLeft" +NextSongButton="MenuRight" [ScreenSelectCourse] Class="ScreenSelectMusic" diff --git a/stepmania/src/ScreenSelectMusic.cpp b/stepmania/src/ScreenSelectMusic.cpp index e9a18cb7e5..883377125d 100644 --- a/stepmania/src/ScreenSelectMusic.cpp +++ b/stepmania/src/ScreenSelectMusic.cpp @@ -69,6 +69,9 @@ void ScreenSelectMusic::Init() SELECT_MENU_AVAILABLE.Load( m_sName, "SelectMenuAvailable" ); MODE_MENU_AVAILABLE.Load( m_sName, "ModeMenuAvailable" ); + m_GameButtonPreviousSong = INPUTMAPPER->GetInputScheme()->ButtonNameToIndex( THEME->GetMetric(m_sName,"PreviousSongButton") ); + m_GameButtonNextSong = INPUTMAPPER->GetInputScheme()->ButtonNameToIndex( THEME->GetMetric(m_sName,"NextSongButton") ); + LIGHTSMAN->SetLightsMode( LIGHTSMODE_MENU ); /* Finish any previous stage. It's OK to call this when we havn't played a stage yet. @@ -357,10 +360,8 @@ void ScreenSelectMusic::Input( const InputEventPlus &input ) return; } - switch( input.MenuI ) + if( input.MenuI == m_GameButtonNextSong || input.MenuI == m_GameButtonPreviousSong ) { - case MENU_BUTTON_RIGHT: - case MENU_BUTTON_LEFT: { /* If we're rouletting, hands off. */ if( m_MusicWheel.IsRouletting() ) @@ -370,8 +371,8 @@ void ScreenSelectMusic::Input( const InputEventPlus &input ) bool bRightIsDown = false; FOREACH_EnabledPlayer( p ) { - bLeftIsDown |= INPUTMAPPER->IsBeingPressed( MENU_BUTTON_LEFT, p ); - bRightIsDown |= INPUTMAPPER->IsBeingPressed( MENU_BUTTON_RIGHT, p ); + bLeftIsDown |= INPUTMAPPER->IsBeingPressed( m_GameButtonPreviousSong, p ); + bRightIsDown |= INPUTMAPPER->IsBeingPressed( m_GameButtonNextSong, p ); } bool bBothDown = bLeftIsDown && bRightIsDown; @@ -388,15 +389,10 @@ void ScreenSelectMusic::Input( const InputEventPlus &input ) m_MusicWheel.Move( 0 ); if( input.type == IET_FIRST_PRESS ) { - switch( input.MenuI ) - { - case MENU_BUTTON_LEFT: + if( input.MenuI == m_GameButtonPreviousSong ) m_MusicWheel.ChangeMusicUnlessLocked( -1 ); - break; - case MENU_BUTTON_RIGHT: + else if( input.MenuI == m_GameButtonNextSong ) m_MusicWheel.ChangeMusicUnlessLocked( +1 ); - break; - } } } else if( bLeftIsDown ) @@ -422,12 +418,11 @@ void ScreenSelectMusic::Input( const InputEventPlus &input ) { FOREACH_HumanPlayer( p ) { - INPUTMAPPER->ResetKeyRepeat( MENU_BUTTON_LEFT, p ); - INPUTMAPPER->ResetKeyRepeat( MENU_BUTTON_RIGHT, p ); + INPUTMAPPER->ResetKeyRepeat( m_GameButtonPreviousSong, p ); + INPUTMAPPER->ResetKeyRepeat( m_GameButtonNextSong, p ); } } } - break; } if( input.type == IET_FIRST_PRESS && DetectCodes(input) ) diff --git a/stepmania/src/ScreenSelectMusic.h b/stepmania/src/ScreenSelectMusic.h index f077af114d..92fcdbd01d 100644 --- a/stepmania/src/ScreenSelectMusic.h +++ b/stepmania/src/ScreenSelectMusic.h @@ -14,6 +14,7 @@ #include "ThemeMetric.h" #include "RageTexturePreloader.h" #include "TimingData.h" +#include "GameInput.h" class ScreenSelectMusic : public ScreenWithMenuElements { @@ -67,6 +68,9 @@ protected: DynamicThemeMetric SELECT_MENU_AVAILABLE; DynamicThemeMetric MODE_MENU_AVAILABLE; + GameButton m_GameButtonPreviousSong; + GameButton m_GameButtonNextSong; + RString m_sSectionMusicPath; RString m_sSortMusicPath; RString m_sRouletteMusicPath;