add combo milestone graphic
This commit is contained in:
+62
-43
@@ -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 );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user