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

127 lines
4.6 KiB
C++

#include "StdAfx.h"
// _NA_005026_20120527_CHAOS_ZONE_BATTLE_GROUND
#include <ChaosZoneSystem/Handler_CG_BATTLE_GROUND.h>
#include <PacketStruct_AG_ChaosZoneSystem.h>
#include <ChaosZoneSystem/PacketStruct_ChaosZoneSystem.h>
#include <ChaosZoneSystem/BattleGroundManager.h>
#include <TimeCheck/BattleGroundOpenTimeManager.h>
void Handler_CG_BATTLE_GROUND::OnCG_ProcessPacket(User* user, MSG_BASE* packet, WORD size)
{
#ifdef _NA_000000_20120914_CHAOS_ZONE_BATTLE_GROUND_ACTIVATION
MSG_CG_BATTLE_GROUND_PACKET* recv_packet = static_cast<MSG_CG_BATTLE_GROUND_PACKET*>(packet);
switch(recv_packet->packet_type)
{
case CG_BATTLE_GROUND_RESERVATION_SYN: // 전장 예약..
{
OnCG_BATTLE_GROUND_RESERVATION_SYN(user, packet, size);
}break;
case CG_BATTLE_GROUND_RESERVATION_CANCEL_SYN: // 전장 취소..
{
OnCG_BATTLE_GROUND_RESERVATION_CANCEL_SYN(user, packet, size);
}break;
case CG_BATTLE_GROUND_ABNORMAL_EXIT_USER_REMOVE_SYN: // 비정상 접속 종료시 예약 취소
{
OnCG_BATTLE_GROUND_ABNORMAL_EXIT_USER_REMOVE_SYN(user, packet, size);
}break;
#ifdef _NA_008679_20160202_REWORK_BATTLEGROUND
case CG_BATTLE_GROUND_GET_OPEN_TIME_SYN:
{
OnCG_BATTLE_GROUND_GET_OPEN_TIME_SYN(user, packet, size);
}break;
case CG_BATTLE_GROUND_RESERVATION_COUNT_SYN:
{
OnCG_BATTLE_GROUND_RESERVATION_COUNT_SYN(user, packet, size);
} break;
#endif // _NA_008679_20160202_REWORK_BATTLEGROUND
default:
{
user->SendToLinkedServer(static_cast<MSG_BASE_FORWARD*>(packet), size);
}
break;
}
#endif // _NA_000000_20120914_CHAOS_ZONE_BATTLE_GROUND_ACTIVATION
}
void Handler_CG_BATTLE_GROUND::OnCG_BATTLE_GROUND_RESERVATION_SYN(User* user, MSG_BASE* packet, WORD size)
{
MSG_CG_BATTLE_GROUND_RESERVATION_SYN* recv_msg =
static_cast<MSG_CG_BATTLE_GROUND_RESERVATION_SYN*>(packet);
const MAPCODE map_code = recv_msg->map_code;
MSG_CG_BATTLE_GROUND_RESERVATION_ACK ack_msg;
BattleGroundManager* const battle_ground_manager = BattleGroundManager::Instance();
if (battle_ground_manager == NULL)
{
ack_msg.result_code = RC::RC_BATTLE_GROUND_RESERVATION_FAIL;
user->SendPacket(&ack_msg, sizeof(ack_msg));
return;
}
// 입장 제한 확인..
RC::eBATTLE_GROUND_RESULT result_code = battle_ground_manager->CanReservation(user, map_code);
if (result_code != RC::RC_BATTLE_GROUND_RESERVATION_SUCCESS)
{
ack_msg.result_code = result_code;
user->SendPacket(&ack_msg, sizeof(ack_msg));
return;
}
//Agent->GameServer에서 검증
MSG_AG_BATTLE_GROUND_CAN_RESERVATION_SYN msg;
msg.map_code = map_code;
msg.is_healer = recv_msg->is_healer;
user->SendToLinkedServer(&msg, sizeof(msg));
}
void Handler_CG_BATTLE_GROUND::OnCG_BATTLE_GROUND_RESERVATION_CANCEL_SYN(User* user, MSG_BASE* packet, WORD size)
{
MSG_CG_BATTLE_GROUND_RESERVATION_CANCEL_SYN* recv_msg =
static_cast<MSG_CG_BATTLE_GROUND_RESERVATION_CANCEL_SYN*>(packet);
BattleGroundManager* const battle_ground_manager = BattleGroundManager::Instance();
MSG_CG_BATTLE_GROUND_RESERVATION_CANCEL_ACK ack_msg;
// 예약 취소
ack_msg.result_code = battle_ground_manager->CancelReservation(user);
user->SendPacket(&ack_msg, sizeof(ack_msg));
}
void Handler_CG_BATTLE_GROUND::OnCG_BATTLE_GROUND_ABNORMAL_EXIT_USER_REMOVE_SYN(User* user, MSG_BASE* packet, WORD size)
{
MSG_CG_BATTLE_GROUND_ABNORMAL_EXIT_USER_REMOVE_SYN* recv_msg =
static_cast<MSG_CG_BATTLE_GROUND_ABNORMAL_EXIT_USER_REMOVE_SYN*>(packet);
}
#ifdef _NA_008679_20160202_REWORK_BATTLEGROUND
void Handler_CG_BATTLE_GROUND::OnCG_BATTLE_GROUND_GET_OPEN_TIME_SYN(User* user, MSG_BASE* packet, WORD size)
{
MSG_CG_BATTLE_GROUND_GET_OPEN_TIME_SYN* recv_msg =
static_cast<MSG_CG_BATTLE_GROUND_GET_OPEN_TIME_SYN*>(packet);
MSG_CG_BATTLE_GROUND_GET_OPEN_TIME_ACK ack_msg;
util::TimeInfoPerFrame time_info;
util::TimeSync::UpdateTimeInfoPerFrame(&time_info);
BattleGroundManager::Instance()->SetupMessage(time_info, &ack_msg);
user->SendPacket(&ack_msg, sizeof(ack_msg));
}
VOID Handler_CG_BATTLE_GROUND::OnCG_BATTLE_GROUND_RESERVATION_COUNT_SYN( User* user, MSG_BASE* packet, WORD siz )
{
MSG_CG_BATTLE_GROUND_RESERVATION_COUNT_SYN* recv_msg =
static_cast<MSG_CG_BATTLE_GROUND_RESERVATION_COUNT_SYN*>(packet);
BattleGroundManager::Instance()->SendReservationMemberCountToClient(user->GetUserGUID(), recv_msg->map_code);
}
#endif //_NA_008679_20160202_REWORK_BATTLEGROUND