like ScreenTextEntry, let SManager handle the screen loading

This commit is contained in:
Glenn Maynard
2006-01-30 06:03:24 +00:00
parent 5995043bf0
commit 205d799df2
+25 -9
View File
@@ -16,23 +16,39 @@ bool ScreenMiniMenu::s_bCancelled = false;
int ScreenMiniMenu::s_iLastRowCode = -1; int ScreenMiniMenu::s_iLastRowCode = -1;
vector<int> ScreenMiniMenu::s_viLastAnswers; vector<int> ScreenMiniMenu::s_viLastAnswers;
/* Settings: */
namespace
{
bool g_bLoaded = false;
const MenuDef* g_pMenuDef;
ScreenMessage g_SendOnOK;
ScreenMessage g_SendOnCancel;
};
void ScreenMiniMenu::MiniMenu( const MenuDef* pDef, ScreenMessage SM_SendOnOK, ScreenMessage SM_SendOnCancel, float fX, float fY ) void ScreenMiniMenu::MiniMenu( const MenuDef* pDef, ScreenMessage SM_SendOnOK, ScreenMessage SM_SendOnCancel, float fX, float fY )
{ {
ScreenMiniMenu *pNewScreen = new ScreenMiniMenu; g_pMenuDef = pDef;
pNewScreen->SetName( pDef->sClassName ); g_SendOnOK = SM_SendOnOK;
pNewScreen->Init(); g_SendOnCancel = SM_SendOnCancel;
pNewScreen->LoadMenu( pDef ); g_bLoaded = true;
pNewScreen->SetOKMessage( SM_SendOnOK );
pNewScreen->SetCancelMessage( SM_SendOnCancel ); SCREENMAN->AddNewScreenToTop( pDef->sClassName );
Screen *pNewScreen = SCREENMAN->GetTopScreen();
pNewScreen->SetXY( fX, fY ); pNewScreen->SetXY( fX, fY );
SCREENMAN->ZeroNextUpdate();
SCREENMAN->PushScreen( pNewScreen, true );
} }
//REGISTER_SCREEN_CLASS( ScreenMiniMenu ); REGISTER_SCREEN_CLASS( ScreenMiniMenu );
void ScreenMiniMenu::BeginScreen() void ScreenMiniMenu::BeginScreen()
{ {
if( g_bLoaded )
{
g_bLoaded = false;
LoadMenu( g_pMenuDef );
SetOKMessage( g_SendOnOK );
SetCancelMessage( g_SendOnCancel );
}
ScreenOptions::BeginScreen(); ScreenOptions::BeginScreen();
/* HACK: An OptionRow exits if a screen is set. ScreenMiniMenu is always pushed, so we /* HACK: An OptionRow exits if a screen is set. ScreenMiniMenu is always pushed, so we