add PlayerStates for MultiPlayers
This commit is contained in:
@@ -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 );
|
||||||
|
|||||||
@@ -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 )
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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() ) );
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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 );
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -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();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user