add combo milestone graphic

This commit is contained in:
Chris Danford
2005-04-29 03:04:16 +00:00
parent 910bb48362
commit c9401b9c92
2 changed files with 68 additions and 48 deletions
+62 -43
View File
@@ -8,51 +8,54 @@
Combo::Combo()
{
this->AddChild( &m_sprComboLabel );
this->AddChild( &m_sprMissesLabel );
this->AddChild( &m_textNumber );
m_iLastSeenCombo = -1;
}
void Combo::Load( PlayerNumber pn )
{
ASSERT( m_SubActors.empty() ); // don't load twice
m_PlayerNumber = pn;
SHOW_COMBO_AT.Load(m_sName,"ShowComboAt");
LABEL_X.Load(m_sName,"LabelX");
LABEL_Y.Load(m_sName,"LabelY");
LABEL_ON_COMMAND.Load(m_sName,"LabelOnCommand");
NUMBER_X.Load(m_sName,"NumberX");
NUMBER_Y.Load(m_sName,"NumberY");
NUMBER_ON_COMMAND.Load(m_sName,"NumberOnCommand");
NUMBER_MIN_ZOOM.Load(m_sName,"NumberMinZoom");
NUMBER_MAX_ZOOM.Load(m_sName,"NumberMaxZoom");
NUMBER_MAX_ZOOM_AT.Load(m_sName,"NumberMaxZoomAt");
PULSE_COMMAND.Load(m_sName,"PulseCommand");
FULL_COMBO_GREATS_COMMAND.Load(m_sName,"FullComboGreatsCommand");
FULL_COMBO_PERFECTS_COMMAND.Load(m_sName,"FullComboPerfectsCommand");
FULL_COMBO_MARVELOUSES_COMMAND.Load(m_sName,"FullComboMarvelousesCommand");
FULL_COMBO_BROKEN_COMMAND.Load(m_sName,"FullComboBrokenCommand");
SHOW_MISS_COMBO.Load(m_sName,"ShowMissCombo");
SHOW_COMBO_AT .Load(m_sName,"ShowComboAt");
LABEL_X .Load(m_sName,"LabelX");
LABEL_Y .Load(m_sName,"LabelY");
LABEL_ON_COMMAND .Load(m_sName,"LabelOnCommand");
NUMBER_X .Load(m_sName,"NumberX");
NUMBER_Y .Load(m_sName,"NumberY");
NUMBER_ON_COMMAND .Load(m_sName,"NumberOnCommand");
NUMBER_MIN_ZOOM .Load(m_sName,"NumberMinZoom");
NUMBER_MAX_ZOOM .Load(m_sName,"NumberMaxZoom");
NUMBER_MAX_ZOOM_AT .Load(m_sName,"NumberMaxZoomAt");
PULSE_COMMAND .Load(m_sName,"PulseCommand");
FULL_COMBO_GREATS_COMMAND .Load(m_sName,"FullComboGreatsCommand");
FULL_COMBO_PERFECTS_COMMAND .Load(m_sName,"FullComboPerfectsCommand");
FULL_COMBO_MARVELOUSES_COMMAND .Load(m_sName,"FullComboMarvelousesCommand");
FULL_COMBO_BROKEN_COMMAND .Load(m_sName,"FullComboBrokenCommand");
SHOW_MISS_COMBO .Load(m_sName,"ShowMissCombo");
m_sprMilestone.Load( THEME->GetPathG(m_sName,"milestone") );
this->AddChild( m_sprMilestone );
m_sprComboLabel.Load( THEME->GetPathG(m_sName,"label") );
m_sprComboLabel.SetShadowLength( 4 );
m_sprComboLabel.StopAnimating();
m_sprComboLabel.SetXY( LABEL_X, LABEL_Y );
m_sprComboLabel.RunCommands( LABEL_ON_COMMAND );
m_sprComboLabel.SetHidden( true );
m_sprComboLabel->StopAnimating();
m_sprComboLabel->SetXY( LABEL_X, LABEL_Y );
m_sprComboLabel->RunCommands( LABEL_ON_COMMAND );
m_sprComboLabel->SetHidden( true );
this->AddChild( m_sprComboLabel );
m_sprMissesLabel.Load( THEME->GetPathG(m_sName,"misses") );
m_sprMissesLabel.SetShadowLength( 4 );
m_sprMissesLabel.StopAnimating();
m_sprMissesLabel.SetXY( LABEL_X, LABEL_Y );
m_sprMissesLabel.RunCommands( LABEL_ON_COMMAND );
m_sprMissesLabel.SetHidden( true );
m_sprMissesLabel->StopAnimating();
m_sprMissesLabel->SetXY( LABEL_X, LABEL_Y );
m_sprMissesLabel->RunCommands( LABEL_ON_COMMAND );
m_sprMissesLabel->SetHidden( true );
this->AddChild( m_sprMissesLabel );
m_textNumber.LoadFromFont( THEME->GetPathF(m_sName,"numbers") );
m_textNumber.SetShadowLength( 4 );
m_textNumber.SetXY( NUMBER_X, NUMBER_Y );
m_textNumber.RunCommands( NUMBER_ON_COMMAND );
m_textNumber.SetHidden( true );
this->AddChild( &m_textNumber );
}
void Combo::SetCombo( int iCombo, int iMisses )
@@ -63,14 +66,27 @@ void Combo::SetCombo( int iCombo, int iMisses )
if( (iNum < (int)SHOW_COMBO_AT) ||
(bMisses && !(bool)SHOW_MISS_COMBO) )
{
m_sprComboLabel.SetHidden( true );
m_sprMissesLabel.SetHidden( true );
m_sprComboLabel->SetHidden( true );
m_sprMissesLabel->SetHidden( true );
m_textNumber.SetHidden( true );
return;
}
m_sprComboLabel.SetHidden( bMisses );
m_sprMissesLabel.SetHidden( !bMisses );
if( m_iLastSeenCombo == -1 ) // first update, don't set bIsMilestone=true
m_iLastSeenCombo = iCombo;
bool bIsMilestone = false;
for( int i=m_iLastSeenCombo+1; i<=iCombo; i++ )
{
if( i <= 1000 )
bIsMilestone |= ((i % 100) == 0);
else
bIsMilestone |= ((i % 500) == 0);
}
m_iLastSeenCombo = iCombo;
m_sprComboLabel->SetHidden( bMisses );
m_sprMissesLabel->SetHidden( !bMisses );
m_textNumber.SetHidden( false );
CString txt = ssprintf("%d", iNum);
@@ -80,14 +96,17 @@ void Combo::SetCombo( int iCombo, int iMisses )
m_textNumber.SetText( txt );
float fNumberZoom = SCALE(iNum,0.f,(float)NUMBER_MAX_ZOOM_AT,(float)NUMBER_MIN_ZOOM,(float)NUMBER_MAX_ZOOM);
CLAMP( fNumberZoom, (float)NUMBER_MIN_ZOOM, (float)NUMBER_MAX_ZOOM );
m_textNumber.StopTweening();
m_textNumber.FinishTweening();
m_textNumber.SetZoom( fNumberZoom );
m_textNumber.RunCommands( PULSE_COMMAND );
Sprite &sprLabel = bMisses ? m_sprMissesLabel : m_sprComboLabel;
AutoActor &sprLabel = bMisses ? m_sprMissesLabel : m_sprComboLabel;
sprLabel.StopTweening();
sprLabel.RunCommands( PULSE_COMMAND );
sprLabel->FinishTweening();
sprLabel->RunCommands( PULSE_COMMAND );
if( bIsMilestone )
m_sprMilestone->PlayCommand( "Milestone" );
// don't show a colored combo until 1/4 of the way through the song
bool bPastMidpoint = GAMESTATE->GetCourseSongIndex()>0 ||
@@ -97,28 +116,28 @@ void Combo::SetCombo( int iCombo, int iMisses )
{
if( STATSMAN->m_CurStageStats.m_player[m_PlayerNumber].FullComboOfScore(TNS_MARVELOUS) )
{
sprLabel.RunCommands( FULL_COMBO_MARVELOUSES_COMMAND );
sprLabel->RunCommands( FULL_COMBO_MARVELOUSES_COMMAND );
m_textNumber.RunCommands( FULL_COMBO_MARVELOUSES_COMMAND );
}
else if( bPastMidpoint && STATSMAN->m_CurStageStats.m_player[m_PlayerNumber].FullComboOfScore(TNS_PERFECT) )
{
sprLabel.RunCommands( FULL_COMBO_PERFECTS_COMMAND );
sprLabel->RunCommands( FULL_COMBO_PERFECTS_COMMAND );
m_textNumber.RunCommands( FULL_COMBO_PERFECTS_COMMAND );
}
else if( bPastMidpoint && STATSMAN->m_CurStageStats.m_player[m_PlayerNumber].FullComboOfScore(TNS_GREAT) )
{
sprLabel.RunCommands( FULL_COMBO_GREATS_COMMAND );
sprLabel->RunCommands( FULL_COMBO_GREATS_COMMAND );
m_textNumber.RunCommands( FULL_COMBO_GREATS_COMMAND );
}
else
{
sprLabel.RunCommands( FULL_COMBO_BROKEN_COMMAND );
sprLabel->RunCommands( FULL_COMBO_BROKEN_COMMAND );
m_textNumber.RunCommands( FULL_COMBO_BROKEN_COMMAND );
}
}
else
{
sprLabel.RunCommands( FULL_COMBO_BROKEN_COMMAND );
sprLabel->RunCommands( FULL_COMBO_BROKEN_COMMAND );
m_textNumber.RunCommands( FULL_COMBO_BROKEN_COMMAND );
}
}
+6 -5
View File
@@ -4,10 +4,9 @@
#define COMBO_H
#include "ActorFrame.h"
#include "Sprite.h"
#include "AutoActor.h"
#include "BitmapText.h"
#include "PlayerNumber.h"
#include "GameConstantsAndTypes.h" // for TapNoteScore
#include "ThemeMetric.h"
@@ -33,7 +32,6 @@ protected:
ThemeMetric<float> NUMBER_MAX_ZOOM_AT;
ThemeMetric<apActorCommands> PULSE_COMMAND;
ThemeMetric<float> TWEEN_SECONDS;
ThemeMetric<apActorCommands> FULL_COMBO_GREATS_COMMAND;
ThemeMetric<apActorCommands> FULL_COMBO_PERFECTS_COMMAND;
ThemeMetric<apActorCommands> FULL_COMBO_MARVELOUSES_COMMAND;
@@ -42,9 +40,12 @@ protected:
PlayerNumber m_PlayerNumber;
Sprite m_sprComboLabel;
Sprite m_sprMissesLabel;
AutoActor m_sprMilestone;
AutoActor m_sprComboLabel;
AutoActor m_sprMissesLabel;
BitmapText m_textNumber;
int m_iLastSeenCombo;
};
#endif