fix ActiveAttackList doesn't show Attacks that started at the very beginning of a Course
This commit is contained in:
@@ -18,46 +18,50 @@ void ActiveAttackList::Init( PlayerNumber pn )
|
|||||||
|
|
||||||
void ActiveAttackList::Update( float fDelta )
|
void ActiveAttackList::Update( float fDelta )
|
||||||
{
|
{
|
||||||
BitmapText::Update( fDelta );
|
bool bTimeToRefresh =
|
||||||
|
IsFirstUpdate() || // check this before running Actor::Update()
|
||||||
bool bTimeToUpdate =
|
|
||||||
GAMESTATE->m_bAttackBeganThisUpdate[m_PlayerNumber] ||
|
GAMESTATE->m_bAttackBeganThisUpdate[m_PlayerNumber] ||
|
||||||
GAMESTATE->m_bAttackEndedThisUpdate[m_PlayerNumber];
|
GAMESTATE->m_bAttackEndedThisUpdate[m_PlayerNumber];
|
||||||
|
|
||||||
if( bTimeToUpdate )
|
BitmapText::Update( fDelta );
|
||||||
|
|
||||||
|
if( bTimeToRefresh )
|
||||||
|
Refresh();
|
||||||
|
}
|
||||||
|
|
||||||
|
void ActiveAttackList::Refresh()
|
||||||
|
{
|
||||||
|
CString s;
|
||||||
|
|
||||||
|
const AttackArray& attacks = GAMESTATE->m_ActiveAttacks[m_PlayerNumber]; // NUM_INVENTORY_SLOTS
|
||||||
|
|
||||||
|
// clear all lines, then add all active attacks
|
||||||
|
for( unsigned i=0; i<attacks.size(); i++ )
|
||||||
{
|
{
|
||||||
CString s;
|
const Attack& attack = attacks[i];
|
||||||
|
|
||||||
const AttackArray& attacks = GAMESTATE->m_ActiveAttacks[m_PlayerNumber]; // NUM_INVENTORY_SLOTS
|
if( !attack.bOn )
|
||||||
|
continue; /* hasn't started yet */
|
||||||
|
|
||||||
// clear all lines, then add all active attacks
|
CString sMods = attack.sModifier;
|
||||||
for( unsigned i=0; i<attacks.size(); i++ )
|
CStringArray asMods;
|
||||||
|
split( sMods, ",", asMods );
|
||||||
|
for( unsigned j=0; j<asMods.size(); j++ )
|
||||||
{
|
{
|
||||||
const Attack& attack = attacks[i];
|
CString& sMod = asMods[j];
|
||||||
|
TrimLeft( sMod );
|
||||||
|
TrimRight( sMod );
|
||||||
|
|
||||||
if( !attack.bOn )
|
sMod = PlayerOptions::ThemeMod( sMod );
|
||||||
continue; /* hasn't started yet */
|
|
||||||
|
|
||||||
CString sMods = attack.sModifier;
|
if( s.empty() )
|
||||||
CStringArray asMods;
|
s = sMod;
|
||||||
split( sMods, ",", asMods );
|
else
|
||||||
for( unsigned j=0; j<asMods.size(); j++ )
|
s = sMod + "\n" + s;
|
||||||
{
|
|
||||||
CString& sMod = asMods[j];
|
|
||||||
TrimLeft( sMod );
|
|
||||||
TrimRight( sMod );
|
|
||||||
|
|
||||||
sMod = PlayerOptions::ThemeMod( sMod );
|
|
||||||
|
|
||||||
if( s.empty() )
|
|
||||||
s = sMod;
|
|
||||||
else
|
|
||||||
s = sMod + "\n" + s;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this->SetText( s ); // BitmapText will not rebuild vertices if these strings are the same.
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this->SetText( s ); // BitmapText will not rebuild vertices if these strings are the same.
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ public:
|
|||||||
virtual void Update( float fDelta );
|
virtual void Update( float fDelta );
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
void Refresh();
|
||||||
|
|
||||||
PlayerNumber m_PlayerNumber;
|
PlayerNumber m_PlayerNumber;
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user