#include #ifdef _NA_007065_20140217_CHAOSZONE_GOLDRUSH #include "ChaosZoneSystem/Handler_CG_GOLDRUSH.h" #include #include #include void Handler_CG_GOLDRUSH::OnCG_ProcessPacket( User* user, MSG_BASE* packet, WORD size ) { MSG_CG_GOLDRUSH_PACKET* recv_packet = static_cast(packet); switch(recv_packet->packet_type) { case CG_GOLDRUSH_RESERVATION_SYN: //ÀüÀå ¿¹¾à { OnCG_GOLDRUSH_RESERVATION_SYN(user, packet, size); }break; case CG_GOLDRUSH_RESERVATION_CANCEL_SYN: //¿¹¾àÃë¼Ò { OnCG_GOLDRUSH_RESERVATION_CANCEL_SYN(user,packet,size); }break; default: { user->SendToLinkedServer(static_cast(packet),size); }break; } } void Handler_CG_GOLDRUSH::OnCG_GOLDRUSH_RESERVATION_SYN( User* user, MSG_BASE* packet, WORD size ) { MSG_CG_GOLDRUSH_RESERVATION_SYN* recv_packet = \ static_cast(packet); const MAPCODE map_code = recv_packet->map_code; MSG_CG_GOLDRUSH_RESERVATION_ACK ack_packet; BattleGroundManager* const battleground_manager = BattleGroundManager::Instance(); if (battleground_manager == NULL) { ack_packet.result_code = RC::RC_BATTLE_GROUND_RESERVATION_FAIL; user->SendPacket(&ack_packet, sizeof(ack_packet)); return; } // ÀÔÀå Á¦ÇÑ È®ÀÎ RC::eBATTLE_GROUND_RESULT result_code = battleground_manager->CanReservation(user, map_code); if (result_code != RC::RC_BATTLE_GROUND_RESERVATION_SUCCESS ) { ack_packet.result_code = result_code; user->SendPacket(&ack_packet, sizeof(ack_packet)); return; } //Agent->GameServer¿¡¼­ °ËÁõ MSG_AG_GOLDRUSH_CAN_RESERVATION_SYN msg; msg.map_code = map_code; msg.is_healer = recv_packet->is_healer; user->SendToLinkedServer(&msg, sizeof(msg)); } void Handler_CG_GOLDRUSH::OnCG_GOLDRUSH_RESERVATION_CANCEL_SYN( User* user, MSG_BASE* packet, WORD size ) { MSG_CG_GOLDRUSH_RESERVATION_CANCEL_SYN* recv_packet = \ static_cast(packet); USERGUID guid = user->GetUserKey(); BattleGroundManager* const battleground_manager = BattleGroundManager::Instance(); MSG_CG_GOLDRUSH_RESERVATION_CANCEL_ACK ack_packet; ack_packet.result_code = RC::RC_BATTLE_GROUND_RESERVATION_CANCEL_FAIL; BattleGroundMemberInfo* member = battleground_manager->FindBattleGroundMember(guid); if (member) { if (member->group_key == 0) // 1Â÷¸ÅĪ ÇÏÁö ¾ÊÀº À¯Àú { battleground_manager->RemoveReservationMember(guid); ack_packet.result_code = RC::RC_BATTLE_GROUND_RESERVATION_CANCEL_SUCCESS; } else { ack_packet.result_code = RC::RC_BATTLE_GROUND_STATE_INCLUDE_MATCHING_GROUPS; } } user->SendPacket(&ack_packet, sizeof(ack_packet)); // »óꝰæ ;{ MSG_AG_GOLDRUSH_STATUS_CHANGE_STATE_CMD cmd_packet; cmd_packet.behave_sate = PLAYER_BEHAVE_IDLE_STATE; user->SendToLinkedServer(&cmd_packet, sizeof(cmd_packet)); }; } void Handler_CG_GOLDRUSH::OnCG_GOLDRUSH_ABNORMAL_EXIT_USER_REMOVE_SYN( User* user, MSG_BASE* packet, WORD size ) { MSG_CG_GOLDRUSH_ABNORMAL_EXIT_USER_REMOVE_SYN* recv_msg = static_cast(packet); } #endif //_NA_007065_20140217_CHAOSZONE_GOLDRUSH