Screen::JoinInput -> GameState::JoinInput

This commit is contained in:
Glenn Maynard
2006-11-21 19:57:58 +00:00
parent d591926ff7
commit 7ef6009567
5 changed files with 25 additions and 26 deletions
+23
View File
@@ -344,6 +344,29 @@ void GameState::JoinPlayer( PlayerNumber pn )
BeginGame();
}
/* Handle an input that can join a player. Return true if the player joined. */
bool GameState::JoinInput( PlayerNumber pn )
{
if( !PlayersCanJoin() )
return false;
/* If this side is already in, don't re-join. */
if( m_bSideIsJoined[pn] )
return false;
/* subtract coins */
int iCoinsNeededToJoin = GetCoinsNeededToJoin();
if( m_iCoins < iCoinsNeededToJoin )
return false; // not enough coins
m_iCoins -= iCoinsNeededToJoin;
JoinPlayer( pn );
return true;
}
int GameState::GetCoinsNeededToJoin() const
{
int iCoinsToCharge = 0;
+1
View File
@@ -42,6 +42,7 @@ public:
void ApplyGameCommand( const RString &sCommand, PlayerNumber pn=PLAYER_INVALID );
void BeginGame(); // called when first player joins
void JoinPlayer( PlayerNumber pn );
bool JoinInput( PlayerNumber pn );
void PlayersFinalized(); // called after a style is chosen, which means the number of players is finalized
void EndGame(); // called on ScreenGameOver, ScreenMusicScroll, ScreenCredits
void SaveCurrentSettingsToProfile( PlayerNumber pn ); // called at the beginning of each stage
-23
View File
@@ -219,29 +219,6 @@ RString Screen::GetPrevScreen() const
return PREV_SCREEN;
}
bool Screen::JoinInput( PlayerNumber pn )
{
if( !GAMESTATE->PlayersCanJoin() )
return false;
/* If this side is already in, don't re-join (and re-pay!). */
if(GAMESTATE->m_bSideIsJoined[pn])
return false;
/* subtract coins */
int iCoinsNeededToJoin = GAMESTATE->GetCoinsNeededToJoin();
if( GAMESTATE->m_iCoins < iCoinsNeededToJoin )
return false; // not enough coins
GAMESTATE->m_iCoins -= iCoinsNeededToJoin;
GAMESTATE->JoinPlayer( pn );
return true;
}
void Screen::PostScreenMessage( const ScreenMessage SM, float fDelay )
{
ASSERT( fDelay >= 0.0 );
-2
View File
@@ -56,8 +56,6 @@ public:
virtual ScreenType GetScreenType() const { return ALLOW_OPERATOR_MENU_BUTTON ? game_menu : system_menu; }
bool AllowOperatorMenuButton() const { return ALLOW_OPERATOR_MENU_BUTTON; }
static bool JoinInput( PlayerNumber pn ); // return true if player joined
//
// Lua
//
+1 -1
View File
@@ -142,7 +142,7 @@ void ScreenSelect::Input( const InputEventPlus &input )
if( input.MenuI == MENU_BUTTON_COIN && input.type == IET_FIRST_PRESS )
this->UpdateSelectableChoices();
if( input.MenuI == MENU_BUTTON_START && input.type == IET_FIRST_PRESS && JoinInput(input.pn) )
if( input.MenuI == MENU_BUTTON_START && input.type == IET_FIRST_PRESS && GAMESTATE->JoinInput(input.pn) )
{
// HACK: Only play start sound for the 2nd player who joins. The
// start sound for the 1st player will be played by ScreenTitleMenu