don't instantiate Combo and Judgments if Player isn't visible
short circuit drawing parts in Player::Update if not visible
This commit is contained in:
+47
-28
@@ -142,7 +142,7 @@ float Player::GetWindowSeconds( TimingWindow tw )
|
|||||||
return fSecs;
|
return fSecs;
|
||||||
}
|
}
|
||||||
|
|
||||||
Player::Player( NoteData &nd, bool bShowNoteField ) : m_NoteData(nd)
|
Player::Player( NoteData &nd, bool bVisible ) : m_NoteData(nd)
|
||||||
{
|
{
|
||||||
m_bLoaded = false;
|
m_bLoaded = false;
|
||||||
|
|
||||||
@@ -161,7 +161,7 @@ Player::Player( NoteData &nd, bool bShowNoteField ) : m_NoteData(nd)
|
|||||||
m_bPaused = false;
|
m_bPaused = false;
|
||||||
|
|
||||||
m_pAttackDisplay = NULL;
|
m_pAttackDisplay = NULL;
|
||||||
if( bShowNoteField )
|
if( bVisible )
|
||||||
{
|
{
|
||||||
m_pAttackDisplay = new AttackDisplay;
|
m_pAttackDisplay = new AttackDisplay;
|
||||||
this->AddChild( m_pAttackDisplay );
|
this->AddChild( m_pAttackDisplay );
|
||||||
@@ -170,20 +170,22 @@ Player::Player( NoteData &nd, bool bShowNoteField ) : m_NoteData(nd)
|
|||||||
PlayerAI::InitFromDisk();
|
PlayerAI::InitFromDisk();
|
||||||
|
|
||||||
m_pNoteField = NULL;
|
m_pNoteField = NULL;
|
||||||
if( bShowNoteField )
|
if( bVisible )
|
||||||
{
|
{
|
||||||
m_pNoteField = new NoteField;
|
m_pNoteField = new NoteField;
|
||||||
m_pNoteField->SetName( "NoteField" );
|
m_pNoteField->SetName( "NoteField" );
|
||||||
}
|
}
|
||||||
m_pJudgedRows = new JudgedRows;
|
m_pJudgedRows = new JudgedRows;
|
||||||
|
|
||||||
|
this->SetVisible( bVisible );
|
||||||
}
|
}
|
||||||
|
|
||||||
Player::~Player()
|
Player::~Player()
|
||||||
{
|
{
|
||||||
SAFE_DELETE( m_pAttackDisplay );
|
SAFE_DELETE( m_pAttackDisplay );
|
||||||
SAFE_DELETE( m_pNoteField );
|
SAFE_DELETE( m_pNoteField );
|
||||||
for( unsigned i = 0; i < m_vHoldJudgment.size(); ++i )
|
for( unsigned i = 0; i < m_vpHoldJudgment.size(); ++i )
|
||||||
SAFE_DELETE( m_vHoldJudgment[i] );
|
SAFE_DELETE( m_vpHoldJudgment[i] );
|
||||||
SAFE_DELETE( m_pJudgedRows );
|
SAFE_DELETE( m_pJudgedRows );
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -326,28 +328,37 @@ void Player::Init(
|
|||||||
m_soundAttackLaunch.SetProperty( "Pan", fBalance );
|
m_soundAttackLaunch.SetProperty( "Pan", fBalance );
|
||||||
m_soundAttackEnding.SetProperty( "Pan", fBalance );
|
m_soundAttackEnding.SetProperty( "Pan", fBalance );
|
||||||
|
|
||||||
|
|
||||||
|
if( this->GetVisible() )
|
||||||
{
|
{
|
||||||
LuaThreadVariable var( "Player", LuaReference::Create(m_pPlayerState->m_PlayerNumber) );
|
LuaThreadVariable var( "Player", LuaReference::Create(m_pPlayerState->m_PlayerNumber) );
|
||||||
LuaThreadVariable var2( "MultiPlayer", LuaReference::Create(m_pPlayerState->m_mp) );
|
LuaThreadVariable var2( "MultiPlayer", LuaReference::Create(m_pPlayerState->m_mp) );
|
||||||
|
|
||||||
m_Combo.Load( THEME->GetPathG(sType,"combo") );
|
m_sprCombo.Load( THEME->GetPathG(sType,"combo") );
|
||||||
m_Combo->SetName( "Combo" );
|
m_sprCombo->SetName( "Combo" );
|
||||||
m_pActorWithComboPosition = &*m_Combo;
|
m_pActorWithComboPosition = &*m_sprCombo;
|
||||||
this->AddChild( m_Combo );
|
this->AddChild( m_sprCombo );
|
||||||
|
|
||||||
m_pJudgment.Load( THEME->GetPathG(sType,"judgment") );
|
m_sprJudgment.Load( THEME->GetPathG(sType,"judgment") );
|
||||||
m_pJudgment->SetName( "Judgment" );
|
m_sprJudgment->SetName( "Judgment" );
|
||||||
m_pActorWithJudgmentPosition = &*m_pJudgment;
|
m_pActorWithJudgmentPosition = &*m_sprJudgment;
|
||||||
this->AddChild( m_pJudgment );
|
this->AddChild( m_sprJudgment );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Load HoldJudgments
|
// Load HoldJudgments
|
||||||
|
m_vpHoldJudgment.resize( GAMESTATE->GetCurrentStyle()->m_iColsPerPlayer );
|
||||||
|
for( int i = 0; i < GAMESTATE->GetCurrentStyle()->m_iColsPerPlayer; ++i )
|
||||||
|
m_vpHoldJudgment[i] = NULL;
|
||||||
|
|
||||||
|
if( this->GetVisible() )
|
||||||
|
{
|
||||||
for( int i = 0; i < GAMESTATE->GetCurrentStyle()->m_iColsPerPlayer; ++i )
|
for( int i = 0; i < GAMESTATE->GetCurrentStyle()->m_iColsPerPlayer; ++i )
|
||||||
{
|
{
|
||||||
HoldJudgment *pJudgment = new HoldJudgment;
|
HoldJudgment *pJudgment = new HoldJudgment;
|
||||||
pJudgment->Load( THEME->GetPathG("HoldJudgment","label 1x2") );
|
pJudgment->Load( THEME->GetPathG("HoldJudgment","label 1x2") );
|
||||||
m_vHoldJudgment.push_back( pJudgment );
|
m_vpHoldJudgment[i] = pJudgment;
|
||||||
this->AddChild( m_vHoldJudgment[i] );
|
this->AddChild( m_vpHoldJudgment[i] );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m_fNoteFieldHeight = GRAY_ARROWS_Y_REVERSE-GRAY_ARROWS_Y_STANDARD;
|
m_fNoteFieldHeight = GRAY_ARROWS_Y_REVERSE-GRAY_ARROWS_Y_STANDARD;
|
||||||
@@ -384,7 +395,8 @@ void Player::Load()
|
|||||||
/* The editor reuses Players ... so we really need to make sure everything
|
/* The editor reuses Players ... so we really need to make sure everything
|
||||||
* is reset and not tweening. Perhaps ActorFrame should recurse to subactors;
|
* is reset and not tweening. Perhaps ActorFrame should recurse to subactors;
|
||||||
* then we could just this->StopTweening()? -glenn */
|
* then we could just this->StopTweening()? -glenn */
|
||||||
m_pJudgment->PlayCommand("Reset");
|
if( m_sprJudgment )
|
||||||
|
m_sprJudgment->PlayCommand("Reset");
|
||||||
if( m_pPlayerStageStats )
|
if( m_pPlayerStageStats )
|
||||||
{
|
{
|
||||||
SetCombo( m_pPlayerStageStats->m_iCurCombo, m_pPlayerStageStats->m_iCurMissCombo ); // combo can persist between songs and games
|
SetCombo( m_pPlayerStageStats->m_iCurCombo, m_pPlayerStageStats->m_iCurMissCombo ); // combo can persist between songs and games
|
||||||
@@ -519,15 +531,17 @@ void Player::Update( float fDeltaTime )
|
|||||||
|
|
||||||
ActorFrame::Update( fDeltaTime );
|
ActorFrame::Update( fDeltaTime );
|
||||||
|
|
||||||
|
const float fSongBeat = GAMESTATE->m_fSongBeat;
|
||||||
|
const int iSongRow = BeatToNoteRow( fSongBeat );
|
||||||
|
|
||||||
|
if( this->GetVisible() )
|
||||||
|
{
|
||||||
if( m_pPlayerState->m_bAttackBeganThisUpdate )
|
if( m_pPlayerState->m_bAttackBeganThisUpdate )
|
||||||
m_soundAttackLaunch.Play();
|
m_soundAttackLaunch.Play();
|
||||||
if( m_pPlayerState->m_bAttackEndedThisUpdate )
|
if( m_pPlayerState->m_bAttackEndedThisUpdate )
|
||||||
m_soundAttackEnding.Play();
|
m_soundAttackEnding.Play();
|
||||||
|
|
||||||
|
|
||||||
const float fSongBeat = GAMESTATE->m_fSongBeat;
|
|
||||||
const int iSongRow = BeatToNoteRow( fSongBeat );
|
|
||||||
|
|
||||||
if( m_pNoteField )
|
if( m_pNoteField )
|
||||||
m_pNoteField->Update( fDeltaTime );
|
m_pNoteField->Update( fDeltaTime );
|
||||||
|
|
||||||
@@ -548,10 +562,10 @@ void Player::Update( float fDeltaTime )
|
|||||||
const float fX = ArrowEffects::GetXPos( m_pPlayerState, c, 0 );
|
const float fX = ArrowEffects::GetXPos( m_pPlayerState, c, 0 );
|
||||||
const float fZ = ArrowEffects::GetZPos( m_pPlayerState, c, 0 );
|
const float fZ = ArrowEffects::GetZPos( m_pPlayerState, c, 0 );
|
||||||
|
|
||||||
m_vHoldJudgment[c]->SetX( fX );
|
m_vpHoldJudgment[c]->SetX( fX );
|
||||||
m_vHoldJudgment[c]->SetY( fHoldJudgeYPos );
|
m_vpHoldJudgment[c]->SetY( fHoldJudgeYPos );
|
||||||
m_vHoldJudgment[c]->SetZ( fZ );
|
m_vpHoldJudgment[c]->SetZ( fZ );
|
||||||
m_vHoldJudgment[c]->SetZoom( fJudgmentZoom );
|
m_vpHoldJudgment[c]->SetZoom( fJudgmentZoom );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -583,6 +597,7 @@ void Player::Update( float fDeltaTime )
|
|||||||
m_pActorWithJudgmentPosition->SetZoom( m_pActorWithJudgmentPosition->GetZoom() * fJudgmentZoom );
|
m_pActorWithJudgmentPosition->SetZoom( m_pActorWithJudgmentPosition->GetZoom() * fJudgmentZoom );
|
||||||
if( m_pActorWithComboPosition != NULL )
|
if( m_pActorWithComboPosition != NULL )
|
||||||
m_pActorWithComboPosition->SetZoom( m_pActorWithComboPosition->GetZoom() * fJudgmentZoom );
|
m_pActorWithComboPosition->SetZoom( m_pActorWithComboPosition->GetZoom() * fJudgmentZoom );
|
||||||
|
}
|
||||||
|
|
||||||
// If we're paused, don't update tap or hold note logic, so hold notes can be released
|
// If we're paused, don't update tap or hold note logic, so hold notes can be released
|
||||||
// during pause.
|
// during pause.
|
||||||
@@ -1005,7 +1020,8 @@ void Player::DrawPrimitives()
|
|||||||
|
|
||||||
// Draw these below everything else.
|
// Draw these below everything else.
|
||||||
if( m_pPlayerState->m_PlayerOptions.GetCurrent().m_fBlind == 0 )
|
if( m_pPlayerState->m_PlayerOptions.GetCurrent().m_fBlind == 0 )
|
||||||
m_Combo->Draw();
|
if( m_sprCombo )
|
||||||
|
m_sprCombo->Draw();
|
||||||
|
|
||||||
if( m_pAttackDisplay )
|
if( m_pAttackDisplay )
|
||||||
m_pAttackDisplay->Draw();
|
m_pAttackDisplay->Draw();
|
||||||
@@ -1070,7 +1086,8 @@ void Player::DrawTapJudgments()
|
|||||||
if( m_pPlayerState->m_PlayerOptions.GetCurrent().m_fBlind > 0 )
|
if( m_pPlayerState->m_PlayerOptions.GetCurrent().m_fBlind > 0 )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
m_pJudgment->Draw();
|
if( m_sprJudgment )
|
||||||
|
m_sprJudgment->Draw();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Player::DrawHoldJudgments()
|
void Player::DrawHoldJudgments()
|
||||||
@@ -1079,7 +1096,8 @@ void Player::DrawHoldJudgments()
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
for( int c=0; c<m_NoteData.GetNumTracks(); c++ )
|
for( int c=0; c<m_NoteData.GetNumTracks(); c++ )
|
||||||
m_vHoldJudgment[c]->Draw();
|
if( m_vpHoldJudgment[c] )
|
||||||
|
m_vpHoldJudgment[c]->Draw();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -2624,8 +2642,9 @@ void Player::SetJudgment( TapNoteScore tns, float fTapNoteOffset )
|
|||||||
|
|
||||||
void Player::SetHoldJudgment( TapNoteScore tns, HoldNoteScore hns, int iTrack )
|
void Player::SetHoldJudgment( TapNoteScore tns, HoldNoteScore hns, int iTrack )
|
||||||
{
|
{
|
||||||
ASSERT( iTrack < (int)m_vHoldJudgment.size() );
|
ASSERT( iTrack < (int)m_vpHoldJudgment.size() );
|
||||||
m_vHoldJudgment[iTrack]->SetHoldJudgment( hns );
|
if( m_vpHoldJudgment[iTrack] )
|
||||||
|
m_vpHoldJudgment[iTrack]->SetHoldJudgment( hns );
|
||||||
|
|
||||||
Message msg("Judgment");
|
Message msg("Judgment");
|
||||||
msg.SetParam( "Player", m_pPlayerState->m_PlayerNumber );
|
msg.SetParam( "Player", m_pPlayerState->m_PlayerNumber );
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ class Player: public ActorFrame
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// The passed in NoteData isn't touched until Load() is called.
|
// The passed in NoteData isn't touched until Load() is called.
|
||||||
Player( NoteData &nd, bool bShowNoteField = true );
|
Player( NoteData &nd, bool bVisible = true );
|
||||||
~Player();
|
~Player();
|
||||||
|
|
||||||
virtual void Update( float fDeltaTime );
|
virtual void Update( float fDeltaTime );
|
||||||
@@ -149,10 +149,10 @@ protected:
|
|||||||
NoteData &m_NoteData;
|
NoteData &m_NoteData;
|
||||||
NoteField *m_pNoteField;
|
NoteField *m_pNoteField;
|
||||||
|
|
||||||
vector<HoldJudgment*> m_vHoldJudgment;
|
vector<HoldJudgment*> m_vpHoldJudgment;
|
||||||
|
|
||||||
AutoActor m_pJudgment;
|
AutoActor m_sprJudgment;
|
||||||
AutoActor m_Combo;
|
AutoActor m_sprCombo;
|
||||||
Actor *m_pActorWithJudgmentPosition;
|
Actor *m_pActorWithJudgmentPosition;
|
||||||
Actor *m_pActorWithComboPosition;
|
Actor *m_pActorWithComboPosition;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user