diff --git a/stepmania/Themes/default/metrics.ini b/stepmania/Themes/default/metrics.ini index 284f72d6e4..ddceef4376 100644 --- a/stepmania/Themes/default/metrics.ini +++ b/stepmania/Themes/default/metrics.ini @@ -33,6 +33,7 @@ RepeatDelay=-1 PrepareScreens= PersistScreens= GroupedScreens= +CodeNames="" CancelCancelCommand= ShowCoinsAndCredits=true @@ -1879,7 +1880,6 @@ TimerOnCommand=draworder,97;spring,0.5;addx,-SCREEN_WIDTH TimerOffCommand=bouncebegin,0.5;addx,SCREEN_WIDTH; TimerStealth=false ForceTimer=false -CodeNames="" FirstUpdateCommand= PlayMusic=true StopMusicOnBack=true diff --git a/stepmania/src/Screen.cpp b/stepmania/src/Screen.cpp index d9a49cc773..605770eb55 100644 --- a/stepmania/src/Screen.cpp +++ b/stepmania/src/Screen.cpp @@ -13,6 +13,8 @@ #define PREPARE_SCREENS THEME->GetMetric (m_sName,"PrepareScreens") #define PERSIST_SCREENS THEME->GetMetric (m_sName,"PersistScreens") #define GROUPED_SCREENS THEME->GetMetric (m_sName,"GroupedScreens") +#define CODE_NAMES THEME->GetMetric (m_sName,"CodeNames") +#define CODE( s ) THEME->GetMetric (m_sName,ssprintf("Code%s",s.c_str())) void Screen::InitScreen( Screen *pScreen ) { @@ -36,6 +38,28 @@ void Screen::Init() REPEAT_RATE.Load( m_sName, "RepeatRate" ); REPEAT_DELAY.Load( m_sName, "RepeatDelay" ); + // + // Load codes + // + { + split( CODE_NAMES, ",", m_asCodeNames, true ); + + for( unsigned c=0; c asBits; + split( m_asCodeNames[c], "=", asBits, true ); + RString sCodeName = asBits[0]; + if( asBits.size() > 1 ) + m_asCodeNames[c] = asBits[1]; + + InputQueueCode code; + if( !code.Load(CODE(sCodeName)) ) + continue; + + m_aCodes.push_back( code ); + } + } + SetFOV( 0 ); m_smSendOnPop = SM_None; @@ -160,6 +184,17 @@ bool Screen::OverlayInput( const InputEventPlus &input ) void Screen::Input( const InputEventPlus &input ) { + for( unsigned i = 0; i < m_aCodes.size(); ++i ) + { + if( !m_aCodes[i].EnteredCode(input.GameI.controller) ) + continue; + + Message msg("Code"); + msg.SetParam( "PlayerNumber", input.pn ); + msg.SetParam( "Name", m_asCodeNames[i] ); + this->HandleMessage( msg ); + } + /* Don't send release messages with the default handler. */ switch( input.type ) { diff --git a/stepmania/src/Screen.h b/stepmania/src/Screen.h index dc6b326228..e9cbb1ced2 100644 --- a/stepmania/src/Screen.h +++ b/stepmania/src/Screen.h @@ -8,6 +8,7 @@ #include "InputFilter.h" #include "ThemeMetric.h" #include "PlayerNumber.h" +#include "InputQueue.h" class InputEventPlus; class Screen; @@ -71,6 +72,9 @@ protected: vector m_QueuedMessages; static bool SortMessagesByDelayRemaining(const QueuedScreenMessage &m1, const QueuedScreenMessage &m2); + vector m_aCodes; + vector m_asCodeNames; + ThemeMetric ALLOW_OPERATOR_MENU_BUTTON; ThemeMetric REPEAT_RATE; ThemeMetric REPEAT_DELAY; diff --git a/stepmania/src/ScreenNameEntryTraditional.cpp b/stepmania/src/ScreenNameEntryTraditional.cpp index b124e2e97f..d2cdfb170f 100644 --- a/stepmania/src/ScreenNameEntryTraditional.cpp +++ b/stepmania/src/ScreenNameEntryTraditional.cpp @@ -15,9 +15,6 @@ REGISTER_SCREEN_CLASS( ScreenNameEntryTraditional ); -#define CODE_NAMES THEME->GetMetric (m_sName,"CodeNames") -#define CODE( s ) THEME->GetMetric (m_sName,ssprintf("Code%s",s.c_str())) - void ScreenNameEntryTraditional::Init() { if( PREFSMAN->m_bScreenTestMode ) @@ -70,28 +67,6 @@ void ScreenNameEntryTraditional::Init() } MAX_RANKING_NAME_LENGTH.Load( m_sName, "MaxRankingNameLength" ); - - // - // Load codes - // - { - split( CODE_NAMES, ",", m_asCodeNames, true ); - - for( unsigned c=0; c asBits; - split( m_asCodeNames[c], "=", asBits, true ); - RString sCodeName = asBits[0]; - if( asBits.size() > 1 ) - m_asCodeNames[c] = asBits[1]; - - InputQueueCode code; - if( !code.Load(CODE(sCodeName)) ) - continue; - - m_aCodes.push_back( code ); - } - } ScreenWithMenuElements::Init(); } @@ -167,17 +142,6 @@ void ScreenNameEntryTraditional::Input( const InputEventPlus &input ) if( IsTransitioning() ) return; - for( unsigned i = 0; i < m_aCodes.size(); ++i ) - { - if( !m_aCodes[i].EnteredCode(input.GameI.controller) ) - continue; - - Message msg("Code"); - msg.SetParam( "PlayerNumber", input.pn ); - msg.SetParam( "Name", m_asCodeNames[i] ); - this->HandleMessage( msg ); - } - ScreenWithMenuElements::Input( input ); } diff --git a/stepmania/src/ScreenNameEntryTraditional.h b/stepmania/src/ScreenNameEntryTraditional.h index 2134b03dec..39e610cc2c 100644 --- a/stepmania/src/ScreenNameEntryTraditional.h +++ b/stepmania/src/ScreenNameEntryTraditional.h @@ -33,8 +33,6 @@ public: void SelectChar( PlayerNumber pn, const RString &sKey ); ThemeMetric MAX_RANKING_NAME_LENGTH; - vector m_aCodes; - vector m_asCodeNames; wstring m_sSelection[NUM_PLAYERS]; bool m_bEnteringName[NUM_PLAYERS]; diff --git a/stepmania/src/ScreenSelect.cpp b/stepmania/src/ScreenSelect.cpp index aa3cd84a95..82b5551cc8 100644 --- a/stepmania/src/ScreenSelect.cpp +++ b/stepmania/src/ScreenSelect.cpp @@ -12,9 +12,6 @@ #define CHOICE_NAMES THEME->GetMetric (m_sName,"ChoiceNames") #define CHOICE( s ) THEME->GetMetric (m_sName,ssprintf("Choice%s",s.c_str())) -#define CODE_NAMES THEME->GetMetric (m_sName,"CodeNames") -#define CODE( s ) THEME->GetMetric (m_sName,ssprintf("Code%s",s.c_str())) -#define CODE_ACTION( s ) THEME->GetMetric (m_sName,ssprintf("Code%sAction",s.c_str())) #define IDLE_TIMEOUT_SCREEN THEME->GetMetric (m_sName,"IdleTimeoutScreen") #define UPDATE_ON_MESSAGE THEME->GetMetric (m_sName,"UpdateOnMessage") @@ -57,29 +54,6 @@ void ScreenSelect::Init() } } - // - // Load codes - // - { - vector vsCodeNames; - split( CODE_NAMES, ",", vsCodeNames, true ); - - for( unsigned c=0; cTrace("entered code for index %d", i); - m_aCodeChoices[i].Apply( input.pn ); - } ScreenWithMenuElements::Input( input ); // default input handler } diff --git a/stepmania/src/ScreenSelect.h b/stepmania/src/ScreenSelect.h index 29d07aab71..128f4e9563 100644 --- a/stepmania/src/ScreenSelect.h +++ b/stepmania/src/ScreenSelect.h @@ -5,7 +5,6 @@ #include "ScreenWithMenuElements.h" #include "GameCommand.h" -#include "InputQueue.h" #include "ThemeMetric.h" class ScreenSelect : public ScreenWithMenuElements @@ -28,8 +27,6 @@ protected: vector m_aGameCommands; // derived classes should look here for what choices are available - vector m_aCodes; - vector m_aCodeChoices; vector m_asSubscribedMessages; RageTimer m_timerIdleComment; // count up to time between idle comment announcer sounds