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