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

📄 playermanager.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
字号:
////////////////////////////////////////////////////////////////////////// Filename    : PlayerManager.cc// Written by  : reiot@ewestsoft.com// Description : ////////////////////////////////////////////////////////////////////////// include files#include "PlayerManager.h"#include "Assert.h"#include "SocketAPI.h"#include "Socket.h"#include "Player.h"#include "gameserver/Creature.h"#include "gameserver/Slayer.h"#include <algorithm>//////////////////////////////////////////////////////////////////////// constructor//////////////////////////////////////////////////////////////////////PlayerManager::PlayerManager () 	throw (): m_nPlayers(0){	__BEGIN_TRY	// 敲饭捞绢 器牢磐 硅凯阑 NULL 肺 檬扁拳茄促.	for ( uint i = 0 ; i < nMaxPlayers ; i ++ )		m_pPlayers[i] = NULL;	// 敲饭捞绢 器牢磐 硅凯阑 NULL 肺 檬扁拳茄促.	for ( uint i = 0 ; i < nMaxPlayers ; i ++ )		m_pCopyPlayers[i] = NULL;	__END_CATCH}//////////////////////////////////////////////////////////////////////// destructor//////////////////////////////////////////////////////////////////////PlayerManager::~PlayerManager () 	throw (){	__BEGIN_TRY	for ( uint i = 0 ; i < nMaxPlayers ; i ++ ) {		if ( m_pPlayers[i] != NULL ) {			// 敲饭捞绢 按眉甫 昏力窍搁, destructor俊辑 楷搬阑 辆丰茄促.			delete m_pPlayers[i];			m_pPlayers[i] = NULL;		}	}	__END_CATCH}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void PlayerManager::broadcastPacket ( Packet * pPacket )	throw ( Error ){	__BEGIN_TRY	for ( uint i = 0 ; i < nMaxPlayers ; i ++ ) {		if ( m_pPlayers[i] != NULL ) {			try {				m_pPlayers[i]->sendPacket(pPacket);			} catch (Throwable& t) {				filelog("playerManager.log", "broadcastPacket: %s", t.toString().c_str());			}		}	}	__END_CATCH}//////////////////////////////////////////////////////////////////////// 漂沥 敲饭捞绢甫 概聪历俊 眠啊茄促.//////////////////////////////////////////////////////////////////////void PlayerManager::addPlayer ( Player * pPlayer ) 	throw ( DuplicatedException , Error ){	__BEGIN_TRY	SOCKET fd = pPlayer->getSocket()->getSOCKET();	// bound check	Assert( fd >= 0 && fd < (SOCKET)nMaxPlayers );	// null check	if ( m_pPlayers[ fd ] != NULL )	{		ofstream file("Socket_Error.txt", ios::out | ios::app);		file << "socket descriptor duplicated" << endl;		file.close();		cout << "socket descriptor duplicated" << endl;		throw DuplicatedException("socket descriptor duplicated");	}	// 宝满栏搁 器牢磐甫 措涝茄促.	m_pPlayers[ fd ] = pPlayer;	// 敲饭捞绢 箭磊甫 刘啊矫挪促.	m_nPlayers ++;	__END_CATCH}//////////////////////////////////////////////////////////////////////// 漂沥 敲饭捞绢甫 概聪历俊辑 昏力茄促.// 按眉绰 昏力窍瘤 臼栏哥, 浇儿父阑 NULL肺 父电促.//////////////////////////////////////////////////////////////////////void PlayerManager::deletePlayer ( SOCKET fd ) 	throw ( OutOfBoundException , NoSuchElementException , Error ){	__BEGIN_TRY	// bound check	if ( fd < 0 || fd >= (SOCKET)nMaxPlayers )		throw OutOfBoundException();	// null check	if ( m_pPlayers[ fd ] == NULL )		throw NoSuchElementException();	// 硅凯狼 fd锅掳甫 努府绢茄促.	m_pPlayers[ fd ] = NULL;	// 敲饭捞绢 箭磊甫 皑家矫挪促.	m_nPlayers --;	__END_CATCH}//////////////////////////////////////////////////////////////////////// 漂沥 敲饭捞绢 按眉甫 啊廉柯促.//////////////////////////////////////////////////////////////////////Player * PlayerManager::getPlayer ( SOCKET fd ) 	throw ( OutOfBoundException , NoSuchElementException , Error ){	__BEGIN_TRY	// bound check	if ( fd < 0 || fd >= (SOCKET)nMaxPlayers )		throw OutOfBoundException();	// null check	if ( m_pPlayers[ fd ] == NULL )		throw NoSuchElementException();	return m_pPlayers[ fd ];	__END_CATCH}//////////////////////////////////////////////////////////////////////// 敲饭捞绢甫 汗荤茄促.//////////////////////////////////////////////////////////////////////void PlayerManager::copyPlayers()	throw(){	__BEGIN_TRY	for ( uint i = 0 ; i < nMaxPlayers ; i ++ ) {		m_pCopyPlayers[i] = m_pPlayers[i];	}	__END_CATCH}

⌨️ 快捷键说明

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