From e87df3bc5ecca02c1eb34802af025cd7091838e2 Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Tue, 8 Nov 2005 17:51:40 +0000 Subject: [PATCH] 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. --- stepmania/src/ScreenEdit.cpp | 2 +- stepmania/src/ScreenPrompt.cpp | 8 +++++++- stepmania/src/ScreenPrompt.h | 1 + stepmania/src/ScreenSaveSync.cpp | 16 ++++++++++++++-- stepmania/src/ScreenSaveSync.h | 8 ++++++-- 5 files changed, 29 insertions(+), 6 deletions(-) diff --git a/stepmania/src/ScreenEdit.cpp b/stepmania/src/ScreenEdit.cpp index ff218af00c..6b4ceaff7a 100644 --- a/stepmania/src/ScreenEdit.cpp +++ b/stepmania/src/ScreenEdit.cpp @@ -1974,7 +1974,7 @@ void ScreenEdit::TransitionEditState( EditState em ) case STATE_PLAYING: if( GAMESTATE->IsSyncDataChanged() ) - ScreenSaveSync::SaveSync(); + ScreenSaveSync::PromptSaveSync(); break; case STATE_RECORDING: diff --git a/stepmania/src/ScreenPrompt.cpp b/stepmania/src/ScreenPrompt.cpp index de0586497b..33dae9c2a7 100644 --- a/stepmania/src/ScreenPrompt.cpp +++ b/stepmania/src/ScreenPrompt.cpp @@ -26,7 +26,7 @@ namespace 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_PromptType = type; @@ -34,11 +34,17 @@ void ScreenPrompt::Prompt( ScreenMessage smSendOnPop, const CString &sText, Prom g_pOnYes = OnYes; g_pOnNo = OnNo; 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 ); } + REGISTER_SCREEN_CLASS( ScreenPrompt ); ScreenPrompt::ScreenPrompt( const CString &sScreenName ): ScreenWithMenuElements( sScreenName ) diff --git a/stepmania/src/ScreenPrompt.h b/stepmania/src/ScreenPrompt.h index 43637ae3f8..353f82cd1c 100644 --- a/stepmania/src/ScreenPrompt.h +++ b/stepmania/src/ScreenPrompt.h @@ -25,6 +25,7 @@ enum PromptAnswer class ScreenPrompt : public ScreenWithMenuElements { 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 ); ScreenPrompt( const CString &sScreenName ); diff --git a/stepmania/src/ScreenSaveSync.cpp b/stepmania/src/ScreenSaveSync.cpp index 3e4838021b..e11aeb3d78 100644 --- a/stepmania/src/ScreenSaveSync.cpp +++ b/stepmania/src/ScreenSaveSync.cpp @@ -91,7 +91,7 @@ static CString GetPromptText() } 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."; return s; @@ -107,7 +107,19 @@ static void RevertSyncChanges( void* pThrowAway ) 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( SM_None, diff --git a/stepmania/src/ScreenSaveSync.h b/stepmania/src/ScreenSaveSync.h index c433b84c6e..231198f732 100644 --- a/stepmania/src/ScreenSaveSync.h +++ b/stepmania/src/ScreenSaveSync.h @@ -3,10 +3,14 @@ #ifndef ScreenSaveSync_H #define ScreenSaveSync_H -class ScreenSaveSync +#include "ScreenPrompt.h" + +class ScreenSaveSync : public ScreenPrompt { public: - static void SaveSync(); + ScreenSaveSync( CString sName ); + + static void PromptSaveSync(); };