Added How To Play screen, improved scroll bar, and added "toasty" easter egg.
This commit is contained in:
+71
-44
@@ -14,12 +14,14 @@
|
||||
#include "PrefsManager.h"
|
||||
#include "ScreenManager.h"
|
||||
#include "ScreenGameplay.h"
|
||||
#include "GameState.h"
|
||||
|
||||
|
||||
Combo::Combo()
|
||||
{
|
||||
m_iCurCombo = 0;
|
||||
m_iMaxCombo = 0;
|
||||
m_iCurComboOfPerfects = 0;
|
||||
|
||||
m_sprCombo.Load( THEME->GetPathTo("Graphics", "gameplay combo") );
|
||||
m_sprCombo.TurnShadowOn();
|
||||
@@ -41,61 +43,86 @@ Combo::Combo()
|
||||
}
|
||||
|
||||
|
||||
void Combo::ContinueCombo()
|
||||
void Combo::UpdateScore( TapNoteScore score )
|
||||
{
|
||||
m_iCurCombo++;
|
||||
if( PREFSMAN->m_bAutoPlay ) // cheaters never prosper
|
||||
{
|
||||
m_iCurCombo = 0;
|
||||
m_iCurComboOfPerfects = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
/* If needed, make this a theme metric. */
|
||||
const bool HighComboAlert_OnceOnly = true;
|
||||
|
||||
if(!HighComboAlert_OnceOnly || m_iCurCombo > m_iMaxCombo)
|
||||
switch( m_iCurCombo )
|
||||
switch( score )
|
||||
{
|
||||
case 100: SCREENMAN->SendMessageToTopScreen( SM_100Combo, 0 ); break;
|
||||
case 200: SCREENMAN->SendMessageToTopScreen( SM_200Combo, 0 ); break;
|
||||
case 300: SCREENMAN->SendMessageToTopScreen( SM_300Combo, 0 ); break;
|
||||
case 400: SCREENMAN->SendMessageToTopScreen( SM_400Combo, 0 ); break;
|
||||
case 500: SCREENMAN->SendMessageToTopScreen( SM_500Combo, 0 ); break;
|
||||
case 600: SCREENMAN->SendMessageToTopScreen( SM_600Combo, 0 ); break;
|
||||
case 700: SCREENMAN->SendMessageToTopScreen( SM_700Combo, 0 ); break;
|
||||
case 800: SCREENMAN->SendMessageToTopScreen( SM_800Combo, 0 ); break;
|
||||
case 900: SCREENMAN->SendMessageToTopScreen( SM_900Combo, 0 ); break;
|
||||
case 1000: SCREENMAN->SendMessageToTopScreen( SM_1000Combo, 0 ); break;
|
||||
}
|
||||
case TNS_PERFECT:
|
||||
case TNS_GREAT:
|
||||
|
||||
// new max combo
|
||||
m_iMaxCombo = max(m_iMaxCombo, m_iCurCombo);
|
||||
// continue combo
|
||||
m_iCurCombo++;
|
||||
|
||||
if( score == TNS_PERFECT ) m_iCurComboOfPerfects++;
|
||||
else m_iCurComboOfPerfects = 0;
|
||||
|
||||
if( (m_iCurComboOfPerfects%150)==0 && RandomFloat(0,1) > 0.5 && !GAMESTATE->m_bDemonstration )
|
||||
SCREENMAN->SendMessageToTopScreen( SM_BeginToasty, 0 );
|
||||
|
||||
|
||||
if(!HighComboAlert_OnceOnly || m_iCurCombo > m_iMaxCombo)
|
||||
switch( m_iCurCombo )
|
||||
{
|
||||
case 100: SCREENMAN->SendMessageToTopScreen( SM_100Combo, 0 ); break;
|
||||
case 200: SCREENMAN->SendMessageToTopScreen( SM_200Combo, 0 ); break;
|
||||
case 300: SCREENMAN->SendMessageToTopScreen( SM_300Combo, 0 ); break;
|
||||
case 400: SCREENMAN->SendMessageToTopScreen( SM_400Combo, 0 ); break;
|
||||
case 500: SCREENMAN->SendMessageToTopScreen( SM_500Combo, 0 ); break;
|
||||
case 600: SCREENMAN->SendMessageToTopScreen( SM_600Combo, 0 ); break;
|
||||
case 700: SCREENMAN->SendMessageToTopScreen( SM_700Combo, 0 ); break;
|
||||
case 800: SCREENMAN->SendMessageToTopScreen( SM_800Combo, 0 ); break;
|
||||
case 900: SCREENMAN->SendMessageToTopScreen( SM_900Combo, 0 ); break;
|
||||
case 1000: SCREENMAN->SendMessageToTopScreen( SM_1000Combo, 0 ); break;
|
||||
}
|
||||
|
||||
// new max combo
|
||||
m_iMaxCombo = max(m_iMaxCombo, m_iCurCombo);
|
||||
|
||||
|
||||
if( m_iCurCombo <= 4 )
|
||||
{
|
||||
m_textComboNumber.SetDiffuseColor( D3DXCOLOR(1,1,1,0) ); // invisible
|
||||
m_sprCombo.SetDiffuseColor( D3DXCOLOR(1,1,1,0) ); // invisible
|
||||
}
|
||||
else
|
||||
{
|
||||
m_textComboNumber.SetDiffuseColor( D3DXCOLOR(1,1,1,1) ); // visible
|
||||
m_sprCombo.SetDiffuseColor( D3DXCOLOR(1,1,1,1) ); // visible
|
||||
|
||||
m_textComboNumber.SetText( ssprintf("%d", m_iCurCombo) );
|
||||
float fNewZoom = min( 0.5f + m_iCurCombo/800.0f, 1.0f );
|
||||
m_textComboNumber.SetZoom( fNewZoom );
|
||||
|
||||
//this->SetZoom( 1.2f );
|
||||
//this->BeginTweening( 0.3f );
|
||||
//this->SetTweenZoom( 1 );
|
||||
}
|
||||
break;
|
||||
case TNS_GOOD:
|
||||
case TNS_BOO:
|
||||
case TNS_MISS:
|
||||
// end combo
|
||||
if( m_iCurCombo > 50 )
|
||||
SCREENMAN->SendMessageToTopScreen( SM_ComboStopped, 0 );
|
||||
|
||||
m_iCurCombo = 0;
|
||||
|
||||
if( m_iCurCombo <= 4 )
|
||||
{
|
||||
m_textComboNumber.SetDiffuseColor( D3DXCOLOR(1,1,1,0) ); // invisible
|
||||
m_sprCombo.SetDiffuseColor( D3DXCOLOR(1,1,1,0) ); // invisible
|
||||
break;
|
||||
default:
|
||||
ASSERT(0);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_textComboNumber.SetDiffuseColor( D3DXCOLOR(1,1,1,1) ); // visible
|
||||
m_sprCombo.SetDiffuseColor( D3DXCOLOR(1,1,1,1) ); // visible
|
||||
|
||||
m_textComboNumber.SetText( ssprintf("%d", m_iCurCombo) );
|
||||
float fNewZoom = min( 0.5f + m_iCurCombo/800.0f, 1.0f );
|
||||
m_textComboNumber.SetZoom( fNewZoom );
|
||||
|
||||
//this->SetZoom( 1.2f );
|
||||
//this->BeginTweening( 0.3f );
|
||||
//this->SetTweenZoom( 1 );
|
||||
}
|
||||
}
|
||||
|
||||
void Combo::EndCombo()
|
||||
{
|
||||
if( m_iCurCombo > 50 )
|
||||
SCREENMAN->SendMessageToTopScreen( SM_ComboStopped, 0 );
|
||||
|
||||
m_iCurCombo = 0;
|
||||
|
||||
m_textComboNumber.SetDiffuseColor( D3DXCOLOR(1,1,1,0) ); // invisible
|
||||
m_sprCombo.SetDiffuseColor( D3DXCOLOR(1,1,1,0) ); // invisible
|
||||
|
||||
}
|
||||
|
||||
int Combo::GetCurrentCombo()
|
||||
|
||||
Reference in New Issue
Block a user