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() Combo::Combo()
{ {
this->AddChild( &m_sprComboLabel ); m_iLastSeenCombo = -1;
this->AddChild( &m_sprMissesLabel );
this->AddChild( &m_textNumber );
} }
void Combo::Load( PlayerNumber pn ) void Combo::Load( PlayerNumber pn )
{ {
ASSERT( m_SubActors.empty() ); // don't load twice
m_PlayerNumber = pn; m_PlayerNumber = pn;
SHOW_COMBO_AT.Load(m_sName,"ShowComboAt"); SHOW_COMBO_AT .Load(m_sName,"ShowComboAt");
LABEL_X.Load(m_sName,"LabelX"); LABEL_X .Load(m_sName,"LabelX");
LABEL_Y.Load(m_sName,"LabelY"); LABEL_Y .Load(m_sName,"LabelY");
LABEL_ON_COMMAND.Load(m_sName,"LabelOnCommand"); LABEL_ON_COMMAND .Load(m_sName,"LabelOnCommand");
NUMBER_X.Load(m_sName,"NumberX"); NUMBER_X .Load(m_sName,"NumberX");
NUMBER_Y.Load(m_sName,"NumberY"); NUMBER_Y .Load(m_sName,"NumberY");
NUMBER_ON_COMMAND.Load(m_sName,"NumberOnCommand"); NUMBER_ON_COMMAND .Load(m_sName,"NumberOnCommand");
NUMBER_MIN_ZOOM.Load(m_sName,"NumberMinZoom"); NUMBER_MIN_ZOOM .Load(m_sName,"NumberMinZoom");
NUMBER_MAX_ZOOM.Load(m_sName,"NumberMaxZoom"); NUMBER_MAX_ZOOM .Load(m_sName,"NumberMaxZoom");
NUMBER_MAX_ZOOM_AT.Load(m_sName,"NumberMaxZoomAt"); NUMBER_MAX_ZOOM_AT .Load(m_sName,"NumberMaxZoomAt");
PULSE_COMMAND.Load(m_sName,"PulseCommand"); PULSE_COMMAND .Load(m_sName,"PulseCommand");
FULL_COMBO_GREATS_COMMAND.Load(m_sName,"FullComboGreatsCommand"); FULL_COMBO_GREATS_COMMAND .Load(m_sName,"FullComboGreatsCommand");
FULL_COMBO_PERFECTS_COMMAND.Load(m_sName,"FullComboPerfectsCommand"); FULL_COMBO_PERFECTS_COMMAND .Load(m_sName,"FullComboPerfectsCommand");
FULL_COMBO_MARVELOUSES_COMMAND.Load(m_sName,"FullComboMarvelousesCommand"); FULL_COMBO_MARVELOUSES_COMMAND .Load(m_sName,"FullComboMarvelousesCommand");
FULL_COMBO_BROKEN_COMMAND.Load(m_sName,"FullComboBrokenCommand"); FULL_COMBO_BROKEN_COMMAND .Load(m_sName,"FullComboBrokenCommand");
SHOW_MISS_COMBO.Load(m_sName,"ShowMissCombo"); 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.Load( THEME->GetPathG(m_sName,"label") );
m_sprComboLabel.SetShadowLength( 4 ); m_sprComboLabel->StopAnimating();
m_sprComboLabel.StopAnimating(); m_sprComboLabel->SetXY( LABEL_X, LABEL_Y );
m_sprComboLabel.SetXY( LABEL_X, LABEL_Y ); m_sprComboLabel->RunCommands( LABEL_ON_COMMAND );
m_sprComboLabel.RunCommands( LABEL_ON_COMMAND ); m_sprComboLabel->SetHidden( true );
m_sprComboLabel.SetHidden( true ); this->AddChild( m_sprComboLabel );
m_sprMissesLabel.Load( THEME->GetPathG(m_sName,"misses") ); m_sprMissesLabel.Load( THEME->GetPathG(m_sName,"misses") );
m_sprMissesLabel.SetShadowLength( 4 ); m_sprMissesLabel->StopAnimating();
m_sprMissesLabel.StopAnimating(); m_sprMissesLabel->SetXY( LABEL_X, LABEL_Y );
m_sprMissesLabel.SetXY( LABEL_X, LABEL_Y ); m_sprMissesLabel->RunCommands( LABEL_ON_COMMAND );
m_sprMissesLabel.RunCommands( LABEL_ON_COMMAND ); m_sprMissesLabel->SetHidden( true );
m_sprMissesLabel.SetHidden( true ); this->AddChild( m_sprMissesLabel );
m_textNumber.LoadFromFont( THEME->GetPathF(m_sName,"numbers") ); m_textNumber.LoadFromFont( THEME->GetPathF(m_sName,"numbers") );
m_textNumber.SetShadowLength( 4 );
m_textNumber.SetXY( NUMBER_X, NUMBER_Y ); m_textNumber.SetXY( NUMBER_X, NUMBER_Y );
m_textNumber.RunCommands( NUMBER_ON_COMMAND ); m_textNumber.RunCommands( NUMBER_ON_COMMAND );
m_textNumber.SetHidden( true ); m_textNumber.SetHidden( true );
this->AddChild( &m_textNumber );
} }
void Combo::SetCombo( int iCombo, int iMisses ) void Combo::SetCombo( int iCombo, int iMisses )
@@ -63,14 +66,27 @@ void Combo::SetCombo( int iCombo, int iMisses )
if( (iNum < (int)SHOW_COMBO_AT) || if( (iNum < (int)SHOW_COMBO_AT) ||
(bMisses && !(bool)SHOW_MISS_COMBO) ) (bMisses && !(bool)SHOW_MISS_COMBO) )
{ {
m_sprComboLabel.SetHidden( true ); m_sprComboLabel->SetHidden( true );
m_sprMissesLabel.SetHidden( true ); m_sprMissesLabel->SetHidden( true );
m_textNumber.SetHidden( true ); m_textNumber.SetHidden( true );
return; return;
} }
m_sprComboLabel.SetHidden( bMisses ); if( m_iLastSeenCombo == -1 ) // first update, don't set bIsMilestone=true
m_sprMissesLabel.SetHidden( !bMisses ); 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 ); m_textNumber.SetHidden( false );
CString txt = ssprintf("%d", iNum); CString txt = ssprintf("%d", iNum);
@@ -80,14 +96,17 @@ void Combo::SetCombo( int iCombo, int iMisses )
m_textNumber.SetText( txt ); m_textNumber.SetText( txt );
float fNumberZoom = SCALE(iNum,0.f,(float)NUMBER_MAX_ZOOM_AT,(float)NUMBER_MIN_ZOOM,(float)NUMBER_MAX_ZOOM); 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 ); CLAMP( fNumberZoom, (float)NUMBER_MIN_ZOOM, (float)NUMBER_MAX_ZOOM );
m_textNumber.StopTweening(); m_textNumber.FinishTweening();
m_textNumber.SetZoom( fNumberZoom ); m_textNumber.SetZoom( fNumberZoom );
m_textNumber.RunCommands( PULSE_COMMAND ); m_textNumber.RunCommands( PULSE_COMMAND );
Sprite &sprLabel = bMisses ? m_sprMissesLabel : m_sprComboLabel; AutoActor &sprLabel = bMisses ? m_sprMissesLabel : m_sprComboLabel;
sprLabel.StopTweening(); sprLabel->FinishTweening();
sprLabel.RunCommands( PULSE_COMMAND ); 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 // don't show a colored combo until 1/4 of the way through the song
bool bPastMidpoint = GAMESTATE->GetCourseSongIndex()>0 || 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) ) 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 ); m_textNumber.RunCommands( FULL_COMBO_MARVELOUSES_COMMAND );
} }
else if( bPastMidpoint && STATSMAN->m_CurStageStats.m_player[m_PlayerNumber].FullComboOfScore(TNS_PERFECT) ) 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 ); m_textNumber.RunCommands( FULL_COMBO_PERFECTS_COMMAND );
} }
else if( bPastMidpoint && STATSMAN->m_CurStageStats.m_player[m_PlayerNumber].FullComboOfScore(TNS_GREAT) ) 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 ); m_textNumber.RunCommands( FULL_COMBO_GREATS_COMMAND );
} }
else else
{ {
sprLabel.RunCommands( FULL_COMBO_BROKEN_COMMAND ); sprLabel->RunCommands( FULL_COMBO_BROKEN_COMMAND );
m_textNumber.RunCommands( FULL_COMBO_BROKEN_COMMAND ); m_textNumber.RunCommands( FULL_COMBO_BROKEN_COMMAND );
} }
} }
else else
{ {
sprLabel.RunCommands( FULL_COMBO_BROKEN_COMMAND ); sprLabel->RunCommands( FULL_COMBO_BROKEN_COMMAND );
m_textNumber.RunCommands( FULL_COMBO_BROKEN_COMMAND ); m_textNumber.RunCommands( FULL_COMBO_BROKEN_COMMAND );
} }
} }
+6 -5
View File
@@ -4,10 +4,9 @@
#define COMBO_H #define COMBO_H
#include "ActorFrame.h" #include "ActorFrame.h"
#include "Sprite.h" #include "AutoActor.h"
#include "BitmapText.h" #include "BitmapText.h"
#include "PlayerNumber.h" #include "PlayerNumber.h"
#include "GameConstantsAndTypes.h" // for TapNoteScore
#include "ThemeMetric.h" #include "ThemeMetric.h"
@@ -33,7 +32,6 @@ protected:
ThemeMetric<float> NUMBER_MAX_ZOOM_AT; ThemeMetric<float> NUMBER_MAX_ZOOM_AT;
ThemeMetric<apActorCommands> PULSE_COMMAND; ThemeMetric<apActorCommands> PULSE_COMMAND;
ThemeMetric<float> TWEEN_SECONDS; ThemeMetric<float> TWEEN_SECONDS;
ThemeMetric<apActorCommands> FULL_COMBO_GREATS_COMMAND; ThemeMetric<apActorCommands> FULL_COMBO_GREATS_COMMAND;
ThemeMetric<apActorCommands> FULL_COMBO_PERFECTS_COMMAND; ThemeMetric<apActorCommands> FULL_COMBO_PERFECTS_COMMAND;
ThemeMetric<apActorCommands> FULL_COMBO_MARVELOUSES_COMMAND; ThemeMetric<apActorCommands> FULL_COMBO_MARVELOUSES_COMMAND;
@@ -42,9 +40,12 @@ protected:
PlayerNumber m_PlayerNumber; PlayerNumber m_PlayerNumber;
Sprite m_sprComboLabel; AutoActor m_sprMilestone;
Sprite m_sprMissesLabel; AutoActor m_sprComboLabel;
AutoActor m_sprMissesLabel;
BitmapText m_textNumber; BitmapText m_textNumber;
int m_iLastSeenCombo;
}; };
#endif #endif