⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 packethandler.cpp

📁 奇迹世界 部分源代码奇迹世界 部分源代码奇迹世界 部分源代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
#include "stdafx.h"
#include "PacketHandler.h"
#include <Protocol_ServerCommon.h>
#include <PacketStruct_ServerCommon.h>
#include <Protocol_CW.h>
#include <PacketStruct_CW.h>
#include <Protocol_MW.h>
#include <Protocol_AW.h>
#include <Protocol_DW.h>
#include <PacketStruct_AW.h>
#include <PacketStruct_DW.h>
#include <PacketStruct_WZ.h>
#include "Handler_CW.h"
#include "Handler_MW.h"
#include "Handler_AW.h"
#include "Handler_DW.h"
#include "Handler_WZ.h"

PacketHandler::PacketHandler()
{
	m_pFuncMap_CW	= new util::FunctionMap;
	m_pFuncMap_DW	= new util::FunctionMap;
	m_pFuncMap_TW	= new util::FunctionMap;
	m_pFuncMap_GW	= new util::FunctionMap;
	m_pFuncMap_BW	= new util::FunctionMap;
	m_pFuncMap_FW	= new util::FunctionMap;
	m_pFuncMap_AW	= new util::FunctionMap;
	m_pFuncMap_MW	= new util::FunctionMap;
	m_pFuncMap_WZ	= new util::FunctionMap;
}

PacketHandler::~PacketHandler()
{
	if( m_pFuncMap_CW )		delete m_pFuncMap_CW;
	if( m_pFuncMap_DW )		delete m_pFuncMap_DW;
	if( m_pFuncMap_TW )		delete m_pFuncMap_TW;
	if( m_pFuncMap_GW )		delete m_pFuncMap_GW;
	if( m_pFuncMap_BW )		delete m_pFuncMap_BW;
	if( m_pFuncMap_FW )		delete m_pFuncMap_FW;
	if( m_pFuncMap_AW )		delete m_pFuncMap_AW;
	if( m_pFuncMap_MW )		delete m_pFuncMap_MW;
	if( m_pFuncMap_WZ )		delete m_pFuncMap_WZ;
}

