184 lines
7.4 KiB
C++
184 lines
7.4 KiB
C++
#pragma once
|
|
|
|
#include <PacketStruct_CG.h>
|
|
#include "PacketHandler.h"
|
|
|
|
// <PROTOTYPEs>
|
|
class User;
|
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
|
|
|
//#define HANDLER_CG_RECV_IMPL(fnName) \
|
|
// void Handler_CG::On##fnName(ServerSession* pSession, WiseUser* pUser, sSIG_NETMSG* pSIG_NETMSG)
|
|
|
|
class Handler_CG
|
|
{
|
|
public: static void RegisterHandler_ALL(PACKET_HANDLER_DELEGATOR pInstance);
|
|
private: static sPACKET_HANDLER_INFO* GetHandlerInfo();
|
|
static sPACKET_HANDLER_INFO* GetHandlerInfo_CHARINFO();
|
|
static sPACKET_HANDLER_INFO* GetHandlerInfo_SYNC();
|
|
static sPACKET_HANDLER_INFO* GetHandlerInfo_ZONE();
|
|
static sPACKET_HANDLER_INFO* GetHandlerInfo_PARTY();
|
|
static sPACKET_HANDLER_INFO* GetHandlerInfo_GM();
|
|
static sPACKET_HANDLER_INFO* GetHandlerInfo_SECURE();
|
|
|
|
//------------------------------------------------------------------------------
|
|
// <PACKET HANDLERs>
|
|
// Declaration & Implementation
|
|
//
|
|
public:
|
|
|
|
#undef ADD_HANDLER_RECV_INFO
|
|
#define ADD_HANDLER_RECV_INFO(c, p, accptablePHASE) \
|
|
static void On##p(ServerSession* pSession, WiseUser* pUser, sSIG_NETMSG* pSIG_NETMSG);
|
|
|
|
// Handler_CG.List.hxx 내용 그대로 복사할 것
|
|
|
|
ADD_HANDLER_RECV_INFO(CG_CHARINFO, CG_CHARINFO_CHAR_ITEM_CMD, PHASE_UNLIMITED)
|
|
ADD_HANDLER_RECV_INFO(CG_CHARINFO, CG_CHARINFO_SKILL_CMD, PHASE_UNLIMITED)
|
|
ADD_HANDLER_RECV_INFO(CG_CHARINFO, CG_CHARINFO_QUICK_CMD, PHASE_UNLIMITED)
|
|
ADD_HANDLER_RECV_INFO(CG_CHARINFO, CG_CHARINFO_STYLE_CMD, PHASE_UNLIMITED)
|
|
ADD_HANDLER_RECV_INFO(CG_MISSION, CG_MISSION_STREAM_CMD, PHASE_UNLIMITED)
|
|
ADD_HANDLER_RECV_INFO(CG_QUEST, CG_QUEST_STREAM_CMD, PHASE_UNLIMITED)
|
|
ADD_HANDLER_RECV_INFO(CG_AREACONQUEST, CG_AREACONQUEST_STREAM_CMD, PHASE_UNLIMITED)
|
|
|
|
|
|
ADD_HANDLER_RECV_INFO(CG_SYNC, CG_SYNC_PLAYER_ENTER_ACK, PHASE_UNLIMITED)
|
|
|
|
ADD_HANDLER_RECV_INFO(CG_SYNC, CG_SYNC_KBMOVE_BRD, PHASE_UNLIMITED)
|
|
ADD_HANDLER_RECV_INFO(CG_MAP, CG_MAP_TELEPORT_BRD, PHASE_UNLIMITED)
|
|
|
|
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
|
|
// MONSTER_RENDER_INFO
|
|
ADD_HANDLER_RECV_INFO(CG_SYNC, CG_SYNC_MONSTER_ENTER_BRD, PHASE_UNLIMITED)
|
|
ADD_HANDLER_RECV_INFO(CG_SYNC, CG_SYNC_MONSTER_DIR_ENTER_BRD, PHASE_UNLIMITED)
|
|
ADD_HANDLER_RECV_INFO(CG_SYNC, CG_SYNC_ALLMONSTERS_CMD, PHASE_UNLIMITED)
|
|
ADD_HANDLER_RECV_INFO(CG_SYNC, CG_SYNC_MAPNPC_ENTER_BRD, PHASE_UNLIMITED)
|
|
|
|
|
|
ADD_HANDLER_RECV_INFO(CG_SYNC, CG_SYNC_MONSTER_LEAVE_BRD, PHASE_UNLIMITED)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ADD_HANDLER_RECV_INFO(CG_CRYPTOGRAPHY, CG_CRYPTOGRAPHY_KEY, PHASE_UNLIMITED)
|
|
ADD_HANDLER_RECV_INFO(CG_CRYPTOGRAPHY, CG_CRYPTOGRAPHY_CMD, PHASE_UNLIMITED)
|
|
ADD_HANDLER_RECV_INFO(CG_CONNECTION, CG_CONNECTION_ENTERSERVER_ACK, PHASE_UNLIMITED)
|
|
ADD_HANDLER_RECV_INFO(CG_CONNECTION, CG_CONNECTION_ENTERSERVER_NAK, PHASE_UNLIMITED)
|
|
ADD_HANDLER_RECV_INFO(CG_CONNECTION, CG_PREPARE_WORLD_CONNECT_ACK, PHASE_UNLIMITED)
|
|
ADD_HANDLER_RECV_INFO(CG_CONNECTION, CG_PREPARE_WORLD_CONNECT_NAK, PHASE_UNLIMITED)
|
|
ADD_HANDLER_RECV_INFO(CG_CONNECTION, CG_CONNECTION_ENTERVILLAGEREQ_ACK, PHASE_UNLIMITED)
|
|
|
|
|
|
|
|
ADD_HANDLER_RECV_INFO(CG_MISSION, CG_MISSION_TUTORIAL_WINDOW_CMD, PHASE_UNLIMITED)
|
|
ADD_HANDLER_RECV_INFO(CG_MISSION, CG_MISSION_TUTORIAL_WINDOW_RET_ACCEPT_ACK, PHASE_UNLIMITED)
|
|
|
|
ADD_HANDLER_RECV_INFO(CG_ZONE, CG_ZONE_PORTAL_FIELD_MOVE_ACK, PHASE_UNLIMITED)
|
|
|
|
|
|
|
|
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
|
|
ADD_HANDLER_RECV_INFO(CG_SYNC, CG_SECURE_POLICY_PATTERN01_SIMPLEX_SNK_CMD, PHASE_UNLIMITED)
|
|
//ADD_HANDLER_RECV_INFO(CG_SYNC, CG_SECURE_POLICY_PATTERN01_SIMPLEX_SNK_ACK, PHASE_UNLIMITED)
|
|
ADD_HANDLER_RECV_INFO(CG_SKILL, CG_SECURE_POLICY_PATTERN02_SIMPLEX_SNK_CMD, PHASE_UNLIMITED)
|
|
//ADD_HANDLER_RECV_INFO(CG_SKILL, CG_SECURE_POLICY_PATTERN02_SIMPLEX_SNK_ACK, PHASE_UNLIMITED)
|
|
ADD_HANDLER_RECV_INFO(CG_ITEM, CG_SECURE_POLICY_PATTERN03_SIMPLEX_SNK_CMD, PHASE_UNLIMITED)
|
|
//ADD_HANDLER_RECV_INFO(CG_ITEM, CG_SECURE_POLICY_PATTERN03_SIMPLEX_SNK_ACK, PHASE_UNLIMITED)
|
|
ADD_HANDLER_RECV_INFO(CG_TRADE, CG_SECURE_POLICY_PATTERN04_SIMPLEX_SNK_CMD, PHASE_UNLIMITED)
|
|
//ADD_HANDLER_RECV_INFO(CG_TRADE, CG_SECURE_POLICY_PATTERN04_SIMPLEX_SNK_ACK, PHASE_UNLIMITED)
|
|
ADD_HANDLER_RECV_INFO(CG_VENDOR, CG_SECURE_POLICY_PATTERN05_QUERY_MOLA_CMD, PHASE_UNLIMITED)
|
|
//ADD_HANDLER_RECV_INFO(CG_VENDOR, CG_SECURE_POLICY_PATTERN05_QUERY_MOLA_ACK, PHASE_UNLIMITED)
|
|
ADD_HANDLER_RECV_INFO(CG_WAREHOUSE, CG_SECURE_POLICY_PATTERN06_CONFIGURE_MOLA_CMD, PHASE_UNLIMITED)
|
|
//ADD_HANDLER_RECV_INFO(CG_WAREHOUSE, CG_SECURE_POLICY_PATTERN06_CONFIGURE_MOLA_ACK, PHASE_UNLIMITED)
|
|
ADD_HANDLER_RECV_INFO(CG_PARTY, CG_SECURE_POLICY_PATTERN07_CONFIGURE_HEARTBEAT_CMD, PHASE_UNLIMITED)
|
|
//ADD_HANDLER_RECV_INFO(CG_PARTY, CG_SECURE_POLICY_PATTERN07_CONFIGURE_HEARTBEAT_ACK, PHASE_UNLIMITED)
|
|
ADD_HANDLER_RECV_INFO(CG_STATUS, CG_SECURE_POLICY_PATTERN08_DUPLEX_SNK_KEY, PHASE_UNLIMITED)
|
|
//ADD_HANDLER_RECV_INFO(CG_STATUS, CG_SECURE_POLICY_PATTERN08_DUPLEX_SNK_ACK, PHASE_UNLIMITED)
|
|
ADD_HANDLER_RECV_INFO(CG_STATUS, CG_SECURE_POLICY_PATTERN08_DUPLEX_SNK_CMD, PHASE_UNLIMITED)
|
|
ADD_HANDLER_RECV_INFO(CG_CONNECTION, CG_SECURE_QUERY_BUILTIN_CHK_CMD, PHASE_UNLIMITED)
|
|
//ADD_HANDLER_RECV_INFO(CG_CONNECTION, CG_SECURE_QUERY_BUILTIN_CHK_ACK, PHASE_UNLIMITED)
|
|
ADD_HANDLER_RECV_INFO(CG_CONNECTION, CG_SECURE_QUERY_RESOURCE_CHK_T1_CMD, PHASE_UNLIMITED)
|
|
//ADD_HANDLER_RECV_INFO(CG_CONNECTION, CG_SECURE_QUERY_RESOURCE_CHK_T1_ACK, PHASE_UNLIMITED)
|
|
ADD_HANDLER_RECV_INFO(CG_CHARINFO, CG_SECURE_QUERY_RESOURCE_CHK_T2_CMD, PHASE_UNLIMITED)
|
|
//ADD_HANDLER_RECV_INFO(CG_CHARINFO, CG_SECURE_QUERY_RESOURCE_CHK_T2_ACK, PHASE_UNLIMITED)
|
|
//ADD_HANDLER_RECV_INFO(CG_MAP, CG_SECURE_QUERY_RESOURCE_CHK_NTF1_SYN, PHASE_UNLIMITED)
|
|
ADD_HANDLER_RECV_INFO(CG_BATTLE, CG_SECURE_QUERY_RESOURCE_CHK_T3_CMD, PHASE_UNLIMITED)
|
|
//ADD_HANDLER_RECV_INFO(CG_BATTLE, CG_SECURE_QUERY_RESOURCE_CHK_T3_ACK, PHASE_UNLIMITED)
|
|
ADD_HANDLER_RECV_INFO(CG_STYLE, CG_SECURE_QUERY_RESOURCE_CHK_T4_CMD, PHASE_UNLIMITED)
|
|
//ADD_HANDLER_RECV_INFO(CG_STYLE, CG_SECURE_QUERY_RESOURCE_CHK_T4_ACK, PHASE_UNLIMITED)
|
|
//ADD_HANDLER_RECV_INFO(CG_STYLE, CG_SECURE_QUERY_RESOURCE_CHK_NTF2_SYN, PHASE_UNLIMITED)
|
|
|
|
#undef ADD_HANDLER_RECV_INFO
|
|
};
|
|
|
|
template<class PACKET_TYPE>
|
|
class SendLobbyInfoForRequest
|
|
{
|
|
User * m_pMe;
|
|
PACKET_TYPE & m_msg;
|
|
public:
|
|
SendLobbyInfoForRequest(PACKET_TYPE & msg, User * pMe):m_msg(msg),m_pMe(pMe){ m_msg.m_Count = 0; }
|
|
~SendLobbyInfoForRequest(){}
|
|
|
|
void SendPacket()
|
|
{
|
|
m_pMe->SendPacket(&m_msg, m_msg.GetSize());
|
|
}
|
|
void operator()(User * pUser)
|
|
{
|
|
if(m_pMe && m_pMe->GetUserKey() == pUser->GetUserKey()) return;
|
|
|
|
if(!pUser->IsMaster() && pUser->IsReady())
|
|
{
|
|
m_msg.m_dwReadyPlayerKey[m_msg.m_Count] = pUser->GetPlayerKey();
|
|
++m_msg.m_Count;
|
|
}
|
|
}
|
|
};
|
|
|
|
|
|
template<class PACKET_TYPE>
|
|
class SendPVPLobbyInfoForRequest
|
|
{
|
|
User * m_pMe;
|
|
PACKET_TYPE & m_msg;
|
|
public:
|
|
SendPVPLobbyInfoForRequest(PACKET_TYPE & msg, User * pMe = NULL):m_msg(msg),m_pMe(pMe){ m_msg.m_Count = 0; }
|
|
~SendPVPLobbyInfoForRequest(){}
|
|
|
|
void SendPacket()
|
|
{
|
|
m_pMe->SendPacket(&m_msg, m_msg.GetSize());
|
|
}
|
|
void operator()(User * pUser)
|
|
{
|
|
if(m_pMe && m_pMe->GetUserKey() == pUser->GetUserKey()) return;
|
|
|
|
m_msg.m_PlayerInfo[m_msg.m_Count].m_Team = pUser->GetTeam();
|
|
m_msg.m_PlayerInfo[m_msg.m_Count].m_Ready = (BYTE)pUser->IsReady();
|
|
m_msg.m_PlayerInfo[m_msg.m_Count].m_dwPlayerKey = pUser->GetPlayerKey();
|
|
++m_msg.m_Count;
|
|
}
|
|
};
|
|
|
|
template<class PACKET_TYPE>
|
|
class SendBroadMessage
|
|
{
|
|
PACKET_TYPE & m_msg;
|
|
public:
|
|
SendBroadMessage(PACKET_TYPE & msg):m_msg(msg){}
|
|
~SendBroadMessage(){}
|
|
|
|
void operator()(User * pUser)
|
|
{
|
|
pUser->SendPacket(&m_msg, m_msg.GetSize());
|
|
}
|
|
};
|
|
|
|
|
|
|