From 205d799df2d5734e5031273a9a1d3f424c62b691 Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Mon, 30 Jan 2006 06:03:24 +0000 Subject: [PATCH] like ScreenTextEntry, let SManager handle the screen loading --- stepmania/src/ScreenMiniMenu.cpp | 34 +++++++++++++++++++++++--------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/stepmania/src/ScreenMiniMenu.cpp b/stepmania/src/ScreenMiniMenu.cpp index 04971524cc..37236fa6e4 100644 --- a/stepmania/src/ScreenMiniMenu.cpp +++ b/stepmania/src/ScreenMiniMenu.cpp @@ -16,23 +16,39 @@ bool ScreenMiniMenu::s_bCancelled = false; int ScreenMiniMenu::s_iLastRowCode = -1; vector 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