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:
@@ -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>
|
||||
|
||||
@@ -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 );
|
||||
|
||||
Reference in New Issue
Block a user