BOOL PacketHandler::RegisterPackets()
{
	// From client
	if( !RegClientPacket( CW_CHAT, CW_WHISPER_SYN, Handler_CW::OnCW_WHISPER_SYN ) )			return FALSE;
	if( !RegClientPacket( CW_CHAT, CW_NOTICE_SYN, Handler_CW::OnCW_NOTICE_SYN ) )			return FALSE;
	if( !RegClientPacket( CW_CONNECTION, CW_HEARTBEAT, Handler_CW::OnCW_HEARTBEAT ) )		return FALSE;
	if( !RegClientPacket( CW_CHAT, CW_WHISPER_SET_SYN, Handler_CW::OnCW_WHISPER_SET_SYN ) )		return FALSE;
	if( !RegClientPacket( CW_CHAT, CW_CHAT_VILLAGE_SYN, Handler_CW::OnCW_CHAT_VILLAGE_SYN ) )		return FALSE;
	if( !RegClientPacket( CW_CHAT, CW_CHAT_BATTLE_SYN, Handler_CW::OnCW_CHAT_BATTLE_SYN ) )	return FALSE;
	if( !RegClientPacket( CW_CHAT, CW_CHAT_SHOUT_SYN, Handler_CW::OnCW_CHAT_SHOUT_SYN ) )	return FALSE;
	if( !RegClientPacket( CW_GM, CW_GM_NOTICE_SYN, Handler_CW::OnCW_GM_NOTICE_SYN ) )		return FALSE;
	if( !RegClientPacket( CW_GM, CW_GM_STRING_CMD_SYN, Handler_CW::OnCW_GM_STRING_CMD_SYN ) ) return FALSE;
	if( !RegClientPacket( CW_VIEWPORT, CW_VIEWPORT_CHARSTATE, Handler_CW::OnCW_VIEWPORT_CHARSTATE ) )	return FALSE;
	if( !RegClientPacket( CW_ARMORKIT, CW_ARMORKIT_FINDHACK, Handler_CW::OnCW_ARMORKIT_FINDHACK_SYN ) )	return FALSE;
	if( !RegClientPacket( CW_FRIEND, CW_FRIEND_NEWLIST_SYN, Handler_CW::OnCW_FRIEND_NEWLIST_SYN ) ) return FALSE;
	if( !RegClientPacket( CW_FRIEND, CW_FRIEND_ADD_SYN, Handler_CW::OnCW_FRIEND_ADD_SYN ) ) return FALSE;
	if( !RegClientPacket( CW_FRIEND, CW_FRIEND_DEL_SYN, Handler_CW::OnCW_FRIEND_DEL_SYN ) ) return FALSE;
	if( !RegClientPacket( CW_FRIEND, CW_FRIEND_BLOCK_SYN, Handler_CW::OnCW_FRIEND_BLOCK_SYN ) ) return FALSE;
	if( !RegClientPacket( CW_FRIEND, CW_FRIEND_BLOCK_FREE_SYN, Handler_CW::OnCW_FRIEND_BLOCK_FREE_SYN ) ) return FALSE;
	if( !RegClientPacket( CW_FRIEND, CW_FRIEND_CHAT_SYN, Handler_CW::OnCW_FRIEND_CHAT_SYN ) ) return FALSE;
	if( !RegClientPacket( CW_FRIEND, CW_FRIEND_CHATBLOCK_SYN, Handler_CW::OnCW_FRIEND_CHATBLOCK_SYN ) ) return FALSE;
	if( !RegClientPacket( CW_GUILD, CW_GUILD_MEMBER_SYN, Handler_CW::OnCW_GUILD_MEMBER_SYN ) ) return FALSE;
	if( !RegClientPacket( CW_GUILD, CW_GUILD_CHAT_SYN, Handler_CW::OnCW_GUILD_CHAT_SYN ) ) return FALSE;

	// From Game DB proxy
	if( !RegGameDBProxyPacket( DW_CONNECTION, DW_CONNECTION_SERVER_INFO_CMD, Handler_DW::OnDW_CONNECTION_SERVER_INFO_CMD ) ) return FALSE;
	if( !RegGameDBProxyPacket( DW_FRIEND, DW_FRIEND_GETLIST_ACK, Handler_DW::OnDW_FRIEND_GETLIST_ACK ) ) return FALSE;
	if( !RegGameDBProxyPacket( DW_FRIEND, DW_FRIEND_GETLIST_NAK, Handler_DW::OnDW_FRIEND_GETLIST_NAK ) ) return FALSE;
	if( !RegGameDBProxyPacket( DW_FRIEND, DW_FRIEND_ADD_ACK, Handler_DW::OnDW_FRIEND_ADD_ACK ) ) return FALSE;
	if( !RegGameDBProxyPacket( DW_FRIEND, DW_FRIEND_ADD_NAK, Handler_DW::OnDW_FRIEND_ADD_NAK ) ) return FALSE;
	if( !RegGameDBProxyPacket( DW_FRIEND, DW_FRIEND_DEL_ACK, Handler_DW::OnDW_FRIEND_DEL_ACK ) ) return FALSE;
	if( !RegGameDBProxyPacket( DW_FRIEND, DW_FRIEND_DEL_NAK, Handler_DW::OnDW_FRIEND_DEL_NAK ) ) return FALSE;
	if( !RegGameDBProxyPacket( DW_FRIEND, DW_FRIEND_BLOCK_ACK, Handler_DW::OnDW_FRIEND_BLOCK_ACK ) ) return FALSE;
	if( !RegGameDBProxyPacket( DW_FRIEND, DW_FRIEND_BLOCK_NAK, Handler_DW::OnDW_FRIEND_BLOCK_NAK ) ) return FALSE;
	if( !RegGameDBProxyPacket( DW_FRIEND, DW_FRIEND_BLOCK_FREE_ACK, Handler_DW::OnDW_FRIEND_BLOCK_FREE_ACK ) ) return FALSE;
	if( !RegGameDBProxyPacket( DW_FRIEND, DW_FRIEND_BLOCK_FREE_NAK, Handler_DW::OnDW_FRIEND_BLOCK_FREE_NAK ) ) return FALSE;

	// From account DB proxy


	// From game server


	// From agent server
	if( !RegAgentServerPacket( AW_CONNECTION, AW_AGENTSERVER_INFO_SYN, Handler_AW::OnAW_AGENTSERVER_INFO_SYN ) )
		return FALSE;
	if( !RegAgentServerPacket( AW_CONNECTION, AW_PREPARE_NEW_USER_SYN, Handler_AW::OnAW_PREPARE_NEW_USER_SYN ) )
		return FALSE;
	if( !RegAgentServerPacket( AW_USER_STATUS, AW_USER_SET_CHARNAME_SYN, Handler_AW::OnAW_USER_SET_CHARNAME_SYN ) )
		return FALSE;
	if( !RegAgentServerPacket( AW_USER_STATUS, AW_USER_UNSET_CHARNAME_SYN, Handler_AW::OnAW_USER_UNSET_CHARNAME_SYN ) )
		return FALSE;
	if( !RegAgentServerPacket( AW_USER_STATUS, AW_USER_ENTER_ZONE_SYN, Handler_AW::OnAW_USER_ENTER_ZONE_SYN ) )
		return FALSE;
	if( !RegAgentServerPacket( AW_USER_STATUS, AW_USER_LEAVE_ZONE_SYN, Handler_AW::OnAW_USER_LEAVE_ZONE_SYN ) )
		return FALSE;
	if( !RegAgentServerPacket( AW_USER_STATUS, AW_USER_LOGOUT, Handler_AW::OnAW_USER_LOGOUT ) )
		return FALSE;
	if( !RegAgentServerPacket( AW_USER_STATUS, AW_USER_RESTORE_CMD, Handler_AW::OnAW_USER_RESTORE_CMD ) )
		return FALSE;
/*
	if( !RegAgentServerPacket( AW_OPERATION, AW_USERCOUNT_SYN, Handler_AW::OnAW_USERCOUNT_SYN ) )
		return FALSE;
	if( !RegAgentServerPacket( AW_OPERATION, AW_USERMONEY_SYN, Handler_AW::OnAW_USERMONEY_SYN ) )
		return FALSE;
*/



	// From master server
	if( !RegMasterServerPacket( MW_CONNECTION, MW_SERVER_INFO_CMD, Handler_MW::OnMW_SERVER_INFO_CMD ) )	return FALSE;
	if( !RegMasterServerPacket( MW_OPERATION, MW_NOTICE_CMD, Handler_MW::OnMW_NOTICE_CMD ) )				return FALSE;
	if( !RegMasterServerPacket( MW_OPERATION, MW_GM_LIST_CMD, Handler_MW::OnMW_GM_LIST_CMD ) )			return FALSE;
	if( !RegMasterServerPacket( MW_OPERATION, MW_BATTLEZONEINFO_REQ, Handler_MW::OnMW_BATTLEZONEINFO_REQ ) )	return FALSE;
	if( !RegMasterServerPacket( SERVERCOMMON, SERVERCOMMON_SERVERSHUTDOWN_REQ, Handler_MW::OnSERVERCOMMON_SERVERSHUTDOWN_REQ ) )	return FALSE;

	// From Guild Server
	if ( !RegGuildServerPacket( WZ_GUILD, WZ_GUILD_INFO_CMD, Handler_WZ::OnWZ_GUILD_INFO_CMD ) )	return FALSE;
	if ( !RegGuildServerPacket( WZ_GUILD, WZ_GUILD_DESTROY_GUILD_CMD, Handler_WZ::OnWZ_GUILD_DESTROY_GUILD_CMD ) )	return FALSE;
	if ( !RegGuildServerPacket( WZ_GUILD, WZ_GUILD_JOIN_GUILD_CMD, Handler_WZ::OnWZ_GUILD_JOIN_GUILD_CMD ) )	return FALSE;
	if ( !RegGuildServerPacket( WZ_GUILD, WZ_GUILD_WITHDRAW_GUILD_CMD, Handler_WZ::OnWZ_GUILD_WITHDRAW_GUILD_CMD ) )	return FALSE;
	if ( !RegGuildServerPacket( WZ_GUILD, WZ_GUILD_LOGIN_CHAR_CMD, Handler_WZ::OnWZ_GUILD_LOGIN_CHAR_CMD ) )	return FALSE;
	if ( !RegGuildServerPacket( WZ_GUILD, WZ_GUILD_LOGOUT_CHAR_CMD, Handler_WZ::OnWZ_GUILD_LOGOUT_CHAR_CMD ) )	return FALSE;
	if ( !RegGuildServerPacket( WZ_GUILD, WZ_GUILD_SELECT_ACK, Handler_WZ::OnWZ_GUILD_SELECT_ACK ) )			return FALSE;
	if ( !RegGuildServerPacket( WZ_GUILD, WZ_GUILD_SELECT_NAK, Handler_WZ::OnWZ_GUILD_SELECT_NAK ) )			return FALSE;
	if ( !RegGuildServerPacket( SERVERCOMMON, SERVERCOMMON_HEARTBEAT, Handler_WZ::OnSERVERCOMMON_HEARTBEAT ) ) return FALSE;

	return TRUE;
}




