diff --git a/stepmania/src/ScreenManager.cpp b/stepmania/src/ScreenManager.cpp index 134d8a0f54..f6b4de7b68 100644 --- a/stepmania/src/ScreenManager.cpp +++ b/stepmania/src/ScreenManager.cpp @@ -447,20 +447,9 @@ void ScreenManager::AddNewScreenToTop( const CString &sScreenName ) SetFromNewScreen( pNewScreen ); } -#include "ScreenPrompt.h" #include "ScreenTextEntry.h" #include "ScreenMiniMenu.h" -void ScreenManager::Prompt( ScreenMessage smSendOnPop, const CString &sText, PromptType type, PromptAnswer defaultAnswer, void(*OnYes)(void*), void(*OnNo)(void*), void* pCallbackData ) -{ - // add the new state onto the back of the array - ScreenPrompt *pNewScreen = new ScreenPrompt( "ScreenPrompt" ); - pNewScreen->Init(); - pNewScreen->Load( smSendOnPop, sText, type, defaultAnswer, OnYes, OnNo, pCallbackData ); - this->ZeroNextUpdate(); - SetFromNewScreen( pNewScreen ); -} - void ScreenManager::TextEntry( ScreenMessage smSendOnPop, CString sQuestion, diff --git a/stepmania/src/ScreenManager.h b/stepmania/src/ScreenManager.h index 704af0b65b..2723b3a063 100644 --- a/stepmania/src/ScreenManager.h +++ b/stepmania/src/ScreenManager.h @@ -17,21 +17,6 @@ struct Menu; struct lua_State; -enum PromptType -{ - PROMPT_OK, - PROMPT_YES_NO, - PROMPT_YES_NO_CANCEL -}; - -enum PromptAnswer -{ - ANSWER_YES, - ANSWER_NO, - ANSWER_CANCEL, - NUM_PROMPT_ANSWERS -}; - typedef Screen* (*CreateScreenFn)(const CString& sClassName); @@ -55,7 +40,6 @@ public: void SetNewScreen( const CString &sName ); void AddNewScreenToTop( const CString &sName ); - 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 ); void TextEntry( ScreenMessage smSendOnPop, CString sQuestion, @@ -71,6 +55,7 @@ public: TextEntry( smSendOnPop, sQuestion, "", 255, NULL, OnOK, OnCanel, true ); } void MiniMenu( Menu* pDef, ScreenMessage smSendOnOK, ScreenMessage smSendOnCancel = SM_None ); + void SetFromNewScreen( Screen *pNewScreen ); void PopTopScreen( ScreenMessage SM ); void SystemMessage( const CString &sMessage ); void SystemMessageNoAnimate( const CString &sMessage ); @@ -117,7 +102,6 @@ private: Screen* MakeNewScreen( const CString &sName ); Screen* MakeNewScreenInternal( const CString &sName ); - void SetFromNewScreen( Screen *pNewScreen ); void ClearScreenStack(); void EmptyDeleteQueue(); void LoadDelayedScreen(); diff --git a/stepmania/src/ScreenPrompt.cpp b/stepmania/src/ScreenPrompt.cpp index 87e9908c56..4b174a6e80 100644 --- a/stepmania/src/ScreenPrompt.cpp +++ b/stepmania/src/ScreenPrompt.cpp @@ -14,6 +14,17 @@ bool ScreenPrompt::s_bCancelledLast = false; #define ANSWER_TEXT( elem ) THEME->GetMetric(m_sName,elem+"Text") +void ScreenPrompt::Prompt( ScreenMessage smSendOnPop, const CString &sText, PromptType type, PromptAnswer defaultAnswer, void(*OnYes)(void*), void(*OnNo)(void*), void* pCallbackData ) +{ + // add the new state onto the back of the array + ScreenPrompt *pNewScreen = new ScreenPrompt( "ScreenPrompt" ); + pNewScreen->Init(); + pNewScreen->Load( smSendOnPop, sText, type, defaultAnswer, OnYes, OnNo, pCallbackData ); + SCREENMAN->ZeroNextUpdate(); + SCREENMAN->SetFromNewScreen( pNewScreen ); +} + + //REGISTER_SCREEN_CLASS( ScreenPrompt ); ScreenPrompt::ScreenPrompt( const CString &sScreenName ): Screen( sScreenName ) diff --git a/stepmania/src/ScreenPrompt.h b/stepmania/src/ScreenPrompt.h index e42ee48164..8c0fc0d6b3 100644 --- a/stepmania/src/ScreenPrompt.h +++ b/stepmania/src/ScreenPrompt.h @@ -11,10 +11,26 @@ #include "BGAnimation.h" #include "ScreenManager.h" +enum PromptType +{ + PROMPT_OK, + PROMPT_YES_NO, + PROMPT_YES_NO_CANCEL +}; + +enum PromptAnswer +{ + ANSWER_YES, + ANSWER_NO, + ANSWER_CANCEL, + NUM_PROMPT_ANSWERS +}; class ScreenPrompt : public Screen { public: + 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 ); virtual void Init(); void Load(