push ScreenSaveSync instead of making it a separate screen. Simplifies branching.
This commit is contained in:
@@ -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.
|
||||||
--
|
--
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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,7 +1769,9 @@ void GameState::SaveSyncChanges()
|
|||||||
{
|
{
|
||||||
if( IsCourseMode() )
|
if( IsCourseMode() )
|
||||||
return;
|
return;
|
||||||
|
if( m_pCurSong && *m_pTimingDataOriginal != m_pCurSong->m_Timing )
|
||||||
GAMESTATE->m_pCurSong->Save();
|
GAMESTATE->m_pCurSong->Save();
|
||||||
|
if( m_fGlobalOffsetSecondsOriginal != PREFSMAN->m_fGlobalOffsetSeconds )
|
||||||
PREFSMAN->SavePrefsToDisk();
|
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 );
|
||||||
|
|||||||
@@ -52,6 +52,7 @@
|
|||||||
#include "XmlFile.h"
|
#include "XmlFile.h"
|
||||||
#include "Background.h"
|
#include "Background.h"
|
||||||
#include "Foreground.h"
|
#include "Foreground.h"
|
||||||
|
#include "ScreenSaveSync.h"
|
||||||
|
|
||||||
//
|
//
|
||||||
// Defines
|
// Defines
|
||||||
@@ -72,9 +73,9 @@ 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 )
|
||||||
@@ -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();
|
||||||
|
|
||||||
|
if( GAMESTATE->IsSyncDataChanged() )
|
||||||
|
ScreenSaveSync::PromptSaveSync( SM_GoToPrevScreen );
|
||||||
|
else
|
||||||
HandleScreenMessage( SM_GoToPrevScreen );
|
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() )
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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 );
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user