don't call Init from LoadMenu; split out SetOKMessage, SetCancelMessage to allow reusing screen without using LoadMenu (which is cheap but not free)

This commit is contained in:
Glenn Maynard
2005-07-19 21:39:25 +00:00
parent 798c100457
commit 2aecc20155
2 changed files with 8 additions and 7 deletions
+4 -6
View File
@@ -20,7 +20,9 @@ void ScreenMiniMenu::MiniMenu( MenuDef* pDef, ScreenMessage SM_SendOnOK, ScreenM
{
ScreenMiniMenu *pNewScreen = new ScreenMiniMenu( pDef->sClassName );
pNewScreen->Init();
pNewScreen->LoadMenu( pDef, SM_SendOnOK, SM_SendOnCancel );
pNewScreen->LoadMenu( pDef );
pNewScreen->SetOKMessage( SM_SendOnOK );
pNewScreen->SetCancelMessage( SM_SendOnCancel );
pNewScreen->SetXY( fX, fY );
SCREENMAN->ZeroNextUpdate();
SCREENMAN->PushScreen( pNewScreen, true );
@@ -31,12 +33,8 @@ ScreenMiniMenu::ScreenMiniMenu( CString sClassName ) :ScreenOptions( sClassName
{
}
void ScreenMiniMenu::LoadMenu( const MenuDef* pDef, ScreenMessage SM_SendOnOK, ScreenMessage SM_SendOnCancel )
void ScreenMiniMenu::LoadMenu( const MenuDef* pDef )
{
ScreenOptions::Init();
m_SMSendOnOK = SM_SendOnOK;
m_SMSendOnCancel = SM_SendOnCancel;
m_vMenuRows = pDef->rows;
// Convert from m_vMenuRows to vector<OptionRowDefinition>
+4 -1
View File
@@ -79,9 +79,12 @@ public:
static void MiniMenu( MenuDef* pDef, ScreenMessage smSendOnOK, ScreenMessage smSendOnCancel = SM_None, float fX = 0, float fY = 0 );
ScreenMiniMenu( CString sScreenClass );
void LoadMenu( const MenuDef* pDef, ScreenMessage SM_SendOnOK, ScreenMessage SM_SendOnCancel );
void LoadMenu( const MenuDef* pDef );
void HandleScreenMessage( const ScreenMessage SM );
void SetOKMessage( ScreenMessage SM_SendOnOK ) { m_SMSendOnOK = SM_SendOnOK; }
void SetCancelMessage( ScreenMessage SM_SendOnCancel ) { m_SMSendOnCancel = SM_SendOnCancel; }
protected:
virtual void OnChange( PlayerNumber pn );
virtual void ImportOptions( int iRow, const vector<PlayerNumber> &vpns );