#include "StdAfx.h" // _NA_005026_20120527_CHAOS_ZONE_BATTLE_GROUND #include #include #include #include #include #include #ifdef _NA_006620_20130402_GM_BATTLE_GROUND_EVENT_GAME #include #endif // _NA_006620_20130402_GM_BATTLE_GROUND_EVENT_GAME void Handler_AG_BATTLE_GROUND::OnAG_ProcessPacket(GameServerSession* server_session, MSG_BASE* packet, WORD size) { MSG_CG_BATTLE_GROUND_PACKET* recv_packet = static_cast(packet); switch(recv_packet->packet_type) { case AG_BATTLE_GROUND_LEAVE_CMD: { OnAG_BATTLE_GROUND_LEAVE_CMD(server_session, packet, size); } break; case AG_BATTLE_GROUND_CAN_RESERVATION_ACK: { OnAG_BATTLE_GROUND_CAN_RESERVATION_ACK(server_session, packet, size); } break; } } void Handler_AG_BATTLE_GROUND::OnAG_BATTLE_GROUND_LEAVE_CMD(GameServerSession* server_session, MSG_BASE* packet, WORD size) { MSG_AG_BATTLE_GROUND_LEAVE_CMD* recv_packet = static_cast(packet); User* const user = UserManager::Instance()->GetUser(packet->m_dwKey); #ifdef _NA_006620_20130402_GM_BATTLE_GROUND_EVENT_GAME if (BattleGroundManager::Instance()->LeaveRoom(user,recv_packet->zone_key) == false) { TeamBattleGroundManager::Instance()->LeaveRoom(user,recv_packet->zone_key); } #else BattleGroundManager::Instance()->LeaveRoom(user,recv_packet->zone_key); #endif // _NA_006620_20130402_GM_BATTLE_GROUND_EVENT_GAME } void Handler_AG_BATTLE_GROUND::OnAG_BATTLE_GROUND_CAN_RESERVATION_ACK(GameServerSession* server_session, MSG_BASE* packet, WORD size) { MSG_AG_BATTLE_GROUND_CAN_RESERVATION_ACK* recv_packet = \ static_cast(packet); BattleGroundManager* battle_ground_manager = BattleGroundManager::Instance(); User* const user = UserManager::Instance()->GetUser(packet->m_dwKey); if (user == NULL) { return; } MSG_CG_BATTLE_GROUND_RESERVATION_ACK ack_msg; ack_msg.result_code = RC::RC_BATTLE_GROUND_RESERVATION_SUCCESS; // GameServer ´ÜÀ§¿¡¼­ Á¶°Ç °Ë»ç °á°ú if (recv_packet->result_code != RC::RC_BATTLE_GROUND_RESERVATION_SUCCESS) { ack_msg.result_code = recv_packet->result_code; user->SendPacket(&ack_msg, sizeof(ack_msg)); return; } const MAPCODE map_code = recv_packet->map_code; int equip_item_score = recv_packet->equip_item_score; eCHAR_TYPE class_code = recv_packet->class_code; bool is_healer = recv_packet->is_healer; //¿¹¾àÀÚ ¸®½ºÆ®¿¡ µî·Ï BattleGroundMemberInfo* member = NULL; bool reserve_result = \ battle_ground_manager->InsertReservationMember(user->GetUserKey(), map_code, equip_item_score, class_code, is_healer, member); if (reserve_result == false || member == NULL) { ack_msg.result_code = RC::RC_BATTLE_GROUND_RESERVATION_FAIL; user->SendPacket(&ack_msg, sizeof(ack_msg)); return; } // ÇØ´ç Ç÷¹À̾îÀÇ ¹èƲÁ¸ ¿¹¾à ¸ðµÎ Ãë¼Ò AgentPartyManager* const party_manager = AgentPartyManager::Instance(); PartyRoomFinder* room_finder = party_manager->GetPartyRoomFinder(); if (room_finder != NULL) { room_finder->DeleteAllCharGuidFromMissionList(user->GetSelectedCharGuid()); } ack_msg.battle_ground_reservation_key = member->reservation_key; user->SendPacket(&ack_msg, sizeof(ack_msg)); // À¯Àú°¡ ¿¹¾àÀ» ÇÒ¶§¸¶´Ù üũ.. //_NA_007065_20140217_BATTLEGROUND_REFACTORYING #ifdef _NA_008679_20160202_REWORK_BATTLEGROUND #else battle_ground_manager->CheckMatching(map_code); #endif //_NA_008679_20160202_REWORK_BATTLEGROUND // battle_ground_manager->SendReservationMemberCountToClient(user->GetUserGUID(), map_code); // »óꝰæ.. ;{ MSG_AG_BATTLE_GROUND_STATUS_CHANGE_STATE_CMD cmd_msg; cmd_msg.behave_sate = PLAYER_BEHAVE_RESERVATION_BATTLE_GROUND_ZONE; user->SendToLinkedServer(&cmd_msg, sizeof(cmd_msg)); }; }