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

204 lines
6.2 KiB
C++

#pragma once
#ifdef _DH_BATTLEZONE2_
#include "uiBase.h"
#include "DropdownControl.h"
#include "VScrollDialog.h"
#define ANIMATION_FRAME 12
#define ANIMATION_FRAME_WIDTH 40.0f
#define ANIMATION_FRAME_HEIGHT 40.0f
class uiBattlezone2Man;
class uiBattlezone2List : public uiBase, public VScrollDialog
{
enum UIControlPos
{
kControl_Button_B004 = 0,
kControl_Button_B000,
kControl_Button_B005,
kControl_Button_B006,
kControl_Button_B007,
kControl_Button_B008,
kControl_Button_B009,
kControl_Button_B010,
//kControl_Text_ST20,
kControl_Button_B016,
kControl_Text_S001,
kControl_Text_S002,
kControl_Text_S000,
kControl_Text_S003,
kControl_Text_S005,
kControl_Text_S006,
kControl_Text_S007,
kControl_Edit_E000,
kControl_List_L000,
kControl_List_L001,
kControl_Picture_P003,
kControl_Picture_P002,
kControl_Picture_P000,
kControl_Picture_P001,
kControl_Picture_P004,
kControl_Picture_P005,
kControl_Picture_P006,
kControl_Picture_P007,
kControl_Picture_P009,
kControl_Picture_P010,
kControl_VScroll_V001,
kControl_VScroll_V000,
kControl_Text_S008,
kControl_Button_B001,
kControl_Button_B002,
kControl_List_L002,
kControl_Button_B012,
kControl_Button_B003,
kControl_Button_B011,
kControl_Button_B013,
kControl_Button_B014,
kControl_Button_B015,
#ifdef _NA_008679_20160202_REWORK_BATTLEGROUND
kControl_Check_C000,
kControl_Check_C001,
#endif //_NA_008679_20160202_REWORK_BATTLEGROUND
kControl_Size,
};
enum
{
BATTLEZONE2_LIST_NUM,
BATTLEZONE2_LIST_TYPE,
BATTLEZONE2_LIST_STATE,
BATTLEZONE2_LIST_TITLE,
BATTLEZONE2_LIST_MEMBER,
BATTLEZONE2_LIST_MAPNAME,
BATTLEZONE2_LIST_MAX,
};
enum
{
BATTLEZONE2_FIND_BY_MAP_NAME = 0,
BATTLEZONE2_FIND_BY_ID,
BATTLEZONE2_FIND_BY_NUMBER,
BATTLEZONE2_FIND_MAX,
};
typedef struct _BATTLEZONE_MAP_INFO
{
MAPCODE map_code;
TCHAR map_name[INTERFACE_STRING_LENGTH];
BYTE type;
}BATTLEZONE_MAP_INFO;
public:
uiBattlezone2List(InterfaceManager* ui_manager);
virtual ~uiBattlezone2List(void);
virtual void Init(CDrawBase* draw_base);
virtual void Release();
virtual void OnUpdateSolarDialog();
virtual void OnRenderSolarDialog();
virtual void MessageProc(SI_MESSAGE* message);
virtual void MouseOver_MsgProc(SI_MESSAGE* message);
virtual void OnShowWindow(BOOL is_show);
virtual void Process(DWORD tick_count);
virtual void NetworkProc(MSG_BASE* message_ptr);
uiBattlezone2Man* GetManager();
void ShowBattlezoneTree(BYTE mode);
bool EnterRoom(WORD party_key, const TCHAR* password, PartyRoomInfo* party_info);
DropdownControl& dropdown_class_filter() { return dropdown_class_filter_; }
void Clear();
void SetIsSSQOpen(bool val);
bool order_by(){ return order_by_; }
WORD follow_party_key(){ return follow_party_key_; }
protected:
virtual CCtrlVScrollWZ* vscroll_control();
virtual bool GetScrollArea(RECT& area);
virtual bool OnVScrollDown(SI_MESSAGE* msg);
virtual bool OnVScrollUp(SI_MESSAGE* msg);
virtual bool OnVScrollThumb(SI_MESSAGE* msg);
virtual CCtrlVScrollWZ* find_vscroll_control();
virtual bool GetFindScrollArea(RECT& area);
virtual bool OnFindVScrollDown(SI_MESSAGE* msg);
virtual bool OnFindVScrollUp(SI_MESSAGE* msg);
virtual bool OnFindVScrollThumb(SI_MESSAGE* msg);
bool FindVScrollUp(SI_MESSAGE* msg);
bool FindVScrollDown(SI_MESSAGE* msg);
private:
void RegisterControl();
bool OnDoubleButtonClick(SI_MESSAGE* message);
bool OnLButtonClick(SI_MESSAGE* message);
bool OnRButtonClick(SI_MESSAGE* message);
bool OnMouseOver(SI_MESSAGE* message);
void ToggleViewRoom(bool is_show);
bool ShowEditControl(bool is_show);
void RequestBattlezoneList(bool is_fast = false);
void OnSearch();
void SetBattlezoneList();
void ShowBattlezoneLobby();
void RenderIcon();
void SearchID(TCHAR* search_id);
void SearchNo(WORD number);
void SearchMap(TCHAR* search_map, bool is_button = false);
void SearchResult(DWORD result_code, PartyRoomInfo* party_room_info);
void RecvBattlezoneList(MSG_BASE* message_ptr);
void RecvBattlezoneWatingList(MSG_BASE* message_ptr);
void RecvBattlezoneMapNameList(MSG_BASE* message_ptr);
void SetPage(int current_page, int max_page);
void SortList(int sort_by, bool order_by);
void InitTextures();
void PlayAnimation();
void ShowAnimation(bool is_value);
void ShowFindWords(bool is_value);
DWORD LoadMapNameCode();
void InsertFindList(const char* item_name);
void FillFindListData(TCHAR* map_name);
void SendMapFind(BATTLEZONE_MAP_INFO* select_map_name_info);
void ShowWaitingButton(bool is_show);
#ifdef _NA_008679_20160202_REWORK_BATTLEGROUND
void MovementButtonMessageProc(SI_MESSAGE* message);
POINT mouse_cursor_point;
BOOL window_opend_;
#endif //_NA_008679_20160202_REWORK_BATTLEGROUND
DropdownControl dropdown_class_filter_;
std::vector<PartyRoomInfo> battlezone_list_;
PartyRoomInfo* last_party_info_;
uiBattlezone2Man* ui_battlezone2_manager_;
CCtrlDxIMEEditBox* edit_control_;
CCtrlStaticWZ* static_edit_control_;
CCtrlStaticWZ* static_page_control_;
CCtrlListWZ* list_control_;
CCtrlListWZ* find_list_ptr_;
WORD follow_party_key_;
int last_sort_by_function_;
CTimerSimple list_refresh_timer_;
CTimerSimple animation_refresh_timer_;
bool is_searched_;
int search_count_;
int last_scroll_position_;
//DropdownControl find_type_;
bool is_ssq_open_;
bool order_by_;
int current_page_; //현재페이지
int max_page_; //최대페이지
bool is_first_;//처음 여는 것인지
HANDLE effect_texture_;
FRECT texture_rectangles_[ANIMATION_FRAME];
bool animatino_show_;
std::vector<BATTLEZONE_MAP_INFO> map_infomations_;
std::vector<BATTLEZONE_MAP_INFO> searched_results_;
};
#endif//_DEV_VER //_DH_GM_ITEM_WINDOW