fix ScreenSelectCharacter timer
This commit is contained in:
@@ -200,17 +200,14 @@ void ScreenSelectCharacter::HandleScreenMessage( const ScreenMessage SM )
|
||||
{
|
||||
case SM_BeginFadingOut:
|
||||
StartTransitioning( SM_GoToNextScreen );
|
||||
break;
|
||||
return;
|
||||
case SM_MenuTimer:
|
||||
MenuStart(PLAYER_1);
|
||||
break;
|
||||
case SM_GoToPrevScreen:
|
||||
SCREENMAN->SetNewScreen( PREV_SCREEN );
|
||||
break;
|
||||
case SM_GoToNextScreen:
|
||||
SCREENMAN->SetNewScreen( NEXT_SCREEN );
|
||||
break;
|
||||
if( !AllAreFinishedChoosing() )
|
||||
ResetTimer();
|
||||
return;
|
||||
}
|
||||
Screen::HandleScreenMessage( SM );
|
||||
}
|
||||
|
||||
PlayerNumber ScreenSelectCharacter::GetAffectedPlayerNumber( PlayerNumber pn )
|
||||
@@ -336,6 +333,14 @@ void ScreenSelectCharacter::Move( PlayerNumber pn, int deltaValue )
|
||||
}
|
||||
}
|
||||
|
||||
bool ScreenSelectCharacter::AllAreFinishedChoosing() const
|
||||
{
|
||||
FOREACH_HumanPlayer( p )
|
||||
if( m_SelectionRow[p] != FINISHED_CHOOSING )
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
void ScreenSelectCharacter::MenuStart( PlayerNumber pn )
|
||||
{
|
||||
if( m_SelectionRow[pn] == FINISHED_CHOOSING )
|
||||
@@ -357,12 +362,7 @@ void ScreenSelectCharacter::MenuStart( PlayerNumber pn )
|
||||
AfterValueChange(pn);
|
||||
SCREENMAN->PlayStartSound();
|
||||
|
||||
bool bAllAreFinished = true;
|
||||
for( int p=0; p<NUM_PLAYERS; p++ )
|
||||
if( GAMESTATE->IsHumanPlayer(p) )
|
||||
bAllAreFinished &= (m_SelectionRow[p] == FINISHED_CHOOSING);
|
||||
|
||||
if( bAllAreFinished )
|
||||
if( AllAreFinishedChoosing() )
|
||||
{
|
||||
for( int p=0; p<NUM_PLAYERS; p++ )
|
||||
{
|
||||
|
||||
@@ -48,6 +48,7 @@ private:
|
||||
void AfterRowChange( PlayerNumber pn );
|
||||
void AfterValueChange( PlayerNumber pn );
|
||||
void Move( PlayerNumber pn, int deltaValue );
|
||||
bool AllAreFinishedChoosing() const;
|
||||
|
||||
int m_iSelectedCharacter[NUM_PLAYERS];
|
||||
enum {
|
||||
|
||||
@@ -76,10 +76,7 @@ ScreenWithMenuElements::ScreenWithMenuElements( CString sClassName ) : Screen( s
|
||||
m_MenuTimer->SetName( "Timer" );
|
||||
UtilSetXY( m_MenuTimer, m_sName );
|
||||
UtilOnCommand( m_MenuTimer, m_sName );
|
||||
if( TIMER_SECONDS > 0 && PREFSMAN->m_bMenuTimer && !GAMESTATE->m_bEditing )
|
||||
m_MenuTimer->SetSeconds( TIMER_SECONDS );
|
||||
else
|
||||
m_MenuTimer->Disable();
|
||||
ResetTimer();
|
||||
this->AddChild( m_MenuTimer );
|
||||
}
|
||||
|
||||
@@ -120,6 +117,17 @@ ScreenWithMenuElements::~ScreenWithMenuElements()
|
||||
SAFE_DELETE( m_textHelp );
|
||||
}
|
||||
|
||||
void ScreenWithMenuElements::ResetTimer()
|
||||
{
|
||||
if( TIMER_SECONDS > 0 && PREFSMAN->m_bMenuTimer && !GAMESTATE->m_bEditing )
|
||||
{
|
||||
m_MenuTimer->SetSeconds( TIMER_SECONDS );
|
||||
m_MenuTimer->Start();
|
||||
}
|
||||
else
|
||||
m_MenuTimer->Disable();
|
||||
}
|
||||
|
||||
void ScreenWithMenuElements::StartTransitioning( ScreenMessage smSendWhenDone )
|
||||
{
|
||||
if( m_bTimerEnabled )
|
||||
|
||||
@@ -34,6 +34,7 @@ public:
|
||||
bool m_bTimerEnabled;
|
||||
|
||||
void StopTimer();
|
||||
void ResetTimer();
|
||||
|
||||
protected:
|
||||
BGAnimation m_Background;
|
||||
|
||||
Reference in New Issue
Block a user