add StepsSelected message
This commit is contained in:
@@ -188,6 +188,7 @@ void ScreenSelectMusic::BeginScreen()
|
|||||||
m_MusicWheel.BeginScreen();
|
m_MusicWheel.BeginScreen();
|
||||||
|
|
||||||
m_SelectionState = (SelectionState)0;
|
m_SelectionState = (SelectionState)0;
|
||||||
|
ZERO( m_bStepsSelected );
|
||||||
m_bGoToOptions = false;
|
m_bGoToOptions = false;
|
||||||
m_bAllowOptionsMenu = m_bAllowOptionsMenuRepeat = false;
|
m_bAllowOptionsMenu = m_bAllowOptionsMenuRepeat = false;
|
||||||
ZERO( m_iSelection );
|
ZERO( m_iSelection );
|
||||||
@@ -295,6 +296,22 @@ void ScreenSelectMusic::Input( const InputEventPlus &input )
|
|||||||
{
|
{
|
||||||
// LOG->Trace( "ScreenSelectMusic::Input()" );
|
// LOG->Trace( "ScreenSelectMusic::Input()" );
|
||||||
|
|
||||||
|
|
||||||
|
// debugging?
|
||||||
|
// I just like being able to see untransliterated titles occasionally.
|
||||||
|
if( input.DeviceI.device == DEVICE_KEYBOARD && input.DeviceI.button == KEY_F9 )
|
||||||
|
{
|
||||||
|
if( input.type != IET_FIRST_PRESS )
|
||||||
|
return;
|
||||||
|
PREFSMAN->m_bShowNativeLanguage.Set( !PREFSMAN->m_bShowNativeLanguage );
|
||||||
|
m_MusicWheel.RebuildWheelItems();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( !input.GameI.IsValid() )
|
||||||
|
return; // don't care
|
||||||
|
|
||||||
|
|
||||||
// Handle late joining
|
// Handle late joining
|
||||||
if( input.MenuI == MENU_BUTTON_START && input.type == IET_FIRST_PRESS && GAMESTATE->JoinInput(input.pn) )
|
if( input.MenuI == MENU_BUTTON_START && input.type == IET_FIRST_PRESS && GAMESTATE->JoinInput(input.pn) )
|
||||||
{
|
{
|
||||||
@@ -318,6 +335,45 @@ void ScreenSelectMusic::Input( const InputEventPlus &input )
|
|||||||
return; // don't handle this press again below
|
return; // don't handle this press again below
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if( !GAMESTATE->IsHumanPlayer(input.pn) )
|
||||||
|
return;
|
||||||
|
|
||||||
|
// Check for "Press START again for options" button press
|
||||||
|
if( m_SelectionState == SelectionState_Finalized &&
|
||||||
|
input.MenuI == MENU_BUTTON_START &&
|
||||||
|
input.type != IET_RELEASE &&
|
||||||
|
OPTIONS_MENU_AVAILABLE.GetValue() )
|
||||||
|
{
|
||||||
|
if( m_bGoToOptions )
|
||||||
|
return; /* got it already */
|
||||||
|
if( !m_bAllowOptionsMenu )
|
||||||
|
return; /* not allowed */
|
||||||
|
|
||||||
|
if( !m_bAllowOptionsMenuRepeat && input.type == IET_REPEAT )
|
||||||
|
{
|
||||||
|
return; /* not allowed yet */
|
||||||
|
}
|
||||||
|
|
||||||
|
m_bGoToOptions = true;
|
||||||
|
m_soundStart.Play();
|
||||||
|
this->PlayCommand( "ShowEnteringOptions" );
|
||||||
|
|
||||||
|
// Re-queue SM_BeginFadingOut, since ShowEnteringOptions may have
|
||||||
|
// short-circuited animations.
|
||||||
|
this->ClearMessageQueue( SM_BeginFadingOut );
|
||||||
|
this->PostScreenMessage( SM_BeginFadingOut, this->GetTweenTimeLeft() );
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( IsTransitioning() )
|
||||||
|
return; // ignore
|
||||||
|
|
||||||
|
if( m_SelectionState == SelectionState_Finalized ||
|
||||||
|
m_bStepsSelected[input.pn] )
|
||||||
|
return; // ignore
|
||||||
|
|
||||||
|
|
||||||
// handle options list input
|
// handle options list input
|
||||||
if( USE_OPTIONS_LIST && m_SelectionState == SelectionState_SelectingSteps )
|
if( USE_OPTIONS_LIST && m_SelectionState == SelectionState_SelectingSteps )
|
||||||
{
|
{
|
||||||
@@ -356,59 +412,6 @@ void ScreenSelectMusic::Input( const InputEventPlus &input )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// debugging?
|
|
||||||
// I just like being able to see untransliterated titles occasionally.
|
|
||||||
if( input.DeviceI.device == DEVICE_KEYBOARD && input.DeviceI.button == KEY_F9 )
|
|
||||||
{
|
|
||||||
if( input.type != IET_FIRST_PRESS )
|
|
||||||
return;
|
|
||||||
PREFSMAN->m_bShowNativeLanguage.Set( !PREFSMAN->m_bShowNativeLanguage );
|
|
||||||
m_MusicWheel.RebuildWheelItems();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if( !input.GameI.IsValid() )
|
|
||||||
return; // don't care
|
|
||||||
|
|
||||||
|
|
||||||
PlayerNumber pn = input.pn;
|
|
||||||
if( !GAMESTATE->IsHumanPlayer(pn) )
|
|
||||||
return;
|
|
||||||
|
|
||||||
// Check for "Press START again for options" button press
|
|
||||||
if( m_SelectionState == SelectionState_Finalized &&
|
|
||||||
input.MenuI == MENU_BUTTON_START &&
|
|
||||||
input.type != IET_RELEASE &&
|
|
||||||
OPTIONS_MENU_AVAILABLE.GetValue() )
|
|
||||||
{
|
|
||||||
if( m_bGoToOptions )
|
|
||||||
return; /* got it already */
|
|
||||||
if( !m_bAllowOptionsMenu )
|
|
||||||
return; /* not allowed */
|
|
||||||
|
|
||||||
if( !m_bAllowOptionsMenuRepeat && input.type == IET_REPEAT )
|
|
||||||
{
|
|
||||||
return; /* not allowed yet */
|
|
||||||
}
|
|
||||||
|
|
||||||
m_bGoToOptions = true;
|
|
||||||
m_soundStart.Play();
|
|
||||||
this->PlayCommand( "ShowEnteringOptions" );
|
|
||||||
|
|
||||||
// Re-queue SM_BeginFadingOut, since ShowEnteringOptions may have
|
|
||||||
// short-circuited animations.
|
|
||||||
this->ClearMessageQueue( SM_BeginFadingOut );
|
|
||||||
this->PostScreenMessage( SM_BeginFadingOut, this->GetTweenTimeLeft() );
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if( IsTransitioning() )
|
|
||||||
return; // ignore
|
|
||||||
|
|
||||||
if( m_SelectionState == SelectionState_Finalized )
|
|
||||||
return; // ignore
|
|
||||||
|
|
||||||
UpdateSelectButton();
|
UpdateSelectButton();
|
||||||
|
|
||||||
if( input.MenuI == MENU_BUTTON_SELECT )
|
if( input.MenuI == MENU_BUTTON_SELECT )
|
||||||
@@ -419,17 +422,17 @@ void ScreenSelectMusic::Input( const InputEventPlus &input )
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( SELECT_MENU_AVAILABLE && INPUTMAPPER->IsBeingPressed( MENU_BUTTON_SELECT, pn ) )
|
if( SELECT_MENU_AVAILABLE && INPUTMAPPER->IsBeingPressed( MENU_BUTTON_SELECT, input.pn ) )
|
||||||
{
|
{
|
||||||
if( input.type == IET_FIRST_PRESS )
|
if( input.type == IET_FIRST_PRESS )
|
||||||
{
|
{
|
||||||
switch( input.MenuI )
|
switch( input.MenuI )
|
||||||
{
|
{
|
||||||
case MENU_BUTTON_LEFT:
|
case MENU_BUTTON_LEFT:
|
||||||
ChangeDifficulty( pn, -1 );
|
ChangeDifficulty( input.pn, -1 );
|
||||||
return;
|
return;
|
||||||
case MENU_BUTTON_RIGHT:
|
case MENU_BUTTON_RIGHT:
|
||||||
ChangeDifficulty( pn, +1 );
|
ChangeDifficulty( input.pn, +1 );
|
||||||
return;
|
return;
|
||||||
case MENU_BUTTON_START:
|
case MENU_BUTTON_START:
|
||||||
if( MODE_MENU_AVAILABLE )
|
if( MODE_MENU_AVAILABLE )
|
||||||
@@ -799,6 +802,29 @@ void ScreenSelectMusic::MenuStart( const InputEventPlus &input )
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case SelectionState_SelectingSteps:
|
case SelectionState_SelectingSteps:
|
||||||
|
{
|
||||||
|
PlayerNumber pn = input.pn;
|
||||||
|
bool bInitiatedByMenuTimer = pn == PLAYER_INVALID;
|
||||||
|
bool bAllOtherHumanPlayersDone = true;
|
||||||
|
FOREACH_HumanPlayer( p )
|
||||||
|
{
|
||||||
|
if( p == pn )
|
||||||
|
continue;
|
||||||
|
bAllOtherHumanPlayersDone &= m_bStepsSelected[p];
|
||||||
|
}
|
||||||
|
|
||||||
|
bool bAllPlayersDoneSelectingSteps = bInitiatedByMenuTimer || bAllOtherHumanPlayersDone;
|
||||||
|
if( !bAllPlayersDoneSelectingSteps )
|
||||||
|
{
|
||||||
|
m_bStepsSelected[pn] = true;
|
||||||
|
m_soundStart.Play();
|
||||||
|
|
||||||
|
Message msg("StepsSelected");
|
||||||
|
msg.SetParam( "Player", pn );
|
||||||
|
MESSAGEMAN->Broadcast( msg );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -808,6 +834,22 @@ void ScreenSelectMusic::MenuStart( const InputEventPlus &input )
|
|||||||
|
|
||||||
if( m_SelectionState == SelectionState_Finalized )
|
if( m_SelectionState == SelectionState_Finalized )
|
||||||
{
|
{
|
||||||
|
m_MenuTimer->Stop();
|
||||||
|
|
||||||
|
|
||||||
|
FOREACH_HumanPlayer( p )
|
||||||
|
{
|
||||||
|
if( !m_bStepsSelected[p] )
|
||||||
|
{
|
||||||
|
m_bStepsSelected[p] = true;
|
||||||
|
m_soundStart.Play();
|
||||||
|
|
||||||
|
Message msg("StepsSelected");
|
||||||
|
msg.SetParam( "Player", p );
|
||||||
|
MESSAGEMAN->Broadcast( msg );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if( CommonMetrics::AUTO_SET_STYLE )
|
if( CommonMetrics::AUTO_SET_STYLE )
|
||||||
{
|
{
|
||||||
/* Now that Steps have been chosen, set a Style that can play them. */
|
/* Now that Steps have been chosen, set a Style that can play them. */
|
||||||
|
|||||||
@@ -111,6 +111,7 @@ protected:
|
|||||||
void CloseOptionsList( PlayerNumber pn );
|
void CloseOptionsList( PlayerNumber pn );
|
||||||
|
|
||||||
SelectionState m_SelectionState;
|
SelectionState m_SelectionState;
|
||||||
|
bool m_bStepsSelected[NUM_PLAYERS]; // only used in SelectionState_SelectingSteps
|
||||||
bool m_bGoToOptions;
|
bool m_bGoToOptions;
|
||||||
RString m_sSampleMusicToPlay;
|
RString m_sSampleMusicToPlay;
|
||||||
TimingData *m_pSampleMusicTimingData;
|
TimingData *m_pSampleMusicTimingData;
|
||||||
|
|||||||
Reference in New Issue
Block a user