📄 playermanager.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 + -