// Client甫 困茄 菩哦 勤甸矾
BOOL PacketHandler::RegClientPacket( BYTE category, BYTE protocol, PacketHandler::fnHandler_CW fnHandler )
{
	FUNC_CW *pFuncInfo = new FUNC_CW;

	pFuncInfo->m_dwFunctionKey	= MAKEWORD( category, protocol );
	pFuncInfo->m_fnHandler		= fnHandler;

	return m_pFuncMap_CW->Add( pFuncInfo );
}

// Game DB Proxy甫 困茄 菩哦 勤甸矾
BOOL PacketHandler::RegGameDBProxyPacket( BYTE category, BYTE protocol, PacketHandler::fnHandler_DW fnHandler )
{
	FUNC_DW *pFuncInfo = new FUNC_DW;

	pFuncInfo->m_dwFunctionKey	= MAKEWORD( category, protocol );
	pFuncInfo->m_fnHandler		= fnHandler;

	return m_pFuncMap_DW->Add( pFuncInfo );
}

// Account DB Proxy甫 困茄 菩哦 勤甸矾
BOOL PacketHandler::RegAccountDBProxyPacket( BYTE category, BYTE protocol, PacketHandler::fnHandler_TW fnHandler )
{
	FUNC_TW *pFuncInfo	= new FUNC_TW;

	pFuncInfo->m_dwFunctionKey	= MAKEWORD( category, protocol );
	pFuncInfo->m_fnHandler		= fnHandler;

	return m_pFuncMap_TW->Add( pFuncInfo );
}

