Files
Sun1602/Client/GameClient/Interface/TabCheckButtonControlManager.h
2022-10-26 12:25:11 +08:00

71 lines
1.9 KiB
C++

#pragma once
class uiBase;
class TabCheckButtonControllManager
{
struct TabDialogData
{
float dialog_position_x;
float dialog_position_y;
#ifdef _NA_008472_20150903_IMPROVED_BALANCE
DWORD prev_tab_index;
#endif // _NA_008472_20150903_IMPROVED_BALANCE
DWORD current_tab_index;
DWORD key_queue_type;
};
typedef STLX_VECTOR<uiBase*> TabDialogContainer;
public:
TabCheckButtonControllManager();
~TabCheckButtonControllManager();
// 초기화
bool Initialize(DWORD tab_num,
DWORD key_queue_type,
POINT* dialog_position,
DWORD init_tab_index = 0);
// 탭 다이얼로그 넣기 (0번 인덱스부터 (tab_num - 1)까지 넣어야함)
void PushTab(DWORD tab_index, uiBase* tab_dialog);
// 다이얼로그 열기
void ShowDialog(DWORD tab_index, bool is_show);
// 다이얼로그 열기
void ShowCurrentDialog(bool is_show);
// 탭이 클릭됨
void OnClickTab(DWORD tab_index);
// 다이얼로그 얻기
uiBase* GetTabDialog(DWORD tab_index);
uiBase* GetCurrentTabDialog();
// 다이얼로그 포커스 업데이트
void UpdateDialogFocus(uiBase* main_dialog);
#ifdef _NA_008472_20150903_IMPROVED_BALANCE
// 현재 선택된 탭 인덱스 얻기
DWORD GetCurrentTabIndex() { return tab_dialog_data_.current_tab_index; }
DWORD GetPrevTabIndex() { return tab_dialog_data_.prev_tab_index; }
void SetCurrentTabIndex(DWORD tap_index) { tab_dialog_data_.current_tab_index = tap_index; }
#endif // _NA_008472_20150903_IMPROVED_BALANCE
private:
TabDialogContainer& tab_dialog_container() { return tab_dialog_container_; }
TabDialogData& tab_dialog_data() { return tab_dialog_data_; }
void RegisterKeyQueueType(uiBase* tab_dialog);
void ReleaseKeyQueueType();
void SaveDialogPosition(uiBase* tab_dialog);
bool CheckValidTabIndex(DWORD tab_index);
private:
TabDialogContainer tab_dialog_container_;
TabDialogData tab_dialog_data_;
};