Files
2022-10-26 12:25:11 +08:00

170 lines
3.4 KiB
C++

//------------------------------------------------------------------------------
// uiBaseMan_main.cpp
// (C) 2005 ckbang
// 2012 01 12 milky
//------------------------------------------------------------------------------
#include "SunClientPrecompiledHeader.h"
#include "InterfaceManager.h"
#include "uiBaseMan.h"
//------------------------------------------------------------------------------
uiBaseMan::uiBaseMan(InterfaceManager *pUIMan)
{
assert(pUIMan);
m_pUIMan = pUIMan;
m_pDraw = NULL;
}
//------------------------------------------------------------------------------
uiBaseMan::~uiBaseMan()
{
// uiBaseMan::Release가 정상적으로 호출되지 않았다 -_-+
assert( m_pUIMan == NULL );
}
//------------------------------------------------------------------------------
BOOL uiBaseMan::Init(CDrawBase* pDrawBase)
{
m_pDraw = pDrawBase;
InitPKBooleans();
OnInitialize();
//if( OnInitialize() == FALSE )
//{
// return FALSE;
//}
return TRUE;
}
//------------------------------------------------------------------------------
void uiBaseMan::Release()
{
UnLoadUIAll();
OnRelease();
m_pUIMan = NULL;
m_pDraw = NULL;
}
//------------------------------------------------------------------------------
void uiBaseMan::Reset()
{
OnReset();
}
//------------------------------------------------------------------------------
void uiBaseMan::Update()
{
}
//------------------------------------------------------------------------------
void uiBaseMan::Process(DWORD dwTick)
{
HandlerPKBooleans();
}
//------------------------------------------------------------------------------
BOOL uiBaseMan::ReLoadUI( DWORD dwKey )
{
if( UnLoadUI( dwKey ) == FALSE )
{
assert( !"Dialog Unload Failed" );
return FALSE;
}
OnInitialize();
return TRUE;
}
//------------------------------------------------------------------------------
BOOL uiBaseMan::InsertDialogKey( DWORD dwKey )
{
m_DialogIdList.insert( dwKey );
return TRUE;
}
//------------------------------------------------------------------------------
BOOL uiBaseMan::UnLoadUIAll()
{
if( m_DialogIdList.empty() )
return FALSE;
DIALOG_ID_SET_ITR_TYPE itr = m_DialogIdList.begin();
DIALOG_ID_SET_ITR_TYPE end = m_DialogIdList.end();
for( ; itr != end; ++itr )
{
DWORD dwKey = *itr;
SolarDialog * pDlg = GetUIMan()->GetDialog( dwKey );
if( pDlg )
{
pDlg->Release();
GetUIMan()->RemoveDialog( dwKey );
delete pDlg;
}
else
{
assert( !"cannot find dialog key in SolarManager" );
}
if( FALSE == GetUIMan()->GetDialogManager()->RemoveDialogWZ( dwKey ) )
{
assert( !"dialog remove failed" );
}
}
m_DialogIdList.clear();
return TRUE;
}
//------------------------------------------------------------------------------
BOOL uiBaseMan::UnLoadUI( DWORD dwKey )
{
SolarDialog * pDlg = GetUIMan()->GetDialog( dwKey );
if( pDlg )
{
pDlg->Release();
GetUIMan()->RemoveDialog( dwKey );
delete pDlg;
}
else
{
assert( !"cannot find dialog key in SolarManager" );
return FALSE;
}
if( FALSE == GetUIMan()->GetDialogManager()->RemoveDialogWZ( dwKey ) )
{
assert( !"dialog remove failed" );
return FALSE;
}
DIALOG_ID_SET_ITR_TYPE itr = m_DialogIdList.find( dwKey );
DIALOG_ID_SET_ITR_TYPE end = m_DialogIdList.end();
if( itr != end )
{
m_DialogIdList.erase( itr );
}
else
{
assert( !"cannot find dialog key in DialogIdList" );
return FALSE;
}
return TRUE;
}