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

📄 playerdisconnecthandler.h

📁 奇迹世界 部分源代码奇迹世界 部分源代码奇迹世界 部分源代码
💻 H
字号:

#pragma once

#include "Player.h"
#include "GameZone.h"
#include <PacketStruct_DG.h>
#include "ObjectFactory.h"
#include "GameServer.h"

class PlayerDisconnectHandler
{
public:
	PlayerDisconnectHandler(){}
	~PlayerDisconnectHandler(){}

	VOID operator()( Player * pPlayer )
	{

		GameZone * pEnterZone	= NULL;
		CODETYPE EnterFieldCode = 0;
		eZONE_STATE eRoomState	= pPlayer->GetGameZone( pEnterZone, EnterFieldCode );
		if( eRoomState & ePRS_AT_ZONE )
		{
			pEnterZone->Leave( pPlayer );
		}
	
		// send PlayerTotalInfo to DBProxy
		pPlayer->SerializeInfoToDBProxy();

		MSG_DG_CHARINFO_UDPATE_CMD msg5;
		msg5.m_dwKey = pPlayer->GetUserKey();
		pPlayer->SendToGameDBPServer( &msg5, sizeof(msg5) );
		
		PlayerManager::Instance()->RemovePlayer( pPlayer );
		ObjectFactory::Instance()->FreeObject( pPlayer );
	}
};

class PlayerUnregisterHandler
{
public:
	PlayerUnregisterHandler(){}
	~PlayerUnregisterHandler(){}

	VOID operator()( Player * pPlayer )
	{
		GameZone * pEnterZone	= NULL;
		CODETYPE EnterFieldCode = 0;
		eZONE_STATE eRoomState	= pPlayer->GetGameZone( pEnterZone, EnterFieldCode );
		if( eRoomState & ePRS_AT_ZONE )
		{
			pEnterZone->Leave( pPlayer );
		}

		PlayerManager::Instance()->RemovePlayer( pPlayer );
		ObjectFactory::Instance()->FreeObject( pPlayer );
	}
};

⌨️ 快捷键说明

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