ScreenPrompt::Prompt, cleaning up ScreenManager

This commit is contained in:
Glenn Maynard
2005-07-03 04:33:22 +00:00
parent b0a079c777
commit 0e09a3fb3d
4 changed files with 28 additions and 28 deletions
-11
View File
@@ -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,
+1 -17
View File
@@ -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();
+11
View File
@@ -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 )
+16
View File
@@ -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(