// 霸烙 辑滚甫 困茄 菩哦 勤甸矾 眠啊
BOOL PacketHandler::RegGameServerPacket( BYTE category, BYTE protocol, PacketHandler::fnHandler_GW fnHandler )
{
	FUNC_GW *pFuncInfo	= new FUNC_GW;

	pFuncInfo->m_dwFunctionKey	= MAKEWORD( category, protocol );
	pFuncInfo->m_fnHandler		= fnHandler;

	return m_pFuncMap_GW->Add( pFuncInfo );
}

// 硅撇 辑滚甫 困茄 菩哦 勤甸矾 眠啊
BOOL PacketHandler::RegBattleServerPacket( BYTE category, BYTE protocol, PacketHandler::fnHandler_BW fnHandler )
{
	FUNC_BW *pFuncInfo	= new FUNC_BW;

	pFuncInfo->m_dwFunctionKey	= MAKEWORD( category, protocol );
	pFuncInfo->m_fnHandler		= fnHandler;

	return m_pFuncMap_BW->Add( pFuncInfo );
}

// 鞘靛 辑滚甫 困茄 菩哦 勤甸矾 眠啊
BOOL PacketHandler::RegFieldServerPacket( BYTE category, BYTE protocol, PacketHandler::fnHandler_FW fnHandler )
{
	FUNC_FW *pFuncInfo	= new FUNC_FW;

	pFuncInfo->m_dwFunctionKey	= MAKEWORD( category, protocol );
	pFuncInfo->m_fnHandler		= fnHandler;

	return m_pFuncMap_FW->Add( pFuncInfo );
}

// 俊捞傈飘 辑滚甫 困茄 菩哦 勤甸矾 眠啊
BOOL PacketHandler::RegAgentServerPacket( BYTE category, BYTE protocol, PacketHandler::fnHandler_AW fnHandler )
{
	FUNC_AW *pFuncInfo	= new FUNC_AW;

	pFuncInfo->m_dwFunctionKey	= MAKEWORD( category, protocol );
	pFuncInfo->m_fnHandler		= fnHandler;

	return m_pFuncMap_AW->Add( pFuncInfo );
}

// 付胶磐 辑滚甫 困茄 菩哦 眠啊
BOOL PacketHandler::RegMasterServerPacket( BYTE category, BYTE protocol, PacketHandler::fnHandler_MW fnHandler )
{
	FUNC_MW *pFuncInfo	= new FUNC_MW;

	pFuncInfo->m_dwFunctionKey	= MAKEWORD( category, protocol );
	pFuncInfo->m_fnHandler		= fnHandler;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -