diff --git a/stepmania/src/Inventory.cpp b/stepmania/src/Inventory.cpp index 4179a8e943..ab08a261aa 100644 --- a/stepmania/src/Inventory.cpp +++ b/stepmania/src/Inventory.cpp @@ -192,7 +192,7 @@ void Inventory::UseItem( int iSlot ) pInventory[iSlot].MakeBlank(); m_vpSoundUseItem[a.level]->Play(); - GAMESTATE->LaunchAttack( pnToAttack, a ); + GAMESTATE->LaunchAttack( (MultiPlayer)pnToAttack, a ); float fPercentHealthToDrain = (a.level+1) / 10.f; ASSERT( fPercentHealthToDrain > 0 ); diff --git a/stepmania/src/PlayerNumber.cpp b/stepmania/src/PlayerNumber.cpp index c4c527ed65..99702ca4be 100644 --- a/stepmania/src/PlayerNumber.cpp +++ b/stepmania/src/PlayerNumber.cpp @@ -5,6 +5,25 @@ #include "CommonMetrics.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 ) { @@ -46,6 +65,17 @@ PlayerNumber GetNextPotentialCpuPlayer( PlayerNumber pn ) return PLAYER_INVALID; } +MultiPlayer GetNextEnabledMultiPlayer( MultiPlayer mp ) +{ + for( MultiPlayer p=(MultiPlayer)(mp+1); pIsMultiPlayerEnabled(p) ) + return p; + } + return MultiPlayer_INVALID; +} + + void LuaPlayerNumber(lua_State* L) { FOREACH_PlayerNumber( pn ) diff --git a/stepmania/src/PlayerNumber.h b/stepmania/src/PlayerNumber.h index 9822bfe35d..34466ddd08 100644 --- a/stepmania/src/PlayerNumber.h +++ b/stepmania/src/PlayerNumber.h @@ -16,6 +16,8 @@ enum PlayerNumber { NUM_PLAYERS, // leave this at the end PLAYER_INVALID }; +const CString& PlayerNumberToString( PlayerNumber 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_EnabledPlayer( pn ) for( PlayerNumber pn=GetNextEnabledPlayer((PlayerNumber)-1); pn!=PLAYER_INVALID; pn=GetNextEnabledPlayer(pn) ) @@ -40,10 +42,15 @@ enum MultiPlayer { MultiPlayer_7, MultiPlayer_8, 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_EnabledMultiPlayer( mp ) for( MultiPlayer mp=GetNextEnabledMultiPlayer((MultiPlayer)-1); mp!=MultiPlayer_INVALID; mp=GetNextEnabledMultiPlayer(mp) ) + +MultiPlayer GetNextEnabledMultiPlayer( MultiPlayer mp ); #endif diff --git a/stepmania/src/ScoreKeeperRave.cpp b/stepmania/src/ScoreKeeperRave.cpp index 30a76c1ed8..cab742b8f1 100644 --- a/stepmania/src/ScoreKeeperRave.cpp +++ b/stepmania/src/ScoreKeeperRave.cpp @@ -150,7 +150,7 @@ void ScoreKeeperRave::LaunchAttack( AttackLevel al ) GAMESTATE->RemoveActiveAttacksForPlayer( pnToAttack ); // apply new attack - GAMESTATE->LaunchAttack( pnToAttack, a ); + GAMESTATE->LaunchAttack( (MultiPlayer)pnToAttack, a ); // SCREENMAN->SystemMessage( ssprintf( "attacking %d with %s", pnToAttack, sAttackToGive.c_str() ) ); } diff --git a/stepmania/src/ScreenDebugOverlay.cpp b/stepmania/src/ScreenDebugOverlay.cpp index b01ba04d3f..d116d82510 100644 --- a/stepmania/src/ScreenDebugOverlay.cpp +++ b/stepmania/src/ScreenDebugOverlay.cpp @@ -358,8 +358,10 @@ class DebugLineAutoplay : public IDebugLine PlayerController pc = (PlayerController)(PREFSMAN->m_AutoPlay+1); wrap( (int&)pc, NUM_PLAYER_CONTROLLERS ); PREFSMAN->m_AutoPlay.Set( pc ); - FOREACH_HumanPlayer(pn) - GAMESTATE->m_pPlayerState[pn]->m_PlayerController = PREFSMAN->m_AutoPlay; + FOREACH_HumanPlayer(p) + GAMESTATE->m_pPlayerState[p]->m_PlayerController = PREFSMAN->m_AutoPlay; + FOREACH_MultiPlayer(p) + GAMESTATE->m_pMultiPlayerState[p]->m_PlayerController = PREFSMAN->m_AutoPlay; IDebugLine::Do( sMessageOut ); } }; diff --git a/stepmania/src/ScreenEdit.cpp b/stepmania/src/ScreenEdit.cpp index b76194ebbd..7459f8c610 100644 --- a/stepmania/src/ScreenEdit.cpp +++ b/stepmania/src/ScreenEdit.cpp @@ -3052,7 +3052,7 @@ void ScreenEdit::SetupCourseAttacks() } for( unsigned i=0; iLaunchAttack( PLAYER_1, Attacks[i] ); + GAMESTATE->LaunchAttack( (MultiPlayer)PLAYER_1, Attacks[i] ); } GAMESTATE->m_pPlayerState[PLAYER_1]->RebuildPlayerOptionsFromActiveAttacks(); }