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 );
|
ScreenMiniMenu *pNewScreen = new ScreenMiniMenu( pDef->sClassName );
|
||||||
pNewScreen->Init();
|
pNewScreen->Init();
|
||||||
pNewScreen->LoadMenu( pDef, SM_SendOnOK, SM_SendOnCancel );
|
pNewScreen->LoadMenu( pDef );
|
||||||
|
pNewScreen->SetOKMessage( SM_SendOnOK );
|
||||||
|
pNewScreen->SetCancelMessage( SM_SendOnCancel );
|
||||||
pNewScreen->SetXY( fX, fY );
|
pNewScreen->SetXY( fX, fY );
|
||||||
SCREENMAN->ZeroNextUpdate();
|
SCREENMAN->ZeroNextUpdate();
|
||||||
SCREENMAN->PushScreen( pNewScreen, true );
|
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;
|
m_vMenuRows = pDef->rows;
|
||||||
|
|
||||||
// Convert from m_vMenuRows to vector<OptionRowDefinition>
|
// 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 );
|
static void MiniMenu( MenuDef* pDef, ScreenMessage smSendOnOK, ScreenMessage smSendOnCancel = SM_None, float fX = 0, float fY = 0 );
|
||||||
|
|
||||||
ScreenMiniMenu( CString sScreenClass );
|
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 HandleScreenMessage( const ScreenMessage SM );
|
||||||
|
|
||||||
|
void SetOKMessage( ScreenMessage SM_SendOnOK ) { m_SMSendOnOK = SM_SendOnOK; }
|
||||||
|
void SetCancelMessage( ScreenMessage SM_SendOnCancel ) { m_SMSendOnCancel = SM_SendOnCancel; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void OnChange( PlayerNumber pn );
|
virtual void OnChange( PlayerNumber pn );
|
||||||
virtual void ImportOptions( int iRow, const vector<PlayerNumber> &vpns );
|
virtual void ImportOptions( int iRow, const vector<PlayerNumber> &vpns );
|
||||||
|
|||||||
Reference in New Issue
Block a user