diff --git a/stepmania/Themes/default/metrics.ini b/stepmania/Themes/default/metrics.ini index 6c9b7dcc0e..6258031bc5 100644 --- a/stepmania/Themes/default/metrics.ini +++ b/stepmania/Themes/default/metrics.ini @@ -675,6 +675,7 @@ NextOptionsScreen=@SelectFirstOptionsScreen() DoRouletteOnMenuTimer=1 AlignMusicBeat=0 Codes= +OptionsMenuAvailable=@not GAMESTATE:IsExtraStage() and not GAMESTATE:IsExtraStage2() [ScreenSelectCourse] Class=ScreenSelectMusic diff --git a/stepmania/src/GameState.cpp b/stepmania/src/GameState.cpp index ea2c7611f2..c9d9d0ae0f 100644 --- a/stepmania/src/GameState.cpp +++ b/stepmania/src/GameState.cpp @@ -1966,6 +1966,8 @@ public: static int IsGoalComplete( T* p, lua_State *L ) { lua_pushboolean(L, p->IsGoalComplete((PlayerNumber)IArg(1)) ); return 1; } static int PlayerIsUsingModifier( T* p, lua_State *L ) { lua_pushboolean(L, p->PlayerIsUsingModifier((PlayerNumber)IArg(1),SArg(2)) ); return 1; } static int GetCourseSongIndex( T* p, lua_State *L ) { lua_pushnumber(L, p->GetCourseSongIndex() ); return 1; } + static int IsExtraStage( T* p, lua_State *L ) { lua_pushnumber(L, p->IsExtraStage() ); return 1; } + static int IsExtraStage2( T* p, lua_State *L ) { lua_pushnumber(L, p->IsExtraStage2() ); return 1; } static void Register(lua_State *L) { @@ -1992,6 +1994,8 @@ public: ADD_METHOD( IsGoalComplete ) ADD_METHOD( PlayerIsUsingModifier ) ADD_METHOD( GetCourseSongIndex ) + ADD_METHOD( IsExtraStage ) + ADD_METHOD( IsExtraStage2 ) Luna::Register( L ); diff --git a/stepmania/src/ScreenSelectMusic.cpp b/stepmania/src/ScreenSelectMusic.cpp index 2b6d615f1c..10e7935cc0 100644 --- a/stepmania/src/ScreenSelectMusic.cpp +++ b/stepmania/src/ScreenSelectMusic.cpp @@ -67,7 +67,8 @@ ScreenSelectMusic::ScreenSelectMusic( CString sClassName ) : ScreenWithMenuEleme DO_ROULETTE_ON_MENU_TIMER( m_sName, "DoRouletteOnMenuTimer" ), ALIGN_MUSIC_BEATS( m_sName, "AlignMusicBeat" ), CODES( m_sName, "Codes" ), - MUSIC_WHEEL_TYPE( m_sName, "MusicWheelType" ) + MUSIC_WHEEL_TYPE( m_sName, "MusicWheelType" ), + OPTIONS_MENU_AVAILABLE( m_sName, "OptionsMenuAvailable" ) { LOG->Trace( "ScreenSelectMusic::ScreenSelectMusic()" ); @@ -806,8 +807,7 @@ void ScreenSelectMusic::Input( const DeviceInput& DeviceI, InputEventType type, type != IET_RELEASE && type != IET_LEVEL_CHANGED && IsTransitioning() && - !GAMESTATE->IsExtraStage() && - !GAMESTATE->IsExtraStage2() ) + OPTIONS_MENU_AVAILABLE.GetValue() ) { if(m_bGoToOptions) return; /* got it already */ if(!m_bAllowOptionsMenu) return; /* not allowed */ @@ -1209,7 +1209,7 @@ void ScreenSelectMusic::MenuStart( PlayerNumber pn ) TweenOffScreen(); SCREENMAN->PlayStartSound(); - if( !GAMESTATE->IsExtraStage() && !GAMESTATE->IsExtraStage2() ) + if( OPTIONS_MENU_AVAILABLE ) { // float fShowSeconds = m_Out.GetLengthSeconds(); diff --git a/stepmania/src/ScreenSelectMusic.h b/stepmania/src/ScreenSelectMusic.h index 9de5fefdd6..61e9145ee6 100644 --- a/stepmania/src/ScreenSelectMusic.h +++ b/stepmania/src/ScreenSelectMusic.h @@ -86,6 +86,7 @@ protected: ThemeMetric ALIGN_MUSIC_BEATS; ThemeMetric CODES; ThemeMetric MUSIC_WHEEL_TYPE; + ThemeMetric OPTIONS_MENU_AVAILABLE; CString m_sSectionMusicPath; CString m_sSortMusicPath;