Moved more constants into theme metrics

This commit is contained in:
Chris Danford
2002-08-28 22:42:40 +00:00
parent 9c8548ce1d
commit a8a99fe828
27 changed files with 826 additions and 648 deletions
+2
View File
@@ -1,4 +1,6 @@
------------------------CVS after 3.00 beta 6---------------- ------------------------CVS after 3.00 beta 6----------------
CHANGE: After changing sort to "BEST", focus will be changed to the
the most-played song.
CHANGE: Texture Hints have been removed in favor of smarter, automatic CHANGE: Texture Hints have been removed in favor of smarter, automatic
texture format chooser. texture format chooser.
CHANGE: New Nullsoft NSIS installer. CHANGE: New Nullsoft NSIS installer.
+47 -5
View File
@@ -102,7 +102,8 @@ CursorShadowLengthX=10
CursorShadowLengthY=10 CursorShadowLengthY=10
HelpText=Use ! " to select, then press START HelpText=Use ! " to select, then press START
TimerSeconds=40 TimerSeconds=40
NextScreen=ScreenSelectGroup NextScreenArcade=ScreenSelectGroup
NextScreenOni=ScreenHowToPlay
[ScreenSelectGroup] [ScreenSelectGroup]
FrameX=180 FrameX=180
@@ -128,8 +129,7 @@ TitlesColumns=3
TitlesRows=10 TitlesRows=10
HelpText=Use ! " to select, then press START HelpText=Use ! " to select, then press START
TimerSeconds=40 TimerSeconds=40
NextScreenArcade=ScreenHowToPlay NextScreen=ScreenHowToPlay
NextScreenOni=ScreenHowToPlay
[ScreenHowToPlay] [ScreenHowToPlay]
NextScreenArcade=ScreenSelectMusic NextScreenArcade=ScreenSelectMusic
@@ -180,6 +180,7 @@ SongOptionsX=160
SongOptionsY=298 SongOptionsY=298
HelpText=! or " change music Hold ! and " then press START to change sort::## easier difficulty $$ harder difficulty::#$#$ to change sort HelpText=! or " change music Hold ! and " then press START to change sort::## easier difficulty $$ harder difficulty::#$#$ to change sort
TimerSeconds=60 TimerSeconds=60
ScoreConnectedToMusicWheel=1
[ScreenSelectCourse] [ScreenSelectCourse]
BannerFrameX=160 BannerFrameX=160
@@ -421,10 +422,51 @@ RainbowColor7=1.0,0.8,0.2,1 // orange
[SongManager] [SongManager]
GroupColor1=0.8,0.1,0.6,1 // pink GroupColor1=0.8,0.1,0.6,1 // pink
GroupColor2=0.5,0.3,0.7,1 // purple GroupColor2=0.6,0.4,0.8,1 // purple
GroupColor3=0.0,0.4,0.8,1 // sky blue GroupColor3=0.0,0.4,0.8,1 // sky blue
GroupColor4=0.0,0.6,0.6,1 // sea green GroupColor4=0.0,0.6,0.6,1 // sea green
GroupColor5=0.1,0.7,0.3,1 // green GroupColor5=0.1,0.7,0.3,1 // green
GroupColor6=0.8,0.6,0.0,1 // orange GroupColor6=0.8,0.6,0.0,1 // orange
GroupColor7=1.0,0.3,0.3,1 // light red GroupColor7=1.0,0.3,0.3,1 // light red
ExtraColor=1,0,0,1 // red ExtraColor=1.0,0.0,0.0,1.0 // red
[Background]
LeftEdge=20
TopEdge=40
RightEdge=620
BottomEdge=424
[Player]
JudgePerfectZoomX=1.3
JudgePerfectZoomY=1.3
JudgeGreatZoomX=1.2
JudgeGreatZoomY=1.2
JudgeGoodZoomX=1.1
JudgeGoodZoomY=1.1
JudgeBooZoomX=1.0
JudgeBooZoomY=1.0
ComboJudgeTweenSeconds=0.1
[GameState]
StageColorDemo=0.3,1.0,0.3,1 // green
StageColorNormal=0.3,1.0,0.3,1 // green
StageColorFinal=1.0,0.1,0.1,1 // red
StageColorExtra1=1.0,1,0.3,1 // yellow
StageColorExtra2=1.0,1,0.3,1 // yellow
StageColorOni=0.3,1.0,0.3,1 // green
StageTextDemo=Demo
StageTextFinal=Final
StageTextExtra1=Extra
StageTextExtra2=Extra2
[BPMDisplay]
NormalColorTop=1.0,1.0,0.0,1 // yellow
NormalColorBottom=1.0,0.5,0.0,1 // orange
ChangeColorTop=1.0,0.0,0.0,1 // red
ChangeColorBottom=0.6,0.0,0.0,1 // dark red
ExtraColorTop=1.0,0.0,0.0,1 // red
ExtraColorBottom=0.6,0.0,0.0,1 // dark red
[GrayArrow]
StepZoom=0.75
StepSeconds=0.2
+8 -8
View File
@@ -83,19 +83,19 @@ try_again:
"The current announcer is missing the folder '%s'.\n" "The current announcer is missing the folder '%s'.\n"
"It may be that these sounds were never implemented in this announcer,\n" "It may be that these sounds were never implemented in this announcer,\n"
"Or the folder may be misnamed.\n\n" "Or the folder may be misnamed.\n\n"
"Click Abort to automatically create the folder.\n" "Click Abort to break.\n"
"Click Retry after adding the folder menually.\n" "Click Retry after adding the folder menually.\n"
"Click to break.", sFolderName), MB_ABORTRETRYIGNORE ); "Click Ignore to to automatically create the folder.\n\n", sFolderName), MB_ABORTRETRYIGNORE );
switch( iResult ) switch( iResult )
{ {
case IDABORT: case IDABORT:
CreateDirectory( sPathToFolderCurrent, NULL ); DebugBreak();
break; break;
case IDRETRY: case IDRETRY:
goto try_again; goto try_again;
break; break;
case IDIGNORE: case IDIGNORE:
DebugBreak(); CreateDirectory( sPathToFolderCurrent, NULL );
break; break;
} }
} }
@@ -105,19 +105,19 @@ try_again:
ssprintf( ssprintf(
"The empty announcer is missing the folder '%s'.\n" "The empty announcer is missing the folder '%s'.\n"
"This announcer should have empty folders for every saying.\n\n" "This announcer should have empty folders for every saying.\n\n"
"Click Abort to automatically create the folder.\n" "Click Abort to break.\n"
"Click Retry after adding the folder menually.\n" "Click Retry after adding the folder menually.\n"
"Click to break.", sFolderName), MB_ABORTRETRYIGNORE ); "Click Ignore to to automatically create the folder.\n\n", sFolderName), MB_ABORTRETRYIGNORE );
switch( iResult ) switch( iResult )
{ {
case IDABORT: case IDABORT:
CreateDirectory( sPathToFolderEmpty, NULL ); DebugBreak();
break; break;
case IDRETRY: case IDRETRY:
goto try_again; goto try_again;
break; break;
case IDIGNORE: case IDIGNORE:
DebugBreak(); CreateDirectory( sPathToFolderEmpty, NULL );
break; break;
} }
} }
+43 -16
View File
@@ -13,14 +13,23 @@
#include "RageUtil.h" #include "RageUtil.h"
#include "GameConstantsAndTypes.h" #include "GameConstantsAndTypes.h"
#include "PrefsManager.h" #include "PrefsManager.h"
#include "GameState.h"
#define NORMAL_COLOR_TOP THEME->GetMetricC("BPMDisplay","NormalColorTop")
#define NORMAL_COLOR_BOTTOM THEME->GetMetricC("BPMDisplay","NormalColorBottom")
#define CHANGE_COLOR_TOP THEME->GetMetricC("BPMDisplay","ChangeColorTop")
#define CHANGE_COLOR_BOTTOM THEME->GetMetricC("BPMDisplay","ChangeColorBottom")
#define EXTRA_COLOR_TOP THEME->GetMetricC("BPMDisplay","ExtraColorTop")
#define EXTRA_COLOR_BOTTOM THEME->GetMetricC("BPMDisplay","ExtraColorBottom")
BPMDisplay::BPMDisplay() BPMDisplay::BPMDisplay()
{ {
m_fCurrentBPM = m_fLowBPM = m_fHighBPM = 0; m_fCurrentBPM = m_fLowBPM = m_fHighBPM = 0;
m_CountingState = holding_down; m_CountingState = holding_down;
m_fTimeLeftInState = 0; m_fTimeLeftInState = 0;
m_bExtraStage = GAMESTATE->IsExtraStage() || GAMESTATE->IsExtraStage2();
m_rectFrame.SetDiffuseColor( D3DXCOLOR(0,0,0,0.3f) ); m_rectFrame.SetDiffuseColor( D3DXCOLOR(0,0,0,0.3f) );
m_rectFrame.SetZoomX( 120 ); m_rectFrame.SetZoomX( 120 );
@@ -32,8 +41,8 @@ BPMDisplay::BPMDisplay()
//m_textBPM.SetSequence( ssprintf("999") ); //m_textBPM.SetSequence( ssprintf("999") );
m_textBPM.SetXY( -23, 0 ); m_textBPM.SetXY( -23, 0 );
m_textBPM.SetZoom( 1.0f ); m_textBPM.SetZoom( 1.0f );
m_textBPM.SetDiffuseColorTopEdge( D3DXCOLOR(1,1,0,1) ); // yellow m_textBPM.SetDiffuseColorTopEdge( NORMAL_COLOR_TOP ); // yellow
m_textBPM.SetDiffuseColorBottomEdge( D3DXCOLOR(1,0.5f,0,1) ); // orange m_textBPM.SetDiffuseColorBottomEdge( NORMAL_COLOR_BOTTOM ); // orange
m_textLabel.LoadFromFont( THEME->GetPathTo("Fonts","header1") ); m_textLabel.LoadFromFont( THEME->GetPathTo("Fonts","header1") );
m_textLabel.TurnShadowOff(); m_textLabel.TurnShadowOff();
@@ -41,8 +50,8 @@ BPMDisplay::BPMDisplay()
m_textLabel.SetText( "BPM" ); m_textLabel.SetText( "BPM" );
m_textLabel.SetZoom( 0.7f ); m_textLabel.SetZoom( 0.7f );
m_textLabel.SetZoomX( 0.5f ); m_textLabel.SetZoomX( 0.5f );
m_textLabel.SetDiffuseColorTopEdge( D3DXCOLOR(1,1,0,1) ); // yellow m_textLabel.SetDiffuseColorTopEdge( NORMAL_COLOR_TOP ); // yellow
m_textLabel.SetDiffuseColorBottomEdge( D3DXCOLOR(1,0.5f,0,1) ); // orange m_textLabel.SetDiffuseColorBottomEdge( NORMAL_COLOR_BOTTOM ); // orange
//this->AddSubActor( &m_rectFrame ); //this->AddSubActor( &m_rectFrame );
this->AddSubActor( &m_textBPM ); this->AddSubActor( &m_textBPM );
@@ -54,6 +63,17 @@ void BPMDisplay::Update( float fDeltaTime )
{ {
ActorFrame::Update( fDeltaTime ); ActorFrame::Update( fDeltaTime );
if( m_bExtraStage )
{
m_fTimeLeftInState -= fDeltaTime;
if( m_fTimeLeftInState < 0 )
{
m_textBPM.SetText( (RandomFloat(0,1)>0.90) ? "???" : ssprintf("%03.0f",RandomFloat(0,600)) );
m_fTimeLeftInState = 0.2f; // reset timer
}
}
else // !m_bExtraStage
{
m_fTimeLeftInState -= fDeltaTime; m_fTimeLeftInState -= fDeltaTime;
if( m_fTimeLeftInState < 0 ) if( m_fTimeLeftInState < 0 )
{ {
@@ -76,6 +96,7 @@ void BPMDisplay::Update( float fDeltaTime )
case holding_down: m_fCurrentBPM = m_fLowBPM; break; case holding_down: m_fCurrentBPM = m_fLowBPM; break;
} }
m_textBPM.SetText( ssprintf("%03.0f", m_fCurrentBPM) ); m_textBPM.SetText( ssprintf("%03.0f", m_fCurrentBPM) );
}
} }
@@ -89,23 +110,29 @@ void BPMDisplay::SetBPMRange( float fLowBPM, float fHighBPM )
m_CountingState = counting_up; m_CountingState = counting_up;
m_fTimeLeftInState = 1; m_fTimeLeftInState = 1;
if( m_fLowBPM != m_fHighBPM )
{
m_textBPM.BeginTweening(0.5f); m_textBPM.BeginTweening(0.5f);
m_textBPM.SetTweenDiffuseColorTopEdge( D3DXCOLOR(1,0,0,1) ); // red
m_textBPM.SetTweenDiffuseColorBottomEdge( D3DXCOLOR(0.6f,0,0,1) ); // dark red
m_textLabel.BeginTweening(0.5f); m_textLabel.BeginTweening(0.5f);
m_textLabel.SetTweenDiffuseColorTopEdge( D3DXCOLOR(1,0,0,1) ); // red
m_textLabel.SetTweenDiffuseColorBottomEdge( D3DXCOLOR(0.6f,0,0,1) ); // dark red if( GAMESTATE->IsExtraStage() || GAMESTATE->IsExtraStage2() )
{
m_textBPM.SetTweenDiffuseColorTopEdge( EXTRA_COLOR_TOP );
m_textBPM.SetTweenDiffuseColorBottomEdge( EXTRA_COLOR_BOTTOM );
m_textLabel.SetTweenDiffuseColorTopEdge( EXTRA_COLOR_TOP );
m_textLabel.SetTweenDiffuseColorBottomEdge( EXTRA_COLOR_BOTTOM );
}
else if( m_fLowBPM != m_fHighBPM )
{
m_textBPM.SetTweenDiffuseColorTopEdge( CHANGE_COLOR_TOP );
m_textBPM.SetTweenDiffuseColorBottomEdge( CHANGE_COLOR_BOTTOM );
m_textLabel.SetTweenDiffuseColorTopEdge( CHANGE_COLOR_TOP );
m_textLabel.SetTweenDiffuseColorBottomEdge( CHANGE_COLOR_BOTTOM );
} }
else else
{ {
m_textBPM.BeginTweening(0.5f); m_textBPM.SetTweenDiffuseColorTopEdge( NORMAL_COLOR_TOP );
m_textBPM.SetTweenDiffuseColorTopEdge( D3DXCOLOR(1,1,0,1) ); // yellow m_textBPM.SetTweenDiffuseColorBottomEdge( NORMAL_COLOR_BOTTOM );
m_textBPM.SetTweenDiffuseColorBottomEdge( D3DXCOLOR(1,0.5f,0,1) ); // orange m_textLabel.SetTweenDiffuseColorTopEdge( NORMAL_COLOR_TOP );
m_textLabel.BeginTweening(0.5f); m_textLabel.SetTweenDiffuseColorBottomEdge( NORMAL_COLOR_BOTTOM );
m_textLabel.SetTweenDiffuseColorTopEdge( D3DXCOLOR(1,1,0,1) ); // yellow
m_textLabel.SetTweenDiffuseColorBottomEdge( D3DXCOLOR(1,0.5f,0,1) ); // orange
} }
} }
+2
View File
@@ -37,6 +37,8 @@ protected:
enum CountingState{ counting_up, holding_up, counting_down, holding_down }; enum CountingState{ counting_up, holding_up, counting_down, holding_down };
CountingState m_CountingState; CountingState m_CountingState;
float m_fTimeLeftInState; float m_fTimeLeftInState;
bool m_bExtraStage; // cycle BPM through random values if extra stage
}; };
#endif #endif
+30 -15
View File
@@ -26,12 +26,12 @@ const CString VISUALIZATIONS_DIR = "Visualizations\\";
const CString RANDOMMOVIES_DIR = "RandomMovies\\"; const CString RANDOMMOVIES_DIR = "RandomMovies\\";
// TODO: Move these into theme metrics // TODO: Move these into theme metrics
const int BACKGROUND_LEFT = 0; #define LEFT_EDGE THEME->GetMetricI("Background","LeftEdge")
const int BACKGROUND_TOP = 0; #define TOP_EDGE THEME->GetMetricI("Background","TopEdge")
const int BACKGROUND_RIGHT = 640; #define RIGHT_EDGE THEME->GetMetricI("Background","RightEdge")
const int BACKGROUND_BOTTOM = 480; #define BOTTOM_EDGE THEME->GetMetricI("Background","BottomEdge")
#define RECT_BACKGROUND CRect(BACKGROUND_LEFT,BACKGROUND_TOP,BACKGROUND_RIGHT,BACKGROUND_BOTTOM) #define RECT_BACKGROUND CRect(LEFT_EDGE,TOP_EDGE,RIGHT_EDGE,BOTTOM_EDGE)
int CompareBGSegments(const void *arg1, const void *arg2) int CompareBGSegments(const void *arg1, const void *arg2)
{ {
@@ -75,14 +75,14 @@ Background::Background()
m_quadBGBrightness.StretchTo( RECT_BACKGROUND ); m_quadBGBrightness.StretchTo( RECT_BACKGROUND );
m_quadBGBrightness.SetDiffuseColor( D3DXCOLOR(0,0,0,1-0.5f) ); m_quadBGBrightness.SetDiffuseColor( D3DXCOLOR(0,0,0,1-0.5f) );
m_quadBorder[0].StretchTo( CRect(SCREEN_LEFT,SCREEN_TOP,BACKGROUND_LEFT,SCREEN_BOTTOM) ); m_quadBorder[0].StretchTo( CRect(SCREEN_LEFT,SCREEN_TOP,LEFT_EDGE,SCREEN_BOTTOM) );
m_quadBorder[0].SetDiffuseColor( D3DXCOLOR(0,0,0,0) ); m_quadBorder[0].SetDiffuseColor( D3DXCOLOR(0,0,0,1) );
m_quadBorder[1].StretchTo( CRect(BACKGROUND_LEFT,SCREEN_TOP,BACKGROUND_RIGHT,BACKGROUND_TOP) ); m_quadBorder[1].StretchTo( CRect(LEFT_EDGE,SCREEN_TOP,RIGHT_EDGE,TOP_EDGE) );
m_quadBorder[1].SetDiffuseColor( D3DXCOLOR(0,0,0,0) ); m_quadBorder[1].SetDiffuseColor( D3DXCOLOR(0,0,0,1) );
m_quadBorder[2].StretchTo( CRect(BACKGROUND_RIGHT,SCREEN_TOP,SCREEN_RIGHT,SCREEN_BOTTOM) ); m_quadBorder[2].StretchTo( CRect(RIGHT_EDGE,SCREEN_TOP,SCREEN_RIGHT,SCREEN_BOTTOM) );
m_quadBorder[2].SetDiffuseColor( D3DXCOLOR(0,0,0,0) ); m_quadBorder[2].SetDiffuseColor( D3DXCOLOR(0,0,0,1) );
m_quadBorder[3].StretchTo( CRect(BACKGROUND_LEFT,SCREEN_TOP,BACKGROUND_RIGHT,BACKGROUND_TOP) ); m_quadBorder[3].StretchTo( CRect(LEFT_EDGE,BOTTOM_EDGE,RIGHT_EDGE,SCREEN_BOTTOM) );
m_quadBorder[3].SetDiffuseColor( D3DXCOLOR(0,0,0,0) ); m_quadBorder[3].SetDiffuseColor( D3DXCOLOR(0,0,0,1) );
} }
Background::~Background() Background::~Background()
@@ -95,6 +95,8 @@ void Background::Unload()
for( int i=0; i<m_BackgroundAnimations.GetSize(); i++ ) for( int i=0; i<m_BackgroundAnimations.GetSize(); i++ )
delete m_BackgroundAnimations[i]; delete m_BackgroundAnimations[i];
m_BackgroundAnimations.RemoveAll(); m_BackgroundAnimations.RemoveAll();
m_aBGSegments.RemoveAll();
} }
void Background::LoadFromSong( Song* pSong ) void Background::LoadFromSong( Song* pSong )
@@ -104,6 +106,12 @@ void Background::LoadFromSong( Song* pSong )
/* Correct. I added the same chage. -Chris */ /* Correct. I added the same chage. -Chris */
Unload(); Unload();
const float fXZoom = RECTWIDTH(RECT_BACKGROUND) / (float)SCREEN_WIDTH;
const float fYZoom = RECTHEIGHT(RECT_BACKGROUND) / (float)SCREEN_HEIGHT;
const float fZoom = max(fXZoom,fYZoom);
// //
// figure out what BackgroundMode to use // figure out what BackgroundMode to use
// //
@@ -242,7 +250,10 @@ void Background::LoadFromSong( Song* pSong )
{ {
CStringArray arrayPossibleAnims; CStringArray arrayPossibleAnims;
GetDirListing( BG_ANIMS_DIR+"*.*", arrayPossibleAnims, true, true ); GetDirListing( BG_ANIMS_DIR+"*.*", arrayPossibleAnims, true, true );
for( int i=0; i<4 && arrayPossibleAnims.GetSize()>0; i++ ) for( int i=arrayPossibleAnims.GetSize()-1; i>=0; i-- )
if( 0==stricmp(arrayPossibleAnims[i].Right(3),"cvs") )
arrayPossibleAnims.RemoveAt(i);
for( i=0; i<4 && arrayPossibleAnims.GetSize()>0; i++ )
{ {
int index = rand() % arrayPossibleAnims.GetSize(); int index = rand() % arrayPossibleAnims.GetSize();
pTempBGA = new BackgroundAnimation; pTempBGA = new BackgroundAnimation;
@@ -327,7 +338,11 @@ void Background::LoadFromSong( Song* pSong )
} }
for( int i=0; i<m_BackgroundAnimations.GetSize(); i++ )
{
m_BackgroundAnimations[i]->SetXY( (float)LEFT_EDGE, (float)TOP_EDGE );
m_BackgroundAnimations[i]->SetZoom( fZoom );
}
} }
+22 -14
View File
@@ -21,6 +21,18 @@
GameState* GAMESTATE = NULL; // global and accessable from anywhere in our program GameState* GAMESTATE = NULL; // global and accessable from anywhere in our program
#define STAGE_COLOR_DEMO THEME->GetMetricC("GameState","StageColorDemo")
#define STAGE_COLOR_NORMAL THEME->GetMetricC("GameState","StageColorNormal")
#define STAGE_COLOR_FINAL THEME->GetMetricC("GameState","StageColorFinal")
#define STAGE_COLOR_EXTRA1 THEME->GetMetricC("GameState","StageColorExtra1")
#define STAGE_COLOR_EXTRA2 THEME->GetMetricC("GameState","StageColorExtra2")
#define STAGE_COLOR_ONI THEME->GetMetricC("GameState","StageColorOni")
#define STAGE_TEXT_DEMO THEME->GetMetric("GameState","StageTextDemo")
#define STAGE_TEXT_FINAL THEME->GetMetric("GameState","StageTextFinal")
#define STAGE_TEXT_EXTRA1 THEME->GetMetric("GameState","StageTextExtra1")
#define STAGE_TEXT_EXTRA2 THEME->GetMetric("GameState","StageTextExtra2")
GameState::GameState() GameState::GameState()
{ {
m_CurGame = GAME_DANCE; m_CurGame = GAME_DANCE;
@@ -210,14 +222,10 @@ bool GameState::IsExtraStage2()
CString GameState::GetStageText() CString GameState::GetStageText()
{ {
if( m_bDemonstration ) if( m_bDemonstration ) return STAGE_TEXT_DEMO;
return "Demo"; else if( IsFinalStage() ) return STAGE_TEXT_FINAL;
else if( IsFinalStage() ) else if( IsExtraStage() ) return STAGE_TEXT_EXTRA1;
return "Final"; else if( IsExtraStage2() ) return STAGE_TEXT_EXTRA2;
else if( IsExtraStage() )
return "Extra";
else if( IsExtraStage2() )
return "Extra 2";
int iStageNo = m_iCurrentStageIndex+1; int iStageNo = m_iCurrentStageIndex+1;
@@ -243,12 +251,12 @@ CString GameState::GetStageText()
D3DXCOLOR GameState::GetStageColor() D3DXCOLOR GameState::GetStageColor()
{ {
if( IsFinalStage() ) if( m_bDemonstration ) return STAGE_COLOR_DEMO;
return D3DXCOLOR(1,0.1f,0.1f,1); // red else if( m_PlayMode==PLAY_MODE_ONI || m_PlayMode==PLAY_MODE_ENDLESS ) return STAGE_COLOR_ONI;
else if( IsExtraStage() || IsExtraStage2() ) else if( IsFinalStage() ) return STAGE_COLOR_FINAL;
return D3DXCOLOR(1,1,0.3f,1); // yellow else if( IsExtraStage() ) return STAGE_COLOR_EXTRA1;
else else if( IsExtraStage2() ) return STAGE_COLOR_EXTRA2;
return D3DXCOLOR(0.3f,1,0.3f,1); // green else return STAGE_COLOR_NORMAL;
} }
GameDef* GameState::GetCurrentGameDef() GameDef* GameState::GetCurrentGameDef()
+12 -4
View File
@@ -16,16 +16,24 @@
#include "GameState.h" #include "GameState.h"
const float GRAY_ARROW_POP_UP_TIME = 0.15f; #define STEP_SECONDS THEME->GetMetricF("GrayArrow","StepSeconds")
#define STEP_ZOOM THEME->GetMetricF("GrayArrow","StepZoom")
float g_fStepSeconds, g_fStepZoom;
GrayArrow::GrayArrow() GrayArrow::GrayArrow()
{ {
g_fStepSeconds = STEP_SECONDS;
g_fStepZoom = STEP_ZOOM;
StopAnimating(); StopAnimating();
} }
void GrayArrow::Update( float fDeltaTime ) void GrayArrow::Update( float fDeltaTime )
{ {
ASSERT( Sprite::GetNumStates() > 0 ); // you forgot to call Load()
Sprite::Update( fDeltaTime ); Sprite::Update( fDeltaTime );
float fPercentIntoBeat = fmodf(GAMESTATE->m_fSongBeat,1); float fPercentIntoBeat = fmodf(GAMESTATE->m_fSongBeat,1);
@@ -38,7 +46,7 @@ void GrayArrow::Update( float fDeltaTime )
void GrayArrow::Step() void GrayArrow::Step()
{ {
SetZoom( 0.75f ); SetZoom( g_fStepZoom );
BeginTweening( GRAY_ARROW_POP_UP_TIME ); BeginTweening( g_fStepSeconds );
SetTweenZoom( 1.0f ); SetTweenZoom( 1 );
} }
-1
View File
@@ -82,7 +82,6 @@ void Judgement::SetJudgement( TapNoteScore score )
{ {
// falling down // falling down
m_sprJudgement.SetY( -20 ); m_sprJudgement.SetY( -20 );
//m_sprJudgement.SetZoom( 1.0f );
m_sprJudgement.BeginTweening( JUDGEMENT_DISPLAY_TIME ); m_sprJudgement.BeginTweening( JUDGEMENT_DISPLAY_TIME );
m_sprJudgement.SetTweenY( 20 ); m_sprJudgement.SetTweenY( 20 );
} }
+15 -3
View File
@@ -161,9 +161,6 @@ void WheelItemDisplay::LoadFromWheelItemData( WheelItemData* pWID )
{ {
m_TextBanner.LoadFromSong( m_pSong ); m_TextBanner.LoadFromSong( m_pSong );
D3DXCOLOR color = m_color; D3DXCOLOR color = m_color;
color.r += 0.15f;
color.g += 0.15f;
color.b += 0.15f;
m_TextBanner.SetDiffuseColor( color ); m_TextBanner.SetDiffuseColor( color );
m_MusicStatusDisplay.SetType( m_IconType ); m_MusicStatusDisplay.SetType( m_IconType );
RefreshGrades(); RefreshGrades();
@@ -814,6 +811,21 @@ void MusicWheel::Update( float fDeltaTime )
} }
} }
// If changed sort to "BEST", put selection on most popular song
if( GAMESTATE->m_SongSortOrder == SORT_MOST_PLAYED )
{
for( i=0; i<GetCurWheelItemDatas().GetSize(); i++ )
{
if( GetCurWheelItemDatas()[i].m_pSong != NULL )
{
m_iSelection = i;
break;
}
}
}
SCREENMAN->SendMessageToTopScreen( SM_SongChanged, 0 );
RebuildWheelItemDisplays(); RebuildWheelItemDisplays();
TweenOnScreen(); TweenOnScreen();
+46 -10
View File
@@ -24,6 +24,28 @@
#include "RageLog.h" #include "RageLog.h"
#define JUDGE_PERFECT_ZOOM_X THEME->GetMetricF("Player","JudgePerfectZoomX")
#define JUDGE_PERFECT_ZOOM_Y THEME->GetMetricF("Player","JudgePerfectZoomY")
#define JUDGE_GREAT_ZOOM_X THEME->GetMetricF("Player","JudgeGreatZoomX")
#define JUDGE_GREAT_ZOOM_Y THEME->GetMetricF("Player","JudgeGreatZoomY")
#define JUDGE_GOOD_ZOOM_X THEME->GetMetricF("Player","JudgeGoodZoomX")
#define JUDGE_GOOD_ZOOM_Y THEME->GetMetricF("Player","JudgeGoodZoomY")
#define JUDGE_BOO_ZOOM_X THEME->GetMetricF("Player","JudgeBooZoomX")
#define JUDGE_BOO_ZOOM_Y THEME->GetMetricF("Player","JudgeBooZoomY")
#define COMBO_JUDGE_TWEEN_SECONDS THEME->GetMetricF("Player","ComboJudgeTweenSeconds")
// cache because reading from theme metrics is slow
float g_fJudgePerfectZoomX,
g_fJudgePerfectZoomY,
g_fJudgeGreatZoomX,
g_fJudgeGreatZoomY,
g_fJudgeGoodZoomX,
g_fJudgeGoodZoomY,
g_fJudgeBooZoomX,
g_fJudgeBooZoomY,
g_fComboJudgeTweenSeconds;
// these two items are in the // these two items are in the
const float FRAME_JUDGE_AND_COMBO_Y = CENTER_Y; const float FRAME_JUDGE_AND_COMBO_Y = CENTER_Y;
const float JUDGEMENT_Y_OFFSET = -26; const float JUDGEMENT_Y_OFFSET = -26;
@@ -39,6 +61,18 @@ const float HOLD_ARROW_NG_TIME = 0.18f;
Player::Player() Player::Player()
{ {
// Update theme metrics cache
g_fJudgePerfectZoomX = JUDGE_PERFECT_ZOOM_X;
g_fJudgePerfectZoomY = JUDGE_PERFECT_ZOOM_Y;
g_fJudgeGreatZoomX = JUDGE_GREAT_ZOOM_X;
g_fJudgeGreatZoomY = JUDGE_GREAT_ZOOM_Y;
g_fJudgeGoodZoomX = JUDGE_GOOD_ZOOM_X;
g_fJudgeGoodZoomY = JUDGE_GOOD_ZOOM_Y;
g_fJudgeBooZoomX = JUDGE_BOO_ZOOM_X;
g_fJudgeBooZoomY = JUDGE_BOO_ZOOM_Y;
g_fComboJudgeTweenSeconds = COMBO_JUDGE_TWEEN_SECONDS;
m_PlayerNumber = PLAYER_INVALID; m_PlayerNumber = PLAYER_INVALID;
m_pLifeMeter = NULL; m_pLifeMeter = NULL;
@@ -352,7 +386,7 @@ void Player::Step( int col )
if( GAMESTATE->m_bDemonstration || PREFSMAN->m_bAutoPlay ) if( GAMESTATE->m_bDemonstration || PREFSMAN->m_bAutoPlay )
score = TNS_PERFECT; score = TNS_PERFECT;
bDestroyedNote = score >= TNS_GOOD; bDestroyedNote = (score >= TNS_GOOD);
bool bRowDestroyed = true; bool bRowDestroyed = true;
@@ -418,20 +452,22 @@ void Player::OnRowDestroyed( int col, int iIndexThatWasSteppedOn )
m_Judgement.SetJudgement( score ); m_Judgement.SetJudgement( score );
// zoom the judgement and combo like a heart beat // zoom the judgement and combo like a heart beat
float fStartZoom; float fStartZoomX, fStartZoomY;
switch( score ) switch( score )
{ {
case TNS_PERFECT: fStartZoom = 1.3f; break; case TNS_PERFECT: fStartZoomX = g_fJudgePerfectZoomX; fStartZoomY = g_fJudgePerfectZoomY; break;
case TNS_GREAT: fStartZoom = 1.2f; break; case TNS_GREAT: fStartZoomX = g_fJudgeGreatZoomX; fStartZoomY = g_fJudgeGreatZoomY; break;
case TNS_GOOD: fStartZoom = 1.1f; break; case TNS_GOOD: fStartZoomX = g_fJudgeGoodZoomX; fStartZoomY = g_fJudgeGoodZoomY; break;
case TNS_BOO: fStartZoom = 1.0f; break; case TNS_BOO: fStartZoomX = g_fJudgeBooZoomX; fStartZoomY = g_fJudgeBooZoomY; break;
} }
m_frameJudgement.SetZoom( fStartZoom ); m_frameJudgement.SetZoomX( fStartZoomX );
m_frameJudgement.BeginTweening( 0.1f ); m_frameJudgement.SetZoomY( fStartZoomY );
m_frameJudgement.BeginTweening( g_fComboJudgeTweenSeconds );
m_frameJudgement.SetTweenZoom( 1 ); m_frameJudgement.SetTweenZoom( 1 );
m_frameCombo.SetZoom( fStartZoom ); m_frameCombo.SetZoomX( fStartZoomX );
m_frameCombo.BeginTweening( 0.1f ); m_frameCombo.SetZoomY( fStartZoomY );
m_frameCombo.BeginTweening( g_fComboJudgeTweenSeconds );
m_frameCombo.SetTweenZoom( 1 ); m_frameCombo.SetTweenZoom( 1 );
} }
+31 -29
View File
@@ -744,24 +744,27 @@ void ScreenEvaluation::TweenOnScreen()
apActorsInBonusOrStageInfo[i]->SetTweenX( fOriginalX ); apActorsInBonusOrStageInfo[i]->SetTweenX( fOriginalX );
} }
m_sprGradeFrame[p].BeginTweening( MENU_ELEMENTS_TWEEN_TIME ); CArray<Actor*,Actor*> apActorsInGradeOrPercentFrame;
m_sprGradeFrame[p].SetTweenZoomY( 0 ); apActorsInGradeOrPercentFrame.Add( &m_sprBonusFrame[p] );
apActorsInGradeOrPercentFrame.Add( &m_sprGradeFrame[p] );
m_Grades[p].BeginTweening( MENU_ELEMENTS_TWEEN_TIME ); apActorsInGradeOrPercentFrame.Add( &m_Grades[p] );
m_Grades[p].SetTweenZoomY( 0 ); apActorsInGradeOrPercentFrame.Add( &m_sprPercentFrame[p] );
apActorsInGradeOrPercentFrame.Add( &m_textOniPercentLarge[p] );
m_textOniPercentLarge[p].BeginTweening( MENU_ELEMENTS_TWEEN_TIME ); apActorsInGradeOrPercentFrame.Add( &m_textOniPercentSmall[p] );
m_textOniPercentLarge[p].SetTweenZoomY( 0 ); apActorsInGradeOrPercentFrame.Add( &m_textNewRecord[p] );
for( i=0; i<apActorsInGradeOrPercentFrame.GetSize(); i++ )
m_textOniPercentSmall[p].BeginTweening( MENU_ELEMENTS_TWEEN_TIME ); {
m_textOniPercentSmall[p].SetTweenZoomY( 0 ); float fOriginalZoomY = apActorsInGradeOrPercentFrame[i]->GetZoomY();
apActorsInGradeOrPercentFrame[i]->SetZoomY( 0 );
m_textNewRecord[p].BeginTweening( MENU_ELEMENTS_TWEEN_TIME ); apActorsInGradeOrPercentFrame[i]->BeginTweening( MENU_ELEMENTS_TWEEN_TIME );
m_textNewRecord[p].SetTweenZoomY( 0 ); apActorsInGradeOrPercentFrame[i]->SetTweenZoomY( fOriginalZoomY );
}
} }
float fOriginalZoomY = m_textTryExtraStage.GetZoomY();
m_textTryExtraStage.SetZoomY( 0 );
m_textTryExtraStage.BeginTweening( MENU_ELEMENTS_TWEEN_TIME ); m_textTryExtraStage.BeginTweening( MENU_ELEMENTS_TWEEN_TIME );
m_textTryExtraStage.SetTweenZoomY( 0 ); m_textTryExtraStage.SetTweenZoomY( fOriginalZoomY );
} }
void ScreenEvaluation::TweenOffScreen() void ScreenEvaluation::TweenOffScreen()
@@ -821,20 +824,19 @@ void ScreenEvaluation::TweenOffScreen()
apActorsInBonusOrStageInfo[i]->SetTweenZoomY( 0 ); apActorsInBonusOrStageInfo[i]->SetTweenZoomY( 0 );
} }
m_sprGradeFrame[p].BeginTweening( MENU_ELEMENTS_TWEEN_TIME ); CArray<Actor*,Actor*> apActorsInGradeOrPercentFrame;
m_sprGradeFrame[p].SetTweenZoomY( 0 ); apActorsInGradeOrPercentFrame.Add( &m_sprBonusFrame[p] );
apActorsInGradeOrPercentFrame.Add( &m_sprGradeFrame[p] );
m_Grades[p].BeginTweening( MENU_ELEMENTS_TWEEN_TIME ); apActorsInGradeOrPercentFrame.Add( &m_Grades[p] );
m_Grades[p].SetTweenZoomY( 0 ); apActorsInGradeOrPercentFrame.Add( &m_sprPercentFrame[p] );
apActorsInGradeOrPercentFrame.Add( &m_textOniPercentLarge[p] );
m_textOniPercentLarge[p].BeginTweening( MENU_ELEMENTS_TWEEN_TIME ); apActorsInGradeOrPercentFrame.Add( &m_textOniPercentSmall[p] );
m_textOniPercentLarge[p].SetTweenZoomY( 0 ); apActorsInGradeOrPercentFrame.Add( &m_textNewRecord[p] );
for( i=0; i<apActorsInGradeOrPercentFrame.GetSize(); i++ )
m_textOniPercentSmall[p].BeginTweening( MENU_ELEMENTS_TWEEN_TIME ); {
m_textOniPercentSmall[p].SetTweenZoomY( 0 ); apActorsInGradeOrPercentFrame[i]->BeginTweening( MENU_ELEMENTS_TWEEN_TIME );
apActorsInGradeOrPercentFrame[i]->SetTweenZoomY( 0 );
m_textNewRecord[p].BeginTweening( MENU_ELEMENTS_TWEEN_TIME ); }
m_textNewRecord[p].SetTweenZoomY( 0 );
} }
m_textTryExtraStage.BeginTweening( MENU_ELEMENTS_TWEEN_TIME ); m_textTryExtraStage.BeginTweening( MENU_ELEMENTS_TWEEN_TIME );
+6 -5
View File
@@ -340,11 +340,12 @@ void ScreenEz2SelectStyle::MenuStart( PlayerNumber p )
// GAMESTATE->m_bPlayersCanJoin = false; // GAMESTATE->m_bPlayersCanJoin = false;
CString sCurStyleName = GAMESTATE->GetCurrentStyleDef()->m_szName; CString sCurStyleName = GAMESTATE->GetCurrentStyleDef()->m_szName;
if( 0==stricmp(sCurStyleName,"single") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment single") ); sCurStyleName.MakeLower();
else if( 0==stricmp(sCurStyleName,"versus") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment versus") ); if( -1!=sCurStyleName.Find("single") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment single") );
else if( 0==stricmp(sCurStyleName,"double") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment double") ); else if( -1!=sCurStyleName.Find("versus") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment versus") );
else if( 0==stricmp(sCurStyleName,"couple") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment couple") ); else if( -1!=sCurStyleName.Find("double") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment double") );
else if( 0==stricmp(sCurStyleName,"solo") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment solo") ); else if( -1!=sCurStyleName.Find("couple") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment couple") );
else if( -1!=sCurStyleName.Find("solo") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment solo") );
m_Menu.TweenOffScreenToMenu( SM_GoToNextScreen ); m_Menu.TweenOffScreenToMenu( SM_GoToNextScreen );
+77 -95
View File
@@ -196,6 +196,13 @@ ScreenGameplay::ScreenGameplay()
{ {
LOG->Trace( "ScreenGameplay::ScreenGameplay()" ); LOG->Trace( "ScreenGameplay::ScreenGameplay()" );
for( int p=0; p<NUM_PLAYERS; p++ )
{
m_pLifeMeter[p] = NULL;
m_pScoreDisplay[p] = NULL;
}
MUSIC->Stop(); MUSIC->Stop();
GAMESTATE->ResetStageStatistics(); // clear values GAMESTATE->ResetStageStatistics(); // clear values
@@ -296,20 +303,6 @@ ScreenGameplay::ScreenGameplay()
m_pLifeMeter[p]->Load( (PlayerNumber)p ); m_pLifeMeter[p]->Load( (PlayerNumber)p );
m_pLifeMeter[p]->SetXY( LIFE_X(p), LIFE_Y(p,bExtra) ); m_pLifeMeter[p]->SetXY( LIFE_X(p), LIFE_Y(p,bExtra) );
this->AddSubActor( m_pLifeMeter[p] ); this->AddSubActor( m_pLifeMeter[p] );
/*
Chris: EZ2 should change positions via Theme metrics
if( GAMESTATE->m_CurGame == GAME_EZ2 )
{
m_pScoreDisplay[p] = new ScoreDisplayNormal;
m_pScoreDisplay[p]->SetXY( SCORE_LOCALEZ2_X[p], SCORE_LOCALEZ2_Y[p] );
m_pScoreDisplay[p]->SetZoom( 0.5f );
m_pScoreDisplay[p]->SetDiffuseColor( PlayerToColor(p) );
m_frameTop.AddSubActor( m_pScoreDisplay[p] );
}
*/
} }
// TopFrame goes above LifeMeter // TopFrame goes above LifeMeter
@@ -330,7 +323,7 @@ ScreenGameplay::ScreenGameplay()
m_textCourseSongNumber[p].TurnShadowOff(); m_textCourseSongNumber[p].TurnShadowOff();
m_textCourseSongNumber[p].SetXY( SONG_NUMBER_X(p), SONG_NUMBER_Y(p,bExtra) ); m_textCourseSongNumber[p].SetXY( SONG_NUMBER_X(p), SONG_NUMBER_Y(p,bExtra) );
m_textCourseSongNumber[p].SetText( "" ); m_textCourseSongNumber[p].SetText( "" );
m_textCourseSongNumber[p].SetDiffuseColor( D3DXCOLOR(0.8f,0.8f,1,1) ); // light blue m_textCourseSongNumber[p].SetDiffuseColor( GAMESTATE->GetStageColor() ); // light blue
} }
switch( GAMESTATE->m_PlayMode ) switch( GAMESTATE->m_PlayMode )
@@ -349,33 +342,18 @@ ScreenGameplay::ScreenGameplay()
} }
////////////////////////////////// //
// Add all Actors to m_frameBottom // Add all Actors in bottom frame
////////////////////////////////// //
m_sprBottomFrame.Load( THEME->GetPathTo("Graphics",bExtra?"gameplay extra bottom frame":"gameplay bottom frame") ); m_sprBottomFrame.Load( THEME->GetPathTo("Graphics",bExtra?"gameplay extra bottom frame":"gameplay bottom frame") );
m_sprBottomFrame.SetXY( BOTTOM_FRAME_X, bExtra ? BOTTOM_FRAME_EXTRA_Y : BOTTOM_FRAME_Y ); m_sprBottomFrame.SetXY( BOTTOM_FRAME_X, bExtra ? BOTTOM_FRAME_EXTRA_Y : BOTTOM_FRAME_Y );
this->AddSubActor( &m_sprBottomFrame ); this->AddSubActor( &m_sprBottomFrame );
/*
Chris: Change this position using theme metrics
if( GAMESTATE->m_CurGame != GAME_EZ2 )
{
m_sprBottomFrame.Load( THEME->GetPathTo(GRAPHIC_GAMEPLAY_BOTTOM_FRAME) );
m_frameBottom.AddSubActor( &m_sprBottomFrame );
m_frameBottom.SetXY( CENTER_X, SCREEN_BOTTOM - m_sprBottomFrame.GetZoomedHeight()/2 );
}
*/
for( p=0; p<NUM_PLAYERS; p++ ) for( p=0; p<NUM_PLAYERS; p++ )
{ {
/* Chris: I don't understand why EZ2 wouldn't want this. if( !GAMESTATE->IsPlayerEnabled(PlayerNumber(p)) )
continue;
if( GAMESTATE->m_CurGame != GAME_EZ2 )
{
*/
switch( GAMESTATE->m_PlayMode ) switch( GAMESTATE->m_PlayMode )
{ {
case PLAY_MODE_ARCADE: case PLAY_MODE_ARCADE:
@@ -394,25 +372,6 @@ ScreenGameplay::ScreenGameplay()
m_pScoreDisplay[p]->SetZoom( 0.8f ); m_pScoreDisplay[p]->SetZoom( 0.8f );
m_pScoreDisplay[p]->SetDiffuseColor( PlayerToColor(p) ); m_pScoreDisplay[p]->SetDiffuseColor( PlayerToColor(p) );
this->AddSubActor( m_pScoreDisplay[p] ); this->AddSubActor( m_pScoreDisplay[p] );
/*
}
*/
m_textPlayerOptions[p].LoadFromFont( THEME->GetPathTo("Fonts","normal") );
if( !GAMESTATE->IsPlayerEnabled(PlayerNumber(p)) )
continue;
/* Chris: EZ2 should control this with theme metrics
if( GAMESTATE->m_CurGame != GAME_EZ2 )
{
*/
m_pScoreDisplay[p]->SetXY( SCORE_X(p), SCORE_Y(p,bExtra) );
m_pScoreDisplay[p]->SetZoom( 0.8f );
m_pScoreDisplay[p]->SetDiffuseColor( PlayerToColor(p) );
this->AddSubActor( m_pScoreDisplay[p] );
// }
m_textPlayerOptions[p].LoadFromFont( THEME->GetPathTo("Fonts","normal") ); m_textPlayerOptions[p].LoadFromFont( THEME->GetPathTo("Fonts","normal") );
m_textPlayerOptions[p].TurnShadowOff(); m_textPlayerOptions[p].TurnShadowOff();
@@ -421,7 +380,6 @@ ScreenGameplay::ScreenGameplay()
m_textPlayerOptions[p].SetDiffuseColor( D3DXCOLOR(1,1,1,1) ); m_textPlayerOptions[p].SetDiffuseColor( D3DXCOLOR(1,1,1,1) );
m_textPlayerOptions[p].SetText( GAMESTATE->m_PlayerOptions[p].GetString() ); m_textPlayerOptions[p].SetText( GAMESTATE->m_PlayerOptions[p].GetString() );
this->AddSubActor( &m_textPlayerOptions[p] ); this->AddSubActor( &m_textPlayerOptions[p] );
//}
} }
m_textSongOptions.LoadFromFont( THEME->GetPathTo("Fonts","normal") ); m_textSongOptions.LoadFromFont( THEME->GetPathTo("Fonts","normal") );
@@ -441,30 +399,6 @@ ScreenGameplay::ScreenGameplay()
if( !GAMESTATE->IsPlayerEnabled(PlayerNumber(p)) ) if( !GAMESTATE->IsPlayerEnabled(PlayerNumber(p)) )
continue; continue;
// CONFLICT RESOLUTION:
// BY ANDY
// <<<<<<< ScreenGameplay.cpp
// =======
// YOURS:
/*
float fDifficultyY = DIFFICULTY_Y[p];
if( GAMESTATE->m_PlayerOptions[p].m_bReverseScroll )
fDifficultyY = SCREEN_HEIGHT - DIFFICULTY_Y[p] -10; // HACK: move difficulty banner up 10 if reverse
m_DifficultyBanner[p].SetXY( DIFFICULTY_X[p], fDifficultyY );
this->AddSubActor( &m_DifficultyBanner[p] );
*/
//>>>>>>> 1.32 MINE
/*
if( GAMESTATE->m_CurGame != GAME_EZ2 )
{
float fDifficultyY = DIFFICULTY_Y[p];
if( GAMESTATE->m_PlayerOptions[p].m_bReverseScroll )
fDifficultyY = SCREEN_HEIGHT - DIFFICULTY_Y[p];
m_DifficultyBanner[p].SetXY( DIFFICULTY_X[p], fDifficultyY );
this->AddSubActor( &m_DifficultyBanner[p] );
}
*/
// HOW I THINK IT SHOULD BE FIXED:
m_DifficultyBanner[p].SetXY( DIFFICULTY_X(p), DIFFICULTY_Y(p,bReverse[p],bExtra) ); m_DifficultyBanner[p].SetXY( DIFFICULTY_X(p), DIFFICULTY_Y(p,bReverse[p],bExtra) );
this->AddSubActor( &m_DifficultyBanner[p] ); this->AddSubActor( &m_DifficultyBanner[p] );
} }
@@ -550,26 +484,27 @@ ScreenGameplay::ScreenGameplay()
else else
m_announcerHereWeGo.Load( ANNOUNCER->GetPathTo("gameplay here we go normal") ); m_announcerHereWeGo.Load( ANNOUNCER->GetPathTo("gameplay here we go normal") );
m_announcerDanger.Load( ANNOUNCER->GetPathTo("gameplay comment danger") ); m_announcerDanger.Load( ANNOUNCER->GetPathTo("gameplay comment danger") );
m_announcerGood.Load( ANNOUNCER->GetPathTo("gameplay comment goood") ); m_announcerGood.Load( ANNOUNCER->GetPathTo("gameplay comment good") );
m_announcerHot.Load( ANNOUNCER->GetPathTo("gameplay comment hot") ); m_announcerHot.Load( ANNOUNCER->GetPathTo("gameplay comment hot") );
m_announcer100Combo.Load( ANNOUNCER->GetPathTo("gameplay comment 100 combo") ); m_announcer100Combo.Load( ANNOUNCER->GetPathTo("gameplay 100 combo") );
m_announcer200Combo.Load( ANNOUNCER->GetPathTo("gameplay comment 200 combo") ); m_announcer200Combo.Load( ANNOUNCER->GetPathTo("gameplay 200 combo") );
m_announcer300Combo.Load( ANNOUNCER->GetPathTo("gameplay comment 300 combo") ); m_announcer300Combo.Load( ANNOUNCER->GetPathTo("gameplay 300 combo") );
m_announcer400Combo.Load( ANNOUNCER->GetPathTo("gameplay comment 400 combo") ); m_announcer400Combo.Load( ANNOUNCER->GetPathTo("gameplay 400 combo") );
m_announcer500Combo.Load( ANNOUNCER->GetPathTo("gameplay comment 500 combo") ); m_announcer500Combo.Load( ANNOUNCER->GetPathTo("gameplay 500 combo") );
m_announcer600Combo.Load( ANNOUNCER->GetPathTo("gameplay comment 600 combo") ); m_announcer600Combo.Load( ANNOUNCER->GetPathTo("gameplay 600 combo") );
m_announcer700Combo.Load( ANNOUNCER->GetPathTo("gameplay comment 700 combo") ); m_announcer700Combo.Load( ANNOUNCER->GetPathTo("gameplay 700 combo") );
m_announcer800Combo.Load( ANNOUNCER->GetPathTo("gameplay comment 800 combo") ); m_announcer800Combo.Load( ANNOUNCER->GetPathTo("gameplay 800 combo") );
m_announcer900Combo.Load( ANNOUNCER->GetPathTo("gameplay comment 900 combo") ); m_announcer900Combo.Load( ANNOUNCER->GetPathTo("gameplay 900 combo") );
m_announcer1000Combo.Load( ANNOUNCER->GetPathTo("gameplay comment 1000 combo") ); m_announcer1000Combo.Load( ANNOUNCER->GetPathTo("gameplay 1000 combo") );
m_announcerComboStopped.Load( ANNOUNCER->GetPathTo("gameplay comment combo stopped") ); m_announcerComboStopped.Load( ANNOUNCER->GetPathTo("gameplay combo stopped") );
} }
m_iRowLastCrossed = -1; m_iRowLastCrossed = -1;
m_soundAssistTick.Load( THEME->GetPathTo("Sounds","gameplay assist tick") ); m_soundAssistTick.Load( THEME->GetPathTo("Sounds","gameplay assist tick") );
TweenOnScreen();
LoadNextSong( true ); LoadNextSong( true );
@@ -594,8 +529,8 @@ ScreenGameplay::~ScreenGameplay()
for( int p=0; p<NUM_PLAYERS; p++ ) for( int p=0; p<NUM_PLAYERS; p++ )
{ {
delete m_pLifeMeter[p]; SAFE_DELETE( m_pLifeMeter[p] );
delete m_pScoreDisplay[p]; SAFE_DELETE( m_pScoreDisplay[p] );
} }
m_soundMusic.Stop(); m_soundMusic.Stop();
@@ -784,7 +719,7 @@ void ScreenGameplay::Update( float fDeltaTime )
// //
// Check for end of song // Check for end of song
// //
if( fSongBeat > GAMESTATE->m_pCurSong->m_fLastBeat+4 && !m_soundMusic.IsPlaying() ) if( fSongBeat > GAMESTATE->m_pCurSong->m_fLastBeat+2 && !m_soundMusic.IsPlaying() )
{ {
GAMESTATE->m_fSongBeat = 0; GAMESTATE->m_fSongBeat = 0;
m_soundMusic.Stop(); m_soundMusic.Stop();
@@ -898,7 +833,6 @@ void ScreenGameplay::Update( float fDeltaTime )
if( !GAMESTATE->IsPlayerEnabled( (PlayerNumber)p ) ) if( !GAMESTATE->IsPlayerEnabled( (PlayerNumber)p ) )
continue; // skip continue; // skip
m_Player[p].CrossedRow( r );
bAnyoneHasANote |= m_Player[p].IsThereANoteAtRow( r ); bAnyoneHasANote |= m_Player[p].IsThereANoteAtRow( r );
break; // this will only play the tick for the first player that is joined break; // this will only play the tick for the first player that is joined
} }
@@ -1478,7 +1412,55 @@ void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM )
void ScreenGameplay::TweenOnScreen() void ScreenGameplay::TweenOnScreen()
{ {
int i, p;
CArray<Actor*,Actor*> apActorsInTopFrame;
apActorsInTopFrame.Add( &m_sprTopFrame );
for( p=0; p<NUM_PLAYERS; p++ )
apActorsInTopFrame.Add( m_pLifeMeter[p] );
apActorsInTopFrame.Add( &m_textStageNumber );
for( p=0; p<NUM_PLAYERS; p++ )
apActorsInTopFrame.Add( &m_textCourseSongNumber[p] );
for( i=0; i<apActorsInTopFrame.GetSize(); i++ )
{
float fOriginalY = apActorsInTopFrame[i]->GetY();
apActorsInTopFrame[i]->SetY( fOriginalY-100 );
if( !GAMESTATE->m_bDemonstration )
apActorsInTopFrame[i]->BeginTweeningQueued( 0.5f ); // sleep
apActorsInTopFrame[i]->BeginTweeningQueued( 1 );
apActorsInTopFrame[i]->SetTweenY( fOriginalY );
}
CArray<Actor*,Actor*> apActorsInBottomFrame;
apActorsInBottomFrame.Add( &m_sprBottomFrame );
for( p=0; p<NUM_PLAYERS; p++ )
{
if( !GAMESTATE->IsPlayerEnabled(p) )
continue;
apActorsInBottomFrame.Add( m_pScoreDisplay[p] );
apActorsInBottomFrame.Add( &m_textPlayerOptions[p] );
}
apActorsInBottomFrame.Add( &m_textSongOptions );
for( i=0; i<apActorsInBottomFrame.GetSize(); i++ )
{
float fOriginalY = apActorsInBottomFrame[i]->GetY();
apActorsInBottomFrame[i]->SetY( fOriginalY+100 );
if( !GAMESTATE->m_bDemonstration )
apActorsInBottomFrame[i]->BeginTweeningQueued( 0.5f ); // sleep
apActorsInBottomFrame[i]->BeginTweeningQueued( 1 );
apActorsInBottomFrame[i]->SetTweenY( fOriginalY );
}
for( p=0; p<NUM_PLAYERS; p++ )
{
float fOriginalX = m_DifficultyBanner[p].GetX();
m_DifficultyBanner[p].SetX( (p==PLAYER_1) ? fOriginalX-200 : fOriginalX+200 );
if( !GAMESTATE->m_bDemonstration )
m_DifficultyBanner[p].BeginTweeningQueued( 0.5f ); // sleep
m_DifficultyBanner[p].BeginTweeningQueued( 1 );
m_DifficultyBanner[p].SetTweenX( fOriginalX );
}
} }
void ScreenGameplay::TweenOffScreen() void ScreenGameplay::TweenOffScreen()
+6 -1
View File
@@ -26,7 +26,8 @@
#define NEXT_SCREEN_ONI THEME->GetMetric("ScreenHowToPlay","NextScreenOni") #define NEXT_SCREEN_ONI THEME->GetMetric("ScreenHowToPlay","NextScreenOni")
const ScreenMessage SM_GoToNextScreen = ScreenMessage(SM_User + 1); const ScreenMessage SM_GoToPrevScreen = ScreenMessage(SM_User+1);
const ScreenMessage SM_GoToNextScreen = ScreenMessage(SM_User+2);
ScreenHowToPlay::ScreenHowToPlay() ScreenHowToPlay::ScreenHowToPlay()
@@ -102,6 +103,9 @@ void ScreenHowToPlay::HandleScreenMessage( const ScreenMessage SM )
case SM_MenuTimer: case SM_MenuTimer:
this->MenuStart(PLAYER_1); this->MenuStart(PLAYER_1);
break; break;
case SM_GoToPrevScreen:
SCREENMAN->SetNewScreen( "ScreenTitleMenu" );
break;
case SM_GoToNextScreen: case SM_GoToNextScreen:
switch( GAMESTATE->m_PlayMode ) switch( GAMESTATE->m_PlayMode )
{ {
@@ -121,6 +125,7 @@ void ScreenHowToPlay::HandleScreenMessage( const ScreenMessage SM )
void ScreenHowToPlay::MenuBack( PlayerNumber p ) void ScreenHowToPlay::MenuBack( PlayerNumber p )
{ {
m_Menu.TweenOffScreenToBlack( SM_GoToPrevScreen, true );
} }
void ScreenHowToPlay::MenuStart( PlayerNumber p ) void ScreenHowToPlay::MenuStart( PlayerNumber p )
+2
View File
@@ -96,10 +96,12 @@ ScreenSelectCourse::ScreenSelectCourse()
m_textNumStages.LoadFromFont( THEME->GetPathTo("Fonts","header1") ); m_textNumStages.LoadFromFont( THEME->GetPathTo("Fonts","header1") );
m_textNumStages.SetXY( STAGES_X, STAGES_Y ); m_textNumStages.SetXY( STAGES_X, STAGES_Y );
m_textNumStages.TurnShadowOff();
this->AddSubActor( &m_textNumStages ); this->AddSubActor( &m_textNumStages );
m_textTime.LoadFromFont( THEME->GetPathTo("Fonts","header1") ); m_textTime.LoadFromFont( THEME->GetPathTo("Fonts","header1") );
m_textTime.SetXY( TIME_X, TIME_Y ); m_textTime.SetXY( TIME_X, TIME_Y );
m_textTime.TurnShadowOff();
this->AddSubActor( &m_textTime ); this->AddSubActor( &m_textTime );
m_CourseContentsFrame.SetXY( CONTENTS_X, CONTENTS_Y ); m_CourseContentsFrame.SetXY( CONTENTS_X, CONTENTS_Y );
+14 -7
View File
@@ -50,7 +50,8 @@ const float LOCK_INPUT_TIME = 0.30f; // lock input while waiting for tweening to
#define CURSOR_SHADOW_LENGTH_Y THEME->GetMetricF("ScreenSelectDifficulty","CursorShadowLengthY") #define CURSOR_SHADOW_LENGTH_Y THEME->GetMetricF("ScreenSelectDifficulty","CursorShadowLengthY")
#define HELP_TEXT THEME->GetMetric("ScreenSelectDifficulty","HelpText") #define HELP_TEXT THEME->GetMetric("ScreenSelectDifficulty","HelpText")
#define TIMER_SECONDS THEME->GetMetricI("ScreenSelectDifficulty","TimerSeconds") #define TIMER_SECONDS THEME->GetMetricI("ScreenSelectDifficulty","TimerSeconds")
#define NEXT_SCREEN THEME->GetMetric("ScreenSelectDifficulty","NextScreen") #define NEXT_SCREEN_ARCADE THEME->GetMetric("ScreenSelectDifficulty","NextScreenArcade")
#define NEXT_SCREEN_ONI THEME->GetMetric("ScreenSelectDifficulty","NextScreenOni")
float MORE_X( int iIndex ) { float MORE_X( int iIndex ) {
@@ -300,12 +301,18 @@ void ScreenSelectDifficulty::HandleScreenMessage( const ScreenMessage SM )
ASSERT(0); // bad selection ASSERT(0); // bad selection
} }
if(GAMESTATE->m_PlayMode == PLAY_MODE_ONI || switch( GAMESTATE->m_PlayMode )
GAMESTATE->m_PlayMode == PLAY_MODE_ENDLESS) {
SCREENMAN->SetNewScreen( "ScreenSelectCourse" ); case PLAY_MODE_ARCADE:
else SCREENMAN->SetNewScreen( NEXT_SCREEN_ARCADE );
SCREENMAN->SetNewScreen( "ScreenSelectGroup" ); break;
case PLAY_MODE_ONI:
case PLAY_MODE_ENDLESS:
SCREENMAN->SetNewScreen( NEXT_SCREEN_ONI );
break;
default:
ASSERT(0);
}
break; break;
case SM_StartTweeningOffScreen: case SM_StartTweeningOffScreen:
TweenOffScreen(); TweenOffScreen();
+2 -14
View File
@@ -37,8 +37,7 @@
#define CONTENTS_Y THEME->GetMetricF("ScreenSelectGroup","ContentsY") #define CONTENTS_Y THEME->GetMetricF("ScreenSelectGroup","ContentsY")
#define HELP_TEXT THEME->GetMetric("ScreenSelectGroup","HelpText") #define HELP_TEXT THEME->GetMetric("ScreenSelectGroup","HelpText")
#define TIMER_SECONDS THEME->GetMetricI("ScreenSelectGroup","TimerSeconds") #define TIMER_SECONDS THEME->GetMetricI("ScreenSelectGroup","TimerSeconds")
#define NEXT_SCREEN_ARCADE THEME->GetMetric("ScreenSelectGroup","NextScreenArcade") #define NEXT_SCREEN THEME->GetMetric("ScreenSelectGroup","NextScreen")
#define NEXT_SCREEN_ONI THEME->GetMetric("ScreenSelectGroup","NextScreenOni")
const ScreenMessage SM_GoToPrevScreen = ScreenMessage(SM_User + 1); const ScreenMessage SM_GoToPrevScreen = ScreenMessage(SM_User + 1);
@@ -206,18 +205,7 @@ void ScreenSelectGroup::HandleScreenMessage( const ScreenMessage SM )
SCREENMAN->SetNewScreen( "ScreenTitleMenu" ); SCREENMAN->SetNewScreen( "ScreenTitleMenu" );
break; break;
case SM_GoToNextScreen: case SM_GoToNextScreen:
switch( GAMESTATE->m_PlayMode ) SCREENMAN->SetNewScreen( NEXT_SCREEN );
{
case PLAY_MODE_ARCADE:
SCREENMAN->SetNewScreen( NEXT_SCREEN_ARCADE );
break;
case PLAY_MODE_ONI:
case PLAY_MODE_ENDLESS:
SCREENMAN->SetNewScreen( NEXT_SCREEN_ONI );
break;
default:
ASSERT(0);
}
break; break;
case SM_StartFadingOut: case SM_StartFadingOut:
m_Menu.TweenOffScreenToMenu( SM_GoToNextScreen ); m_Menu.TweenOffScreenToMenu( SM_GoToNextScreen );
+72 -29
View File
@@ -69,6 +69,7 @@
#define SONG_OPTIONS_Y THEME->GetMetricF("ScreenSelectMusic","SongOptionsY") #define SONG_OPTIONS_Y THEME->GetMetricF("ScreenSelectMusic","SongOptionsY")
#define HELP_TEXT THEME->GetMetric("ScreenSelectMusic","HelpText") #define HELP_TEXT THEME->GetMetric("ScreenSelectMusic","HelpText")
#define TIMER_SECONDS THEME->GetMetricI("ScreenSelectMusic","TimerSeconds") #define TIMER_SECONDS THEME->GetMetricI("ScreenSelectMusic","TimerSeconds")
#define SCORE_CONNECTED_TO_MUSIC_WHEEL THEME->GetMetricB("ScreenSelectMusic","ScoreConnectedToMusicWheel")
const float TWEEN_TIME = 0.5f; const float TWEEN_TIME = 0.5f;
@@ -290,16 +291,20 @@ void ScreenSelectMusic::DrawPrimitives()
void ScreenSelectMusic::TweenOnScreen() void ScreenSelectMusic::TweenOnScreen()
{ {
float fOriginalZoomY; float fOriginalZoomY;
Actor* pActorsInGroupInfoFrame[] = { &m_sprBannerFrame, &m_Banner, &m_BPMDisplay, &m_textStage, &m_sprCDTitle };
const int iNumActorsInGroupInfoFrame = sizeof(pActorsInGroupInfoFrame) / sizeof(Actor*);
int i; int i;
for( i=0; i<iNumActorsInGroupInfoFrame; i++ )
CArray<Actor*,Actor*> apActorsInGroupInfoFrame;
apActorsInGroupInfoFrame.Add( &m_sprBannerFrame );
apActorsInGroupInfoFrame.Add( &m_Banner );
apActorsInGroupInfoFrame.Add( &m_BPMDisplay );
apActorsInGroupInfoFrame.Add( &m_textStage );
apActorsInGroupInfoFrame.Add( &m_sprCDTitle );
for( i=0; i<apActorsInGroupInfoFrame.GetSize(); i++ )
{ {
float fOriginalX = pActorsInGroupInfoFrame[i]->GetX(); float fOriginalX = apActorsInGroupInfoFrame[i]->GetX();
pActorsInGroupInfoFrame[i]->SetX( fOriginalX-400 ); apActorsInGroupInfoFrame[i]->SetX( fOriginalX-400 );
pActorsInGroupInfoFrame[i]->BeginTweening( TWEEN_TIME, TWEEN_BOUNCE_END ); apActorsInGroupInfoFrame[i]->BeginTweening( TWEEN_TIME, TWEEN_BOUNCE_END );
pActorsInGroupInfoFrame[i]->SetTweenX( fOriginalX ); apActorsInGroupInfoFrame[i]->SetTweenX( fOriginalX );
} }
fOriginalZoomY = m_sprDifficultyFrame.GetZoomY(); fOriginalZoomY = m_sprDifficultyFrame.GetZoomY();
@@ -335,14 +340,18 @@ void ScreenSelectMusic::TweenOnScreen()
m_MusicSortDisplay.BeginTweening( TWEEN_TIME ); m_MusicSortDisplay.BeginTweening( TWEEN_TIME );
m_MusicSortDisplay.SetTweenDiffuseColor( D3DXCOLOR(1,1,1,1) ); m_MusicSortDisplay.SetTweenDiffuseColor( D3DXCOLOR(1,1,1,1) );
Actor* pActorsInScore[] = { &m_sprHighScoreFrame[0], &m_sprHighScoreFrame[1], &m_HighScore[0], &m_HighScore[1] }; CArray<Actor*,Actor*> apActorsInScore;
const int iNumActorsInScore = sizeof(pActorsInScore) / sizeof(Actor*); for( int p=0; p<NUM_PLAYERS; p++ )
for( i=0; i<iNumActorsInScore; i++ )
{ {
float fOriginalX = pActorsInScore[i]->GetX(); apActorsInScore.Add( &m_sprHighScoreFrame[p] );
pActorsInScore[i]->SetX( fOriginalX+400 ); apActorsInScore.Add( &m_HighScore[p] );
pActorsInScore[i]->BeginTweening( TWEEN_TIME, TWEEN_BIAS_END ); }
pActorsInScore[i]->SetTweenX( fOriginalX ); for( i=0; i<apActorsInScore.GetSize(); i++ )
{
float fOriginalX = apActorsInScore[i]->GetX();
apActorsInScore[i]->SetX( SCORE_CONNECTED_TO_MUSIC_WHEEL ? fOriginalX+400 : fOriginalX-400 );
apActorsInScore[i]->BeginTweening( TWEEN_TIME, TWEEN_BIAS_END );
apActorsInScore[i]->SetTweenX( fOriginalX );
} }
m_MusicWheel.TweenOnScreen(); m_MusicWheel.TweenOnScreen();
@@ -350,13 +359,18 @@ void ScreenSelectMusic::TweenOnScreen()
void ScreenSelectMusic::TweenOffScreen() void ScreenSelectMusic::TweenOffScreen()
{ {
Actor* pActorsInGroupInfoFrame[] = { &m_sprBannerFrame, &m_Banner, &m_BPMDisplay, &m_textStage, &m_sprCDTitle };
const int iNumActorsInGroupInfoFrame = sizeof(pActorsInGroupInfoFrame) / sizeof(Actor*);
int i; int i;
for( i=0; i<iNumActorsInGroupInfoFrame; i++ )
CArray<Actor*,Actor*> apActorsInGroupInfoFrame;
apActorsInGroupInfoFrame.Add( &m_sprBannerFrame );
apActorsInGroupInfoFrame.Add( &m_Banner );
apActorsInGroupInfoFrame.Add( &m_BPMDisplay );
apActorsInGroupInfoFrame.Add( &m_textStage );
apActorsInGroupInfoFrame.Add( &m_sprCDTitle );
for( i=0; i<apActorsInGroupInfoFrame.GetSize(); i++ )
{ {
pActorsInGroupInfoFrame[i]->BeginTweeningQueued( TWEEN_TIME, TWEEN_BOUNCE_BEGIN ); apActorsInGroupInfoFrame[i]->BeginTweeningQueued( TWEEN_TIME, TWEEN_BOUNCE_BEGIN );
pActorsInGroupInfoFrame[i]->SetTweenX( pActorsInGroupInfoFrame[i]->GetX()-400 ); apActorsInGroupInfoFrame[i]->SetTweenX( apActorsInGroupInfoFrame[i]->GetX()-400 );
} }
m_sprDifficultyFrame.BeginTweening( TWEEN_TIME ); m_sprDifficultyFrame.BeginTweening( TWEEN_TIME );
@@ -386,17 +400,45 @@ void ScreenSelectMusic::TweenOffScreen()
m_MusicSortDisplay.BeginTweening( TWEEN_TIME ); m_MusicSortDisplay.BeginTweening( TWEEN_TIME );
m_MusicSortDisplay.SetTweenDiffuseColor( D3DXCOLOR(1,1,1,0) ); m_MusicSortDisplay.SetTweenDiffuseColor( D3DXCOLOR(1,1,1,0) );
Actor* pActorsInScore[] = { &m_sprHighScoreFrame[0], &m_sprHighScoreFrame[1], &m_HighScore[0], &m_HighScore[1] }; CArray<Actor*,Actor*> apActorsInScore;
const int iNumActorsInScore = sizeof(pActorsInScore) / sizeof(Actor*); for( int p=0; p<NUM_PLAYERS; p++ )
for( i=0; i<iNumActorsInScore; i++ )
{ {
pActorsInScore[i]->BeginTweening( TWEEN_TIME, TWEEN_BIAS_BEGIN ); apActorsInScore.Add( &m_sprHighScoreFrame[p] );
pActorsInScore[i]->SetTweenX( pActorsInScore[i]->GetX()+400 ); apActorsInScore.Add( &m_HighScore[p] );
}
for( i=0; i<apActorsInScore.GetSize(); i++ )
{
apActorsInScore[i]->BeginTweening( TWEEN_TIME, TWEEN_BIAS_END );
apActorsInScore[i]->SetTweenX( SCORE_CONNECTED_TO_MUSIC_WHEEL ? apActorsInScore[i]->GetX()+400 : apActorsInScore[i]->GetX()-400 );
} }
m_MusicWheel.TweenOffScreen(); m_MusicWheel.TweenOffScreen();
} }
void ScreenSelectMusic::TweenScoreOnAndOffAfterChangeSort()
{
if( !SCORE_CONNECTED_TO_MUSIC_WHEEL )
return; // do nothing
CArray<Actor*,Actor*> apActorsInScore;
for( int p=0; p<NUM_PLAYERS; p++ )
{
apActorsInScore.Add( &m_sprHighScoreFrame[p] );
apActorsInScore.Add( &m_HighScore[p] );
}
for( int i=0; i<apActorsInScore.GetSize(); i++ )
{
float fOriginalX = HIGH_SCORE_X(p);
apActorsInScore[i]->BeginTweening( TWEEN_TIME, TWEEN_BIAS_END ); // tween off screen
apActorsInScore[i]->SetTweenX( fOriginalX+400 );
apActorsInScore[i]->BeginTweeningQueued( 0.6f ); // sleep
apActorsInScore[i]->BeginTweeningQueued( 1, TWEEN_BIAS_BEGIN ); // tween back on screen
apActorsInScore[i]->SetTweenX( fOriginalX );
}
}
void ScreenSelectMusic::Update( float fDeltaTime ) void ScreenSelectMusic::Update( float fDeltaTime )
{ {
Screen::Update( fDeltaTime ); Screen::Update( fDeltaTime );
@@ -493,10 +535,11 @@ void ScreenSelectMusic::Input( const DeviceInput& DeviceI, const InputEventType
if( m_MusicWheel.NextSort() ) if( m_MusicWheel.NextSort() )
{ {
MUSIC->Stop(); MUSIC->Stop();
// tween music sort off screen
//m_MusicSortDisplay.SetEffectNone();
m_MusicSortDisplay.BeginTweening( 0.3f ); m_MusicSortDisplay.BeginTweening( 0.3f );
m_MusicSortDisplay.SetTweenDiffuseColor( D3DXCOLOR(1,1,1,0) ); m_MusicSortDisplay.SetTweenDiffuseColor( D3DXCOLOR(1,1,1,0) );
TweenScoreOnAndOffAfterChangeSort();
} }
return; return;
} }
@@ -631,10 +674,10 @@ void ScreenSelectMusic::MenuStart( PlayerNumber p )
{ {
MUSIC->Stop(); MUSIC->Stop();
// tween music sort off screen
//m_MusicSortDisplay.SetEffectNone();
m_MusicSortDisplay.BeginTweening( 0.3f ); m_MusicSortDisplay.BeginTweening( 0.3f );
m_MusicSortDisplay.SetTweenDiffuseColor( D3DXCOLOR(1,1,1,0) ); m_MusicSortDisplay.SetTweenDiffuseColor( D3DXCOLOR(1,1,1,0) );
TweenScoreOnAndOffAfterChangeSort();
} }
} }
return; return;
+8 -7
View File
@@ -36,15 +36,16 @@ public:
virtual void Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI ); virtual void Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI );
virtual void HandleScreenMessage( const ScreenMessage SM ); virtual void HandleScreenMessage( const ScreenMessage SM );
void TweenOnScreen(); virtual void MenuLeft( PlayerNumber p, const InputEventType type );
void TweenOffScreen(); virtual void MenuRight( PlayerNumber p, const InputEventType type );
virtual void MenuStart( PlayerNumber p );
void MenuLeft( PlayerNumber p, const InputEventType type ); virtual void MenuBack( PlayerNumber p );
void MenuRight( PlayerNumber p, const InputEventType type );
void MenuStart( PlayerNumber p );
void MenuBack( PlayerNumber p );
protected: protected:
void TweenOnScreen();
void TweenOffScreen();
void TweenScoreOnAndOffAfterChangeSort();
void EasierDifficulty( PlayerNumber p ); void EasierDifficulty( PlayerNumber p );
void HarderDifficulty( PlayerNumber p ); void HarderDifficulty( PlayerNumber p );
+6 -5
View File
@@ -244,11 +244,12 @@ void ScreenSelectStyle::MenuStart( PlayerNumber p )
GAMESTATE->m_CurStyle = GetSelectedStyle(); GAMESTATE->m_CurStyle = GetSelectedStyle();
CString sCurStyleName = GAMESTATE->GetCurrentStyleDef()->m_szName; CString sCurStyleName = GAMESTATE->GetCurrentStyleDef()->m_szName;
if( 0==stricmp(sCurStyleName,"single") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment single") ); sCurStyleName.MakeLower();
else if( 0==stricmp(sCurStyleName,"versus") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment versus") ); if( -1!=sCurStyleName.Find("single") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment single") );
else if( 0==stricmp(sCurStyleName,"double") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment double") ); else if( -1!=sCurStyleName.Find("versus") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment versus") );
else if( 0==stricmp(sCurStyleName,"couple") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment couple") ); else if( -1!=sCurStyleName.Find("double") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment double") );
else if( 0==stricmp(sCurStyleName,"solo") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment solo") ); else if( -1!=sCurStyleName.Find("couple") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment couple") );
else if( -1!=sCurStyleName.Find("solo") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment solo") );
m_Menu.TweenOffScreenToMenu( SM_GoToNextScreen ); m_Menu.TweenOffScreenToMenu( SM_GoToNextScreen );
+6 -5
View File
@@ -273,11 +273,12 @@ void ScreenSelectStyle5th::MenuStart( PlayerNumber p )
GAMESTATE->m_MasterPlayerNumber = p; GAMESTATE->m_MasterPlayerNumber = p;
CString sCurStyleName = GAMESTATE->GetCurrentStyleDef()->m_szName; CString sCurStyleName = GAMESTATE->GetCurrentStyleDef()->m_szName;
if( 0==stricmp(sCurStyleName,"single") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment single") ); sCurStyleName.MakeLower();
else if( 0==stricmp(sCurStyleName,"versus") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment versus") ); if( -1!=sCurStyleName.Find("single") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment single") );
else if( 0==stricmp(sCurStyleName,"double") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment double") ); else if( -1!=sCurStyleName.Find("versus") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment versus") );
else if( 0==stricmp(sCurStyleName,"couple") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment couple") ); else if( -1!=sCurStyleName.Find("double") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment double") );
else if( 0==stricmp(sCurStyleName,"solo") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment solo") ); else if( -1!=sCurStyleName.Find("couple") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment couple") );
else if( -1!=sCurStyleName.Find("solo") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment solo") );
this->ClearMessageQueue(); this->ClearMessageQueue();
+114 -105
View File
@@ -54,30 +54,9 @@ enum StageMode
ScreenStage::ScreenStage() ScreenStage::ScreenStage()
{ {
g_StageType = (StageType)STAGE_TYPE;
MUSIC->Stop(); MUSIC->Stop();
// g_StageType = (StageType)STAGE_TYPE;
// Init common graphics
//
for( int i=0; i<4; i++ )
{
m_sprNumbers[i].Load( THEME->GetPathTo("Graphics","stage numbers") );
m_sprNumbers[i].StopAnimating();
}
m_sprStage.Load( THEME->GetPathTo("Graphics","stage stage") ); // we may load a different graphic into here later
const float fStageHeight = m_sprStage.GetUnzoomedHeight();
const float fStageOffScreenY = CENTER_Y+fStageHeight;
m_quadMask.SetDiffuseColor( D3DXCOLOR(0,0,0,0) );
m_quadMask.StretchTo( CRect(SCREEN_LEFT, roundf(fStageOffScreenY-fStageHeight/2), SCREEN_RIGHT, roundf(fStageOffScreenY+fStageHeight/2)) );
m_quadMask.SetZ( -1 ); // important: fill Z buffer with values that will cause subsequent draws to fail the Z test
m_frameStage.SetXY( CENTER_X, fStageOffScreenY );
m_frameStage.BeginTweening(0.8f, Actor::TWEEN_BIAS_BEGIN );
m_frameStage.SetTweenY( CENTER_Y );
StageMode stage_mode; StageMode stage_mode;
@@ -117,28 +96,22 @@ ScreenStage::ScreenStage()
} }
// Andy -
// Is all this stuff only supposed to be initializing in MODE_NORMAL?
// The final stage screens look goofy in TYPE_PUMP and TYPE_EZ2 because of this.
// I'm going to make changes, but feel free to correct anything I good up.
// - Chris
int ez2Final=0; // if we're 0 it's not a final stage. if we're 1 it is. //
// why do this? Ez2dancer uses NORMAL for it's final stage but just re-arranges // Init common graphics
// the elements. so the following takes us into NORMAL and just re-arranges stuff //
// the ez2Final is so that when we're in normal we can go and see if we're really this->AddSubActor( &m_sprSongBackground ); // add background first so it draws bottom-most
// FINAL or not. at the end of normal, if we WERE FINAL, we set it back to final this->AddSubActor( &m_quadMask ); // add quad mask before stage so that it will block out the stage sprites
// hacky or what? =) this->AddSubActor( &m_frameStage );
if( g_StageType == STAGE_TYPE_EZ2 && stage_mode == MODE_FINAL )
{
for( int i=0; i<4; i++ ) for( int i=0; i<4; i++ )
{ {
m_sprNumbers[i].Load( THEME->GetPathTo("Graphics","stage numbers final") ); m_sprNumbers[i].Load( THEME->GetPathTo("Graphics","stage numbers") );
m_sprNumbers[i].StopAnimating(); m_sprNumbers[i].StopAnimating();
} }
ez2Final=1; m_sprStage.Load( THEME->GetPathTo("Graphics","stage stage") ); // we may load a different graphic into here later
stage_mode = MODE_NORMAL;
}
switch( stage_mode ) switch( stage_mode )
{ {
@@ -186,6 +159,100 @@ ScreenStage::ScreenStage()
} }
m_sprStage.SetX( fStageCenterX ); m_sprStage.SetX( fStageCenterX );
for( i=0; i<iNumChars; i++ )
m_frameStage.AddSubActor( &m_sprNumbers[i] );
m_frameStage.AddSubActor( &m_sprStage );
}
break;
case MODE_FINAL:
m_sprStage.Load( THEME->GetPathTo("Graphics","stage final") );
m_frameStage.AddSubActor( &m_sprStage );
break;
case MODE_EXTRA1:
m_sprStage.Load( THEME->GetPathTo("Graphics","stage extra1") );
m_frameStage.AddSubActor( &m_sprStage );
break;
case MODE_EXTRA2:
m_sprStage.Load( THEME->GetPathTo("Graphics","stage extra2") );
m_frameStage.AddSubActor( &m_sprStage );
break;
case MODE_ONI:
m_sprStage.Load( THEME->GetPathTo("Graphics","stage oni") );
m_frameStage.AddSubActor( &m_sprStage );
break;
case MODE_ENDLESS:
m_sprStage.Load( THEME->GetPathTo("Graphics","stage endless") );
m_frameStage.AddSubActor( &m_sprStage );
break;
default:
ASSERT(0);
}
this->AddSubActor( &m_Fade ); // fade should draw last, on top of everything else
m_Fade.SetOpened();
//
// Init dance-specific graphics
//
if( g_StageType == STAGE_TYPE_MAX )
{
const float fStageHeight = m_sprStage.GetUnzoomedHeight();
const float fStageOffScreenY = CENTER_Y+fStageHeight;
m_quadMask.SetDiffuseColor( D3DXCOLOR(0,0,0,0) );
m_quadMask.StretchTo( CRect(SCREEN_LEFT, roundf(fStageOffScreenY-fStageHeight/2), SCREEN_RIGHT, roundf(fStageOffScreenY+fStageHeight/2)) );
m_quadMask.SetZ( -1 ); // important: fill Z buffer with values that will cause subsequent draws to fail the Z test
m_frameStage.SetXY( CENTER_X, fStageOffScreenY );
m_frameStage.BeginTweening(0.8f, Actor::TWEEN_BIAS_BEGIN );
m_frameStage.SetTweenY( CENTER_Y );
}
//
// Init pump-sepecific graphics
//
if( g_StageType == STAGE_TYPE_PUMP )
{
Song* pSong = GAMESTATE->m_pCurSong;
m_sprSongBackground.Load( (pSong && pSong->HasBackground()) ? pSong->GetBackgroundPath() : THEME->GetPathTo("Graphics","fallback background") );
m_sprSongBackground.StretchTo( CRect(SCREEN_LEFT,SCREEN_TOP,SCREEN_RIGHT,SCREEN_BOTTOM) );
m_frameStage.SetXY( CENTER_X, CENTER_Y+160 );
m_frameStage.SetZoom( 0.5f );
}
//
// Init ez2-specific graphics
//
if( g_StageType == STAGE_TYPE_EZ2 )
{
/*
int ez2Final=0; // if we're 0 it's not a final stage. if we're 1 it is.
// why do this? Ez2dancer uses NORMAL for it's final stage but just re-arranges
// the elements. so the following takes us into NORMAL and just re-arranges stuff
// the ez2Final is so that when we're in normal we can go and see if we're really
// FINAL or not. at the end of normal, if we WERE FINAL, we set it back to final
// hacky or what? =)
if( g_StageType == STAGE_TYPE_EZ2 && stage_mode == MODE_FINAL )
{
for( int i=0; i<4; i++ )
{
m_sprNumbers[i].Load( THEME->GetPathTo("Graphics","stage numbers final") );
m_sprNumbers[i].StopAnimating();
}
ez2Final=1;
stage_mode = MODE_NORMAL;
}
//
// Init Ez2 type-sepcific elements
//
///////////////////////// /////////////////////////
// EZ2 TYPE DEFINITION // // EZ2 TYPE DEFINITION //
///////////////////////// /////////////////////////
@@ -421,51 +488,10 @@ ScreenStage::ScreenStage()
m_stagename.SetTweenX(fStageCenterX+70); // set their new locations m_stagename.SetTweenX(fStageCenterX+70); // set their new locations
m_frameStage.AddSubActor( &m_stagename ); m_frameStage.AddSubActor( &m_stagename );
}
*/
} }
////////////////////////////
// END EZ2 TYPE DEFINITION//
////////////////////////////
////////////////
// PUMP STUFF //
////////////////
m_pSong = GAMESTATE->m_pCurSong;
m_sprSongBackground.Load( m_pSong->HasBackground() ? m_pSong->GetBackgroundPath() : THEME->GetPathTo("Graphics","fallback background"), true, 4, 0, true );
m_sprSongBackground.StretchTo( CRect(SCREEN_LEFT,SCREEN_TOP,SCREEN_RIGHT,SCREEN_BOTTOM) );
for( i=0; i<iNumChars; i++ )
m_frameStage.AddSubActor( &m_sprNumbers[i] );
if ( STAGE_TYPE != STAGE_TYPE_EZ2 ) // DIE EVIL STAGEWORD! err, yea this shouldn't be here for Ez2 =)
m_frameStage.AddSubActor( &m_sprStage );
}
break;
case MODE_FINAL:
m_sprStage.Load( THEME->GetPathTo("Graphics","stage final") );
m_frameStage.AddSubActor( &m_sprStage );
break;
case MODE_EXTRA1:
m_sprStage.Load( THEME->GetPathTo("Graphics","stage extra1") );
m_frameStage.AddSubActor( &m_sprStage );
break;
case MODE_EXTRA2:
m_sprStage.Load( THEME->GetPathTo("Graphics","stage extra2") );
m_frameStage.AddSubActor( &m_sprStage );
break;
case MODE_ONI:
m_sprStage.Load( THEME->GetPathTo("Graphics","stage oni") );
m_frameStage.AddSubActor( &m_sprStage );
break;
case MODE_ENDLESS:
m_sprStage.Load( THEME->GetPathTo("Graphics","stage endless") );
m_frameStage.AddSubActor( &m_sprStage );
break;
default:
ASSERT(0);
}
m_Fade.SetOpened();
this->SendScreenMessage( SM_DoneFadingIn, 1.0f ); this->SendScreenMessage( SM_DoneFadingIn, 1.0f );
this->SendScreenMessage( SM_StartFadingOut, 4.0f ); this->SendScreenMessage( SM_StartFadingOut, 4.0f );
@@ -474,35 +500,18 @@ ScreenStage::ScreenStage()
void ScreenStage::Update( float fDeltaTime ) void ScreenStage::Update( float fDeltaTime )
{ {
Screen::Update( fDeltaTime ); Screen::Update( fDeltaTime );
m_quadMask.Update( fDeltaTime );
m_frameStage.Update( fDeltaTime );
m_Fade.Update( fDeltaTime );
m_sprSongBackground.Update( fDeltaTime );
} }
void ScreenStage::DrawPrimitives() void ScreenStage::DrawPrimitives()
{ {
switch( g_StageType ) // Enable Zbuffering for the mask in the dance mode
{ if( g_StageType == STAGE_TYPE_MAX )
case STAGE_TYPE_MAX:
DISPLAY->EnableZBuffer(); DISPLAY->EnableZBuffer();
m_quadMask.Draw();
m_frameStage.Draw();
DISPLAY->DisableZBuffer();
break;
case STAGE_TYPE_PUMP:
m_sprSongBackground.Draw();
break;
case STAGE_TYPE_EZ2:
m_frameStage.Draw();
// m_sprSongBackground.Draw();
break;
default:
ASSERT(0);
}
m_Fade.Draw(); Screen::DrawPrimitives();
if( g_StageType == STAGE_TYPE_MAX )
DISPLAY->DisableZBuffer();
} }
void ScreenStage::HandleScreenMessage( const ScreenMessage SM ) void ScreenStage::HandleScreenMessage( const ScreenMessage SM )
+2 -3
View File
@@ -26,11 +26,11 @@ public:
private: private:
// Global Elements // Common Elements
ActorFrame m_frameStage; ActorFrame m_frameStage;
Sprite m_sprNumbers[4]; // up to 3 numbers and suffix Sprite m_sprNumbers[4]; // up to 3 numbers and suffix
Sprite m_sprStage; // "Stage" Sprite m_sprStage; // "Stage", "Final Stage", etc.
// Ez2 Elements // Ez2 Elements
@@ -50,7 +50,6 @@ private:
TransitionFade m_Fade; TransitionFade m_Fade;
protected: protected:
Song* m_pSong;
}; };
+1 -1
View File
@@ -32,7 +32,7 @@ const CString g_sStatisticsFileName = "statistics.ini";
#define GROUP_COLOR_5 THEME->GetMetricC("SongManager","GroupColor5") #define GROUP_COLOR_5 THEME->GetMetricC("SongManager","GroupColor5")
#define GROUP_COLOR_6 THEME->GetMetricC("SongManager","GroupColor6") #define GROUP_COLOR_6 THEME->GetMetricC("SongManager","GroupColor6")
#define GROUP_COLOR_7 THEME->GetMetricC("SongManager","GroupColor7") #define GROUP_COLOR_7 THEME->GetMetricC("SongManager","GroupColor7")
#define EXTRA_COLOR THEME->GetMetricC("SongManager","GroupColor7") #define EXTRA_COLOR THEME->GetMetricC("SongManager","ExtraColor")
const int NUM_GROUP_COLORS = 7; const int NUM_GROUP_COLORS = 7;
D3DXCOLOR GROUP_COLORS[NUM_GROUP_COLORS]; D3DXCOLOR GROUP_COLORS[NUM_GROUP_COLORS];
-8
View File
@@ -624,14 +624,6 @@ SOURCE=.\GrooveRadar.h
# End Source File # End Source File
# Begin Source File # Begin Source File
SOURCE=.\GroupInfoFrame.cpp
# End Source File
# Begin Source File
SOURCE=.\GroupInfoFrame.h
# End Source File
# Begin Source File
SOURCE=.\GroupList.cpp SOURCE=.\GroupList.cpp
# End Source File # End Source File
# Begin Source File # Begin Source File
-6
View File
@@ -628,12 +628,6 @@
<File <File
RelativePath="GrooveRadar.h"> RelativePath="GrooveRadar.h">
</File> </File>
<File
RelativePath="GroupInfoFrame.cpp">
</File>
<File
RelativePath="GroupInfoFrame.h">
</File>
<File <File
RelativePath="GroupList.cpp"> RelativePath="GroupList.cpp">
</File> </File>