#include "SunClientPrecompiledHeader.h" #ifdef _DH_BATTLEZONE2_ #include "uiBattlezone2Man/uiBattlezone2Man.h" #include "uiBattlezone2Tree/uiBattlezone2Tree.h" #include "uiBattlezone2Lobby/uiBattlezone2Lobby.h" #include "uiBattlezone2List/uiBattlezone2List.h" #include "uiBattlezone2Reservation/uiBattlezone2Reservation.h" #include "BattlezoneMissionTreeParser.h" #include "GlobalFunc.h" #include "Hero.h" #include "Mouse.h" #include "uiSystemMan/uiSystemMan.h" #include "uiToolTipMan/uiToolTipMan.h" #ifdef _YMS_TREECONTROL #include "TreeMenuInfoParser.h" #include "TextureListInfoHandleManager.h" #endif//_YMS_TREECONTROL #include "QuestManager_Concrete.h" #include "MissionManager_Concrete.h" const int kDefaultRoomNameStartIndex_Mission = 1941; const int kDefaultRoomNameStartIndex_PVP = 1981; const int kDefaultRoomNameNumMax = 19; //------------------------------------------------------------------------------ void uiBattlezone2Reservation::RegisterControl() { RegisterControlPosition(StrToWzID("B004"), kControl_Button_B004); RegisterControlPosition(StrToWzID("B001"), kControl_Button_B001); RegisterControlPosition(StrToWzID("B002"), kControl_Button_B002); RegisterControlPosition(StrToWzID("B003"), kControl_Button_B003); RegisterControlPosition(StrToWzID("B000"), kControl_Button_B000); RegisterControlPosition(StrToWzID("B005"), kControl_Button_B005); RegisterControlPosition(StrToWzID("L000"), kControl_List_L000); RegisterControlPosition(StrToWzID("V001"), kControl_VScroll_V001); } uiBattlezone2Reservation::uiBattlezone2Reservation(InterfaceManager* ui_manager): uiBase(ui_manager) { ui_battlezone2_manager_ = NULL; } uiBattlezone2Reservation::~uiBattlezone2Reservation(void) { } void uiBattlezone2Reservation::Init(CDrawBase* draw_base) { RegisterControl(); //! tree menu tree_menu().Init(BASE_TreeMenuInfo::kGroupType_BattlezoneTreeReservation, GetListControlWZ(GetControlID_byPosition(kControl_List_L000)), GetVScrollControlWZ(GetControlID_byPosition(kControl_VScroll_V001)), true, NULL); tree_menu().set_menu_height_gab(20); tree_menu().set_simple_menu(false); SetMode(kReservationMode); is_mouse_over_ = false; for (int i = 0; i < TREE_MAX_ROOM; ++i) { selected_rooms_[i].menu_index = 0; checked_rooms_[i].menu_index = 0; } selected_count_ = 0; old_selected_count_ = 0; created_room_.menu_index = 0; is_stop_ = false; is_reservation_ = false; set_save_party_key(0); ShowButton(kControl_Button_B000, false); ShowButton(kControl_Button_B003, true); } #ifdef _NA_003649_20111115_BATTLE_ZONE_HARDMODE void uiBattlezone2Reservation::MakeBattlezoneTree(BYTE depth_3, BYTE depth_2, BYTE depth_1, BYTE depth_0, int depth, DWORD string_code, TCHAR* string, const DWORD* font_colors) #else void uiBattlezone2Reservation::MakeBattlezoneTree(BYTE depth_3, BYTE depth_2, BYTE depth_1, BYTE depth_0, int depth, DWORD string_code, TCHAR* string) #endif//_NA_003649_20111115_BATTLE_ZONE_HARDMODE { BASE_TreeMenuInfo tree_menu_info; ZeroMemory(&tree_menu_info, sizeof(tree_menu_info)); tree_menu_info.font_id[BASE_TreeMenuInfo::kFontType_Enable] = StrToWzID("st10"); tree_menu_info.font_id[BASE_TreeMenuInfo::kFontType_Disable] = StrToWzID("st10"); tree_menu_info.font_id[BASE_TreeMenuInfo::kFontType_Over] = StrToWzID("st10"); tree_menu_info.font_id[BASE_TreeMenuInfo::kFontType_Select] = StrToWzID("st10"); #ifdef _NA_003649_20111115_BATTLE_ZONE_HARDMODE if (depth_1 > 0) { tree_menu_info.font_color[BASE_TreeMenuInfo::kFontType_Enable] = font_colors[BattlezoneMissionTreeInfo::kFontType_Enable]; tree_menu_info.font_color[BASE_TreeMenuInfo::kFontType_Disable] = font_colors[BattlezoneMissionTreeInfo::kFontType_Disable]; tree_menu_info.font_color[BASE_TreeMenuInfo::kFontType_Over] = font_colors[BattlezoneMissionTreeInfo::kFontType_Over]; tree_menu_info.font_color[BASE_TreeMenuInfo::kFontType_Select] = font_colors[BattlezoneMissionTreeInfo::kFontType_Select]; } else #endif//_NA_003649_20111115_BATTLE_ZONE_HARDMODE { tree_menu_info.font_color[BASE_TreeMenuInfo::kFontType_Enable] = 0xffffffff; tree_menu_info.font_color[BASE_TreeMenuInfo::kFontType_Disable] = WzColor_RGBA(155,155,155,0); tree_menu_info.font_color[BASE_TreeMenuInfo::kFontType_Over] = 0xffffffff; tree_menu_info.font_color[BASE_TreeMenuInfo::kFontType_Select] = 0xffffffff; } tree_menu_info.image_code[BASE_TreeMenuInfo::kIconType_Enable] = 0; tree_menu_info.image_code[BASE_TreeMenuInfo::kIconType_Disable] = 10007; tree_menu_info.image_code[BASE_TreeMenuInfo::kIconType_Collpase] = 10002; tree_menu_info.image_code[BASE_TreeMenuInfo::kIconType_Unfold] = 10003; tree_menu_info.image_code[BASE_TreeMenuInfo::kIconType_CheckOn] = 0; tree_menu_info.image_code[BASE_TreeMenuInfo::kIconType_CheckOff] = 0; tree_menu_info.image_code[BASE_TreeMenuInfo::kIconType_Cursor] = 10008; //if (TreeMenuInfoParser::GetFirstTreeMenu(OUT tree_menu_info, BASE_TreeMenuInfo::Group_Type::kGroupType_BattlezoneTree) == true) { tree_menu_info.tree_group = BASE_TreeMenuInfo::kGroupType_BattlezoneTreeReservation; tree_menu_info.menu_depth[3] = depth_3; tree_menu_info.menu_depth[2] = depth_2; tree_menu_info.menu_depth[1] = depth_1; tree_menu_info.menu_depth[0] = depth_0; tree_menu_info.string_code = string_code; //tree_menu_info.image_code[BASE_TreeMenuInfo::kIconType_Disable] = 10007; //tree_menu_info.font_color[BASE_TreeMenuInfo::kFontType_Disable] = WzColor_RGBA(155,155,155,255); if (string_code == 0) { strncpy(tree_menu_info.string_name, string, sizeof(tree_menu_info.string_name)); } switch (depth) { case 0: tree_menu_info.menu_type = BASE_TreeMenuInfo::kMenuType_Group; break; case 1: tree_menu_info.menu_type = BASE_TreeMenuInfo::kMenuType_Group; tree_menu_info.menu_depth_width = 20; break; case 2: tree_menu_info.menu_type = BASE_TreeMenuInfo::kMenuType_CheckButton; tree_menu_info.menu_depth_width = 40; tree_menu_info.image_code[BASE_TreeMenuInfo::kIconType_CheckOn] = 10006; tree_menu_info.image_code[BASE_TreeMenuInfo::kIconType_CheckOff] = 10005; break; default: tree_menu_info.menu_type = BASE_TreeMenuInfo::kMenuType_None; break; } TreeMenuInfoParser::Instance()->Insert(tree_menu_info); } } void uiBattlezone2Reservation::Clear() { selected_count_ = 0; old_selected_count_ = 0; set_save_party_key(0); is_stop_ = false; is_reservation_ = false; ShowButton(kControl_Button_B000, false); ShowButton(kControl_Button_B003, true); TreeMenuGroup::TreeObject* tree_object = NULL; if (created_room_.menu_index != 0) { tree_object = tree_menu().Find(created_room_.menu_index); if (tree_object) { tree_object->is_check = false; created_room_.menu_index = 0; } } for (int i = 0; i < TREE_MAX_ROOM; ++i) { if (selected_rooms_[i].menu_index != 0) { tree_object = tree_menu().Find(selected_rooms_[i].menu_index); if (tree_object) { tree_object->is_check = false; selected_rooms_[i].menu_index = 0; checked_rooms_[i].menu_index = 0; } } } } void uiBattlezone2Reservation::Release() { SelectRoomClear(); created_room_.menu_index = 0; Clear(); } void uiBattlezone2Reservation::OnUpdateSolarDialog() { #ifdef _YMS_TREECONTROL tree_menu().UpdateMouseWheel(); #endif//_YMS_TREECONTROL if (selected_count_ <= 0) { SetButton(kControl_Button_B000, false); SetButton(kControl_Button_B003, false); SetButton(kControl_Button_B002, false); SetButton(kControl_Button_B005, false); } else { if (is_reservation_) { /*if (is_stop_) { SetButton(kControl_Button_B002, false); } else { SetButton(kControl_Button_B002, true); }*/ SetButton(kControl_Button_B000, true); SetButton(kControl_Button_B003, true); SetButton(kControl_Button_B005, true); } else { //SetButton(kControl_Button_B002, true); SetButton(kControl_Button_B000, false); SetButton(kControl_Button_B003, false); SetButton(kControl_Button_B005, false); } /*if (!is_stop_ && old_selected_count_ != selected_count_) { SetButton(kControl_Button_B002, true); } else { SetButton(kControl_Button_B002, false); }*/ } if (GetDialogWZ()->HaveFocus() == true) { GlobalFunc::MoveToTopDialog(IM_BATTLEZONE2_MANAGER::BATTLEZONE2_LIST); } VScrollDialog::Update(); } bool uiBattlezone2Reservation::GetScrollArea(RECT& area) { if (IsOverControl(GetControlWZ_byPosition(kControl_List_L000)) == true) { area = GetControlWZ_byPosition(kControl_List_L000)->GetSizeRect(); return true; } return false; } void uiBattlezone2Reservation::OnMouseWheelScroll(BYTE mouse_wheel_state) { CControlWZ* control_ptr = GetControlWZ_byPosition(kControl_VScroll_V001); if (control_ptr) { if (control_ptr->GetState() == WZ_HIDE) { return; } } else { return; } if (mouse_wheel_state == MOUSE_WHEEL_UP) { OnVScrollUp(NULL); } else if (mouse_wheel_state == MOUSE_WHEEL_DOWN) { OnVScrollDown(NULL); } } //------------------------------------------------------------------------------ CCtrlVScrollWZ* uiBattlezone2Reservation::vscroll_control() { return GetVScrollControlWZ(GetControlID_byPosition(kControl_VScroll_V001)); } bool uiBattlezone2Reservation::OnVScrollUp(SI_MESSAGE* message) { bool result = true; if (VScrollDialog::OnVScrollThumb(message) == true) { WzID scroll_control_id = GetControlID_byPosition(kControl_VScroll_V001); CCtrlVScrollWZ* scroll_control = static_cast(GetControlWZ(scroll_control_id)); if (scroll_control != NULL) { int scroll_min = 0; int scroll_max = 0; int current_scroll_pos = scroll_control->GetScrollPosWZ(); scroll_control->GetScrollRangeWZ(&scroll_min, &scroll_max); --current_scroll_pos; current_scroll_pos = max(0, current_scroll_pos); scroll_control->SetScrollPosWZ(current_scroll_pos); GetListControlWZ(GetControlID_byPosition(kControl_List_L000))->SetBeginDrawIndex(scroll_control->GetScrollPosWZ()); } } return result; } bool uiBattlezone2Reservation::OnVScrollDown(SI_MESSAGE* message) { bool result = true; WzID scroll_control_id = GetControlID_byPosition(kControl_VScroll_V001); CCtrlVScrollWZ* scroll_control = static_cast(GetControlWZ(scroll_control_id)); if (scroll_control != NULL) { int scroll_min = 0; int scroll_max = 0; int current_scroll_pos = scroll_control->GetScrollPosWZ(); scroll_control->GetScrollRangeWZ(&scroll_min, &scroll_max); ++current_scroll_pos; current_scroll_pos = min(scroll_max, current_scroll_pos); scroll_control->SetScrollPosWZ(current_scroll_pos); GetListControlWZ(GetControlID_byPosition(kControl_List_L000))->SetBeginDrawIndex(scroll_control->GetScrollPosWZ()); } return result; } bool uiBattlezone2Reservation::OnVScrollThumb(SI_MESSAGE* message) { bool result = true; WzID scroll_control_id = GetControlID_byPosition(kControl_VScroll_V001); CCtrlVScrollWZ* scroll_control = static_cast(GetControlWZ(scroll_control_id)); if (scroll_control != NULL) { int scroll_min = 0; int scroll_max = 0; int current_scroll_pos = scroll_control->GetScrollPosWZ(); scroll_control->GetScrollRangeWZ(&scroll_min, &scroll_max); current_scroll_pos = max(0, current_scroll_pos); current_scroll_pos = min(scroll_max, current_scroll_pos); GetListControlWZ(GetControlID_byPosition(kControl_List_L000))->SetBeginDrawIndex(scroll_control->GetScrollPosWZ()); } return result; } void uiBattlezone2Reservation::OnRenderSolarDialog() { uiToolTipMan* tooltip_manager = GET_DIALOG_MANAGER(uiToolTipMan, UIMAN_TOOLTIP); if (is_mouse_over_ && tooltip_manager != NULL) { const BattlezoneMissionTreeInfo* find_info; TreeMenuGroup::TreeObject* tree_object = tree_menu().OverTreeObject(); if (tree_object && tree_object->info) { find_info = BattlezoneMissionTreeParser::Instance()->GetTreeMenu(tree_object->info->menu_depth[3], tree_object->info->menu_depth[2], tree_object->info->menu_depth[1]); if (find_info) { tooltip_manager->RegisterTooltipBattlezoneMap(find_info); tooltip_manager->SetTooltipDialogID(GetDialogKey()); } } } int mouse_x = Mouse::Instance()->GetMouseX(); int mouse_y = Mouse::Instance()->GetMouseY(); CControlWZ* control = GetControlWZ_byPosition(kControl_List_L000); if (control) { RECT position = control->GetSizeRect(); if (position.left > mouse_x || position.right < mouse_x || position.top > mouse_y || position.bottom < mouse_y) { is_mouse_over_ = false; } } } void uiBattlezone2Reservation::MouseOver_MsgProc(SI_MESSAGE* message) { } void uiBattlezone2Reservation::SetDefaultRoomName(int select/* = -1 */) { } uiBattlezone2Man* uiBattlezone2Reservation::GetManager() { if (ui_battlezone2_manager_ == NULL) { ui_battlezone2_manager_ = static_cast(this->GetUIMan()->GetUserInterfaceManager(UIMAN_BATTLE_ZONE_MANAGER)); assert (ui_battlezone2_manager_); } return ui_battlezone2_manager_; } void uiBattlezone2Reservation::OnShowWindow(BOOL is_show) { static bool once_make_list = false; TCHAR string_buffer[BASE_TreeMenuInfo::kNameLength] = {0,}; TCHAR temp_string[INTERFACE_STRING_LENGTH] = {0,}; if (is_show) { g_InterfaceManager.GetInterfaceString(1942, temp_string); BYTE* menu_depth_count = BattlezoneMissionTreeParser::Instance()->max_menu_depth(); const BattlezoneMissionTreeInfo* find_info; //Æ®¸® ¸®½ºÆ® »ý¼ºÇϱâ if (once_make_list == false) { once_make_list = true; TreeMenuInfoParser::Instance()->Remove(BASE_TreeMenuInfo::kGroupType_BattlezoneTreeReservation); for (BYTE LGroupCount = 1; LGroupCount <= menu_depth_count[0]; ++LGroupCount) { for (BYTE SGroupCount = 1; SGroupCount <= menu_depth_count[1]; ++SGroupCount) { for (BYTE OrderCount = 1; OrderCount <= menu_depth_count[2]; ++OrderCount) { find_info = BattlezoneMissionTreeParser::Instance()->GetTreeMenu(LGroupCount, SGroupCount, OrderCount); if (find_info != NULL) { if (SGroupCount == 1 && OrderCount == 1) { #ifdef _NA_003649_20111115_BATTLE_ZONE_HARDMODE MakeBattlezoneTree(LGroupCount, 0, 0, 0, 0, find_info->title_string_code, NULL, find_info->font_color); #else MakeBattlezoneTree(LGroupCount, 0, 0, 0, 0, find_info->title_string_code, NULL); #endif//_NA_003649_20111115_BATTLE_ZONE_HARDMODE } if (OrderCount == 1) { #ifdef _NA_003649_20111115_BATTLE_ZONE_HARDMODE MakeBattlezoneTree(LGroupCount, SGroupCount, 0, 0, 1, find_info->subtitle_string_code, NULL, find_info->font_color); #else MakeBattlezoneTree(LGroupCount, SGroupCount, 0, 0, 1, find_info->subtitle_string_code, NULL); #endif//_NA_003649_20111115_BATTLE_ZONE_HARDMODE } g_InterfaceManager.GetInterfaceString(find_info->mission_string_code, temp_string); //Snprintf(string_buffer, sizeof(string_buffer), "%s(%d~%d)", temp_string, find_info->min_level, find_info->max_level); Snprintf(string_buffer, sizeof(string_buffer), temp_string); #ifdef _NA_003649_20111115_BATTLE_ZONE_HARDMODE MakeBattlezoneTree(LGroupCount, SGroupCount, OrderCount, 0, 2, 0, string_buffer, find_info->font_color); #else MakeBattlezoneTree(LGroupCount, SGroupCount, OrderCount, 0, 2, 0, string_buffer); #endif//_NA_003649_20111115_BATTLE_ZONE_HARDMODE } else { break; } } } } tree_menu().ApplyTreeGroup(BASE_TreeMenuInfo::kGroupType_BattlezoneTreeReservation); tree_menu().Fill(); } //·¹º§¾÷¿¡ µû¸¥ ¶ôÁ¦°Å TreeMenuGroup::TreeObject* tree_object = NULL; for (BYTE LGroupCount = 1; LGroupCount <= menu_depth_count[0]; ++LGroupCount) { for (BYTE SGroupCount = 1; SGroupCount <= menu_depth_count[1]; ++SGroupCount) { for (BYTE OrderCount = 1; OrderCount <= menu_depth_count[2]; ++OrderCount) { find_info = BattlezoneMissionTreeParser::Instance()->GetTreeMenu(LGroupCount, SGroupCount, OrderCount); if (find_info != NULL) { tree_object = tree_menu().Find(LGroupCount,SGroupCount,OrderCount,0); if (tree_object == NULL) { continue; } bool is_enable = false; sMAPINFO* map_info = MapInfoParser::Instance()->FindMapInfo(static_cast(find_info->map_code)); if ((map_info == NULL) || (g_pQMGR_Real == NULL)) { tree_object->is_enable = false; continue; } // ·¹º§ Á¶°ÇÀÌ ÂüÀÎÁö if (g_pHero->GetLevel() >= map_info->freePassLV) { is_enable = true; } // ¹Ì¼ÇÀ» ¿Ï·áÇß¾ú´ÂÁö if (g_pMission_Concrete && (is_enable == false)) { is_enable = !!g_pMission_Concrete->GetMissionPoint(static_cast(map_info->completeMCode)); } // ¼±Çà Äù½ºÆ®¸¦ ¿Ï·áÇß´ÂÁö if (g_pQMGR_Real && (is_enable == false)) { QUESTPART_COMPL* questpart_complete = g_pQMGR_Real->FindComplQuest(map_info->completeQCode); if (questpart_complete && questpart_complete->m_Num > 0) { is_enable = true; } } tree_object->is_enable = is_enable; } else { break; } } } } /* AllCheckOff(); if (battlezone_tree_mode_ == kReservationMode) { SetReservationCheck(); } else { SetCreationCheck(); SetDefaultRoomName(); }*/ } else { is_mouse_over_ = false; if (CheckingSelect())//¿¹¾à»óȲÀÌ ´Ù¸£´Ù¸é º¹±¸ { RestoreReservation(); } } } void uiBattlezone2Reservation::RestoreReservation() { TreeMenuGroup::TreeObject* tree_object = NULL; for (int i = 0; i < selected_count_; ++i) { tree_object = tree_menu().Find(selected_rooms_[i].menu_index); if (tree_object) { tree_object->is_check = false;//ÀÏ´Ü ¸ðµÎ¸¦ ²ö´Ù. } selected_rooms_[i].menu_index = 0; } for (int i = 0; i < old_selected_count_; ++i) { tree_object = tree_menu().Find(checked_rooms_[i].menu_index); selected_rooms_[i].menu_index = checked_rooms_[i].menu_index; if (tree_object) { tree_object->is_check = true;//º¹±¸¸¦ÇÑ´Ù. } } selected_count_ = old_selected_count_; } void uiBattlezone2Reservation::SetReservationCheck() { if (created_room_.menu_index == 0) { return; } TreeMenuGroup::TreeObject* tree_object = tree_menu().Find(created_room_.menu_index); if (tree_object) { tree_object->is_check = true; } } void uiBattlezone2Reservation::SetCreationCheck() { for (int i = 0; i < TREE_MAX_ROOM; ++i) { if (selected_rooms_[i].menu_index == 0) { continue; } TreeMenuGroup::TreeObject* tree_object = tree_menu().Find(selected_rooms_[i].menu_index); if (tree_object) { tree_object->is_check = true; } } } void uiBattlezone2Reservation::AllCheckOff() { for (int i = 0; i < TREE_MAX_ROOM; ++i) { TreeMenuGroup::TreeObject* tree_object = tree_menu().Find(selected_rooms_[i].menu_index); if (tree_object) { tree_object->is_check = false; } } } void uiBattlezone2Reservation::SetMode(BYTE mode) { if (mode < kCreateMode || mode >= kModeMax) { return; } battlezone_tree_mode_ = mode; /*CControlWZ* control_ptr = NULL; control_ptr = GetControlWZ_byPosition(kControl_Button_B000); if (control_ptr) { control_ptr->ShowWindowWZ(WZ_HIDE); } control_ptr = GetControlWZ_byPosition(kControl_Button_B002); if (control_ptr) { control_ptr->ShowWindowWZ(WZ_HIDE); } control_ptr = GetControlWZ_byPosition(kControl_Button_B003); if (control_ptr) { control_ptr->ShowWindowWZ(WZ_HIDE); } switch (mode) { case kCreateMode: { SelectRoomClear(); control_ptr = GetControlWZ_byPosition(kControl_Button_B000); if (control_ptr) { control_ptr->ShowWindowWZ(WZ_SHOW); } } break; case kReservationMode: { TreeMenuGroup::TreeObject* find_tree_object = tree_menu().Find(created_room_.menu_index); //ÀÌÀü¿¡ ¼±ÅÃÇß´ø °ÍÀº üũ ²ô±â if (find_tree_object) { find_tree_object->is_check = false; } control_ptr = GetControlWZ_byPosition(kControl_Button_B002); if (control_ptr) { control_ptr->ShowWindowWZ(WZ_SHOW); } } break; case kModificationMode: { SelectRoomClear(); control_ptr = GetControlWZ_byPosition(kControl_Button_B003); if (control_ptr) { control_ptr->ShowWindowWZ(WZ_SHOW); } } break; }*/ } bool uiBattlezone2Reservation::ShowEditControl(BYTE type, bool is_show) { return true; } void uiBattlezone2Reservation::Process(DWORD tick_count) { } //------------------------------------------------------------------------------ void uiBattlezone2Reservation::MessageProc(SI_MESSAGE* message) { if (IsLock()) return; /*if (GetManager() == NULL) return;*/ switch (message->eResultMsg) { case RT_MSG_LBUTTONCLICK: OnLButtonClick(message); break; case RT_MSG_MOUSEOVER: { is_mouse_over_ = true; } break; default: SolarDialog::MessageProc(message); VScrollDialog::MessageProc(message); break; } } bool uiBattlezone2Reservation::ReservationStandByRoom() { MSG_CG_PARTY_STANDBY_ROOM_SYN send_packet; send_packet.number_of_mission_ = selected_count_; for (int i = 0; i < selected_count_; ++i) { const BattlezoneMissionTreeInfo* find_info = BattlezoneMissionTreeParser::Instance()->GetTreeMenu(selected_rooms_[i].menu_depth[3], selected_rooms_[i].menu_depth[2], selected_rooms_[i].menu_depth[1]);//little ¿£µð¾È 1¹øÂ°´Â 3¹øÂ°ÀÓ if (find_info) { send_packet.map_code_[i] = static_cast(find_info->map_code); } else { send_packet.map_code_[i] = 0; #ifdef _DEV_VER GlobalFunc::OutputMsg_Notice(eOUTPUT_MSG_CHAT, "uiBattlezone2Reservation::ReservationRoom(Can not found mapcode)"); #endif// //return false; } } //send_packet.check_type_ = MSG_CG_PARTY_CHECK_ROOM_SYN::CheckStanByType; GlobalFunc::SendPacket(CI_GAMESERVERIDX, &send_packet, sizeof(send_packet)); return true; } bool uiBattlezone2Reservation::ReservationRoom() { if (is_reservation_ == false) { return false; } MSG_CG_PARTY_CHECK_ROOM_SYN send_packet; send_packet.select_mission_num_ = selected_count_; for (int i = 0; i < TREE_MAX_ROOM; ++i) { checked_rooms_[i].menu_index = selected_rooms_[i].menu_index; } SetButton(kControl_Button_B002, false); for (int i = 0; i < selected_count_; ++i) { const BattlezoneMissionTreeInfo* find_info = BattlezoneMissionTreeParser::Instance()->GetTreeMenu(selected_rooms_[i].menu_depth[3], selected_rooms_[i].menu_depth[2], selected_rooms_[i].menu_depth[1]);//little ¿£µð¾È 1¹øÂ°´Â 3¹øÂ°ÀÓ if (find_info) { send_packet.map_code_[i] = static_cast(find_info->map_code); } else { send_packet.map_code_[i] = 0; #ifdef _DEV_VER GlobalFunc::OutputMsg_Notice(eOUTPUT_MSG_CHAT, "uiBattlezone2Tree::ReservationRoom(Can not found mapcode)"); #endif// //return false; } } send_packet.check_type_ = MSG_CG_PARTY_CHECK_ROOM_SYN::CheckStanByType; GlobalFunc::SendPacket(CI_GAMESERVERIDX, &send_packet, sizeof(send_packet)); return true; } bool uiBattlezone2Reservation::ResetReservationRoom() { /* MSG_CG_PARTY_CHECK_ROOM_SYN send_packet; send_packet.select_mission_num_ = 0; */ for (int i = 0; i < TREE_MAX_ROOM; ++i) { TreeMenuGroup::TreeObject* find_tree_object = tree_menu().Find(selected_rooms_[i].menu_index); if (find_tree_object) { find_tree_object->is_check = false; selected_rooms_[i].menu_index = 0; checked_rooms_[i].menu_index = 0; } } selected_count_ = 0; old_selected_count_ = 0; is_stop_ = false; MSG_CG_PARTY_STANDBY_ROOM_SYN send_packet; send_packet.number_of_mission_ = 0; GlobalFunc::SendPacket(CI_GAMESERVERIDX, &send_packet, send_packet.GetSize()); return true; } bool uiBattlezone2Reservation::ClearReservationRoom(bool value) { /*MSG_CG_PARTY_CHECK_ROOM_SYN send_packet; send_packet.select_mission_num_ = 0;*/ MSG_CG_PARTY_STANDBY_PAUSE_SYN send_packet; send_packet.set_value_ = value; GlobalFunc::SendPacket(CI_GAMESERVERIDX, &send_packet, sizeof(send_packet)); return true; } bool uiBattlezone2Reservation::CreateRoom() { return true; } bool uiBattlezone2Reservation::SelectCreate(TreeMenuGroup::TreeObject* tree_object) { if (tree_object == NULL) { return false; } if (tree_object->info && tree_object->info->menu_depth[1] <= 0)//little ¿£µð¾È 1¹øÂ°´Â 3¹øÂ°ÀÓ { return false;//Ç׸ñÀÌ ¾Æ´Ï´Ù. Æú´õÀÌ´Ù. } if (tree_object->is_enable == false) { return false;//ºñȰ¼º Ç׸ñ ÀÌ´Ù. } TreeMenuGroup::TreeObject* find_tree_object = tree_menu().Find(created_room_.menu_index); //ÀÌÀü¿¡ ¼±ÅÃÇß´ø °ÍÀº üũ ²ô±â if (find_tree_object) { find_tree_object->is_check = false; } //¼±ÅÃÇѰÍÀº Ç×»ó üũ created_room_.menu_index = tree_object->info->menu_index; if (tree_object) { tree_object->is_check = true; } return true; } void uiBattlezone2Reservation::SelectRoomClear() { for (int i = 0; i < TREE_MAX_ROOM; ++i) { if (selected_rooms_[i].menu_index == 0) { continue; } TreeMenuGroup::TreeObject* tree_object = tree_menu().Find(selected_rooms_[i].menu_index); if (tree_object) { tree_object->is_check = false; } selected_rooms_[i].menu_index = 0; checked_rooms_[i].menu_index = 0; } selected_count_ = 0; } bool uiBattlezone2Reservation::CheckingSelect() { bool is_find = false; bool is_different = false;//¾ÈƲ¸®´Ù. if (selected_count_ != old_selected_count_) //°³¼ö°¡ ´Ù¸£´Ù¸é ÀÏ´Ü ´Ù¸§ { return true; } //°³¼ö°¡ °°Àº °æ¿ì ÀÖ´ÂÁö ºñ±³ for (int i = 0; i < TREE_MAX_ROOM; ++i) { is_find = false; if (selected_rooms_[i].menu_index == 0) { break; } for (int j = 0; j < TREE_MAX_ROOM; ++j) { if (checked_rooms_[j].menu_index == 0) { break; } if (selected_rooms_[i].menu_index == checked_rooms_[j].menu_index) { is_find = true; break; } } if (is_find == false) { is_different = true; break; } } return is_different; } bool uiBattlezone2Reservation::SelectMenu(TreeMenuGroup::TreeObject* tree_object) { if (tree_object == NULL) { return false; } if (tree_object->info->menu_depth[1] <= 0)//little ¿£µð¾È 1¹øÂ°´Â 3¹øÂ°ÀÓ { return false;//Ç׸ñÀÌ ¾Æ´Ï´Ù. Æú´õÀÌ´Ù. } if (tree_object->is_enable == false) { return false;//ºñȰ¼º Ç׸ñ ÀÌ´Ù. } if (is_stop_)//Áß´ÜÁß¿¡´Â »ç¿ë ºÒ°¡ { if (!tree_object->is_check)//üũµÈ Ç׸ñÀ̸é ÇØÁ¦ { tree_object->is_check = true; } else//üũ ¾ÈµÈ Ç׸ñÀÌ¸é ¼±Åà { tree_object->is_check = false; } return false; } if (!tree_object->is_check)//üũµÈ Ç׸ñÀ̸é ÇØÁ¦ { for (int i = 0; i < selected_count_; ++i)//ã±â { if (selected_rooms_[i].menu_index == tree_object->info->menu_index) { //selected_count_¹øÂ° µ¥ÀÌÅ͸¦ i¹øÂ°¿¡ µ¤¾î¾²°í selected_count_¹øÂ°´Â Á¦°Å selected_rooms_[i].menu_index = selected_rooms_[selected_count_-1].menu_index; selected_rooms_[selected_count_-1].menu_index = 0; break; } } --selected_count_; } else//üũ ¾ÈµÈ Ç׸ñÀÌ¸é ¼±Åà { if (selected_count_ < TREE_MAX_ROOM) { selected_rooms_[selected_count_].menu_index = tree_object->info->menu_index; ++selected_count_; } else { #ifdef _DEV_VER GlobalFunc::OutputMsg_Notice(eOUTPUT_MSG_CHAT, "Can't select more mission"); #endif// tree_object->is_check = false; return false; } } return true; } //------------------------------------------------------------------------------ void uiBattlezone2Reservation::ShowButton(BYTE position, bool is_show) { CControlWZ* control = GetControlWZ_byPosition(position); if (control) { control->ShowWindowWZ((is_show)?WZ_SHOW:WZ_HIDE); } } //------------------------------------------------------------------------------ void uiBattlezone2Reservation::SetButton(BYTE position, bool is_enable) { CControlWZ* control = GetControlWZ_byPosition(position); if (control) { control->EnableWindowWZ(is_enable); } } //------------------------------------------------------------------------------ bool uiBattlezone2Reservation::OnLButtonClick(SI_MESSAGE* message) { bool result = true; #ifdef _YMS_TREECONTROL //! Æ®¸® ¸Þ´º ó¸® TreeMenuGroup::TreeObject* tree_object = NULL; if (tree_menu().MessageProc(message, OUT tree_object) == true && tree_object != NULL) { if (battlezone_tree_mode_ == kReservationMode) { SelectMenu(tree_object); if (CheckingSelect()) { SetButton(kControl_Button_B002, true); } else { SetButton(kControl_Button_B002, false); } } else//»ý¼º, º¯°æ ¸ðµÎ { SelectCreate(tree_object); } } #endif//_YMS_TREECONTROL switch (GetControlPosition_byID(message->dwCtrlID)) { case kControl_Button_B004: //´Ý±â case kControl_Button_B001: { ShowInterface(FALSE); } break; case kControl_Button_B000://ÀϽÃÁ¤ÁöÇØÁ¦ { is_stop_ = false; //ReservationRoom(); ClearReservationRoom(true); ShowButton(kControl_Button_B000, false); ShowButton(kControl_Button_B003, true); } break; case kControl_Button_B003://¿¹¾àÀϽÃÁ¤Áö { is_stop_ = true; ClearReservationRoom(false); ShowButton(kControl_Button_B000, true); ShowButton(kControl_Button_B003, false); //SetButton(kControl_Button_B002, false); } break; case kControl_Button_B002://¿¹¾à { is_reservation_ = true; old_selected_count_ = selected_count_; ReservationRoom(); } break; case kControl_Button_B005: //¿¹¾àÀüüÃë¼Ò { is_reservation_ = false; ResetReservationRoom(); ShowButton(kControl_Button_B000, false); ShowButton(kControl_Button_B003, true); //SetButton(kControl_Button_B002, false); //SetButton(kControl_Button_B000, false); //SetButton(kControl_Button_B004, false); } break; case kControl_List_L000: { } break; default: { } break; } return result; } void uiBattlezone2Reservation::NetworkProc(MSG_BASE* message_ptr) { //¹èƲÁ¸ ÆÐŶ¸¸ ó¸®ÇÑ´Ù if (message_ptr && message_ptr->m_byCategory != CG_PARTY) { return; } switch (message_ptr->m_byProtocol) { case CG_PARTY_STANDBY_PAUSE_ACK: { MSG_CG_PARTY_STANDBY_PAUSE_ACK* recv_packet = (MSG_CG_PARTY_STANDBY_PAUSE_ACK*)message_ptr; //nop } } } #endif //_DH_BATTLEZONE2_