Move some player-specific data out of the bloated GameState class.

Have gameplay objects hold a PlayerState pointer instead of a PlayerNumber and indexing back into GameState.
This will simplify off-screen players (e.g. CPU ghosts, network replicated human players, >2 players using one NoteField)
This commit is contained in:
Chris Danford
2004-12-20 06:25:59 +00:00
parent 52545966e6
commit f840c014a9
70 changed files with 977 additions and 655 deletions
+8 -3
View File
@@ -7,6 +7,7 @@
#include "GameState.h"
#include "ThemeManager.h"
#include "ActorUtil.h"
#include "PlayerState.h"
ScoreDisplayRave::ScoreDisplayRave()
@@ -34,9 +35,11 @@ ScoreDisplayRave::ScoreDisplayRave()
this->AddChild( &m_textLevel );
}
void ScoreDisplayRave::Init( PlayerNumber pn )
void ScoreDisplayRave::Init( const PlayerState* pPlayerState )
{
ScoreDisplay::Init( pn );
ScoreDisplay::Init( pPlayerState );
PlayerNumber pn = pPlayerState->m_PlayerNumber;
m_sprFrameBase.Load( THEME->GetPathToG(ssprintf("ScoreDisplayRave frame base p%d",pn+1)) );
m_sprFrameOverlay.Load( THEME->GetPathToG(ssprintf("ScoreDisplayRave frame overlay p%d",pn+1)) );
@@ -55,7 +58,9 @@ void ScoreDisplayRave::Update( float fDelta )
{
ScoreDisplay::Update( fDelta );
float fLevel = GAMESTATE->m_fSuperMeter[m_PlayerNumber];
PlayerNumber pn = m_pPlayerState->m_PlayerNumber;
float fLevel = m_pPlayerState->m_fSuperMeter;
AttackLevel level = (AttackLevel)(int)fLevel;
if( level != m_lastLevelSeen )