diff --git a/stepmania/Themes/default/Graphics/ScreenGameplayExtra life frame.png b/stepmania/Themes/default/Graphics/ScreenGameplayExtra life frame.png new file mode 100644 index 0000000000..ba3a7df7c1 Binary files /dev/null and b/stepmania/Themes/default/Graphics/ScreenGameplayExtra life frame.png differ diff --git a/stepmania/Themes/default/metrics.ini b/stepmania/Themes/default/metrics.ini index f685b376d7..aef94ba4cc 100644 --- a/stepmania/Themes/default/metrics.ini +++ b/stepmania/Themes/default/metrics.ini @@ -883,7 +883,7 @@ StyleIcon=0 MemoryCardIcons=0 [ScreenStage] -NextScreen=ScreenGameplay +NextScreen=ScreenBranchGameplay // This is the minimum delay after the "in" transition before the // "out" transition will begin. (NextScreen is loaded during this // time.) @@ -913,6 +913,14 @@ BackgroundOffCommand= OverlayOnCommand= OverlayOffCommand= +[ScreenBranchGameplay] +Class=ScreenBranch +Choices=1,2 +Condition1=IsExtraStage() or IsExtraStage2() +Condition2=true +NextScreen1=screen,ScreenGameplayExtra +NextScreen2=screen,ScreenGameplay + [ScreenGameplay] ShowEvaluationOnFail=0 StaticBGY=240 @@ -941,34 +949,18 @@ LifeFrameX=320 LifeFrameY=36 LifeFrameOnCommand=addy,-100;sleep,0.5;linear,1;addy,100 LifeFrameOffCommand=linear,1;addy,-100 -LifeFrameExtraX=320 -LifeFrameExtraY=442 -LifeFrameExtraOnCommand=addy,100;sleep,0.5;linear,1;addy,-100 -LifeFrameExtraOffCommand=linear,1;addy,100 ScoreFrameX=320 ScoreFrameY=448 ScoreFrameOnCommand=addy,100;sleep,0.5;linear,1;addy,-100 ScoreFrameOffCommand=linear,1;addy,100 -ScoreFrameExtraX=320 -ScoreFrameExtraY=32 -ScoreFrameExtraOnCommand=addy,-100;sleep,0.5;linear,1;addy,100 -ScoreFrameExtraOffCommand=linear,1;addy,-100 LifeP1X=140 LifeP1Y=28 LifeP1OnCommand=addy,-100;sleep,0.5;linear,1;addy,100 LifeP1OffCommand=linear,1;addy,-100 -LifeP1ExtraX=140 -LifeP1ExtraY=450 -LifeP1ExtraOnCommand=addy,100;sleep,0.5;linear,1;addy,-100 -LifeP1ExtraOffCommand=linear,1;addy,100 LifeP2X=500 LifeP2Y=28 LifeP2OnCommand=addy,-100;sleep,0.5;linear,1;addy,100 LifeP2OffCommand=linear,1;addy,-100 -LifeP2ExtraX=500 -LifeP2ExtraY=450 -LifeP2ExtraOnCommand=addy,100;sleep,0.5;linear,1;addy,-100 -LifeP2ExtraOffCommand=linear,1;addy,100 CombinedLifeX=320 CombinedLifeY=28 CombinedLifeOnCommand=addy,-100;sleep,0.5;linear,1;addy,100 @@ -977,10 +969,6 @@ StageX=320 StageY=54 StageOnCommand=addy,-100;sleep,0.5;linear,1;addy,100 StageOffCommand=linear,1;addy,-100 -StageExtraX=320 -StageExtraY=422 -StageExtraOnCommand=addy,100;sleep,0.5;linear,1;addy,-100 -StageExtraOffCommand=linear,1;addy,100 StageFrameX=0 StageFrameY=0 StageFrameOnCommand=hidden,1 @@ -989,18 +977,10 @@ SongNumberP1X=290 SongNumberP1Y=54 SongNumberP1OnCommand=addy,-100;sleep,0.5;linear,1;addy,100 SongNumberP1OffCommand=linear,1;addy,-100 -SongNumberP1ExtraX=290 -SongNumberP1ExtraY=440 -SongNumberP1ExtraOnCommand=addy,100;sleep,0.5;linear,1;addy,-100 -SongNumberP1ExtraOffCommand=linear,1;addy,100 SongNumberP2X=350 SongNumberP2Y=54 SongNumberP2OnCommand=addy,-100;sleep,0.5;linear,1;addy,100 SongNumberP2OffCommand=linear,1;addy,-100 -SongNumberP2ExtraX=350 -SongNumberP2ExtraY=440 -SongNumberP2ExtraOnCommand=addy,100;sleep,0.5;linear,1;addy,-100 -SongNumberP2ExtraOffCommand=linear,1;addy,100 CourseSongNumberX=0 CourseSongNumberY=0 CourseSongNumberOnCommand=hidden,1 @@ -1012,50 +992,26 @@ ScoreP1X=106 ScoreP1Y=444 ScoreP1OnCommand=addy,100;sleep,0.5;linear,1;addy,-100 ScoreP1OffCommand=linear,1;addy,100 -ScoreP1ExtraX=106 -ScoreP1ExtraY=38 -ScoreP1ExtraOnCommand=addy,-100;sleep,0.5;linear,1;addy,100 -ScoreP1ExtraOffCommand=linear,1;addy,-100 ScoreP2X=534 ScoreP2Y=444 ScoreP2OnCommand=addy,100;sleep,0.5;linear,1;addy,-100 ScoreP2OffCommand=linear,1;addy,100 -ScoreP2ExtraX=534 -ScoreP2ExtraY=38 -ScoreP2ExtraOnCommand=addy,-100;sleep,0.5;linear,1;addy,100 -ScoreP2ExtraOffCommand=linear,1;addy,-100 SecondaryScoreP1X=300 SecondaryScoreP1Y=240 SecondaryScoreP1OnCommand= SecondaryScoreP1OffCommand= -SecondaryScoreP1ExtraX=300 -SecondaryScoreP1ExtraY=240 -SecondaryScoreP1ExtraOnCommand= -SecondaryScoreP1ExtraOffCommand= SecondaryScoreP2X=340 SecondaryScoreP2Y=240 SecondaryScoreP2OnCommand= SecondaryScoreP2OffCommand= -SecondaryScoreP2ExtraX=340 -SecondaryScoreP2ExtraY=240 -SecondaryScoreP2ExtraOnCommand= -SecondaryScoreP2ExtraOffCommand= PlayerOptionsP1X=320 PlayerOptionsP1Y=434 PlayerOptionsP1OnCommand=zoom,0.5;addy,100;sleep,0.5;linear,1;addy,-100 PlayerOptionsP1OffCommand=linear,1;addy,100 -PlayerOptionsP1ExtraX=320 -PlayerOptionsP1ExtraY=46 -PlayerOptionsP1ExtraOnCommand=zoom,0.5;addy,-100;sleep,0.5;linear,1;addy,100 -PlayerOptionsP1ExtraOffCommand=linear,1;addy,-100 PlayerOptionsP2X=320 PlayerOptionsP2Y=450 PlayerOptionsP2OnCommand=zoom,0.5;addy,100;sleep,0.5;linear,1;addy,-100 PlayerOptionsP2OffCommand=linear,1;addy,100 -PlayerOptionsP2ExtraX=320 -PlayerOptionsP2ExtraY=30 -PlayerOptionsP2ExtraOnCommand=zoom,0.5;addy,-100;sleep,0.5;linear,1;addy,100 -PlayerOptionsP2ExtraOffCommand=linear,1;addy,-100 PlayerNameP1X=0 PlayerNameP1Y=0 PlayerNameP1OnCommand=hidden,1 @@ -1076,10 +1032,6 @@ SongOptionsX=320 SongOptionsY=470 SongOptionsOnCommand=zoom,0.5;addy,100;sleep,0.5;linear,1;addy,-100 SongOptionsOffCommand=linear,1;addy,100 -SongOptionsExtraX=320 -SongOptionsExtraY=10 -SongOptionsExtraOnCommand=zoom,0.5;addy,-100;sleep,0.5;linear,1;addy,100 -SongOptionsExtraOffCommand=linear,1;addy,-100 DifficultyP1X=60 DifficultyP1Y=410 DifficultyP1OnCommand=addx,-200;sleep,0.5;linear,1;addx,200 @@ -1088,14 +1040,6 @@ DifficultyP1ReverseX=60 DifficultyP1ReverseY=58 DifficultyP1ReverseOnCommand=addx,-200;sleep,0.5;linear,1;addx,200 DifficultyP1ReverseOffCommand=linear,1;addx,-200 -DifficultyP1ExtraX=60 -DifficultyP1ExtraY=420 -DifficultyP1ExtraOnCommand=addx,-200;sleep,0.5;linear,1;addx,200 -DifficultyP1ExtraOffCommand=linear,1;addx,-200 -DifficultyP1ExtraReverseX=60 -DifficultyP1ExtraReverseY=70 -DifficultyP1ExtraReverseOnCommand=addx,-200;sleep,0.5;linear,1;addx,200 -DifficultyP1ExtraReverseOffCommand=linear,1;addx,-200 DifficultyP2X=580 DifficultyP2Y=410 DifficultyP2OnCommand=addx,200;sleep,0.5;linear,1;addx,-200 @@ -1104,22 +1048,6 @@ DifficultyP2ReverseX=580 DifficultyP2ReverseY=58 DifficultyP2ReverseOnCommand=addx,200;sleep,0.5;linear,1;addx,-200 DifficultyP2ReverseOffCommand=linear,1;addx,200 -DifficultyP2ExtraX=580 -DifficultyP2ExtraY=420 -DifficultyP2ExtraOnCommand=addx,200;sleep,0.5;linear,1;addx,-200 -DifficultyP2ExtraOffCommand=linear,1;addx,200 -DifficultyP2ExtraReverseX=580 -DifficultyP2ExtraReverseY=70 -DifficultyP2ExtraReverseOnCommand=addx,200;sleep,0.5;linear,1;addx,-200 -DifficultyP2ExtraReverseOffCommand=linear,1;addx,200 -DifficultyMeterP1ExtraOffCommand= -DifficultyMeterP1ExtraOnCommand=hidden,1 -DifficultyMeterP1ExtraReverseOffCommand= -DifficultyMeterP1ExtraReverseOnCommand=hidden,1 -DifficultyMeterP1ExtraReverseX= -DifficultyMeterP1ExtraReverseY= -DifficultyMeterP1ExtraX= -DifficultyMeterP1ExtraY= DifficultyMeterP1OffCommand= DifficultyMeterP1OnCommand=hidden,1 DifficultyMeterP1ReverseOffCommand= @@ -1128,14 +1056,6 @@ DifficultyMeterP1ReverseX= DifficultyMeterP1ReverseY= DifficultyMeterP1X= DifficultyMeterP1Y= -DifficultyMeterP2ExtraOffCommand= -DifficultyMeterP2ExtraOnCommand=hidden,1 -DifficultyMeterP2ExtraReverseOffCommand= -DifficultyMeterP2ExtraReverseOnCommand=hidden,1 -DifficultyMeterP2ExtraReverseX= -DifficultyMeterP2ExtraReverseY= -DifficultyMeterP2ExtraX= -DifficultyMeterP2ExtraY= DifficultyMeterP2OffCommand= DifficultyMeterP2OnCommand=hidden,1 DifficultyMeterP2ReverseOffCommand= @@ -1177,6 +1097,98 @@ SongPositionMeterY= SongPositionMeterOnCommand=hidden,1 SongPositionMeterOffCommand= +[ScreenGameplayExtra] +Class=ScreenGameplay +Fallback=ScreenGameplay +LifeFrameX=320 +LifeFrameY=442 +LifeFrameOnCommand=addy,100;sleep,0.5;linear,1;addy,-100 +LifeFrameOffCommand=linear,1;addy,100 +ScoreFrameX=320 +ScoreFrameY=32 +ScoreFrameOnCommand=addy,-100;sleep,0.5;linear,1;addy,100 +ScoreFrameOffCommand=linear,1;addy,-100 +LifeP1X=140 +LifeP1Y=450 +LifeP1OnCommand=addy,100;sleep,0.5;linear,1;addy,-100 +LifeP1OffCommand=linear,1;addy,100 +LifeP2X=500 +LifeP2Y=450 +LifeP2OnCommand=addy,100;sleep,0.5;linear,1;addy,-100 +LifeP2OffCommand=linear,1;addy,100 +StageX=320 +StageY=422 +StageOnCommand=addy,100;sleep,0.5;linear,1;addy,-100 +StageOffCommand=linear,1;addy,100 +SongNumberP1X=290 +SongNumberP1Y=440 +SongNumberP1OnCommand=addy,100;sleep,0.5;linear,1;addy,-100 +SongNumberP1OffCommand=linear,1;addy,100 +SongNumberP2X=350 +SongNumberP2Y=440 +SongNumberP2OnCommand=addy,100;sleep,0.5;linear,1;addy,-100 +SongNumberP2OffCommand=linear,1;addy,100 +ScoreP1X=106 +ScoreP1Y=38 +ScoreP1OnCommand=addy,-100;sleep,0.5;linear,1;addy,100 +ScoreP1OffCommand=linear,1;addy,-100 +ScoreP2X=534 +ScoreP2Y=38 +ScoreP2OnCommand=addy,-100;sleep,0.5;linear,1;addy,100 +ScoreP2OffCommand=linear,1;addy,-100 +SecondaryScoreP1X=300 +SecondaryScoreP1Y=240 +SecondaryScoreP1OnCommand= +SecondaryScoreP1OffCommand= +SecondaryScoreP2X=340 +SecondaryScoreP2Y=240 +SecondaryScoreP2OnCommand= +SecondaryScoreP2OffCommand= +PlayerOptionsP1X=320 +PlayerOptionsP1Y=46 +PlayerOptionsP1OnCommand=zoom,0.5;addy,-100;sleep,0.5;linear,1;addy,100 +PlayerOptionsP1OffCommand=linear,1;addy,-100 +PlayerOptionsP2X=320 +PlayerOptionsP2Y=30 +PlayerOptionsP2OnCommand=zoom,0.5;addy,-100;sleep,0.5;linear,1;addy,100 +PlayerOptionsP2OffCommand=linear,1;addy,-100 +SongOptionsX=320 +SongOptionsY=10 +SongOptionsOnCommand=zoom,0.5;addy,-100;sleep,0.5;linear,1;addy,100 +SongOptionsOffCommand=linear,1;addy,-100 +DifficultyP1X=60 +DifficultyP1Y=420 +DifficultyP1OnCommand=addx,-200;sleep,0.5;linear,1;addx,200 +DifficultyP1OffCommand=linear,1;addx,-200 +DifficultyP1ReverseX=60 +DifficultyP1ReverseY=70 +DifficultyP1ReverseOnCommand=addx,-200;sleep,0.5;linear,1;addx,200 +DifficultyP1ReverseOffCommand=linear,1;addx,-200 +DifficultyP2X=580 +DifficultyP2Y=420 +DifficultyP2OnCommand=addx,200;sleep,0.5;linear,1;addx,-200 +DifficultyP2OffCommand=linear,1;addx,200 +DifficultyP2ReverseX=580 +DifficultyP2ReverseY=70 +DifficultyP2ReverseOnCommand=addx,200;sleep,0.5;linear,1;addx,-200 +DifficultyP2ReverseOffCommand=linear,1;addx,200 +DifficultyMeterP1OffCommand= +DifficultyMeterP1OnCommand=hidden,1 +DifficultyMeterP1ReverseOffCommand= +DifficultyMeterP1ReverseOnCommand=hidden,1 +DifficultyMeterP1ReverseX= +DifficultyMeterP1ReverseY= +DifficultyMeterP1X= +DifficultyMeterP1Y= +DifficultyMeterP2OffCommand= +DifficultyMeterP2OnCommand=hidden,1 +DifficultyMeterP2ReverseOffCommand= +DifficultyMeterP2ReverseOnCommand=hidden,1 +DifficultyMeterP2ReverseX= +DifficultyMeterP2ReverseY= +DifficultyMeterP2X= +DifficultyMeterP2Y= + [ScreenBranchEvaluation] Class=ScreenBranch Choices=1,2,3,4,5,6 @@ -4511,6 +4523,12 @@ Fallback=DifficultyMeter [ScreenGameplay DifficultyMeterP2] Fallback=DifficultyMeter +[ScreenGameplayExtra DifficultyMeterP1] +Fallback=DifficultyMeter + +[ScreenGameplayExtra DifficultyMeterP2] +Fallback=DifficultyMeter + [ScreenEvaluation DifficultyMeterP1] Fallback=DifficultyMeter diff --git a/stepmania/src/ScreenGameplay.cpp b/stepmania/src/ScreenGameplay.cpp index 3fe7e0243c..74a75706a3 100644 --- a/stepmania/src/ScreenGameplay.cpp +++ b/stepmania/src/ScreenGameplay.cpp @@ -54,15 +54,15 @@ // // Defines // -#define PREV_SCREEN THEME->GetMetric ("ScreenGameplay","PrevScreen") -#define NEXT_SCREEN THEME->GetMetric ("ScreenGameplay","NextScreen") -#define SHOW_LIFE_METER_FOR_DISABLED_PLAYERS THEME->GetMetricB("ScreenGameplay","ShowLifeMeterForDisabledPlayers") -#define EVAL_ON_FAIL THEME->GetMetricB("ScreenGameplay","ShowEvaluationOnFail") -#define SHOW_SCORE_IN_RAVE THEME->GetMetricB("ScreenGameplay","ShowScoreInRave") -#define SONG_POSITION_METER_WIDTH THEME->GetMetricF("ScreenGameplay","SongPositionMeterWidth") +#define PREV_SCREEN THEME->GetMetric (m_sName,"PrevScreen") +#define NEXT_SCREEN THEME->GetMetric (m_sName,"NextScreen") +#define SHOW_LIFE_METER_FOR_DISABLED_PLAYERS THEME->GetMetricB(m_sName,"ShowLifeMeterForDisabledPlayers") +#define EVAL_ON_FAIL THEME->GetMetricB(m_sName,"ShowEvaluationOnFail") +#define SHOW_SCORE_IN_RAVE THEME->GetMetricB(m_sName,"ShowScoreInRave") +#define SONG_POSITION_METER_WIDTH THEME->GetMetricF(m_sName,"SongPositionMeterWidth") /* XXX: This is ugly; most people don't need to override this per-mode. This will * go away eventually, once metrics can redirect to Lua calls. */ -#define INITIAL_BACKGROUND_BRIGHTNESS( play_mode ) THEME->GetMetricF("ScreenGameplay","InitialBackgroundBrightness"+Capitalize(PlayModeToString(play_mode))) +#define INITIAL_BACKGROUND_BRIGHTNESS( play_mode ) THEME->GetMetricF(m_sName,"InitialBackgroundBrightness"+Capitalize(PlayModeToString(play_mode))) static CachedThemeMetricF SECONDS_BETWEEN_COMMENTS ("ScreenGameplay","SecondsBetweenComments"); static CachedThemeMetricF TICK_EARLY_SECONDS ("ScreenGameplay","TickEarlySeconds"); @@ -288,7 +288,6 @@ void ScreenGameplay::Init() m_bZeroDeltaOnNextUpdate = false; - const bool bExtra = GAMESTATE->IsExtraStage() || GAMESTATE->IsExtraStage2(); // init old offset in case offset changes in song if( GAMESTATE->IsCourseMode() ) g_fOldOffset = -1000; @@ -305,14 +304,14 @@ void ScreenGameplay::Init() m_sprStaticBackground.SetName( "StaticBG" ); - m_sprStaticBackground.Load( THEME->GetPathToG("ScreenGameplay Static Background")); + m_sprStaticBackground.Load( THEME->GetPathG(m_sName,"Static Background") ); SET_XY( m_sprStaticBackground ); m_sprStaticBackground.SetDrawOrder( DRAW_ORDER_BEFORE_EVERYTHING ); // behind everything else this->AddChild(&m_sprStaticBackground); if( !m_bDemonstration ) // only load if we're going to use it { - m_Toasty.Load( THEME->GetPathToB("ScreenGameplay toasty") ); + m_Toasty.Load( THEME->GetPathB(m_sName,"toasty") ); this->AddChild( &m_Toasty ); } @@ -333,7 +332,7 @@ void ScreenGameplay::Init() m_Player[p].SetX( fPlayerX ); this->AddChild( &m_Player[p] ); - m_sprOniGameOver[p].Load( THEME->GetPathToG("ScreenGameplay oni gameover") ); + m_sprOniGameOver[p].Load( THEME->GetPathG(m_sName,"oni gameover") ); m_sprOniGameOver[p].SetX( fPlayerX ); m_sprOniGameOver[p].SetY( SCREEN_TOP - m_sprOniGameOver[p].GetZoomedHeight()/2 ); m_sprOniGameOver[p].SetDiffuse( RageColor(1,1,1,0) ); // 0 alpha so we don't waste time drawing while not visible @@ -353,14 +352,12 @@ void ScreenGameplay::Init() // Add LifeFrame // CString sLifeFrameName; - if( bExtra ) - sLifeFrameName = "ScreenGameplay extra life frame"; - else if( GAMESTATE->m_SongOptions.m_LifeType == SongOptions::LIFE_BATTERY ) - sLifeFrameName = "ScreenGameplay oni life frame"; + if( GAMESTATE->m_SongOptions.m_LifeType == SongOptions::LIFE_BATTERY ) + sLifeFrameName = m_sName+" oni life frame"; else - sLifeFrameName = "ScreenGameplay life frame"; + sLifeFrameName = m_sName+" life frame"; m_sprLifeFrame.Load( THEME->GetPathToG(sLifeFrameName) ); - m_sprLifeFrame.SetName( bExtra?"LifeFrameExtra":"LifeFrame" ); + m_sprLifeFrame.SetName( "LifeFrame" ); SET_XY( m_sprLifeFrame ); this->AddChild( &m_sprLifeFrame ); @@ -368,14 +365,12 @@ void ScreenGameplay::Init() // Add score frame // CString sScoreFrameName; - if( bExtra ) - sScoreFrameName = "ScreenGameplay extra score frame"; - else if( GAMESTATE->m_SongOptions.m_LifeType == SongOptions::LIFE_BATTERY ) - sScoreFrameName = "ScreenGameplay oni score frame"; + if( GAMESTATE->m_SongOptions.m_LifeType == SongOptions::LIFE_BATTERY ) + sScoreFrameName = m_sName+" oni score frame"; else - sScoreFrameName = "ScreenGameplay score frame"; + sScoreFrameName = m_sName+" score frame"; m_sprScoreFrame.Load( THEME->GetPathToG(sScoreFrameName) ); - m_sprScoreFrame.SetName( ssprintf("ScoreFrame%s",bExtra?"Extra":"") ); + m_sprScoreFrame.SetName( "ScoreFrame" ); SET_XY( m_sprScoreFrame ); this->AddChild( &m_sprScoreFrame ); @@ -388,7 +383,7 @@ void ScreenGameplay::Init() case PLAY_MODE_BATTLE: case PLAY_MODE_RAVE: m_pCombinedLifeMeter = new CombinedLifeMeterTug; - m_pCombinedLifeMeter->SetName( ssprintf("CombinedLife%s",bExtra?"Extra":"") ); + m_pCombinedLifeMeter->SetName( "CombinedLife" ); SET_XY( *m_pCombinedLifeMeter ); this->AddChild( m_pCombinedLifeMeter ); break; @@ -431,7 +426,7 @@ void ScreenGameplay::Init() } m_pLifeMeter[p]->Load( (PlayerNumber)p ); - m_pLifeMeter[p]->SetName( ssprintf("LifeP%d%s",p+1,bExtra?"Extra":"") ); + m_pLifeMeter[p]->SetName( ssprintf("LifeP%d",p+1) ); SET_XY( *m_pLifeMeter[p] ); this->AddChild( m_pLifeMeter[p] ); } @@ -444,20 +439,20 @@ void ScreenGameplay::Init() - m_textSongTitle.LoadFromFont( THEME->GetPathToF("ScreenGameplay song title") ); + m_textSongTitle.LoadFromFont( THEME->GetPathF(m_sName,"song title") ); m_textSongTitle.SetShadowLength( 0 ); m_textSongTitle.SetName( "SongTitle" ); SET_XY( m_textSongTitle ); this->AddChild( &m_textSongTitle ); - m_meterSongPosition.Load( THEME->GetPathToG("ScreenGameplay song position meter"), SONG_POSITION_METER_WIDTH, THEME->GetPathToG("ScreenGameplay song position tip") ); + m_meterSongPosition.Load( THEME->GetPathG(m_sName,"song position meter"), SONG_POSITION_METER_WIDTH, THEME->GetPathG(m_sName,"song position tip") ); m_meterSongPosition.SetName( "SongPositionMeter" ); SET_XY( m_meterSongPosition ); this->AddChild( &m_meterSongPosition ); - m_MaxCombo.LoadFromFont( THEME->GetPathToN("ScreenGameplay max combo") ); + m_MaxCombo.LoadFromFont( THEME->GetPathN(m_sName,"max combo") ); m_MaxCombo.SetName( "MaxCombo" ); SET_XY( m_MaxCombo ); m_MaxCombo.SetText( ssprintf("%d", g_CurStageStats.iMaxCombo[GAMESTATE->m_MasterPlayerNumber]) ); // TODO: Make this work for both players @@ -488,7 +483,7 @@ void ScreenGameplay::Init() } m_pPrimaryScoreDisplay[p]->Init( (PlayerNumber)p ); - m_pPrimaryScoreDisplay[p]->SetName( ssprintf("ScoreP%d%s",p+1,bExtra?"Extra":"") ); + m_pPrimaryScoreDisplay[p]->SetName( ssprintf("ScoreP%d",p+1) ); SET_XY( *m_pPrimaryScoreDisplay[p] ); if( GAMESTATE->m_PlayMode != PLAY_MODE_RAVE || SHOW_SCORE_IN_RAVE ) /* XXX: ugly */ this->AddChild( m_pPrimaryScoreDisplay[p] ); @@ -507,7 +502,7 @@ void ScreenGameplay::Init() if( m_pSecondaryScoreDisplay[p] ) { m_pSecondaryScoreDisplay[p]->Init( (PlayerNumber)p ); - m_pSecondaryScoreDisplay[p]->SetName( ssprintf("SecondaryScoreP%d%s",p+1,bExtra?"Extra":"") ); + m_pSecondaryScoreDisplay[p]->SetName( ssprintf("SecondaryScoreP%d",p+1) ); SET_XY( *m_pSecondaryScoreDisplay[p] ); this->AddChild( m_pSecondaryScoreDisplay[p] ); } @@ -516,7 +511,7 @@ void ScreenGameplay::Init() // // Add stage / SongNumber // - m_sprStage.SetName( ssprintf("Stage%s",bExtra?"Extra":"") ); + m_sprStage.SetName( "Stage" ); SET_XY( m_sprStage ); m_sprCourseSongNumber.SetName( "CourseSongNumber" ); @@ -524,18 +519,18 @@ void ScreenGameplay::Init() FOREACH_EnabledPlayer(p) { - m_textCourseSongNumber[p].LoadFromFont( THEME->GetPathToN("ScreenGameplay song num") ); + m_textCourseSongNumber[p].LoadFromFont( THEME->GetPathN(m_sName,"song num") ); m_textCourseSongNumber[p].SetShadowLength( 0 ); - m_textCourseSongNumber[p].SetName( ssprintf("SongNumberP%d%s",p+1,bExtra?"Extra":"") ); + m_textCourseSongNumber[p].SetName( ssprintf("SongNumberP%d",p+1) ); SET_XY( m_textCourseSongNumber[p] ); m_textCourseSongNumber[p].SetText( "" ); m_textCourseSongNumber[p].SetDiffuse( RageColor(0,0.5f,1,1) ); // light blue if( GAMESTATE->m_PlayMode == PLAY_MODE_RAVE ) { - m_textPlayerName[p].LoadFromFont( THEME->GetPathToF("ScreenGameplay player") ); + m_textPlayerName[p].LoadFromFont( THEME->GetPathF(m_sName,"player") ); m_textPlayerName[p].SetName( ssprintf("PlayerNameP%i",p+1) ); - m_textPlayerName[p].SetText( GAMESTATE->GetPlayerDisplayName((PlayerNumber)p) ); + m_textPlayerName[p].SetText( GAMESTATE->GetPlayerDisplayName(p) ); SET_XY( m_textPlayerName[p] ); this->AddChild( &m_textPlayerName[p] ); } @@ -543,7 +538,7 @@ void ScreenGameplay::Init() FOREACH_EnabledPlayer(p) { - m_textStepsDescription[p].LoadFromFont( THEME->GetPathToF("ScreenGameplay StepsDescription") ); + m_textStepsDescription[p].LoadFromFont( THEME->GetPathF(m_sName,"StepsDescription") ); m_textStepsDescription[p].SetName( ssprintf("StepsDescriptionP%i",p+1) ); SET_XY( m_textStepsDescription[p] ); this->AddChild( &m_textStepsDescription[p] ); @@ -554,7 +549,7 @@ void ScreenGameplay::Init() case PLAY_MODE_ARCADE: case PLAY_MODE_BATTLE: case PLAY_MODE_RAVE: - m_sprStage.Load( THEME->GetPathToG("ScreenGameplay stage "+GAMESTATE->GetStageText()) ); + m_sprStage.Load( THEME->GetPathG(m_sName,"stage "+GAMESTATE->GetStageText()) ); this->AddChild( &m_sprStage ); break; case PLAY_MODE_NONSTOP: @@ -562,18 +557,15 @@ void ScreenGameplay::Init() case PLAY_MODE_ENDLESS: this->AddChild( &m_sprCourseSongNumber ); - FOREACH_PlayerNumber( p ) - if( GAMESTATE->IsPlayerEnabled(p) ) - { - this->AddChild( &m_textCourseSongNumber[p] ); - } + FOREACH_EnabledPlayer( p ) + this->AddChild( &m_textCourseSongNumber[p] ); break; default: ASSERT(0); // invalid GameMode } - m_sprStageFrame.Load( THEME->GetPathToG("ScreenGameplay stage frame") ); + m_sprStageFrame.Load( THEME->GetPathG(m_sName,"stage frame") ); m_sprStageFrame->SetName( "StageFrame" ); SET_XY( m_sprStageFrame ); this->AddChild( m_sprStageFrame ); @@ -581,21 +573,18 @@ void ScreenGameplay::Init() // // Player/Song options // - FOREACH_PlayerNumber(p) + FOREACH_EnabledPlayer(p) { - if( !GAMESTATE->IsPlayerEnabled(p) ) - continue; - - m_textPlayerOptions[p].LoadFromFont( THEME->GetPathToF("ScreenGameplay player options") ); + m_textPlayerOptions[p].LoadFromFont( THEME->GetPathF(m_sName,"player options") ); m_textPlayerOptions[p].SetShadowLength( 0 ); - m_textPlayerOptions[p].SetName( ssprintf("PlayerOptionsP%d%s",p+1,bExtra?"Extra":"") ); + m_textPlayerOptions[p].SetName( ssprintf("PlayerOptionsP%d",p+1) ); SET_XY( m_textPlayerOptions[p] ); this->AddChild( &m_textPlayerOptions[p] ); } - m_textSongOptions.LoadFromFont( THEME->GetPathToF("ScreenGameplay song options") ); + m_textSongOptions.LoadFromFont( THEME->GetPathF(m_sName,"song options") ); m_textSongOptions.SetShadowLength( 0 ); - m_textSongOptions.SetName( ssprintf("SongOptions%s",bExtra?"Extra":"") ); + m_textSongOptions.SetName( "SongOptions" ); SET_XY( m_textSongOptions ); m_textSongOptions.SetText( GAMESTATE->m_SongOptions.GetString() ); this->AddChild( &m_textSongOptions ); @@ -615,11 +604,11 @@ void ScreenGameplay::Init() FOREACH_EnabledPlayer(p) { - m_DifficultyIcon[p].Load( THEME->GetPathToG(ssprintf("ScreenGameplay difficulty icons 2x%d",NUM_DIFFICULTIES)) ); + m_DifficultyIcon[p].Load( THEME->GetPathG(m_sName,ssprintf("difficulty icons %dx%d",NUM_PLAYERS,NUM_DIFFICULTIES)) ); /* Position it in LoadNextSong. */ this->AddChild( &m_DifficultyIcon[p] ); - m_DifficultyMeter[p].SetName( ssprintf("ScreenGameplay DifficultyMeterP%d",p+1) ); + m_DifficultyMeter[p].SetName( m_sName + ssprintf(" DifficultyMeterP%d",p+1) ); m_DifficultyMeter[p].Load(); /* Position it in LoadNextSong. */ this->AddChild( &m_DifficultyMeter[p] ); @@ -630,7 +619,7 @@ void ScreenGameplay::Init() this->AddChild(&m_LyricDisplay); - m_textAutoPlay.LoadFromFont( THEME->GetPathToF("ScreenGameplay autoplay") ); + m_textAutoPlay.LoadFromFont( THEME->GetPathF(m_sName,"autoplay") ); m_textAutoPlay.SetName( "AutoPlay" ); SET_XY( m_textAutoPlay ); if( !m_bDemonstration ) // only load if we're not in demonstration of jukebox @@ -659,24 +648,24 @@ void ScreenGameplay::Init() if( !m_bDemonstration ) // only load if we're going to use it { - m_Ready.Load( THEME->GetPathToB("ScreenGameplay ready") ); + m_Ready.Load( THEME->GetPathB(m_sName,"ready") ); this->AddChild( &m_Ready ); - m_Go.Load( THEME->GetPathToB("ScreenGameplay go") ); + m_Go.Load( THEME->GetPathB(m_sName,"go") ); this->AddChild( &m_Go ); - m_Cleared.Load( THEME->GetPathToB("ScreenGameplay cleared") ); + m_Cleared.Load( THEME->GetPathB(m_sName,"cleared") ); m_Cleared.SetDrawOrder( DRAW_ORDER_TRANSITIONS-1 ); // on top of everything else this->AddChild( &m_Cleared ); - m_Failed.Load( THEME->GetPathToB("ScreenGameplay failed") ); + m_Failed.Load( THEME->GetPathB(m_sName,"failed") ); m_Failed.SetDrawOrder( DRAW_ORDER_TRANSITIONS-1 ); // on top of everything else this->AddChild( &m_Failed ); if( PREFSMAN->m_bAllowExtraStage && GAMESTATE->IsFinalStage() ) // only load if we're going to use it - m_Extra.Load( THEME->GetPathToB("ScreenGameplay extra1") ); + m_Extra.Load( THEME->GetPathB(m_sName,"extra1") ); if( PREFSMAN->m_bAllowExtraStage && GAMESTATE->IsExtraStage() ) // only load if we're going to use it - m_Extra.Load( THEME->GetPathToB("ScreenGameplay extra2") ); + m_Extra.Load( THEME->GetPathB(m_sName,"extra2") ); this->AddChild( &m_Extra ); // only load if we're going to use it @@ -686,35 +675,35 @@ void ScreenGameplay::Init() case PLAY_MODE_RAVE: FOREACH_PlayerNumber(p) { - m_Win[p].Load( THEME->GetPathToB(ssprintf("ScreenGameplay win p%d",p+1)) ); + m_Win[p].Load( THEME->GetPathB(m_sName,ssprintf("win p%d",p+1)) ); this->AddChild( &m_Win[p] ); } - m_Draw.Load( THEME->GetPathToB("ScreenGameplay draw") ); + m_Draw.Load( THEME->GetPathB(m_sName,"draw") ); this->AddChild( &m_Draw ); break; } - m_textDebug.LoadFromFont( THEME->GetPathToF("Common normal") ); + m_textDebug.LoadFromFont( THEME->GetPathF("Common","normal") ); m_textDebug.SetName( "Debug" ); SET_XY( m_textDebug ); this->AddChild( &m_textDebug ); - m_Overlay.LoadFromAniDir( THEME->GetPathToB("ScreenGameplay Overlay") ); + m_Overlay.LoadFromAniDir( THEME->GetPathB(m_sName,"Overlay") ); m_Overlay.SetDrawOrder( DRAW_ORDER_TRANSITIONS-1 ); this->AddChild( &m_Overlay ); - m_In.Load( THEME->GetPathToB("ScreenGameplay in") ); + m_In.Load( THEME->GetPathB(m_sName,"in") ); m_In.SetDrawOrder( DRAW_ORDER_TRANSITIONS ); this->AddChild( &m_In ); - m_Back.Load( THEME->GetPathToB("Common back") ); + m_Back.Load( THEME->GetPathB("Common","back") ); m_Back.SetDrawOrder( DRAW_ORDER_TRANSITIONS ); // on top of everything else this->AddChild( &m_Back ); if( GAMESTATE->IsExtraStage() || GAMESTATE->IsExtraStage2() ) // only load if we're going to use it { - m_textSurviveTime.LoadFromFont( THEME->GetPathToF("ScreenGameplay survive time") ); + m_textSurviveTime.LoadFromFont( THEME->GetPathF(m_sName,"survive time") ); m_textSurviveTime.SetShadowLength( 0 ); m_textSurviveTime.SetName( "SurviveTime" ); SET_XY( m_textSurviveTime ); @@ -735,14 +724,14 @@ void ScreenGameplay::Init() if( !m_bDemonstration ) // only load if we're going to use it { - m_soundAssistTick.Load( THEME->GetPathToS("ScreenGameplay assist tick"), true ); + m_soundAssistTick.Load( THEME->GetPathS(m_sName,"assist tick"), true ); switch( GAMESTATE->m_PlayMode ) { case PLAY_MODE_BATTLE: - m_soundBattleTrickLevel1.Load( THEME->GetPathToS("ScreenGameplay battle trick level1"), true ); - m_soundBattleTrickLevel2.Load( THEME->GetPathToS("ScreenGameplay battle trick level2"), true ); - m_soundBattleTrickLevel3.Load( THEME->GetPathToS("ScreenGameplay battle trick level3"), true ); + m_soundBattleTrickLevel1.Load( THEME->GetPathS(m_sName,"battle trick level1"), true ); + m_soundBattleTrickLevel2.Load( THEME->GetPathS(m_sName,"battle trick level2"), true ); + m_soundBattleTrickLevel3.Load( THEME->GetPathS(m_sName,"battle trick level3"), true ); break; } } @@ -839,7 +828,7 @@ void ScreenGameplay::LoadCourseSongNumber( int SongNumber ) if( !GAMESTATE->IsCourseMode() ) return; - const CString path = THEME->GetPathToG( ssprintf("ScreenGameplay course song %i", SongNumber), true ); + const CString path = THEME->GetPathG( m_sName, ssprintf(" course song %i",SongNumber), true ); if( path != "" ) m_sprCourseSongNumber.Load( path ); else @@ -957,7 +946,6 @@ void ScreenGameplay::LoadNextSong() */ m_BPMDisplay.SetBPM( GAMESTATE->m_pCurSong ); - const bool bExtra = GAMESTATE->IsExtraStage() || GAMESTATE->IsExtraStage2(); const bool bReverse[NUM_PLAYERS] = { GAMESTATE->m_PlayerOptions[0].m_fScrolls[PlayerOptions::SCROLL_REVERSE] == 1, GAMESTATE->m_PlayerOptions[1].m_fScrolls[PlayerOptions::SCROLL_REVERSE] == 1 @@ -966,10 +954,10 @@ void ScreenGameplay::LoadNextSong() { FOREACH_EnabledPlayer( p ) { - m_DifficultyIcon[p].SetName( ssprintf("DifficultyP%d%s%s",p+1,bExtra?"Extra":"",bReverse[p]?"Reverse":"") ); + m_DifficultyIcon[p].SetName( ssprintf("DifficultyP%d%s",p+1,bReverse[p]?"Reverse":"") ); SET_XY( m_DifficultyIcon[p] ); - m_DifficultyMeter[p].SetName( ssprintf("DifficultyMeterP%d%s%s",p+1,bExtra?"Extra":"",bReverse[p]?"Reverse":"") ); + m_DifficultyMeter[p].SetName( ssprintf("DifficultyMeterP%d%s",p+1,bReverse[p]?"Reverse":"") ); SET_XY( m_DifficultyMeter[p] ); } } @@ -983,11 +971,11 @@ void ScreenGameplay::LoadNextSong() SET_XY( m_LyricDisplay ); /* Load the Oni transitions */ - m_NextSongIn.Load( THEME->GetPathToB("ScreenGameplay next song in") ); + m_NextSongIn.Load( THEME->GetPathB(m_sName,"next song in") ); // Instead, load this right before it's used -// m_NextSongOut.Load( THEME->GetPathToB("ScreenGameplay next song out") ); +// m_NextSongOut.Load( THEME->GetPathB(m_sName,"next song out") ); - m_SongFinished.Load( THEME->GetPathToB("ScreenGameplay song finished") ); + m_SongFinished.Load( THEME->GetPathB(m_sName,"song finished") ); // Load lyrics // XXX: don't load this here @@ -1335,7 +1323,7 @@ void ScreenGameplay::Update( float fDeltaTime ) FOREACH_CpuPlayer(p) { - SOUND->PlayOnceFromDir( THEME->GetPathToS("ScreenGameplay oni die") ); + SOUND->PlayOnceFromDir( THEME->GetPathS(m_sName,"oni die") ); ShowOniGameOver((PlayerNumber)p); m_Player[p].Init(); // remove all notes and scoring m_Player[p].FadeToFail(); // tell the NoteField to fade to white @@ -1516,10 +1504,8 @@ void ScreenGameplay::UpdateCheckFail() return; // check for individual fail - for ( int pn=0; pnIsPlayerEnabled(pn) ) - continue; if( (m_pLifeMeter[pn] && !m_pLifeMeter[pn]->IsFailing()) || (m_pCombinedLifeMeter && !m_pCombinedLifeMeter->IsFailing((PlayerNumber)pn)) ) continue; /* isn't failing */ @@ -1541,7 +1527,7 @@ void ScreenGameplay::UpdateCheckFail() if( !g_CurStageStats.AllFailedEarlier() ) // if not the last one to fail { // kill them! - SOUND->PlayOnceFromDir( THEME->GetPathToS("ScreenGameplay oni die") ); + SOUND->PlayOnceFromDir( THEME->GetPathS(m_sName,"oni die") ); ShowOniGameOver((PlayerNumber)pn); m_Player[pn].Init(); // remove all notes and scoring m_Player[pn].FadeToFail(); // tell the NoteField to fade to white @@ -2017,7 +2003,7 @@ void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM ) iPlaySongIndex %= m_apSongsQueue.size(); GAMESTATE->m_pCurSong = m_apSongsQueue[iPlaySongIndex]; - m_NextSongOut.Load( THEME->GetPathToB("ScreenGameplay next song out") ); + m_NextSongOut.Load( THEME->GetPathB(m_sName,"next song out") ); GAMESTATE->m_pCurSong = pCurSong; m_NextSongOut.StartTransitioning( SM_LoadNextSong );