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

280 lines
7.9 KiB
C++

#ifndef __USER_INTERFACE_BATTLEZONECREATE_EP2_H__
#define __USER_INTERFACE_BATTLEZONECREATE_EP2_H__
#include "uiBattleZoneCreate\uiBattleZoneCreate_def.h"
#include "BattleRoomEntry.h"
#include "uibase.h"
/*
struct stCHuntingMap
{
MAPCODE MapCode;
int iRequireMinLV;
};*/
class uiBattleZoneMan;
class uiBattleZoneCreateEp2: public uiBase
{
enum eDIALOG_POS
{
DLGPOS_BTN_EXIT=0,
DLGPOS_BTN_CREATE,
DLGPOS_BTN_CANCEL,
DLGPOS_BTN_PEOPLE_LIMIT,
DLGPOS_BTN_ROOM_TYPE,
DLGPOS_CHKBTN_CLASS_B, // 버서커
DLGPOS_CHKBTN_CLASS_D, // 드래곤 나이트
DLGPOS_CHKBTN_CLASS_V, // 발키리
DLGPOS_CHKBTN_CLASS_E, // 엘리멘탈 리스트
DLGPOS_CHKBTN_CLASS_S, //쉐도우
DLGPOS_CHKBTN_MAP_THE_EARTH_OF_TREES_SHADOW, // 녹음의 대지
DLGPOS_CHKBTN_MAP_REST_AREA_OF_SPIRITS, // 정령들의 쉼터
DLGPOS_CHKBTN_MAP_BOALESS_MOUNTAIN_CHAIN, // 보아레스 산맥
DLGPOS_CHKBTN_MAP_VALLY_OF_LIFE, // 생명의 골짜기
DLGPOS_TXT_PEOPLE_LIMIT,
DLGPOS_TXT_ROOM_TYPE,
DLGPOS_TXT_ROOM_TYPE_DESC,
DLGPOS_TXT_MIN_LIMIT_LEVEL,
DLGPOS_TXT_MAX_LIMIT_LEVEL,
DLGPOS_EDT_MIN_LEVEL,
DLGPOS_EDT_MAX_LEVEL,
DLGPOS_EDT_TITLE,
DLGPOS_EDT_PASSWORD,
DLGPOS_LST_ROOM_TYPE,
DLGPOS_LST_PEOPLE_LIMIT,
DLGPOS_TI_SUPER_ROOM_NAME,
DLGPOS_BTN_SUPER_ROOM_SELECT,
DLGPOS_LIST_SUPER_ROOM,
DLGPOS_CHKBTN_MAPALL,
DLGPOS_CHKBTN_MAP_0,
DLGPOS_CHKBTN_MAP_1,
DLGPOS_CHKBTN_MAP_2,
DLGPOS_CHKBTN_MAP_3,
DLGPOS_CHKBTN_MAP_4,
DLGPOS_CHKBTN_MAP_5,
DLGPOS_CHKBTN_MAP_6,
DLGPOS_CHKBTN_MAP_7,
DLGPOS_CHKBTN_MAP_8,
DLGPOS_CHKBTN_MAP_9,
DLGPOS_CHKBTN_MAP_10,
DLGPOS_CHKBTN_MAP_11,
DLGPOS_CHKBTN_MAP_12,
DLGPOS_CHKBTN_MAP_13,
DLGPOS_CHKBTN_MAP_14,
DLGPOS_CHKBTN_MAP_15,
DLGPOS_CHKBTN_MAP_16,
DLGPOS_CHKBTN_MAP_17,
DLGPOS_CHKBTN_MAP_18,
DLGPOS_CHKBTN_MAP_19,
DIALOG_MAX,
};
enum
{
POS_BTN_BEGIN = DLGPOS_BTN_EXIT,
POS_BTN_END = DLGPOS_BTN_ROOM_TYPE + 1,
NUM_POS_BTN = POS_BTN_END - POS_BTN_BEGIN,
POS_CHKBTN_CLASS_BEGIN = DLGPOS_CHKBTN_CLASS_B,
POS_CHKBTN_CLASS_END = DLGPOS_CHKBTN_CLASS_S + 1,
NUM_POS_CLASS_CHKBTN = POS_CHKBTN_CLASS_END - POS_CHKBTN_CLASS_BEGIN,
POS_CHKBTN_MAP_BEGIN = DLGPOS_CHKBTN_MAP_THE_EARTH_OF_TREES_SHADOW,
POS_CHKBTN_MAP_END = DLGPOS_CHKBTN_MAP_VALLY_OF_LIFE + 1,
NUM_POS_MAP_CHKBTN = POS_CHKBTN_MAP_END - POS_CHKBTN_MAP_BEGIN,
POS_CHKBTN_MAP_BEGIN_NEW = DLGPOS_CHKBTN_MAP_0,
POS_CHKBTN_MAP_END_NEW = DLGPOS_CHKBTN_MAP_19,
NUM_POS_MAP_CHKBTN_NEW = POS_CHKBTN_MAP_END_NEW - POS_CHKBTN_MAP_BEGIN_NEW,
POS_EDT_BEGIN = DLGPOS_EDT_MIN_LEVEL,
POS_EDT_END = DLGPOS_EDT_PASSWORD + 1,
NUM_POS_EDT = POS_EDT_END - POS_EDT_BEGIN,
POS_TXT_BEGIN = DLGPOS_TXT_PEOPLE_LIMIT,
POS_TXT_END = DLGPOS_TXT_MAX_LIMIT_LEVEL + 1,
NUM_POS_TXT = POS_TXT_END - POS_TXT_BEGIN,
POS_LST_BEGIN = DLGPOS_LST_ROOM_TYPE,
POS_LST_END = DLGPOS_LST_PEOPLE_LIMIT + 1,
NUM_POS_LST = POS_LST_END - POS_LST_BEGIN,
};
enum eEDT_POS
{
EDT_MIN_LEVEL = 0,
EDT_MAX_LEVEL,
EDT_TITLE,
EDT_PASSWORD,
};
public:
uiBattleZoneCreateEp2(InterfaceManager *pUIMan);
virtual ~uiBattleZoneCreateEp2();
//-------------------------------- ------------------------------------------
// init/release
//
public:
virtual void Init(CDrawBase* pDrawBase);
virtual void Release();
void InitControls();
bool CheckControls();
void Clear();
//--------------------------------------------------------------------------
// helper/comms.
//
public:
uiBattleZoneMan* GetManager();
const uicBattleZoneCreate_Configs& GetCfgs();
//--------------------------------------------------------------------------
// functions
//
public:
void ExitZoneCreate();
//--------------------------------------------------------------------------
// dialog functions
//
public:
void clearModeList();
void clearPeopleList();
void updateCheckBtns();
void updateRoomType();
void updatePeopleLimitType();
void updatePeopleLimitTypeTemp();
void updateLevelLimit();
void renderRoomTypeDescription();
bool checkValidMap(MAPCODE fromCode, MAPCODE toCode);
void checkEditMinMaxLevel();
bool setMapType(WORD wType);
bool setMapTypeMission(WORD wType);
bool setMapTypeHunting(WORD wType);
bool setMapTypePVP(WORD wType);
bool setMapTypeCHunting(WORD wType);
void setMapTypeInfo(const sMAPINFO* mapInfo);
void setClassType(POSTYPE pos);
void setDefaultRoomName(int iSelect = -1);
POSTYPE getMapAreaInfo(int nPos);
void clickMapArea(POSTYPE pos);
void refreshToolTip(POSTYPE nPos);
void checkMapMouseOver();
protected:
virtual void OnShowWindow( BOOL val );
virtual void OnRenderSolarDialog();
virtual void OnUpdateSolarDialog();
void renderTooltip();
protected:
CControlWZ * getControl( POSTYPE AtPos );
POSTYPE getCtrlIDToPos( WzID wzId );
static WzID m_wzId[DIALOG_MAX];
//--------------------------------------------------------------------------
// procedure
//
public:
virtual void MessageProc( SI_MESSAGE * pMessage ); // Pure
//virtual void UpdatePosition();
//--------------------------------------------------------------------------
// member vars
//
private:
CCtrlButtonWZ* m_pBtnControls[NUM_POS_BTN];
CCtrlButtonCheckWZ* m_pChkBtnClassControls[NUM_POS_CLASS_CHKBTN];
CCtrlButtonCheckWZ* m_pChkBtnMapControls[NUM_POS_MAP_CHKBTN];
CCtrlButtonCheckWZ* m_pChkBtnMapAll;
CCtrlDxIMEEditBox* m_pEdtControls[NUM_POS_EDT];
CCtrlStaticWZ* m_pTxtControls[NUM_POS_TXT];
CCtrlListWZ* m_pLstControls[NUM_POS_LST];
CCtrlListWZ * m_pListSuperMaster;
CCtrlButtonWZ * m_pButtonSuperMaster;
CCtrlImageStaticWZ * m_pTextSuperMaster;
void SetDefaultSuperMasterList();
void SetTextCurrentSuperMasterType(int curSel);
bool m_bInitControls;
private:
uicBattleZoneCreate_Configs m_cfgs;
std::vector<util::_tstring> m_vMapDesc;
};
//------------------------------------------------------------------------------
/**
*/
inline
POSTYPE
uiBattleZoneCreateEp2::getCtrlIDToPos( WzID wzId )
{
for( POSTYPE i = 0 ; i < DIALOG_MAX ; ++i )
{
if( m_wzId[i] == wzId )
{
return i;
}
}
return DIALOG_MAX;
}
//------------------------------------------------------------------------------
/**
*/
inline
CControlWZ *
uiBattleZoneCreateEp2::getControl( POSTYPE AtPos )
{
assert( AtPos < DIALOG_MAX );
return GetControlWZ( m_wzId[AtPos] );
}
//------------------------------------------------------------------------------
/**
*/
inline
bool
uiBattleZoneCreateEp2::CheckControls()
{
if (!this->m_bInitControls)
{
assert ("Unknown controls!!");
return false;
}
return true;
}
//------------------------------------------------------------------------------
/**
*/
inline
const uicBattleZoneCreate_Configs&
uiBattleZoneCreateEp2::GetCfgs()
{
return m_cfgs;
}
//------------------------------------------------------------------------------
#endif // __USER_INTERFACE_BATTLEZONECREATE_EP2_H__