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

178 lines
4.4 KiB
C++

#pragma once
//------------------------------------------------------------------------------
//
// 작업자: 이지연
// uiCharPopupMenu class
//------------------------------------------------------------------------------
#include "uiCharPopupMenu_def.h"
#include "uibase.h"
#include "interfacemanager.h"
class uiCharPopupMan;
class uiCharPopupMenu: public uiBase
{
enum eDIALOG_POS
{
DLGPOS_LST_MENU,
DIALOG_MAX,
};
enum ePOPUP_MENU
{
ePMENU_NORMAL_WHISPER, // 귓속말
#ifdef _NA_002935_20110704_ITEM_SCORE
ePMENU_SHOW_EQUIP, //장비보기
#endif //_NA_002935_20110704_ITEM_SCORE
ePMENU_NORMAL_FRIEND, // 친구추가
ePMENU_NORMAL_TRADE, // 거래
ePMENU_NORMAL_FOLLOW, // 따라가기
#ifdef _KIKI_ADD_G_LOG_MENU
ePMENU_NORMAL_G_LOG, // G-로그
#endif
ePMENU_GROUP_ADD, // 그룹추가
ePMENU_GROUP_DEL, // 그룹삭제
ePMENU_PARTY_MASTER_INVITE, // 파티초대
ePMENU_PARTY_MASTER_MIGRATION, // 파장위임
ePMENU_PARTY_MASTER_KICK, // 강제추방
#ifdef _NA_003923_20120222_GUILD_RENEWAL_UI_RENEWAL
ePMENU_GUILD_INVITE, // 길드초대
#endif //_NA_003923_20120222_GUILD_RENEWAL_UI_RENEWAL
ePMENU_BLOCK_ADD, // 차단추가
ePMENU_BLOCK_DELETE,// 차단해제
#ifdef _NA_006800_20130703_BATTLE_GROUND_VOTE_SYSTEM
ePMENU_BATTLE_GROUND_VOTE, // 전장 추방투표
#endif //_NA_006800_20130703_BATTLE_GROUND_VOTE_SYSTEM
ePMENU_CANCEL,
ePMENU_MAX
};
public:
uiCharPopupMenu(InterfaceManager *pUIMan);
virtual ~uiCharPopupMenu();
//-------------------------------- ------------------------------------------
// init/release
//
public:
virtual void Init(CDrawBase* pDrawBase);
virtual void Release();
protected:
void InitControls();
//--------------------------------------------------------------------------
// helper/comms.
//
public:
uiCharPopupMan* GetManager();
//--------------------------------------------------------------------------
// functions
//
private:
BOOL _checkSkipMenu(int iMenuIndex);
void _setListWidth(); // 스트링 갯수에 따라 유동적으로 변하므로 ShowWindow시 계산할것
public:
//--------------------------------------------------------------------------
// dialog functions
//
public:
void updateMenu();
void renderMenu();
void ClearListSelect() { m_pListControl->SetCurSel(-1); }
protected:
virtual void OnShowWindow( BOOL val );
virtual void OnUpdateSolarDialog();
virtual void OnRenderSolarDialog();
virtual void Process(DWORD dwTick);
protected:
CControlWZ * getControl( POSTYPE AtPos );
POSTYPE getCtrlIDToPos( WzID wzId );
static WzID m_wzId[DIALOG_MAX];
//--------------------------------------------------------------------------
// procedure
//
public:
virtual void NetworkProc( MSG_BASE * pMsg ); // Pure
virtual void MessageProc( SI_MESSAGE * pMessage ); // Pure
//--------------------------------------------------------------------------
// member vars
//
private:
uiCharPopupMan* m_pCharPopupMan;
CCtrlListWZ* m_pListControl;
bool m_bControlsInitialized;
std::vector<int> m_vMenu;
static int m_PopupMenuArray[ePMENU_MAX];
int m_iSaveType;
bool m_bSaveGroupType;
bool block_member_type_;
#ifdef _NA_002935_20110704_ITEM_SCORE
bool show_equip_menu_;
#endif //_NA_002935_20110704_ITEM_SCORE
CTimerSimple m_timerShowoffLater;
int m_iListWidth;
};
//------------------------------------------------------------------------------
/**
*/
inline
POSTYPE
uiCharPopupMenu::getCtrlIDToPos( WzID wzId )
{
for( POSTYPE i = 0 ; i < DIALOG_MAX ; ++i )
{
if( m_wzId[i] == wzId )
{
return i;
}
}
return DIALOG_MAX;
}
//------------------------------------------------------------------------------
/**
*/
inline
CControlWZ *
uiCharPopupMenu::getControl( POSTYPE AtPos )
{
assert( AtPos < DIALOG_MAX );
return GetControlWZ( m_wzId[AtPos] );
}
//------------------------------------------------------------------------------
/**
*/
inline
uiCharPopupMan*
uiCharPopupMenu::GetManager()
{
return this->m_pCharPopupMan;
}