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;
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 )
{
ScreenMiniMenu *pNewScreen = new ScreenMiniMenu;
pNewScreen->SetName( pDef->sClassName );
pNewScreen->Init();
pNewScreen->LoadMenu( pDef );
pNewScreen->SetOKMessage( SM_SendOnOK );
pNewScreen->SetCancelMessage( SM_SendOnCancel );
g_pMenuDef = pDef;
g_SendOnOK = SM_SendOnOK;
g_SendOnCancel = SM_SendOnCancel;
g_bLoaded = true;
SCREENMAN->AddNewScreenToTop( pDef->sClassName );
Screen *pNewScreen = SCREENMAN->GetTopScreen();
pNewScreen->SetXY( fX, fY );
SCREENMAN->ZeroNextUpdate();
SCREENMAN->PushScreen( pNewScreen, true );
}
//REGISTER_SCREEN_CLASS( ScreenMiniMenu );
REGISTER_SCREEN_CLASS( ScreenMiniMenu );
void ScreenMiniMenu::BeginScreen()
{
if( g_bLoaded )
{
g_bLoaded = false;
LoadMenu( g_pMenuDef );
SetOKMessage( g_SendOnOK );
SetCancelMessage( g_SendOnCancel );
}
ScreenOptions::BeginScreen();
/* HACK: An OptionRow exits if a screen is set. ScreenMiniMenu is always pushed, so we