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----------------
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
texture format chooser.
CHANGE: New Nullsoft NSIS installer.
+47 -5
View File
@@ -102,7 +102,8 @@ CursorShadowLengthX=10
CursorShadowLengthY=10
HelpText=Use ! " to select, then press START
TimerSeconds=40
NextScreen=ScreenSelectGroup
NextScreenArcade=ScreenSelectGroup
NextScreenOni=ScreenHowToPlay
[ScreenSelectGroup]
FrameX=180
@@ -128,8 +129,7 @@ TitlesColumns=3
TitlesRows=10
HelpText=Use ! " to select, then press START
TimerSeconds=40
NextScreenArcade=ScreenHowToPlay
NextScreenOni=ScreenHowToPlay
NextScreen=ScreenHowToPlay
[ScreenHowToPlay]
NextScreenArcade=ScreenSelectMusic
@@ -180,6 +180,7 @@ SongOptionsX=160
SongOptionsY=298
HelpText=! or " change music Hold ! and " then press START to change sort::## easier difficulty $$ harder difficulty::#$#$ to change sort
TimerSeconds=60
ScoreConnectedToMusicWheel=1
[ScreenSelectCourse]
BannerFrameX=160
@@ -421,10 +422,51 @@ RainbowColor7=1.0,0.8,0.2,1 // orange
[SongManager]
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
GroupColor4=0.0,0.6,0.6,1 // sea green
GroupColor5=0.1,0.7,0.3,1 // green
GroupColor6=0.8,0.6,0.0,1 // orange
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"
"It may be that these sounds were never implemented in this announcer,\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 to break.", sFolderName), MB_ABORTRETRYIGNORE );
"Click Ignore to to automatically create the folder.\n\n", sFolderName), MB_ABORTRETRYIGNORE );
switch( iResult )
{
case IDABORT:
CreateDirectory( sPathToFolderCurrent, NULL );
DebugBreak();
break;
case IDRETRY:
goto try_again;
break;
case IDIGNORE:
DebugBreak();
CreateDirectory( sPathToFolderCurrent, NULL );
break;
}
}
@@ -105,19 +105,19 @@ try_again:
ssprintf(
"The empty announcer is missing the folder '%s'.\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 to break.", sFolderName), MB_ABORTRETRYIGNORE );
"Click Ignore to to automatically create the folder.\n\n", sFolderName), MB_ABORTRETRYIGNORE );
switch( iResult )
{
case IDABORT:
CreateDirectory( sPathToFolderEmpty, NULL );
DebugBreak();
break;
case IDRETRY:
goto try_again;
break;
case IDIGNORE:
DebugBreak();
CreateDirectory( sPathToFolderEmpty, NULL );
break;
}
}
+61 -34
View File
@@ -13,14 +13,23 @@
#include "RageUtil.h"
#include "GameConstantsAndTypes.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()
{
m_fCurrentBPM = m_fLowBPM = m_fHighBPM = 0;
m_CountingState = holding_down;
m_fTimeLeftInState = 0;
m_bExtraStage = GAMESTATE->IsExtraStage() || GAMESTATE->IsExtraStage2();
m_rectFrame.SetDiffuseColor( D3DXCOLOR(0,0,0,0.3f) );
m_rectFrame.SetZoomX( 120 );
@@ -32,8 +41,8 @@ BPMDisplay::BPMDisplay()
//m_textBPM.SetSequence( ssprintf("999") );
m_textBPM.SetXY( -23, 0 );
m_textBPM.SetZoom( 1.0f );
m_textBPM.SetDiffuseColorTopEdge( D3DXCOLOR(1,1,0,1) ); // yellow
m_textBPM.SetDiffuseColorBottomEdge( D3DXCOLOR(1,0.5f,0,1) ); // orange
m_textBPM.SetDiffuseColorTopEdge( NORMAL_COLOR_TOP ); // yellow
m_textBPM.SetDiffuseColorBottomEdge( NORMAL_COLOR_BOTTOM ); // orange
m_textLabel.LoadFromFont( THEME->GetPathTo("Fonts","header1") );
m_textLabel.TurnShadowOff();
@@ -41,8 +50,8 @@ BPMDisplay::BPMDisplay()
m_textLabel.SetText( "BPM" );
m_textLabel.SetZoom( 0.7f );
m_textLabel.SetZoomX( 0.5f );
m_textLabel.SetDiffuseColorTopEdge( D3DXCOLOR(1,1,0,1) ); // yellow
m_textLabel.SetDiffuseColorBottomEdge( D3DXCOLOR(1,0.5f,0,1) ); // orange
m_textLabel.SetDiffuseColorTopEdge( NORMAL_COLOR_TOP ); // yellow
m_textLabel.SetDiffuseColorBottomEdge( NORMAL_COLOR_BOTTOM ); // orange
//this->AddSubActor( &m_rectFrame );
this->AddSubActor( &m_textBPM );
@@ -54,28 +63,40 @@ void BPMDisplay::Update( float fDeltaTime )
{
ActorFrame::Update( fDeltaTime );
m_fTimeLeftInState -= fDeltaTime;
if( m_fTimeLeftInState < 0 )
if( m_bExtraStage )
{
// go to next state
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;
if( m_fTimeLeftInState < 0 )
{
// go to next state
switch( m_CountingState )
{
case counting_up: m_CountingState = holding_up; break;
case holding_up: m_CountingState = counting_down; break;
case counting_down: m_CountingState = holding_down; break;
case holding_down: m_CountingState = counting_up; break;
}
m_fTimeLeftInState = 1; // reset timer
}
switch( m_CountingState )
{
case counting_up: m_CountingState = holding_up; break;
case holding_up: m_CountingState = counting_down; break;
case counting_down: m_CountingState = holding_down; break;
case holding_down: m_CountingState = counting_up; break;
case counting_down: m_fCurrentBPM = m_fLowBPM + (m_fHighBPM-m_fLowBPM)*m_fTimeLeftInState; break;
case counting_up: m_fCurrentBPM = m_fHighBPM + (m_fLowBPM-m_fHighBPM)*m_fTimeLeftInState; break;
case holding_up: m_fCurrentBPM = m_fHighBPM; break;
case holding_down: m_fCurrentBPM = m_fLowBPM; break;
}
m_fTimeLeftInState = 1; // reset timer
m_textBPM.SetText( ssprintf("%03.0f", m_fCurrentBPM) );
}
switch( m_CountingState )
{
case counting_down: m_fCurrentBPM = m_fLowBPM + (m_fHighBPM-m_fLowBPM)*m_fTimeLeftInState; break;
case counting_up: m_fCurrentBPM = m_fHighBPM + (m_fLowBPM-m_fHighBPM)*m_fTimeLeftInState; break;
case holding_up: m_fCurrentBPM = m_fHighBPM; break;
case holding_down: m_fCurrentBPM = m_fLowBPM; break;
}
m_textBPM.SetText( ssprintf("%03.0f", m_fCurrentBPM) );
}
@@ -89,23 +110,29 @@ void BPMDisplay::SetBPMRange( float fLowBPM, float fHighBPM )
m_CountingState = counting_up;
m_fTimeLeftInState = 1;
if( m_fLowBPM != m_fHighBPM )
m_textBPM.BeginTweening(0.5f);
m_textLabel.BeginTweening(0.5f);
if( GAMESTATE->IsExtraStage() || GAMESTATE->IsExtraStage2() )
{
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.SetTweenDiffuseColorTopEdge( D3DXCOLOR(1,0,0,1) ); // red
m_textLabel.SetTweenDiffuseColorBottomEdge( D3DXCOLOR(0.6f,0,0,1) ); // dark red
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
{
m_textBPM.BeginTweening(0.5f);
m_textBPM.SetTweenDiffuseColorTopEdge( D3DXCOLOR(1,1,0,1) ); // yellow
m_textBPM.SetTweenDiffuseColorBottomEdge( D3DXCOLOR(1,0.5f,0,1) ); // orange
m_textLabel.BeginTweening(0.5f);
m_textLabel.SetTweenDiffuseColorTopEdge( D3DXCOLOR(1,1,0,1) ); // yellow
m_textLabel.SetTweenDiffuseColorBottomEdge( D3DXCOLOR(1,0.5f,0,1) ); // orange
m_textBPM.SetTweenDiffuseColorTopEdge( NORMAL_COLOR_TOP );
m_textBPM.SetTweenDiffuseColorBottomEdge( NORMAL_COLOR_BOTTOM );
m_textLabel.SetTweenDiffuseColorTopEdge( NORMAL_COLOR_TOP );
m_textLabel.SetTweenDiffuseColorBottomEdge( NORMAL_COLOR_BOTTOM );
}
}
+2
View File
@@ -37,6 +37,8 @@ protected:
enum CountingState{ counting_up, holding_up, counting_down, holding_down };
CountingState m_CountingState;
float m_fTimeLeftInState;
bool m_bExtraStage; // cycle BPM through random values if extra stage
};
#endif
+30 -15
View File
@@ -26,12 +26,12 @@ const CString VISUALIZATIONS_DIR = "Visualizations\\";
const CString RANDOMMOVIES_DIR = "RandomMovies\\";
// TODO: Move these into theme metrics
const int BACKGROUND_LEFT = 0;
const int BACKGROUND_TOP = 0;
const int BACKGROUND_RIGHT = 640;
const int BACKGROUND_BOTTOM = 480;
#define LEFT_EDGE THEME->GetMetricI("Background","LeftEdge")
#define TOP_EDGE THEME->GetMetricI("Background","TopEdge")
#define RIGHT_EDGE THEME->GetMetricI("Background","RightEdge")
#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)
{
@@ -75,14 +75,14 @@ Background::Background()
m_quadBGBrightness.StretchTo( RECT_BACKGROUND );
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].SetDiffuseColor( D3DXCOLOR(0,0,0,0) );
m_quadBorder[1].StretchTo( CRect(BACKGROUND_LEFT,SCREEN_TOP,BACKGROUND_RIGHT,BACKGROUND_TOP) );
m_quadBorder[1].SetDiffuseColor( D3DXCOLOR(0,0,0,0) );
m_quadBorder[2].StretchTo( CRect(BACKGROUND_RIGHT,SCREEN_TOP,SCREEN_RIGHT,SCREEN_BOTTOM) );
m_quadBorder[2].SetDiffuseColor( D3DXCOLOR(0,0,0,0) );
m_quadBorder[3].StretchTo( CRect(BACKGROUND_LEFT,SCREEN_TOP,BACKGROUND_RIGHT,BACKGROUND_TOP) );
m_quadBorder[3].SetDiffuseColor( D3DXCOLOR(0,0,0,0) );
m_quadBorder[0].StretchTo( CRect(SCREEN_LEFT,SCREEN_TOP,LEFT_EDGE,SCREEN_BOTTOM) );
m_quadBorder[0].SetDiffuseColor( D3DXCOLOR(0,0,0,1) );
m_quadBorder[1].StretchTo( CRect(LEFT_EDGE,SCREEN_TOP,RIGHT_EDGE,TOP_EDGE) );
m_quadBorder[1].SetDiffuseColor( D3DXCOLOR(0,0,0,1) );
m_quadBorder[2].StretchTo( CRect(RIGHT_EDGE,SCREEN_TOP,SCREEN_RIGHT,SCREEN_BOTTOM) );
m_quadBorder[2].SetDiffuseColor( D3DXCOLOR(0,0,0,1) );
m_quadBorder[3].StretchTo( CRect(LEFT_EDGE,BOTTOM_EDGE,RIGHT_EDGE,SCREEN_BOTTOM) );
m_quadBorder[3].SetDiffuseColor( D3DXCOLOR(0,0,0,1) );
}
Background::~Background()
@@ -95,6 +95,8 @@ void Background::Unload()
for( int i=0; i<m_BackgroundAnimations.GetSize(); i++ )
delete m_BackgroundAnimations[i];
m_BackgroundAnimations.RemoveAll();
m_aBGSegments.RemoveAll();
}
void Background::LoadFromSong( Song* pSong )
@@ -104,6 +106,12 @@ void Background::LoadFromSong( Song* pSong )
/* Correct. I added the same chage. -Chris */
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
//
@@ -242,7 +250,10 @@ void Background::LoadFromSong( Song* pSong )
{
CStringArray arrayPossibleAnims;
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();
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
#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()
{
m_CurGame = GAME_DANCE;
@@ -210,14 +222,10 @@ bool GameState::IsExtraStage2()
CString GameState::GetStageText()
{
if( m_bDemonstration )
return "Demo";
else if( IsFinalStage() )
return "Final";
else if( IsExtraStage() )
return "Extra";
else if( IsExtraStage2() )
return "Extra 2";
if( m_bDemonstration ) return STAGE_TEXT_DEMO;
else if( IsFinalStage() ) return STAGE_TEXT_FINAL;
else if( IsExtraStage() ) return STAGE_TEXT_EXTRA1;
else if( IsExtraStage2() ) return STAGE_TEXT_EXTRA2;
int iStageNo = m_iCurrentStageIndex+1;
@@ -243,12 +251,12 @@ CString GameState::GetStageText()
D3DXCOLOR GameState::GetStageColor()
{
if( IsFinalStage() )
return D3DXCOLOR(1,0.1f,0.1f,1); // red
else if( IsExtraStage() || IsExtraStage2() )
return D3DXCOLOR(1,1,0.3f,1); // yellow
else
return D3DXCOLOR(0.3f,1,0.3f,1); // green
if( m_bDemonstration ) return STAGE_COLOR_DEMO;
else if( m_PlayMode==PLAY_MODE_ONI || m_PlayMode==PLAY_MODE_ENDLESS ) return STAGE_COLOR_ONI;
else if( IsFinalStage() ) return STAGE_COLOR_FINAL;
else if( IsExtraStage() ) return STAGE_COLOR_EXTRA1;
else if( IsExtraStage2() ) return STAGE_COLOR_EXTRA2;
else return STAGE_COLOR_NORMAL;
}
GameDef* GameState::GetCurrentGameDef()
+12 -4
View File
@@ -16,16 +16,24 @@
#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()
{
g_fStepSeconds = STEP_SECONDS;
g_fStepZoom = STEP_ZOOM;
StopAnimating();
}
void GrayArrow::Update( float fDeltaTime )
{
ASSERT( Sprite::GetNumStates() > 0 ); // you forgot to call Load()
Sprite::Update( fDeltaTime );
float fPercentIntoBeat = fmodf(GAMESTATE->m_fSongBeat,1);
@@ -38,7 +46,7 @@ void GrayArrow::Update( float fDeltaTime )
void GrayArrow::Step()
{
SetZoom( 0.75f );
BeginTweening( GRAY_ARROW_POP_UP_TIME );
SetTweenZoom( 1.0f );
SetZoom( g_fStepZoom );
BeginTweening( g_fStepSeconds );
SetTweenZoom( 1 );
}
-1
View File
@@ -82,7 +82,6 @@ void Judgement::SetJudgement( TapNoteScore score )
{
// falling down
m_sprJudgement.SetY( -20 );
//m_sprJudgement.SetZoom( 1.0f );
m_sprJudgement.BeginTweening( JUDGEMENT_DISPLAY_TIME );
m_sprJudgement.SetTweenY( 20 );
}
+15 -3
View File
@@ -161,9 +161,6 @@ void WheelItemDisplay::LoadFromWheelItemData( WheelItemData* pWID )
{
m_TextBanner.LoadFromSong( m_pSong );
D3DXCOLOR color = m_color;
color.r += 0.15f;
color.g += 0.15f;
color.b += 0.15f;
m_TextBanner.SetDiffuseColor( color );
m_MusicStatusDisplay.SetType( m_IconType );
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();
TweenOnScreen();
+46 -10
View File
@@ -24,6 +24,28 @@
#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
const float FRAME_JUDGE_AND_COMBO_Y = CENTER_Y;
const float JUDGEMENT_Y_OFFSET = -26;
@@ -39,6 +61,18 @@ const float HOLD_ARROW_NG_TIME = 0.18f;
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_pLifeMeter = NULL;
@@ -352,7 +386,7 @@ void Player::Step( int col )
if( GAMESTATE->m_bDemonstration || PREFSMAN->m_bAutoPlay )
score = TNS_PERFECT;
bDestroyedNote = score >= TNS_GOOD;
bDestroyedNote = (score >= TNS_GOOD);
bool bRowDestroyed = true;
@@ -418,20 +452,22 @@ void Player::OnRowDestroyed( int col, int iIndexThatWasSteppedOn )
m_Judgement.SetJudgement( score );
// zoom the judgement and combo like a heart beat
float fStartZoom;
float fStartZoomX, fStartZoomY;
switch( score )
{
case TNS_PERFECT: fStartZoom = 1.3f; break;
case TNS_GREAT: fStartZoom = 1.2f; break;
case TNS_GOOD: fStartZoom = 1.1f; break;
case TNS_BOO: fStartZoom = 1.0f; break;
case TNS_PERFECT: fStartZoomX = g_fJudgePerfectZoomX; fStartZoomY = g_fJudgePerfectZoomY; break;
case TNS_GREAT: fStartZoomX = g_fJudgeGreatZoomX; fStartZoomY = g_fJudgeGreatZoomY; break;
case TNS_GOOD: fStartZoomX = g_fJudgeGoodZoomX; fStartZoomY = g_fJudgeGoodZoomY; break;
case TNS_BOO: fStartZoomX = g_fJudgeBooZoomX; fStartZoomY = g_fJudgeBooZoomY; break;
}
m_frameJudgement.SetZoom( fStartZoom );
m_frameJudgement.BeginTweening( 0.1f );
m_frameJudgement.SetZoomX( fStartZoomX );
m_frameJudgement.SetZoomY( fStartZoomY );
m_frameJudgement.BeginTweening( g_fComboJudgeTweenSeconds );
m_frameJudgement.SetTweenZoom( 1 );
m_frameCombo.SetZoom( fStartZoom );
m_frameCombo.BeginTweening( 0.1f );
m_frameCombo.SetZoomX( fStartZoomX );
m_frameCombo.SetZoomY( fStartZoomY );
m_frameCombo.BeginTweening( g_fComboJudgeTweenSeconds );
m_frameCombo.SetTweenZoom( 1 );
}
+32 -30
View File
@@ -744,24 +744,27 @@ void ScreenEvaluation::TweenOnScreen()
apActorsInBonusOrStageInfo[i]->SetTweenX( fOriginalX );
}
m_sprGradeFrame[p].BeginTweening( MENU_ELEMENTS_TWEEN_TIME );
m_sprGradeFrame[p].SetTweenZoomY( 0 );
m_Grades[p].BeginTweening( MENU_ELEMENTS_TWEEN_TIME );
m_Grades[p].SetTweenZoomY( 0 );
m_textOniPercentLarge[p].BeginTweening( MENU_ELEMENTS_TWEEN_TIME );
m_textOniPercentLarge[p].SetTweenZoomY( 0 );
m_textOniPercentSmall[p].BeginTweening( MENU_ELEMENTS_TWEEN_TIME );
m_textOniPercentSmall[p].SetTweenZoomY( 0 );
m_textNewRecord[p].BeginTweening( MENU_ELEMENTS_TWEEN_TIME );
m_textNewRecord[p].SetTweenZoomY( 0 );
CArray<Actor*,Actor*> apActorsInGradeOrPercentFrame;
apActorsInGradeOrPercentFrame.Add( &m_sprBonusFrame[p] );
apActorsInGradeOrPercentFrame.Add( &m_sprGradeFrame[p] );
apActorsInGradeOrPercentFrame.Add( &m_Grades[p] );
apActorsInGradeOrPercentFrame.Add( &m_sprPercentFrame[p] );
apActorsInGradeOrPercentFrame.Add( &m_textOniPercentLarge[p] );
apActorsInGradeOrPercentFrame.Add( &m_textOniPercentSmall[p] );
apActorsInGradeOrPercentFrame.Add( &m_textNewRecord[p] );
for( i=0; i<apActorsInGradeOrPercentFrame.GetSize(); i++ )
{
float fOriginalZoomY = apActorsInGradeOrPercentFrame[i]->GetZoomY();
apActorsInGradeOrPercentFrame[i]->SetZoomY( 0 );
apActorsInGradeOrPercentFrame[i]->BeginTweening( MENU_ELEMENTS_TWEEN_TIME );
apActorsInGradeOrPercentFrame[i]->SetTweenZoomY( fOriginalZoomY );
}
}
float fOriginalZoomY = m_textTryExtraStage.GetZoomY();
m_textTryExtraStage.SetZoomY( 0 );
m_textTryExtraStage.BeginTweening( MENU_ELEMENTS_TWEEN_TIME );
m_textTryExtraStage.SetTweenZoomY( 0 );
m_textTryExtraStage.SetTweenZoomY( fOriginalZoomY );
}
void ScreenEvaluation::TweenOffScreen()
@@ -821,22 +824,21 @@ void ScreenEvaluation::TweenOffScreen()
apActorsInBonusOrStageInfo[i]->SetTweenZoomY( 0 );
}
m_sprGradeFrame[p].BeginTweening( MENU_ELEMENTS_TWEEN_TIME );
m_sprGradeFrame[p].SetTweenZoomY( 0 );
m_Grades[p].BeginTweening( MENU_ELEMENTS_TWEEN_TIME );
m_Grades[p].SetTweenZoomY( 0 );
m_textOniPercentLarge[p].BeginTweening( MENU_ELEMENTS_TWEEN_TIME );
m_textOniPercentLarge[p].SetTweenZoomY( 0 );
m_textOniPercentSmall[p].BeginTweening( MENU_ELEMENTS_TWEEN_TIME );
m_textOniPercentSmall[p].SetTweenZoomY( 0 );
m_textNewRecord[p].BeginTweening( MENU_ELEMENTS_TWEEN_TIME );
m_textNewRecord[p].SetTweenZoomY( 0 );
CArray<Actor*,Actor*> apActorsInGradeOrPercentFrame;
apActorsInGradeOrPercentFrame.Add( &m_sprBonusFrame[p] );
apActorsInGradeOrPercentFrame.Add( &m_sprGradeFrame[p] );
apActorsInGradeOrPercentFrame.Add( &m_Grades[p] );
apActorsInGradeOrPercentFrame.Add( &m_sprPercentFrame[p] );
apActorsInGradeOrPercentFrame.Add( &m_textOniPercentLarge[p] );
apActorsInGradeOrPercentFrame.Add( &m_textOniPercentSmall[p] );
apActorsInGradeOrPercentFrame.Add( &m_textNewRecord[p] );
for( i=0; i<apActorsInGradeOrPercentFrame.GetSize(); i++ )
{
apActorsInGradeOrPercentFrame[i]->BeginTweening( MENU_ELEMENTS_TWEEN_TIME );
apActorsInGradeOrPercentFrame[i]->SetTweenZoomY( 0 );
}
}
m_textTryExtraStage.BeginTweening( MENU_ELEMENTS_TWEEN_TIME );
m_textTryExtraStage.SetTweenZoomY( 0 );
}
+6 -5
View File
@@ -340,11 +340,12 @@ void ScreenEz2SelectStyle::MenuStart( PlayerNumber p )
// GAMESTATE->m_bPlayersCanJoin = false;
CString sCurStyleName = GAMESTATE->GetCurrentStyleDef()->m_szName;
if( 0==stricmp(sCurStyleName,"single") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment single") );
else if( 0==stricmp(sCurStyleName,"versus") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment versus") );
else if( 0==stricmp(sCurStyleName,"double") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment double") );
else if( 0==stricmp(sCurStyleName,"couple") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment couple") );
else if( 0==stricmp(sCurStyleName,"solo") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment solo") );
sCurStyleName.MakeLower();
if( -1!=sCurStyleName.Find("single") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment single") );
else if( -1!=sCurStyleName.Find("versus") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment versus") );
else if( -1!=sCurStyleName.Find("double") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment double") );
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 );
+98 -116
View File
@@ -196,6 +196,13 @@ ScreenGameplay::ScreenGameplay()
{
LOG->Trace( "ScreenGameplay::ScreenGameplay()" );
for( int p=0; p<NUM_PLAYERS; p++ )
{
m_pLifeMeter[p] = NULL;
m_pScoreDisplay[p] = NULL;
}
MUSIC->Stop();
GAMESTATE->ResetStageStatistics(); // clear values
@@ -295,21 +302,7 @@ ScreenGameplay::ScreenGameplay()
m_pLifeMeter[p]->Load( (PlayerNumber)p );
m_pLifeMeter[p]->SetXY( LIFE_X(p), LIFE_Y(p,bExtra) );
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] );
}
*/
this->AddSubActor( m_pLifeMeter[p] );
}
// TopFrame goes above LifeMeter
@@ -330,7 +323,7 @@ ScreenGameplay::ScreenGameplay()
m_textCourseSongNumber[p].TurnShadowOff();
m_textCourseSongNumber[p].SetXY( SONG_NUMBER_X(p), SONG_NUMBER_Y(p,bExtra) );
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 )
@@ -349,70 +342,36 @@ 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.SetXY( BOTTOM_FRAME_X, bExtra ? BOTTOM_FRAME_EXTRA_Y : BOTTOM_FRAME_Y );
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++ )
{
/* Chris: I don't understand why EZ2 wouldn't want this.
if( GAMESTATE->m_CurGame != GAME_EZ2 )
{
*/
switch( GAMESTATE->m_PlayMode )
{
case PLAY_MODE_ARCADE:
m_pScoreDisplay[p] = new ScoreDisplayNormal;
break;
case PLAY_MODE_ONI:
case PLAY_MODE_ENDLESS:
m_pScoreDisplay[p] = new ScoreDisplayOni;
break;
default:
ASSERT(0);
}
m_pScoreDisplay[p]->Init( (PlayerNumber)p );
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") );
if( !GAMESTATE->IsPlayerEnabled(PlayerNumber(p)) )
continue;
/* Chris: EZ2 should control this with theme metrics
if( GAMESTATE->m_CurGame != GAME_EZ2 )
switch( GAMESTATE->m_PlayMode )
{
*/
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] );
// }
case PLAY_MODE_ARCADE:
m_pScoreDisplay[p] = new ScoreDisplayNormal;
break;
case PLAY_MODE_ONI:
case PLAY_MODE_ENDLESS:
m_pScoreDisplay[p] = new ScoreDisplayOni;
break;
default:
ASSERT(0);
}
m_pScoreDisplay[p]->Init( (PlayerNumber)p );
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].TurnShadowOff();
@@ -421,7 +380,6 @@ ScreenGameplay::ScreenGameplay()
m_textPlayerOptions[p].SetDiffuseColor( D3DXCOLOR(1,1,1,1) );
m_textPlayerOptions[p].SetText( GAMESTATE->m_PlayerOptions[p].GetString() );
this->AddSubActor( &m_textPlayerOptions[p] );
//}
}
m_textSongOptions.LoadFromFont( THEME->GetPathTo("Fonts","normal") );
@@ -441,30 +399,6 @@ ScreenGameplay::ScreenGameplay()
if( !GAMESTATE->IsPlayerEnabled(PlayerNumber(p)) )
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) );
this->AddSubActor( &m_DifficultyBanner[p] );
}
@@ -540,36 +474,37 @@ ScreenGameplay::ScreenGameplay()
if( !GAMESTATE->m_bDemonstration ) // don't load sounds if just playing demonstration
{
m_soundFail.Load( THEME->GetPathTo("Sounds","gameplay failed") );
m_soundOniDie.Load( THEME->GetPathTo("Sounds","gameplay oni die") );
m_announcerReady.Load( ANNOUNCER->GetPathTo("gameplay ready") );
m_soundFail.Load( THEME->GetPathTo("Sounds","gameplay failed") );
m_soundOniDie.Load( THEME->GetPathTo("Sounds","gameplay oni die") );
m_announcerReady.Load( ANNOUNCER->GetPathTo("gameplay ready") );
if( GAMESTATE->IsExtraStage() || GAMESTATE->IsExtraStage2() )
m_announcerHereWeGo.Load( ANNOUNCER->GetPathTo("gameplay here we go extra") );
else if( GAMESTATE->IsFinalStage() )
m_announcerHereWeGo.Load( ANNOUNCER->GetPathTo("gameplay here we go final") );
else
m_announcerHereWeGo.Load( ANNOUNCER->GetPathTo("gameplay here we go normal") );
m_announcerDanger.Load( ANNOUNCER->GetPathTo("gameplay comment danger") );
m_announcerGood.Load( ANNOUNCER->GetPathTo("gameplay comment goood") );
m_announcerHot.Load( ANNOUNCER->GetPathTo("gameplay comment hot") );
m_announcerDanger.Load( ANNOUNCER->GetPathTo("gameplay comment danger") );
m_announcerGood.Load( ANNOUNCER->GetPathTo("gameplay comment good") );
m_announcerHot.Load( ANNOUNCER->GetPathTo("gameplay comment hot") );
m_announcer100Combo.Load( ANNOUNCER->GetPathTo("gameplay comment 100 combo") );
m_announcer200Combo.Load( ANNOUNCER->GetPathTo("gameplay comment 200 combo") );
m_announcer300Combo.Load( ANNOUNCER->GetPathTo("gameplay comment 300 combo") );
m_announcer400Combo.Load( ANNOUNCER->GetPathTo("gameplay comment 400 combo") );
m_announcer500Combo.Load( ANNOUNCER->GetPathTo("gameplay comment 500 combo") );
m_announcer600Combo.Load( ANNOUNCER->GetPathTo("gameplay comment 600 combo") );
m_announcer700Combo.Load( ANNOUNCER->GetPathTo("gameplay comment 700 combo") );
m_announcer800Combo.Load( ANNOUNCER->GetPathTo("gameplay comment 800 combo") );
m_announcer900Combo.Load( ANNOUNCER->GetPathTo("gameplay comment 900 combo") );
m_announcer1000Combo.Load( ANNOUNCER->GetPathTo("gameplay comment 1000 combo") );
m_announcerComboStopped.Load( ANNOUNCER->GetPathTo("gameplay comment combo stopped") );
m_announcer100Combo.Load( ANNOUNCER->GetPathTo("gameplay 100 combo") );
m_announcer200Combo.Load( ANNOUNCER->GetPathTo("gameplay 200 combo") );
m_announcer300Combo.Load( ANNOUNCER->GetPathTo("gameplay 300 combo") );
m_announcer400Combo.Load( ANNOUNCER->GetPathTo("gameplay 400 combo") );
m_announcer500Combo.Load( ANNOUNCER->GetPathTo("gameplay 500 combo") );
m_announcer600Combo.Load( ANNOUNCER->GetPathTo("gameplay 600 combo") );
m_announcer700Combo.Load( ANNOUNCER->GetPathTo("gameplay 700 combo") );
m_announcer800Combo.Load( ANNOUNCER->GetPathTo("gameplay 800 combo") );
m_announcer900Combo.Load( ANNOUNCER->GetPathTo("gameplay 900 combo") );
m_announcer1000Combo.Load( ANNOUNCER->GetPathTo("gameplay 1000 combo") );
m_announcerComboStopped.Load( ANNOUNCER->GetPathTo("gameplay combo stopped") );
}
m_iRowLastCrossed = -1;
m_soundAssistTick.Load( THEME->GetPathTo("Sounds","gameplay assist tick") );
TweenOnScreen();
LoadNextSong( true );
@@ -594,8 +529,8 @@ ScreenGameplay::~ScreenGameplay()
for( int p=0; p<NUM_PLAYERS; p++ )
{
delete m_pLifeMeter[p];
delete m_pScoreDisplay[p];
SAFE_DELETE( m_pLifeMeter[p] );
SAFE_DELETE( m_pScoreDisplay[p] );
}
m_soundMusic.Stop();
@@ -784,7 +719,7 @@ void ScreenGameplay::Update( float fDeltaTime )
//
// 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;
m_soundMusic.Stop();
@@ -898,7 +833,6 @@ void ScreenGameplay::Update( float fDeltaTime )
if( !GAMESTATE->IsPlayerEnabled( (PlayerNumber)p ) )
continue; // skip
m_Player[p].CrossedRow( r );
bAnyoneHasANote |= m_Player[p].IsThereANoteAtRow( r );
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()
{
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()
+6 -1
View File
@@ -26,7 +26,8 @@
#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()
@@ -102,6 +103,9 @@ void ScreenHowToPlay::HandleScreenMessage( const ScreenMessage SM )
case SM_MenuTimer:
this->MenuStart(PLAYER_1);
break;
case SM_GoToPrevScreen:
SCREENMAN->SetNewScreen( "ScreenTitleMenu" );
break;
case SM_GoToNextScreen:
switch( GAMESTATE->m_PlayMode )
{
@@ -121,6 +125,7 @@ void ScreenHowToPlay::HandleScreenMessage( const ScreenMessage SM )
void ScreenHowToPlay::MenuBack( PlayerNumber p )
{
m_Menu.TweenOffScreenToBlack( SM_GoToPrevScreen, true );
}
void ScreenHowToPlay::MenuStart( PlayerNumber p )
+2
View File
@@ -96,10 +96,12 @@ ScreenSelectCourse::ScreenSelectCourse()
m_textNumStages.LoadFromFont( THEME->GetPathTo("Fonts","header1") );
m_textNumStages.SetXY( STAGES_X, STAGES_Y );
m_textNumStages.TurnShadowOff();
this->AddSubActor( &m_textNumStages );
m_textTime.LoadFromFont( THEME->GetPathTo("Fonts","header1") );
m_textTime.SetXY( TIME_X, TIME_Y );
m_textTime.TurnShadowOff();
this->AddSubActor( &m_textTime );
m_CourseContentsFrame.SetXY( CONTENTS_X, CONTENTS_Y );
+16 -9
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 HELP_TEXT THEME->GetMetric("ScreenSelectDifficulty","HelpText")
#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 ) {
@@ -277,9 +278,9 @@ void ScreenSelectDifficulty::HandleScreenMessage( const ScreenMessage SM )
for( int p=0; p<NUM_PLAYERS; p++ )
switch( m_iSelection[p] )
{
case 0: GAMESTATE->m_PreferredDifficultyClass[p] = CLASS_EASY; break;
case 0: GAMESTATE->m_PreferredDifficultyClass[p] = CLASS_EASY; break;
case 1: GAMESTATE->m_PreferredDifficultyClass[p] = CLASS_MEDIUM; break;
case 2: GAMESTATE->m_PreferredDifficultyClass[p] = CLASS_HARD; break;
case 2: GAMESTATE->m_PreferredDifficultyClass[p] = CLASS_HARD; break;
}
}
@@ -300,12 +301,18 @@ void ScreenSelectDifficulty::HandleScreenMessage( const ScreenMessage SM )
ASSERT(0); // bad selection
}
if(GAMESTATE->m_PlayMode == PLAY_MODE_ONI ||
GAMESTATE->m_PlayMode == PLAY_MODE_ENDLESS)
SCREENMAN->SetNewScreen( "ScreenSelectCourse" );
else
SCREENMAN->SetNewScreen( "ScreenSelectGroup" );
switch( GAMESTATE->m_PlayMode )
{
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;
case SM_StartTweeningOffScreen:
TweenOffScreen();
+2 -14
View File
@@ -37,8 +37,7 @@
#define CONTENTS_Y THEME->GetMetricF("ScreenSelectGroup","ContentsY")
#define HELP_TEXT THEME->GetMetric("ScreenSelectGroup","HelpText")
#define TIMER_SECONDS THEME->GetMetricI("ScreenSelectGroup","TimerSeconds")
#define NEXT_SCREEN_ARCADE THEME->GetMetric("ScreenSelectGroup","NextScreenArcade")
#define NEXT_SCREEN_ONI THEME->GetMetric("ScreenSelectGroup","NextScreenOni")
#define NEXT_SCREEN THEME->GetMetric("ScreenSelectGroup","NextScreen")
const ScreenMessage SM_GoToPrevScreen = ScreenMessage(SM_User + 1);
@@ -206,18 +205,7 @@ void ScreenSelectGroup::HandleScreenMessage( const ScreenMessage SM )
SCREENMAN->SetNewScreen( "ScreenTitleMenu" );
break;
case SM_GoToNextScreen:
switch( GAMESTATE->m_PlayMode )
{
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);
}
SCREENMAN->SetNewScreen( NEXT_SCREEN );
break;
case SM_StartFadingOut:
m_Menu.TweenOffScreenToMenu( SM_GoToNextScreen );
+72 -29
View File
@@ -69,6 +69,7 @@
#define SONG_OPTIONS_Y THEME->GetMetricF("ScreenSelectMusic","SongOptionsY")
#define HELP_TEXT THEME->GetMetric("ScreenSelectMusic","HelpText")
#define TIMER_SECONDS THEME->GetMetricI("ScreenSelectMusic","TimerSeconds")
#define SCORE_CONNECTED_TO_MUSIC_WHEEL THEME->GetMetricB("ScreenSelectMusic","ScoreConnectedToMusicWheel")
const float TWEEN_TIME = 0.5f;
@@ -290,16 +291,20 @@ void ScreenSelectMusic::DrawPrimitives()
void ScreenSelectMusic::TweenOnScreen()
{
float fOriginalZoomY;
Actor* pActorsInGroupInfoFrame[] = { &m_sprBannerFrame, &m_Banner, &m_BPMDisplay, &m_textStage, &m_sprCDTitle };
const int iNumActorsInGroupInfoFrame = sizeof(pActorsInGroupInfoFrame) / sizeof(Actor*);
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();
pActorsInGroupInfoFrame[i]->SetX( fOriginalX-400 );
pActorsInGroupInfoFrame[i]->BeginTweening( TWEEN_TIME, TWEEN_BOUNCE_END );
pActorsInGroupInfoFrame[i]->SetTweenX( fOriginalX );
float fOriginalX = apActorsInGroupInfoFrame[i]->GetX();
apActorsInGroupInfoFrame[i]->SetX( fOriginalX-400 );
apActorsInGroupInfoFrame[i]->BeginTweening( TWEEN_TIME, TWEEN_BOUNCE_END );
apActorsInGroupInfoFrame[i]->SetTweenX( fOriginalX );
}
fOriginalZoomY = m_sprDifficultyFrame.GetZoomY();
@@ -335,14 +340,18 @@ void ScreenSelectMusic::TweenOnScreen()
m_MusicSortDisplay.BeginTweening( TWEEN_TIME );
m_MusicSortDisplay.SetTweenDiffuseColor( D3DXCOLOR(1,1,1,1) );
Actor* pActorsInScore[] = { &m_sprHighScoreFrame[0], &m_sprHighScoreFrame[1], &m_HighScore[0], &m_HighScore[1] };
const int iNumActorsInScore = sizeof(pActorsInScore) / sizeof(Actor*);
for( i=0; i<iNumActorsInScore; i++ )
CArray<Actor*,Actor*> apActorsInScore;
for( int p=0; p<NUM_PLAYERS; p++ )
{
float fOriginalX = pActorsInScore[i]->GetX();
pActorsInScore[i]->SetX( fOriginalX+400 );
pActorsInScore[i]->BeginTweening( TWEEN_TIME, TWEEN_BIAS_END );
pActorsInScore[i]->SetTweenX( fOriginalX );
apActorsInScore.Add( &m_sprHighScoreFrame[p] );
apActorsInScore.Add( &m_HighScore[p] );
}
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();
@@ -350,13 +359,18 @@ void ScreenSelectMusic::TweenOnScreen()
void ScreenSelectMusic::TweenOffScreen()
{
Actor* pActorsInGroupInfoFrame[] = { &m_sprBannerFrame, &m_Banner, &m_BPMDisplay, &m_textStage, &m_sprCDTitle };
const int iNumActorsInGroupInfoFrame = sizeof(pActorsInGroupInfoFrame) / sizeof(Actor*);
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 );
pActorsInGroupInfoFrame[i]->SetTweenX( pActorsInGroupInfoFrame[i]->GetX()-400 );
apActorsInGroupInfoFrame[i]->BeginTweeningQueued( TWEEN_TIME, TWEEN_BOUNCE_BEGIN );
apActorsInGroupInfoFrame[i]->SetTweenX( apActorsInGroupInfoFrame[i]->GetX()-400 );
}
m_sprDifficultyFrame.BeginTweening( TWEEN_TIME );
@@ -386,17 +400,45 @@ void ScreenSelectMusic::TweenOffScreen()
m_MusicSortDisplay.BeginTweening( TWEEN_TIME );
m_MusicSortDisplay.SetTweenDiffuseColor( D3DXCOLOR(1,1,1,0) );
Actor* pActorsInScore[] = { &m_sprHighScoreFrame[0], &m_sprHighScoreFrame[1], &m_HighScore[0], &m_HighScore[1] };
const int iNumActorsInScore = sizeof(pActorsInScore) / sizeof(Actor*);
for( i=0; i<iNumActorsInScore; i++ )
CArray<Actor*,Actor*> apActorsInScore;
for( int p=0; p<NUM_PLAYERS; p++ )
{
pActorsInScore[i]->BeginTweening( TWEEN_TIME, TWEEN_BIAS_BEGIN );
pActorsInScore[i]->SetTweenX( pActorsInScore[i]->GetX()+400 );
apActorsInScore.Add( &m_sprHighScoreFrame[p] );
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();
}
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 )
{
Screen::Update( fDeltaTime );
@@ -493,10 +535,11 @@ void ScreenSelectMusic::Input( const DeviceInput& DeviceI, const InputEventType
if( m_MusicWheel.NextSort() )
{
MUSIC->Stop();
// tween music sort off screen
//m_MusicSortDisplay.SetEffectNone();
m_MusicSortDisplay.BeginTweening( 0.3f );
m_MusicSortDisplay.SetTweenDiffuseColor( D3DXCOLOR(1,1,1,0) );
TweenScoreOnAndOffAfterChangeSort();
}
return;
}
@@ -631,10 +674,10 @@ void ScreenSelectMusic::MenuStart( PlayerNumber p )
{
MUSIC->Stop();
// tween music sort off screen
//m_MusicSortDisplay.SetEffectNone();
m_MusicSortDisplay.BeginTweening( 0.3f );
m_MusicSortDisplay.SetTweenDiffuseColor( D3DXCOLOR(1,1,1,0) );
TweenScoreOnAndOffAfterChangeSort();
}
}
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 HandleScreenMessage( const ScreenMessage SM );
void TweenOnScreen();
void TweenOffScreen();
void MenuLeft( PlayerNumber p, const InputEventType type );
void MenuRight( PlayerNumber p, const InputEventType type );
void MenuStart( PlayerNumber p );
void MenuBack( PlayerNumber p );
virtual void MenuLeft( PlayerNumber p, const InputEventType type );
virtual void MenuRight( PlayerNumber p, const InputEventType type );
virtual void MenuStart( PlayerNumber p );
virtual void MenuBack( PlayerNumber p );
protected:
void TweenOnScreen();
void TweenOffScreen();
void TweenScoreOnAndOffAfterChangeSort();
void EasierDifficulty( PlayerNumber p );
void HarderDifficulty( PlayerNumber p );
+6 -5
View File
@@ -244,11 +244,12 @@ void ScreenSelectStyle::MenuStart( PlayerNumber p )
GAMESTATE->m_CurStyle = GetSelectedStyle();
CString sCurStyleName = GAMESTATE->GetCurrentStyleDef()->m_szName;
if( 0==stricmp(sCurStyleName,"single") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment single") );
else if( 0==stricmp(sCurStyleName,"versus") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment versus") );
else if( 0==stricmp(sCurStyleName,"double") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment double") );
else if( 0==stricmp(sCurStyleName,"couple") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment couple") );
else if( 0==stricmp(sCurStyleName,"solo") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment solo") );
sCurStyleName.MakeLower();
if( -1!=sCurStyleName.Find("single") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment single") );
else if( -1!=sCurStyleName.Find("versus") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment versus") );
else if( -1!=sCurStyleName.Find("double") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment double") );
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 );
+6 -5
View File
@@ -273,11 +273,12 @@ void ScreenSelectStyle5th::MenuStart( PlayerNumber p )
GAMESTATE->m_MasterPlayerNumber = p;
CString sCurStyleName = GAMESTATE->GetCurrentStyleDef()->m_szName;
if( 0==stricmp(sCurStyleName,"single") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment single") );
else if( 0==stricmp(sCurStyleName,"versus") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment versus") );
else if( 0==stricmp(sCurStyleName,"double") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment double") );
else if( 0==stricmp(sCurStyleName,"couple") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment couple") );
else if( 0==stricmp(sCurStyleName,"solo") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment solo") );
sCurStyleName.MakeLower();
if( -1!=sCurStyleName.Find("single") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment single") );
else if( -1!=sCurStyleName.Find("versus") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment versus") );
else if( -1!=sCurStyleName.Find("double") ) SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("select style comment double") );
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();
+324 -315
View File
@@ -54,32 +54,11 @@ enum StageMode
ScreenStage::ScreenStage()
{
g_StageType = (StageType)STAGE_TYPE;
MUSIC->Stop();
//
// 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();
g_StageType = (StageType)STAGE_TYPE;
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;
if( GAMESTATE->m_PlayMode == PLAY_MODE_ONI ) stage_mode = MODE_ONI;
else if( GAMESTATE->m_PlayMode == PLAY_MODE_ENDLESS ) stage_mode = MODE_ENDLESS;
@@ -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
// 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 )
//
// Init common graphics
//
this->AddSubActor( &m_sprSongBackground ); // add background first so it draws bottom-most
this->AddSubActor( &m_quadMask ); // add quad mask before stage so that it will block out the stage sprites
this->AddSubActor( &m_frameStage );
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].StopAnimating();
}
ez2Final=1;
stage_mode = MODE_NORMAL;
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
switch( stage_mode )
{
@@ -186,259 +159,9 @@ ScreenStage::ScreenStage()
}
m_sprStage.SetX( fStageCenterX );
/////////////////////////
// EZ2 TYPE DEFINITION //
/////////////////////////
if ( g_StageType == STAGE_TYPE_EZ2) // Initialize and manipulate existing graphics for Ez2dancer Screen Type
{
for( i=0; i<iNumChars; i++ )
{
float fOffsetX = SCALE(i, 0, iNumChars-1, -(iNumChars-1)/2.0f*fFrameWidth, (iNumChars-1)/2.0f*fFrameWidth);
m_sprNumbers[i].SetX( fCharsCenterX + fOffsetX + (150 * i) );
}
for( i=0; i<iNumChars; i++ ) // redefine the size of the numbers
{
m_sprNumbers[i].SetWidth( 200.0f );
m_sprNumbers[i].SetHeight( 200.0f);
}
m_frameStage.SetXY( CENTER_X - 140, CENTER_Y ); // align the big number
for( i=0; i<iNumChars; i++)
{
m_sprNumbers[i].SetZoom( 20.0f ); // make it really really big
m_sprNumbers[i].SetRotation( 10 ); // make this thing rotated
m_sprNumbers[i].BeginTweening(0.8f, Actor::TWEEN_BIAS_BEGIN );
m_sprNumbers[i].SetTweenZoom( 1.0f ); // shrink it down to it's proper size
m_sprNumbers[i].SetTweenRotationZ( 0 ); // make it rotate into place
}
// Background Blocks rotate their way in
int bg_modeoffset=0;
float element_y_offsets=0.0f;
if (ez2Final == 1)
{
element_y_offsets = 25.0f;
bg_modeoffset = 4; // shuffle graphics +4 in the elements file for FINAL graphics.
}
for (i=0; i<3; i++)
{
m_sprbg[i].Load( THEME->GetPathTo("Graphics","stage elements") );
m_sprbg[i].StopAnimating();
m_sprbg[i].SetState( i+bg_modeoffset );
}
if (ez2Final == 1)
{
m_sprbgxtra.Load( THEME->GetPathTo("Graphics","stage elements") );
m_sprbgxtra.StopAnimating();
m_sprbgxtra.SetState( bg_modeoffset );
m_sprbgxtra.SetXY( fStageCenterX-30, 0+180);
m_sprbgxtra.SetHeight( 30 );
m_sprbgxtra.SetWidth( SCREEN_WIDTH + 50 );
m_sprbgxtra.SetRotation( -20 );
m_sprbgxtra.BeginTweening(0.3f);
m_sprbgxtra.SetTweenRotationZ( 0 );
}
m_sprbg[0].SetXY( fStageCenterX-30, 0+150);
if (ez2Final == 1)
m_sprbg[0].SetXY( fStageCenterX-30, 0-160);
m_sprbg[0].SetHeight( 100 );
if (ez2Final == 1)
m_sprbg[0].SetHeight( 30 );
m_sprbg[0].SetWidth( SCREEN_WIDTH + 50 );
m_sprbg[0].SetRotation( -20 );
m_sprbg[0].BeginTweening(0.3f);
m_sprbg[0].SetTweenRotationZ( 0 );
m_sprbg[1].SetXY( fStageCenterX-(SCREEN_WIDTH/2)-20, 0+element_y_offsets);
m_sprbg[1].SetHeight( SCREEN_HEIGHT - 140 );
m_sprbg[1].SetWidth( 130 );
m_sprbg[1].SetRotation( -20 );
m_sprbg[1].BeginTweening(0.3f);
m_sprbg[1].SetTweenRotationZ( 0 );
m_sprbg[2].SetXY( fStageCenterX+430, 0+element_y_offsets);
m_sprbg[2].SetHeight( SCREEN_HEIGHT - 140 );
m_sprbg[2].SetWidth( SCREEN_WIDTH + 50 );
m_sprbg[2].SetRotation( -20 );
m_sprbg[2].BeginTweening(0.3f);
m_sprbg[2].SetTweenX( fStageCenterX - 30 );
m_sprbg[2].SetTweenRotationZ( 0 );
for (i=3; i>=0; i--) // work backwards as we wanna add em in reverse
{
m_frameStage.AddSubActor( &m_sprbg[i] );
}
if (ez2Final == 1)
{
m_frameStage.AddSubActor( &m_sprbgxtra );
}
// scroll in the name of the game (ez2dancer ukmove) across the top of the screen
for (i=0; i<2; i++) // specify the font file.
{
m_ez2ukm[i].LoadFromFont( THEME->GetPathTo("Fonts","stage") );
m_ez2ukm[i].TurnShadowOff();
m_stagedesc[i].LoadFromFont( THEME->GetPathTo("Fonts","stage") );
m_stagedesc[i].TurnShadowOff();
}
m_ez2ukm[0].SetXY( fStageCenterX-400, 0-220 ); // set the intiial UKMOVE positions
m_ez2ukm[1].SetXY( fStageCenterX+400, 0+220 );
m_stagedesc[0].SetXY( fStageCenterX-400, 0-150+element_y_offsets ); // set the intiial desc positions
m_stagedesc[1].SetXY( fStageCenterX+400, 0+70+element_y_offsets );
if (ez2Final == 1)
{
m_stagedesc[1].SetY( 140.0f );
}
for (i=0; i<2; i++) // initialize the UK MOVE text and positions
{
m_ez2ukm[i].SetText( "STEPMANIA EZ2 MOVE" );
m_ez2ukm[i].SetDiffuseColor( D3DXCOLOR(1,1,1,1) );
m_ez2ukm[i].BeginTweening(0.5f);
if (ez2Final == 1)
{
m_stagedesc[i].SetText( "FINAL FINAL FINAL FINAL FINAL FINAL FINAL FINAL FINAL FINAL" );
m_stagedesc[i].SetDiffuseColor( D3DXCOLOR(1.0f/225.0f*227.0f,1.0f/225.0f*228.0f,1/225.0f*255.0f,1) );
}
else
{
m_stagedesc[i].SetText( "NEXT NEXT NEXT NEXT NEXT NEXT NEXT NEXT NEXT NEXT NEXT" );
m_stagedesc[i].SetDiffuseColor( D3DXCOLOR(1.0f/225.0f*166.0f,1.0f/225.0f*83.0f,1/225.0f*16.0f,1) );
}
m_stagedesc[i].BeginTweening(0.5f);
}
m_ez2ukm[0].SetTweenX(fStageCenterX+90); // set their new locations
m_ez2ukm[1].SetTweenX(fStageCenterX-170);
m_stagedesc[0].SetTweenX(fStageCenterX+10); // set their new locations
m_stagedesc[1].SetTweenX(fStageCenterX-100);
for (i=0; i<2; i++)
{
m_frameStage.AddSubActor( &m_ez2ukm[i] );
m_frameStage.AddSubActor( &m_stagedesc[i] );
}
// 20 Scrolling Blobs come in one at a time from either side at the bottom in the following code:
for( int j=0; j<2; j++)
{
for (i=0; i<20; i++)
{
m_sprScrollingBlobs[j][i].Load( THEME->GetPathTo("Graphics","stage elements") );
m_sprScrollingBlobs[j][i].StopAnimating();
m_sprScrollingBlobs[j][i].SetState( 3+bg_modeoffset );
}
}
for( j=0; j<2; j++)
{
for (i=0; i<20; i++)
{
if (j == 0)
{
m_sprScrollingBlobs[j][i].SetXY( fStageCenterX-(SCREEN_WIDTH/2)-500-((i*i)*4), 135 );
if (ez2Final == 1)
{
m_sprScrollingBlobs[j][i].SetY( 0-160);
}
}
else
{
m_sprScrollingBlobs[j][i].SetXY( fStageCenterX+(SCREEN_WIDTH/2)+500-((i*i)*4), 170 );
if (ez2Final == 1)
{
m_sprScrollingBlobs[j][i].SetY( 180 );
}
}
}
}
for( j=0; j<2; j++)
{
for (i=0; i<20; i++)
{
m_sprScrollingBlobs[j][i].BeginTweening(0.2f * i / 7);
if (j == 0)
m_sprScrollingBlobs[j][i].SetTweenX(fStageCenterX-(SCREEN_WIDTH/2)+(i*30.0f));
else
m_sprScrollingBlobs[j][i].SetTweenX(fStageCenterX+(SCREEN_WIDTH/2)-70-(i*30.0f));
m_frameStage.AddSubActor( &m_sprScrollingBlobs[j][i] );
}
}
// write the stage name
m_stagename.LoadFromFont( THEME->GetPathTo("Fonts","stage") );
m_stagename.TurnShadowOff();
m_stagename.SetXY( fStageCenterX+400, 0-30+element_y_offsets );
switch (iStageNo)
{
case 0: m_stagename.SetText( "THE NEXT STAGE" ); break;
case 1: m_stagename.SetText( "THE FIRST STAGE" ); break;
case 2: m_stagename.SetText( "THE SECOND STAGE" ); break;
case 3: m_stagename.SetText( "THE THIRD STAGE" ); break;
case 4: m_stagename.SetText( "THE FOURTH STAGE" ); break;
case 5: m_stagename.SetText( "THE FIFTH STAGE" ); break;
case 6: m_stagename.SetText( "THE SIXTH STAGE" ); break;
case 7: m_stagename.SetText( "THE SEVENTH STAGE" ); break;
default: m_stagename.SetText("THE NEXT STAGE"); break;
}
if (iStageNo > 9) // if we're in two digits or more
{
m_stagename.SetText( "" ); // make this text disappear.
}
m_stagename.SetDiffuseColor( D3DXCOLOR(1.0f/225.0f*166.0f,1.0f/225.0f*83.0f,1/225.0f*16.0f,1) );
if (ez2Final == 1)
{
m_stagename.SetDiffuseColor( D3DXCOLOR(1.0f/225.0f*227.0f,1.0f/225.0f*228.0f,1/225.0f*255.0f,1) );
m_stagename.SetText( "THE FINAL STAGE" );
stage_mode = MODE_FINAL; // set back to final again.
ez2Final = 0;
}
m_stagename.BeginTweening(0.5f);
m_stagename.SetTweenX(fStageCenterX+70); // set their new locations
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 );
m_frameStage.AddSubActor( &m_sprStage );
}
break;
case MODE_FINAL:
@@ -465,8 +188,311 @@ ScreenStage::ScreenStage()
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 //
/////////////////////////
if ( g_StageType == STAGE_TYPE_EZ2) // Initialize and manipulate existing graphics for Ez2dancer Screen Type
{
for( i=0; i<iNumChars; i++ )
{
float fOffsetX = SCALE(i, 0, iNumChars-1, -(iNumChars-1)/2.0f*fFrameWidth, (iNumChars-1)/2.0f*fFrameWidth);
m_sprNumbers[i].SetX( fCharsCenterX + fOffsetX + (150 * i) );
}
for( i=0; i<iNumChars; i++ ) // redefine the size of the numbers
{
m_sprNumbers[i].SetWidth( 200.0f );
m_sprNumbers[i].SetHeight( 200.0f);
}
m_frameStage.SetXY( CENTER_X - 140, CENTER_Y ); // align the big number
for( i=0; i<iNumChars; i++)
{
m_sprNumbers[i].SetZoom( 20.0f ); // make it really really big
m_sprNumbers[i].SetRotation( 10 ); // make this thing rotated
m_sprNumbers[i].BeginTweening(0.8f, Actor::TWEEN_BIAS_BEGIN );
m_sprNumbers[i].SetTweenZoom( 1.0f ); // shrink it down to it's proper size
m_sprNumbers[i].SetTweenRotationZ( 0 ); // make it rotate into place
}
// Background Blocks rotate their way in
int bg_modeoffset=0;
float element_y_offsets=0.0f;
if (ez2Final == 1)
{
element_y_offsets = 25.0f;
bg_modeoffset = 4; // shuffle graphics +4 in the elements file for FINAL graphics.
}
for (i=0; i<3; i++)
{
m_sprbg[i].Load( THEME->GetPathTo("Graphics","stage elements") );
m_sprbg[i].StopAnimating();
m_sprbg[i].SetState( i+bg_modeoffset );
}
if (ez2Final == 1)
{
m_sprbgxtra.Load( THEME->GetPathTo("Graphics","stage elements") );
m_sprbgxtra.StopAnimating();
m_sprbgxtra.SetState( bg_modeoffset );
m_sprbgxtra.SetXY( fStageCenterX-30, 0+180);
m_sprbgxtra.SetHeight( 30 );
m_sprbgxtra.SetWidth( SCREEN_WIDTH + 50 );
m_sprbgxtra.SetRotation( -20 );
m_sprbgxtra.BeginTweening(0.3f);
m_sprbgxtra.SetTweenRotationZ( 0 );
}
m_sprbg[0].SetXY( fStageCenterX-30, 0+150);
if (ez2Final == 1)
m_sprbg[0].SetXY( fStageCenterX-30, 0-160);
m_sprbg[0].SetHeight( 100 );
if (ez2Final == 1)
m_sprbg[0].SetHeight( 30 );
m_sprbg[0].SetWidth( SCREEN_WIDTH + 50 );
m_sprbg[0].SetRotation( -20 );
m_sprbg[0].BeginTweening(0.3f);
m_sprbg[0].SetTweenRotationZ( 0 );
m_sprbg[1].SetXY( fStageCenterX-(SCREEN_WIDTH/2)-20, 0+element_y_offsets);
m_sprbg[1].SetHeight( SCREEN_HEIGHT - 140 );
m_sprbg[1].SetWidth( 130 );
m_sprbg[1].SetRotation( -20 );
m_sprbg[1].BeginTweening(0.3f);
m_sprbg[1].SetTweenRotationZ( 0 );
m_sprbg[2].SetXY( fStageCenterX+430, 0+element_y_offsets);
m_sprbg[2].SetHeight( SCREEN_HEIGHT - 140 );
m_sprbg[2].SetWidth( SCREEN_WIDTH + 50 );
m_sprbg[2].SetRotation( -20 );
m_sprbg[2].BeginTweening(0.3f);
m_sprbg[2].SetTweenX( fStageCenterX - 30 );
m_sprbg[2].SetTweenRotationZ( 0 );
for (i=3; i>=0; i--) // work backwards as we wanna add em in reverse
{
m_frameStage.AddSubActor( &m_sprbg[i] );
}
if (ez2Final == 1)
{
m_frameStage.AddSubActor( &m_sprbgxtra );
}
// scroll in the name of the game (ez2dancer ukmove) across the top of the screen
for (i=0; i<2; i++) // specify the font file.
{
m_ez2ukm[i].LoadFromFont( THEME->GetPathTo("Fonts","stage") );
m_ez2ukm[i].TurnShadowOff();
m_stagedesc[i].LoadFromFont( THEME->GetPathTo("Fonts","stage") );
m_stagedesc[i].TurnShadowOff();
}
m_ez2ukm[0].SetXY( fStageCenterX-400, 0-220 ); // set the intiial UKMOVE positions
m_ez2ukm[1].SetXY( fStageCenterX+400, 0+220 );
m_stagedesc[0].SetXY( fStageCenterX-400, 0-150+element_y_offsets ); // set the intiial desc positions
m_stagedesc[1].SetXY( fStageCenterX+400, 0+70+element_y_offsets );
if (ez2Final == 1)
{
m_stagedesc[1].SetY( 140.0f );
}
for (i=0; i<2; i++) // initialize the UK MOVE text and positions
{
m_ez2ukm[i].SetText( "STEPMANIA EZ2 MOVE" );
m_ez2ukm[i].SetDiffuseColor( D3DXCOLOR(1,1,1,1) );
m_ez2ukm[i].BeginTweening(0.5f);
if (ez2Final == 1)
{
m_stagedesc[i].SetText( "FINAL FINAL FINAL FINAL FINAL FINAL FINAL FINAL FINAL FINAL" );
m_stagedesc[i].SetDiffuseColor( D3DXCOLOR(1.0f/225.0f*227.0f,1.0f/225.0f*228.0f,1/225.0f*255.0f,1) );
}
else
{
m_stagedesc[i].SetText( "NEXT NEXT NEXT NEXT NEXT NEXT NEXT NEXT NEXT NEXT NEXT" );
m_stagedesc[i].SetDiffuseColor( D3DXCOLOR(1.0f/225.0f*166.0f,1.0f/225.0f*83.0f,1/225.0f*16.0f,1) );
}
m_stagedesc[i].BeginTweening(0.5f);
}
m_ez2ukm[0].SetTweenX(fStageCenterX+90); // set their new locations
m_ez2ukm[1].SetTweenX(fStageCenterX-170);
m_stagedesc[0].SetTweenX(fStageCenterX+10); // set their new locations
m_stagedesc[1].SetTweenX(fStageCenterX-100);
for (i=0; i<2; i++)
{
m_frameStage.AddSubActor( &m_ez2ukm[i] );
m_frameStage.AddSubActor( &m_stagedesc[i] );
}
// 20 Scrolling Blobs come in one at a time from either side at the bottom in the following code:
for( int j=0; j<2; j++)
{
for (i=0; i<20; i++)
{
m_sprScrollingBlobs[j][i].Load( THEME->GetPathTo("Graphics","stage elements") );
m_sprScrollingBlobs[j][i].StopAnimating();
m_sprScrollingBlobs[j][i].SetState( 3+bg_modeoffset );
}
}
for( j=0; j<2; j++)
{
for (i=0; i<20; i++)
{
if (j == 0)
{
m_sprScrollingBlobs[j][i].SetXY( fStageCenterX-(SCREEN_WIDTH/2)-500-((i*i)*4), 135 );
if (ez2Final == 1)
{
m_sprScrollingBlobs[j][i].SetY( 0-160);
}
}
else
{
m_sprScrollingBlobs[j][i].SetXY( fStageCenterX+(SCREEN_WIDTH/2)+500-((i*i)*4), 170 );
if (ez2Final == 1)
{
m_sprScrollingBlobs[j][i].SetY( 180 );
}
}
}
}
for( j=0; j<2; j++)
{
for (i=0; i<20; i++)
{
m_sprScrollingBlobs[j][i].BeginTweening(0.2f * i / 7);
if (j == 0)
m_sprScrollingBlobs[j][i].SetTweenX(fStageCenterX-(SCREEN_WIDTH/2)+(i*30.0f));
else
m_sprScrollingBlobs[j][i].SetTweenX(fStageCenterX+(SCREEN_WIDTH/2)-70-(i*30.0f));
m_frameStage.AddSubActor( &m_sprScrollingBlobs[j][i] );
}
}
// write the stage name
m_stagename.LoadFromFont( THEME->GetPathTo("Fonts","stage") );
m_stagename.TurnShadowOff();
m_stagename.SetXY( fStageCenterX+400, 0-30+element_y_offsets );
switch (iStageNo)
{
case 0: m_stagename.SetText( "THE NEXT STAGE" ); break;
case 1: m_stagename.SetText( "THE FIRST STAGE" ); break;
case 2: m_stagename.SetText( "THE SECOND STAGE" ); break;
case 3: m_stagename.SetText( "THE THIRD STAGE" ); break;
case 4: m_stagename.SetText( "THE FOURTH STAGE" ); break;
case 5: m_stagename.SetText( "THE FIFTH STAGE" ); break;
case 6: m_stagename.SetText( "THE SIXTH STAGE" ); break;
case 7: m_stagename.SetText( "THE SEVENTH STAGE" ); break;
default: m_stagename.SetText("THE NEXT STAGE"); break;
}
if (iStageNo > 9) // if we're in two digits or more
{
m_stagename.SetText( "" ); // make this text disappear.
}
m_stagename.SetDiffuseColor( D3DXCOLOR(1.0f/225.0f*166.0f,1.0f/225.0f*83.0f,1/225.0f*16.0f,1) );
if (ez2Final == 1)
{
m_stagename.SetDiffuseColor( D3DXCOLOR(1.0f/225.0f*227.0f,1.0f/225.0f*228.0f,1/225.0f*255.0f,1) );
m_stagename.SetText( "THE FINAL STAGE" );
stage_mode = MODE_FINAL; // set back to final again.
ez2Final = 0;
}
m_stagename.BeginTweening(0.5f);
m_stagename.SetTweenX(fStageCenterX+70); // set their new locations
m_frameStage.AddSubActor( &m_stagename );
}
*/
}
this->SendScreenMessage( SM_DoneFadingIn, 1.0f );
this->SendScreenMessage( SM_StartFadingOut, 4.0f );
}
@@ -474,35 +500,18 @@ ScreenStage::ScreenStage()
void ScreenStage::Update( float fDeltaTime )
{
Screen::Update( fDeltaTime );
m_quadMask.Update( fDeltaTime );
m_frameStage.Update( fDeltaTime );
m_Fade.Update( fDeltaTime );
m_sprSongBackground.Update( fDeltaTime );
}
void ScreenStage::DrawPrimitives()
{
switch( g_StageType )
{
case STAGE_TYPE_MAX:
// Enable Zbuffering for the mask in the dance mode
if( g_StageType == STAGE_TYPE_MAX )
DISPLAY->EnableZBuffer();
m_quadMask.Draw();
m_frameStage.Draw();
Screen::DrawPrimitives();
if( g_StageType == STAGE_TYPE_MAX )
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();
}
void ScreenStage::HandleScreenMessage( const ScreenMessage SM )
+2 -3
View File
@@ -26,11 +26,11 @@ public:
private:
// Global Elements
// Common Elements
ActorFrame m_frameStage;
Sprite m_sprNumbers[4]; // up to 3 numbers and suffix
Sprite m_sprStage; // "Stage"
Sprite m_sprStage; // "Stage", "Final Stage", etc.
// Ez2 Elements
@@ -50,7 +50,6 @@ private:
TransitionFade m_Fade;
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_6 THEME->GetMetricC("SongManager","GroupColor6")
#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;
D3DXCOLOR GROUP_COLORS[NUM_GROUP_COLORS];
-8
View File
@@ -624,14 +624,6 @@ SOURCE=.\GrooveRadar.h
# End 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
# End Source File
# Begin Source File
-6
View File
@@ -628,12 +628,6 @@
<File
RelativePath="GrooveRadar.h">
</File>
<File
RelativePath="GroupInfoFrame.cpp">
</File>
<File
RelativePath="GroupInfoFrame.h">
</File>
<File
RelativePath="GroupList.cpp">
</File>