generalize CodeNames
This commit is contained in:
@@ -33,6 +33,7 @@ RepeatDelay=-1
|
|||||||
PrepareScreens=
|
PrepareScreens=
|
||||||
PersistScreens=
|
PersistScreens=
|
||||||
GroupedScreens=
|
GroupedScreens=
|
||||||
|
CodeNames=""
|
||||||
CancelCancelCommand=
|
CancelCancelCommand=
|
||||||
ShowCoinsAndCredits=true
|
ShowCoinsAndCredits=true
|
||||||
|
|
||||||
@@ -1879,7 +1880,6 @@ TimerOnCommand=draworder,97;spring,0.5;addx,-SCREEN_WIDTH
|
|||||||
TimerOffCommand=bouncebegin,0.5;addx,SCREEN_WIDTH;
|
TimerOffCommand=bouncebegin,0.5;addx,SCREEN_WIDTH;
|
||||||
TimerStealth=false
|
TimerStealth=false
|
||||||
ForceTimer=false
|
ForceTimer=false
|
||||||
CodeNames=""
|
|
||||||
FirstUpdateCommand=
|
FirstUpdateCommand=
|
||||||
PlayMusic=true
|
PlayMusic=true
|
||||||
StopMusicOnBack=true
|
StopMusicOnBack=true
|
||||||
|
|||||||
@@ -13,6 +13,8 @@
|
|||||||
#define PREPARE_SCREENS THEME->GetMetric (m_sName,"PrepareScreens")
|
#define PREPARE_SCREENS THEME->GetMetric (m_sName,"PrepareScreens")
|
||||||
#define PERSIST_SCREENS THEME->GetMetric (m_sName,"PersistScreens")
|
#define PERSIST_SCREENS THEME->GetMetric (m_sName,"PersistScreens")
|
||||||
#define GROUPED_SCREENS THEME->GetMetric (m_sName,"GroupedScreens")
|
#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 )
|
void Screen::InitScreen( Screen *pScreen )
|
||||||
{
|
{
|
||||||
@@ -36,6 +38,28 @@ void Screen::Init()
|
|||||||
REPEAT_RATE.Load( m_sName, "RepeatRate" );
|
REPEAT_RATE.Load( m_sName, "RepeatRate" );
|
||||||
REPEAT_DELAY.Load( m_sName, "RepeatDelay" );
|
REPEAT_DELAY.Load( m_sName, "RepeatDelay" );
|
||||||
|
|
||||||
|
//
|
||||||
|
// Load codes
|
||||||
|
//
|
||||||
|
{
|
||||||
|
split( CODE_NAMES, ",", m_asCodeNames, true );
|
||||||
|
|
||||||
|
for( unsigned c=0; c<m_asCodeNames.size(); c++ )
|
||||||
|
{
|
||||||
|
vector<RString> 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 );
|
SetFOV( 0 );
|
||||||
|
|
||||||
m_smSendOnPop = SM_None;
|
m_smSendOnPop = SM_None;
|
||||||
@@ -160,6 +184,17 @@ bool Screen::OverlayInput( const InputEventPlus &input )
|
|||||||
|
|
||||||
void Screen::Input( 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. */
|
/* Don't send release messages with the default handler. */
|
||||||
switch( input.type )
|
switch( input.type )
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
#include "InputFilter.h"
|
#include "InputFilter.h"
|
||||||
#include "ThemeMetric.h"
|
#include "ThemeMetric.h"
|
||||||
#include "PlayerNumber.h"
|
#include "PlayerNumber.h"
|
||||||
|
#include "InputQueue.h"
|
||||||
|
|
||||||
class InputEventPlus;
|
class InputEventPlus;
|
||||||
class Screen;
|
class Screen;
|
||||||
@@ -71,6 +72,9 @@ protected:
|
|||||||
vector<QueuedScreenMessage> m_QueuedMessages;
|
vector<QueuedScreenMessage> m_QueuedMessages;
|
||||||
static bool SortMessagesByDelayRemaining(const QueuedScreenMessage &m1, const QueuedScreenMessage &m2);
|
static bool SortMessagesByDelayRemaining(const QueuedScreenMessage &m1, const QueuedScreenMessage &m2);
|
||||||
|
|
||||||
|
vector<InputQueueCode> m_aCodes;
|
||||||
|
vector<RString> m_asCodeNames;
|
||||||
|
|
||||||
ThemeMetric<bool> ALLOW_OPERATOR_MENU_BUTTON;
|
ThemeMetric<bool> ALLOW_OPERATOR_MENU_BUTTON;
|
||||||
ThemeMetric<float> REPEAT_RATE;
|
ThemeMetric<float> REPEAT_RATE;
|
||||||
ThemeMetric<float> REPEAT_DELAY;
|
ThemeMetric<float> REPEAT_DELAY;
|
||||||
|
|||||||
@@ -15,9 +15,6 @@
|
|||||||
|
|
||||||
REGISTER_SCREEN_CLASS( ScreenNameEntryTraditional );
|
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()
|
void ScreenNameEntryTraditional::Init()
|
||||||
{
|
{
|
||||||
if( PREFSMAN->m_bScreenTestMode )
|
if( PREFSMAN->m_bScreenTestMode )
|
||||||
@@ -71,28 +68,6 @@ void ScreenNameEntryTraditional::Init()
|
|||||||
|
|
||||||
MAX_RANKING_NAME_LENGTH.Load( m_sName, "MaxRankingNameLength" );
|
MAX_RANKING_NAME_LENGTH.Load( m_sName, "MaxRankingNameLength" );
|
||||||
|
|
||||||
//
|
|
||||||
// Load codes
|
|
||||||
//
|
|
||||||
{
|
|
||||||
split( CODE_NAMES, ",", m_asCodeNames, true );
|
|
||||||
|
|
||||||
for( unsigned c=0; c<m_asCodeNames.size(); c++ )
|
|
||||||
{
|
|
||||||
vector<RString> 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();
|
ScreenWithMenuElements::Init();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -167,17 +142,6 @@ void ScreenNameEntryTraditional::Input( const InputEventPlus &input )
|
|||||||
if( IsTransitioning() )
|
if( IsTransitioning() )
|
||||||
return;
|
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 );
|
ScreenWithMenuElements::Input( input );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -33,8 +33,6 @@ public:
|
|||||||
void SelectChar( PlayerNumber pn, const RString &sKey );
|
void SelectChar( PlayerNumber pn, const RString &sKey );
|
||||||
|
|
||||||
ThemeMetric<int> MAX_RANKING_NAME_LENGTH;
|
ThemeMetric<int> MAX_RANKING_NAME_LENGTH;
|
||||||
vector<InputQueueCode> m_aCodes;
|
|
||||||
vector<RString> m_asCodeNames;
|
|
||||||
|
|
||||||
wstring m_sSelection[NUM_PLAYERS];
|
wstring m_sSelection[NUM_PLAYERS];
|
||||||
bool m_bEnteringName[NUM_PLAYERS];
|
bool m_bEnteringName[NUM_PLAYERS];
|
||||||
|
|||||||
@@ -12,9 +12,6 @@
|
|||||||
|
|
||||||
#define CHOICE_NAMES THEME->GetMetric (m_sName,"ChoiceNames")
|
#define CHOICE_NAMES THEME->GetMetric (m_sName,"ChoiceNames")
|
||||||
#define CHOICE( s ) THEME->GetMetric (m_sName,ssprintf("Choice%s",s.c_str()))
|
#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 IDLE_TIMEOUT_SCREEN THEME->GetMetric (m_sName,"IdleTimeoutScreen")
|
||||||
#define UPDATE_ON_MESSAGE THEME->GetMetric (m_sName,"UpdateOnMessage")
|
#define UPDATE_ON_MESSAGE THEME->GetMetric (m_sName,"UpdateOnMessage")
|
||||||
|
|
||||||
@@ -57,29 +54,6 @@ void ScreenSelect::Init()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
|
||||||
// Load codes
|
|
||||||
//
|
|
||||||
{
|
|
||||||
vector<RString> vsCodeNames;
|
|
||||||
split( CODE_NAMES, ",", vsCodeNames, true );
|
|
||||||
|
|
||||||
for( unsigned c=0; c<vsCodeNames.size(); c++ )
|
|
||||||
{
|
|
||||||
RString sCodeName = vsCodeNames[c];
|
|
||||||
|
|
||||||
InputQueueCode code;
|
|
||||||
if( !code.Load( CODE(sCodeName) ) )
|
|
||||||
continue;
|
|
||||||
|
|
||||||
m_aCodes.push_back( code );
|
|
||||||
GameCommand mc;
|
|
||||||
Commands cmd = ParseCommands( CODE_ACTION(sCodeName) );
|
|
||||||
mc.Load( c, cmd );
|
|
||||||
m_aCodeChoices.push_back( mc );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if( !m_aGameCommands.size() )
|
if( !m_aGameCommands.size() )
|
||||||
RageException::Throw( "Screen \"%s\" does not set any choices.", m_sName.c_str() );
|
RageException::Throw( "Screen \"%s\" does not set any choices.", m_sName.c_str() );
|
||||||
}
|
}
|
||||||
@@ -163,14 +137,6 @@ void ScreenSelect::Input( const InputEventPlus &input )
|
|||||||
if( IsTransitioning() )
|
if( IsTransitioning() )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
for( unsigned i = 0; i < m_aCodes.size(); ++i )
|
|
||||||
{
|
|
||||||
if( !m_aCodes[i].EnteredCode( input.GameI.controller ) )
|
|
||||||
continue;
|
|
||||||
|
|
||||||
LOG->Trace("entered code for index %d", i);
|
|
||||||
m_aCodeChoices[i].Apply( input.pn );
|
|
||||||
}
|
|
||||||
ScreenWithMenuElements::Input( input ); // default input handler
|
ScreenWithMenuElements::Input( input ); // default input handler
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,6 @@
|
|||||||
|
|
||||||
#include "ScreenWithMenuElements.h"
|
#include "ScreenWithMenuElements.h"
|
||||||
#include "GameCommand.h"
|
#include "GameCommand.h"
|
||||||
#include "InputQueue.h"
|
|
||||||
#include "ThemeMetric.h"
|
#include "ThemeMetric.h"
|
||||||
|
|
||||||
class ScreenSelect : public ScreenWithMenuElements
|
class ScreenSelect : public ScreenWithMenuElements
|
||||||
@@ -28,8 +27,6 @@ protected:
|
|||||||
|
|
||||||
vector<GameCommand> m_aGameCommands; // derived classes should look here for what choices are available
|
vector<GameCommand> m_aGameCommands; // derived classes should look here for what choices are available
|
||||||
|
|
||||||
vector<InputQueueCode> m_aCodes;
|
|
||||||
vector<GameCommand> m_aCodeChoices;
|
|
||||||
vector<RString> m_asSubscribedMessages;
|
vector<RString> m_asSubscribedMessages;
|
||||||
|
|
||||||
RageTimer m_timerIdleComment; // count up to time between idle comment announcer sounds
|
RageTimer m_timerIdleComment; // count up to time between idle comment announcer sounds
|
||||||
|
|||||||
Reference in New Issue
Block a user