fix SaveSync prompt. Make it a Screen again so that it can be used in branching and doesn't need to be integrated into an already-complicated ScreenGameplay.
This commit is contained in:
@@ -1974,7 +1974,7 @@ void ScreenEdit::TransitionEditState( EditState em )
|
|||||||
|
|
||||||
case STATE_PLAYING:
|
case STATE_PLAYING:
|
||||||
if( GAMESTATE->IsSyncDataChanged() )
|
if( GAMESTATE->IsSyncDataChanged() )
|
||||||
ScreenSaveSync::SaveSync();
|
ScreenSaveSync::PromptSaveSync();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case STATE_RECORDING:
|
case STATE_RECORDING:
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ namespace
|
|||||||
void *g_pCallbackData;
|
void *g_pCallbackData;
|
||||||
};
|
};
|
||||||
|
|
||||||
void ScreenPrompt::Prompt( ScreenMessage smSendOnPop, const CString &sText, PromptType type, PromptAnswer defaultAnswer, void(*OnYes)(void*), void(*OnNo)(void*), void* pCallbackData )
|
void ScreenPrompt::SetPromptSettings( const CString &sText, PromptType type, PromptAnswer defaultAnswer, void(*OnYes)(void*), void(*OnNo)(void*), void* pCallbackData )
|
||||||
{
|
{
|
||||||
g_sText = sText;
|
g_sText = sText;
|
||||||
g_PromptType = type;
|
g_PromptType = type;
|
||||||
@@ -34,11 +34,17 @@ void ScreenPrompt::Prompt( ScreenMessage smSendOnPop, const CString &sText, Prom
|
|||||||
g_pOnYes = OnYes;
|
g_pOnYes = OnYes;
|
||||||
g_pOnNo = OnNo;
|
g_pOnNo = OnNo;
|
||||||
g_pCallbackData = pCallbackData;
|
g_pCallbackData = pCallbackData;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ScreenPrompt::Prompt( ScreenMessage smSendOnPop, const CString &sText, PromptType type, PromptAnswer defaultAnswer, void(*OnYes)(void*), void(*OnNo)(void*), void* pCallbackData )
|
||||||
|
{
|
||||||
|
SetPromptSettings( sText, type, defaultAnswer, OnYes, OnNo, pCallbackData );
|
||||||
|
|
||||||
SCREENMAN->AddNewScreenToTop( "ScreenPrompt", smSendOnPop );
|
SCREENMAN->AddNewScreenToTop( "ScreenPrompt", smSendOnPop );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
REGISTER_SCREEN_CLASS( ScreenPrompt );
|
REGISTER_SCREEN_CLASS( ScreenPrompt );
|
||||||
ScreenPrompt::ScreenPrompt( const CString &sScreenName ):
|
ScreenPrompt::ScreenPrompt( const CString &sScreenName ):
|
||||||
ScreenWithMenuElements( sScreenName )
|
ScreenWithMenuElements( sScreenName )
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ enum PromptAnswer
|
|||||||
class ScreenPrompt : public ScreenWithMenuElements
|
class ScreenPrompt : public ScreenWithMenuElements
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
static void SetPromptSettings( const CString &sText, PromptType type = PROMPT_OK, PromptAnswer defaultAnswer = ANSWER_NO, void(*OnYes)(void*) = NULL, void(*OnNo)(void*) = NULL, void* pCallbackData = NULL );
|
||||||
static void Prompt( ScreenMessage smSendOnPop, const CString &sText, PromptType type = PROMPT_OK, PromptAnswer defaultAnswer = ANSWER_NO, void(*OnYes)(void*) = NULL, void(*OnNo)(void*) = NULL, void* pCallbackData = NULL );
|
static void Prompt( ScreenMessage smSendOnPop, const CString &sText, PromptType type = PROMPT_OK, PromptAnswer defaultAnswer = ANSWER_NO, void(*OnYes)(void*) = NULL, void(*OnNo)(void*) = NULL, void* pCallbackData = NULL );
|
||||||
|
|
||||||
ScreenPrompt( const CString &sScreenName );
|
ScreenPrompt( const CString &sScreenName );
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ static CString GetPromptText()
|
|||||||
}
|
}
|
||||||
|
|
||||||
s +="\n\n"
|
s +="\n\n"
|
||||||
"Would you like to save these changes to the song file?\n"
|
"Would you like to save these changes?\n"
|
||||||
"Choosing NO will discard your changes.";
|
"Choosing NO will discard your changes.";
|
||||||
|
|
||||||
return s;
|
return s;
|
||||||
@@ -107,7 +107,19 @@ static void RevertSyncChanges( void* pThrowAway )
|
|||||||
GAMESTATE->RevertSyncChanges();
|
GAMESTATE->RevertSyncChanges();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScreenSaveSync::SaveSync()
|
REGISTER_SCREEN_CLASS( ScreenSaveSync );
|
||||||
|
ScreenSaveSync::ScreenSaveSync( CString sClassName ) : ScreenPrompt( sClassName )
|
||||||
|
{
|
||||||
|
ScreenPrompt::SetPromptSettings(
|
||||||
|
GetPromptText(),
|
||||||
|
PROMPT_YES_NO,
|
||||||
|
ANSWER_YES,
|
||||||
|
SaveSyncChanges,
|
||||||
|
RevertSyncChanges,
|
||||||
|
NULL );
|
||||||
|
}
|
||||||
|
|
||||||
|
void ScreenSaveSync::PromptSaveSync()
|
||||||
{
|
{
|
||||||
ScreenPrompt::Prompt(
|
ScreenPrompt::Prompt(
|
||||||
SM_None,
|
SM_None,
|
||||||
|
|||||||
@@ -3,10 +3,14 @@
|
|||||||
#ifndef ScreenSaveSync_H
|
#ifndef ScreenSaveSync_H
|
||||||
#define ScreenSaveSync_H
|
#define ScreenSaveSync_H
|
||||||
|
|
||||||
class ScreenSaveSync
|
#include "ScreenPrompt.h"
|
||||||
|
|
||||||
|
class ScreenSaveSync : public ScreenPrompt
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
static void SaveSync();
|
ScreenSaveSync( CString sName );
|
||||||
|
|
||||||
|
static void PromptSaveSync();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user