add PlayerStates for MultiPlayers

This commit is contained in:
Chris Danford
2005-08-23 21:07:07 +00:00
parent 6fa9407891
commit 0c57983d0e
6 changed files with 45 additions and 6 deletions
+1 -1
View File
@@ -192,7 +192,7 @@ void Inventory::UseItem( int iSlot )
pInventory[iSlot].MakeBlank(); pInventory[iSlot].MakeBlank();
m_vpSoundUseItem[a.level]->Play(); m_vpSoundUseItem[a.level]->Play();
GAMESTATE->LaunchAttack( pnToAttack, a ); GAMESTATE->LaunchAttack( (MultiPlayer)pnToAttack, a );
float fPercentHealthToDrain = (a.level+1) / 10.f; float fPercentHealthToDrain = (a.level+1) / 10.f;
ASSERT( fPercentHealthToDrain > 0 ); ASSERT( fPercentHealthToDrain > 0 );
+30
View File
@@ -5,6 +5,25 @@
#include "CommonMetrics.h" #include "CommonMetrics.h"
#include "LuaManager.h" #include "LuaManager.h"
static const CString PlayerNumberNames[] = {
"P1",
"P2",
};
XToString( PlayerNumber, NUM_PLAYERS );
static const CString MultiPlayerNames[] = {
"P1",
"P2",
"P3",
"P4",
"P5",
"P6",
"P7",
"P8",
};
XToString( MultiPlayer, NUM_MultiPlayer );
PlayerNumber GetNextHumanPlayer( PlayerNumber pn ) PlayerNumber GetNextHumanPlayer( PlayerNumber pn )
{ {
@@ -46,6 +65,17 @@ PlayerNumber GetNextPotentialCpuPlayer( PlayerNumber pn )
return PLAYER_INVALID; return PLAYER_INVALID;
} }
MultiPlayer GetNextEnabledMultiPlayer( MultiPlayer mp )
{
for( MultiPlayer p=(MultiPlayer)(mp+1); p<NUM_MultiPlayer; ((int&)p)++ )
{
if( GAMESTATE->IsMultiPlayerEnabled(p) )
return p;
}
return MultiPlayer_INVALID;
}
void LuaPlayerNumber(lua_State* L) void LuaPlayerNumber(lua_State* L)
{ {
FOREACH_PlayerNumber( pn ) FOREACH_PlayerNumber( pn )
+8 -1
View File
@@ -16,6 +16,8 @@ enum PlayerNumber {
NUM_PLAYERS, // leave this at the end NUM_PLAYERS, // leave this at the end
PLAYER_INVALID PLAYER_INVALID
}; };
const CString& PlayerNumberToString( PlayerNumber pn );
#define FOREACH_PlayerNumber( pn ) FOREACH_ENUM( PlayerNumber, NUM_PLAYERS, pn ) #define FOREACH_PlayerNumber( pn ) FOREACH_ENUM( PlayerNumber, NUM_PLAYERS, pn )
#define FOREACH_HumanPlayer( pn ) for( PlayerNumber pn=GetNextHumanPlayer((PlayerNumber)-1); pn!=PLAYER_INVALID; pn=GetNextHumanPlayer(pn) ) #define FOREACH_HumanPlayer( pn ) for( PlayerNumber pn=GetNextHumanPlayer((PlayerNumber)-1); pn!=PLAYER_INVALID; pn=GetNextHumanPlayer(pn) )
#define FOREACH_EnabledPlayer( pn ) for( PlayerNumber pn=GetNextEnabledPlayer((PlayerNumber)-1); pn!=PLAYER_INVALID; pn=GetNextEnabledPlayer(pn) ) #define FOREACH_EnabledPlayer( pn ) for( PlayerNumber pn=GetNextEnabledPlayer((PlayerNumber)-1); pn!=PLAYER_INVALID; pn=GetNextEnabledPlayer(pn) )
@@ -40,10 +42,15 @@ enum MultiPlayer {
MultiPlayer_7, MultiPlayer_7,
MultiPlayer_8, MultiPlayer_8,
NUM_MultiPlayer, // leave this at the end NUM_MultiPlayer, // leave this at the end
MultiPlayer_Invalid MultiPlayer_INVALID
}; };
const CString& MultiPlayerToString( MultiPlayer mp );
#define FOREACH_MultiPlayer( pn ) FOREACH_ENUM( MultiPlayer, NUM_MultiPlayer, pn ) #define FOREACH_MultiPlayer( pn ) FOREACH_ENUM( MultiPlayer, NUM_MultiPlayer, pn )
#define FOREACH_EnabledMultiPlayer( mp ) for( MultiPlayer mp=GetNextEnabledMultiPlayer((MultiPlayer)-1); mp!=MultiPlayer_INVALID; mp=GetNextEnabledMultiPlayer(mp) )
MultiPlayer GetNextEnabledMultiPlayer( MultiPlayer mp );
#endif #endif
+1 -1
View File
@@ -150,7 +150,7 @@ void ScoreKeeperRave::LaunchAttack( AttackLevel al )
GAMESTATE->RemoveActiveAttacksForPlayer( pnToAttack ); GAMESTATE->RemoveActiveAttacksForPlayer( pnToAttack );
// apply new attack // apply new attack
GAMESTATE->LaunchAttack( pnToAttack, a ); GAMESTATE->LaunchAttack( (MultiPlayer)pnToAttack, a );
// SCREENMAN->SystemMessage( ssprintf( "attacking %d with %s", pnToAttack, sAttackToGive.c_str() ) ); // SCREENMAN->SystemMessage( ssprintf( "attacking %d with %s", pnToAttack, sAttackToGive.c_str() ) );
} }
+4 -2
View File
@@ -358,8 +358,10 @@ class DebugLineAutoplay : public IDebugLine
PlayerController pc = (PlayerController)(PREFSMAN->m_AutoPlay+1); PlayerController pc = (PlayerController)(PREFSMAN->m_AutoPlay+1);
wrap( (int&)pc, NUM_PLAYER_CONTROLLERS ); wrap( (int&)pc, NUM_PLAYER_CONTROLLERS );
PREFSMAN->m_AutoPlay.Set( pc ); PREFSMAN->m_AutoPlay.Set( pc );
FOREACH_HumanPlayer(pn) FOREACH_HumanPlayer(p)
GAMESTATE->m_pPlayerState[pn]->m_PlayerController = PREFSMAN->m_AutoPlay; GAMESTATE->m_pPlayerState[p]->m_PlayerController = PREFSMAN->m_AutoPlay;
FOREACH_MultiPlayer(p)
GAMESTATE->m_pMultiPlayerState[p]->m_PlayerController = PREFSMAN->m_AutoPlay;
IDebugLine::Do( sMessageOut ); IDebugLine::Do( sMessageOut );
} }
}; };
+1 -1
View File
@@ -3052,7 +3052,7 @@ void ScreenEdit::SetupCourseAttacks()
} }
for( unsigned i=0; i<Attacks.size(); ++i ) for( unsigned i=0; i<Attacks.size(); ++i )
GAMESTATE->LaunchAttack( PLAYER_1, Attacks[i] ); GAMESTATE->LaunchAttack( (MultiPlayer)PLAYER_1, Attacks[i] );
} }
GAMESTATE->m_pPlayerState[PLAYER_1]->RebuildPlayerOptionsFromActiveAttacks(); GAMESTATE->m_pPlayerState[PLAYER_1]->RebuildPlayerOptionsFromActiveAttacks();
} }