push ScreenSaveSync instead of making it a separate screen. Simplifies branching.

This commit is contained in:
Chris Danford
2006-02-04 20:14:04 +00:00
parent 2500f55e91
commit 8d584de037
7 changed files with 41 additions and 51 deletions
@@ -142,10 +142,6 @@ function GetGameplayNextScreen()
Trace( " IsExtraStage2 = "..tostring(IsExtraStage2()) ) Trace( " IsExtraStage2 = "..tostring(IsExtraStage2()) )
Trace( " Event mode = "..tostring(IsEventMode()) ) Trace( " Event mode = "..tostring(IsEventMode()) )
if GAMESTATE:IsSyncDataChanged() then
return "ScreenSaveSync"
end
if Passed or GAMESTATE:IsCourseMode() or if Passed or GAMESTATE:IsCourseMode() or
IsExtraStage() or IsExtraStage2() IsExtraStage() or IsExtraStage2()
then then
@@ -207,14 +203,6 @@ function ModeMenuAvailable()
return true return true
end end
function ScreenGameplaySyncMachineNext()
if GAMESTATE:IsSyncDataChanged() then
return 'ScreenSaveSync'
else
return 'ScreenOptionsService'
end
end
-- (c) 2005 Glenn Maynard, Chris Danford -- (c) 2005 Glenn Maynard, Chris Danford
-- All rights reserved. -- All rights reserved.
-- --
+5 -10
View File
@@ -4478,11 +4478,6 @@ UseNameBlacklist=0
DefaultSort=Group DefaultSort=Group
DefaultSong= DefaultSong=
[ScreenSaveSync]
Fallback=ScreenPrompt
Class=ScreenSaveSync
NextScreen=@GetGameplayNextScreen()
[ScreenMiniMenuContext] [ScreenMiniMenuContext]
Fallback=ScreenMiniMenu Fallback=ScreenMiniMenu
NumRowsShown=10 NumRowsShown=10
@@ -4634,11 +4629,11 @@ Class=ScreenGameplaySyncMachine
Fallback=ScreenGameplay Fallback=ScreenGameplay
PrevScreen=@ScreenGameplaySyncMachineNext() PrevScreen=@ScreenGameplaySyncMachineNext()
NextScreen=@ScreenGameplaySyncMachineNext() NextScreen=@ScreenGameplaySyncMachineNext()
LifeP1OnCommand=hidden,1
[ScreenSaveSyncMachine] LifeP2OnCommand=hidden,1
Fallback=ScreenSaveSync ScoreP1OnCommand=hidden,1
Class=ScreenSaveSync ScoreP2OnCommand=hidden,1
NextScreen=ScreenOptionsService StageOnCommand=hidden,1
[PlayerScoreItem Percent] [PlayerScoreItem Percent]
Fallback=ScoreDisplayPercentage Percent Fallback=ScoreDisplayPercentage Percent
+4 -7
View File
@@ -486,9 +486,6 @@ void GameState::BeginStage()
void GameState::CancelStage() void GameState::CancelStage()
{ {
m_iNumStagesOfThisSong = 0; m_iNumStagesOfThisSong = 0;
// If they back out of gameplay, revert any sync changes.
RevertSyncChanges();
} }
void GameState::CommitStageStats() void GameState::CommitStageStats()
@@ -1772,8 +1769,10 @@ void GameState::SaveSyncChanges()
{ {
if( IsCourseMode() ) if( IsCourseMode() )
return; return;
GAMESTATE->m_pCurSong->Save(); if( m_pCurSong && *m_pTimingDataOriginal != m_pCurSong->m_Timing )
PREFSMAN->SavePrefsToDisk(); GAMESTATE->m_pCurSong->Save();
if( m_fGlobalOffsetSecondsOriginal != PREFSMAN->m_fGlobalOffsetSeconds )
PREFSMAN->SavePrefsToDisk();
ResetOriginalSyncData(); ResetOriginalSyncData();
} }
@@ -1923,7 +1922,6 @@ public:
static int GetCoinMode( T* p, lua_State *L ) { lua_pushnumber(L, p->GetCoinMode() ); return 1; } static int GetCoinMode( T* p, lua_State *L ) { lua_pushnumber(L, p->GetCoinMode() ); return 1; }
static int GetPremium( T* p, lua_State *L ) { lua_pushnumber(L, p->GetPremium() ); return 1; } static int GetPremium( T* p, lua_State *L ) { lua_pushnumber(L, p->GetPremium() ); return 1; }
static int GetSongOptionsString( T* p, lua_State *L ) { lua_pushstring(L, p->m_SongOptions.GetString() ); return 1; } static int GetSongOptionsString( T* p, lua_State *L ) { lua_pushstring(L, p->m_SongOptions.GetString() ); return 1; }
static int IsSyncDataChanged( T* p, lua_State *L ) { lua_pushboolean(L, p->IsSyncDataChanged() ); return 1; }
static int IsWinner( T* p, lua_State *L ) static int IsWinner( T* p, lua_State *L )
{ {
PlayerNumber pn = (PlayerNumber)IArg(1); PlayerNumber pn = (PlayerNumber)IArg(1);
@@ -2038,7 +2036,6 @@ public:
ADD_METHOD( GetCoinMode ); ADD_METHOD( GetCoinMode );
ADD_METHOD( GetPremium ); ADD_METHOD( GetPremium );
ADD_METHOD( GetSongOptionsString ); ADD_METHOD( GetSongOptionsString );
ADD_METHOD( IsSyncDataChanged );
ADD_METHOD( IsWinner ); ADD_METHOD( IsWinner );
ADD_METHOD( IsDraw ); ADD_METHOD( IsDraw );
ADD_METHOD( IsDisqualified ); ADD_METHOD( IsDisqualified );
+23 -14
View File
@@ -52,16 +52,17 @@
#include "XmlFile.h" #include "XmlFile.h"
#include "Background.h" #include "Background.h"
#include "Foreground.h" #include "Foreground.h"
#include "ScreenSaveSync.h"
// //
// Defines // Defines
// //
#define SHOW_LIFE_METER_FOR_DISABLED_PLAYERS THEME->GetMetricB(m_sName,"ShowLifeMeterForDisabledPlayers") #define SHOW_LIFE_METER_FOR_DISABLED_PLAYERS THEME->GetMetricB(m_sName,"ShowLifeMeterForDisabledPlayers")
#define EVAL_ON_FAIL THEME->GetMetricB(m_sName,"ShowEvaluationOnFail") #define EVAL_ON_FAIL THEME->GetMetricB(m_sName,"ShowEvaluationOnFail")
#define SHOW_SCORE_IN_RAVE THEME->GetMetricB(m_sName,"ShowScoreInRave") #define SHOW_SCORE_IN_RAVE THEME->GetMetricB(m_sName,"ShowScoreInRave")
#define SONG_POSITION_METER_WIDTH THEME->GetMetricF(m_sName,"SongPositionMeterWidth") #define SONG_POSITION_METER_WIDTH THEME->GetMetricF(m_sName,"SongPositionMeterWidth")
#define PLAYER_X( sName, styleType ) THEME->GetMetricF(m_sName,ssprintf("Player%s%sX",sName.c_str(),StyleTypeToString(styleType).c_str())) #define PLAYER_X( sName, styleType ) THEME->GetMetricF(m_sName,ssprintf("Player%s%sX",sName.c_str(),StyleTypeToString(styleType).c_str()))
#define STOP_COURSE_EARLY THEME->GetMetricB(m_sName,"StopCourseEarly") // evaluate this every time it's used #define STOP_COURSE_EARLY THEME->GetMetricB(m_sName,"StopCourseEarly") // evaluate this every time it's used
static ThemeMetric<float> INITIAL_BACKGROUND_BRIGHTNESS ("ScreenGameplay","InitialBackgroundBrightness"); static ThemeMetric<float> INITIAL_BACKGROUND_BRIGHTNESS ("ScreenGameplay","InitialBackgroundBrightness");
static ThemeMetric<float> SECONDS_BETWEEN_COMMENTS ("ScreenGameplay","SecondsBetweenComments"); static ThemeMetric<float> SECONDS_BETWEEN_COMMENTS ("ScreenGameplay","SecondsBetweenComments");
@@ -72,15 +73,15 @@ AutoScreenMessage( SM_PlayGo )
AutoScreenMessage( SM_LoadNextSong ) AutoScreenMessage( SM_LoadNextSong )
AutoScreenMessage( SM_StartLoadingNextSong ) AutoScreenMessage( SM_StartLoadingNextSong )
// received while STATE_OUTRO // received while STATE_OUTRO
AutoScreenMessage( SM_GoToScreenAfterBack ) AutoScreenMessage( SM_DoPrevScreen )
AutoScreenMessage( SM_DoNextScreen )
// received while STATE_INTRO // received while STATE_INTRO
AutoScreenMessage( SM_StartHereWeGo ) AutoScreenMessage( SM_StartHereWeGo )
AutoScreenMessage( SM_StopHereWeGo ) AutoScreenMessage( SM_StopHereWeGo )
static Preference<float> g_fNetStartOffset( "NetworkStartOffset", -3.0 ); static Preference<float> g_fNetStartOffset( "NetworkStartOffset", -3.0 );
PlayerInfo::PlayerInfo() PlayerInfo::PlayerInfo()
@@ -2075,7 +2076,7 @@ void ScreenGameplay::BeginBackingOutFromGameplay()
if( GAMESTATE->IsExtraStage() || GAMESTATE->IsExtraStage2() ) if( GAMESTATE->IsExtraStage() || GAMESTATE->IsExtraStage2() )
SCREENMAN->PostMessageToTopScreen( SM_BeginFailed, 0 ); SCREENMAN->PostMessageToTopScreen( SM_BeginFailed, 0 );
else else
m_Cancel.StartTransitioning( SM_GoToScreenAfterBack ); m_Cancel.StartTransitioning( SM_DoPrevScreen );
} }
void ScreenGameplay::AbortGiveUp( bool bShowText ) void ScreenGameplay::AbortGiveUp( bool bShowText )
@@ -2400,7 +2401,7 @@ void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM )
TweenOffScreen(); TweenOffScreen();
m_Out.StartTransitioning( SM_GoToNextScreen ); m_Out.StartTransitioning( SM_DoNextScreen );
// do they deserve an extra stage? // do they deserve an extra stage?
if( GAMESTATE->HasEarnedExtraStage() ) if( GAMESTATE->HasEarnedExtraStage() )
@@ -2491,20 +2492,28 @@ void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM )
int iDamageLevel = SM-SM_BattleDamageLevel1+1; int iDamageLevel = SM-SM_BattleDamageLevel1+1;
PlayAnnouncer( ssprintf("gameplay battle damage level%d",iDamageLevel), 3 ); PlayAnnouncer( ssprintf("gameplay battle damage level%d",iDamageLevel), 3 );
} }
else if( SM == SM_GoToScreenAfterBack ) else if( SM == SM_DoPrevScreen )
{ {
SongFinished(); SongFinished();
StageFinished( true ); StageFinished( true );
GAMESTATE->CancelStage(); GAMESTATE->CancelStage();
HandleScreenMessage( SM_GoToPrevScreen ); if( GAMESTATE->IsSyncDataChanged() )
ScreenSaveSync::PromptSaveSync( SM_GoToPrevScreen );
else
HandleScreenMessage( SM_GoToPrevScreen );
} }
else if( SM == SM_GoToNextScreen ) else if( SM == SM_DoNextScreen )
{ {
SongFinished(); SongFinished();
StageFinished( false ); StageFinished( false );
//SaveRecordedResults(); //SaveRecordedResults();
if( GAMESTATE->IsSyncDataChanged() )
ScreenSaveSync::PromptSaveSync( SM_GoToNextScreen );
else
HandleScreenMessage( SM_GoToNextScreen );
} }
else if( SM == SM_GainFocus ) else if( SM == SM_GainFocus )
{ {
@@ -2523,7 +2532,7 @@ void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM )
m_pSoundMusic->StopPlaying(); m_pSoundMusic->StopPlaying();
m_soundAssistTick.StopPlaying(); /* Stop any queued assist ticks. */ m_soundAssistTick.StopPlaying(); /* Stop any queued assist ticks. */
TweenOffScreen(); TweenOffScreen();
m_Failed.StartTransitioning( SM_GoToNextScreen ); m_Failed.StartTransitioning( SM_DoNextScreen );
// show the survive time if extra stage // show the survive time if extra stage
if( GAMESTATE->IsExtraStage() || GAMESTATE->IsExtraStage2() ) if( GAMESTATE->IsExtraStage() || GAMESTATE->IsExtraStage2() )
+5 -3
View File
@@ -11,6 +11,7 @@ void ScreenGameplaySyncMachine::Init()
{ {
GAMESTATE->m_PlayMode.Set( PLAY_MODE_REGULAR ); GAMESTATE->m_PlayMode.Set( PLAY_MODE_REGULAR );
GAMESTATE->m_pCurStyle.Set( GAMEMAN->GetHowToPlayStyleForGame(GAMESTATE->m_pCurGame) ); GAMESTATE->m_pCurStyle.Set( GAMEMAN->GetHowToPlayStyleForGame(GAMESTATE->m_pCurGame) );
GAMESTATE->ResetOriginalSyncData();
SMLoader ld; SMLoader ld;
RString sFile = THEME->GetPathO("ScreenGameplaySyncMachine","music.sm"); RString sFile = THEME->GetPathO("ScreenGameplaySyncMachine","music.sm");
@@ -42,7 +43,10 @@ void ScreenGameplaySyncMachine::HandleScreenMessage( const ScreenMessage SM )
ResetAndRestartCurrentSong(); ResetAndRestartCurrentSong();
return; // handled return; // handled
} }
else if( SM == SM_GoToPrevScreen )
ScreenGameplayNormal::HandleScreenMessage( SM );
if( SM == SM_GoToPrevScreen )
{ {
GAMESTATE->m_pCurSong.Set( NULL ); GAMESTATE->m_pCurSong.Set( NULL );
} }
@@ -50,8 +54,6 @@ void ScreenGameplaySyncMachine::HandleScreenMessage( const ScreenMessage SM )
{ {
GAMESTATE->m_pCurSong.Set( NULL ); GAMESTATE->m_pCurSong.Set( NULL );
} }
ScreenGameplayNormal::HandleScreenMessage( SM );
} }
void ScreenGameplaySyncMachine::ResetAndRestartCurrentSong() void ScreenGameplaySyncMachine::ResetAndRestartCurrentSong()
+2 -3
View File
@@ -117,7 +117,6 @@ static void RevertSyncChanges( void* pThrowAway )
GAMESTATE->RevertSyncChanges(); GAMESTATE->RevertSyncChanges();
} }
REGISTER_SCREEN_CLASS( ScreenSaveSync );
void ScreenSaveSync::Init() void ScreenSaveSync::Init()
{ {
ScreenPrompt::Init(); ScreenPrompt::Init();
@@ -131,10 +130,10 @@ void ScreenSaveSync::Init()
NULL ); NULL );
} }
void ScreenSaveSync::PromptSaveSync() void ScreenSaveSync::PromptSaveSync( ScreenMessage sm )
{ {
ScreenPrompt::Prompt( ScreenPrompt::Prompt(
SM_None, sm,
GetPromptText(), GetPromptText(),
PROMPT_YES_NO, PROMPT_YES_NO,
ANSWER_YES, ANSWER_YES,
+1 -1
View File
@@ -10,7 +10,7 @@ class ScreenSaveSync : public ScreenPrompt
public: public:
virtual void Init(); virtual void Init();
static void PromptSaveSync(); static void PromptSaveSync( ScreenMessage sm = SM_None );
}; };