| author | Borja Ferrer <faluco@alliedmods.net> |
| Sun Feb 04 22:41:44 2007 +0000 (2007-02-04) | |
| changeset 430 | ed37e9767ed4 |
| parent 370 | d3a484f98f6d |
| child 435 | 3097c4ab9f8f |
| permissions | -rw-r--r-- |
| dvander@370 | 1 |
/** |
| dvander@370 | 2 |
* =============================================================== |
| dvander@370 | 3 |
* SourceMod (C)2004-2007 AlliedModders LLC. All rights reserved. |
| dvander@370 | 4 |
* =============================================================== |
| dvander@370 | 5 |
* |
| dvander@370 | 6 |
* This file is not open source and may not be copied without explicit |
| dvander@370 | 7 |
* written permission of AlliedModders LLC. This file may not be redistributed |
| dvander@370 | 8 |
* in whole or significant part. |
| dvander@370 | 9 |
* For information, see LICENSE.txt or http://www.sourcemod.net/license.php |
| dvander@370 | 10 |
* |
| dvander@370 | 11 |
* Version: $Id$ |
| dvander@370 | 12 |
*/ |
| dvander@370 | 13 |
|
| faluco@226 | 14 |
#ifndef _INCLUDE_SOURCEMOD_CPLAYERMANAGER_H_ |
| faluco@226 | 15 |
#define _INCLUDE_SOURCEMOD_CPLAYERMANAGER_H_ |
| faluco@226 | 16 |
|
| faluco@242 | 17 |
#include "sm_globals.h" |
| faluco@226 | 18 |
#include <eiface.h> |
| faluco@226 | 19 |
#include "sourcemm_api.h" |
| faluco@226 | 20 |
#include <IForwardSys.h> |
| faluco@242 | 21 |
#include "CPlayer.h" |
| faluco@242 | 22 |
|
| faluco@242 | 23 |
class CPlayer; |
| faluco@226 | 24 |
|
| faluco@226 | 25 |
class CPlayerManager : public SMGlobalClass |
| faluco@226 | 26 |
{ |
| faluco@269 | 27 |
public: |
| faluco@269 | 28 |
CPlayerManager() : m_FirstPass(true) {} |
| faluco@226 | 29 |
public: //SMGlobalClass |
| faluco@430 | 30 |
void OnSourceModAllInitialized(); |
| faluco@430 | 31 |
void OnSourceModShutdown(); |
| faluco@226 | 32 |
public: |
| faluco@242 | 33 |
int GetMaxClients() const; |
| faluco@242 | 34 |
CPlayer *GetPlayerByIndex(int client) const; |
| faluco@242 | 35 |
int GetPlayerCount() const; |
| faluco@242 | 36 |
public: |
| faluco@226 | 37 |
bool OnClientConnect(edict_t *pEntity, const char *pszName, const char *pszAddress, char *reject, int maxrejectlen); |
| faluco@226 | 38 |
void OnClientPutInServer(edict_t *pEntity, char const *playername); |
| faluco@226 | 39 |
void OnClientDisconnect(edict_t *pEntity); |
| faluco@226 | 40 |
void OnClientDisconnect_Post(edict_t *pEntity); |
| faluco@226 | 41 |
void OnClientAuthorized(); //:TODO: any args needed? |
| faluco@226 | 42 |
void OnClientCommand(edict_t *pEntity); |
| faluco@242 | 43 |
void OnClientSettingsChanged(edict_t *pEntity); |
| faluco@226 | 44 |
private: |
| faluco@268 | 45 |
void OnServerActivate(edict_t *pEdictList, int edictCount, int clientMax); |
| faluco@268 | 46 |
private: |
| faluco@226 | 47 |
IForward *m_clconnect; |
| faluco@226 | 48 |
IForward *m_cldisconnect; |
| faluco@226 | 49 |
IForward *m_cldisconnect_post; |
| faluco@226 | 50 |
IForward *m_clputinserver; |
| faluco@226 | 51 |
IForward *m_clcommand; |
| faluco@242 | 52 |
IForward *m_clinfochanged; |
| faluco@242 | 53 |
CPlayer *m_Players; |
| faluco@242 | 54 |
int m_maxClients; |
| faluco@242 | 55 |
int m_PlayerCount; |
| faluco@269 | 56 |
bool m_FirstPass; |
| faluco@226 | 57 |
}; |
| faluco@226 | 58 |
|
| faluco@242 | 59 |
extern CPlayerManager g_PlayerManager; |
| faluco@242 | 60 |
|
| faluco@242 | 61 |
inline int CPlayerManager::GetMaxClients() const |
| faluco@242 | 62 |
{ |
| faluco@242 | 63 |
return m_maxClients; |
| faluco@242 | 64 |
} |
| faluco@242 | 65 |
|
| faluco@242 | 66 |
inline CPlayer *CPlayerManager::GetPlayerByIndex(int client) const |
| faluco@242 | 67 |
{ |
| faluco@242 | 68 |
if (client > m_maxClients || client < 0) |
| faluco@242 | 69 |
{ |
| faluco@242 | 70 |
return NULL; |
| faluco@242 | 71 |
} |
| faluco@242 | 72 |
return &m_Players[client]; |
| faluco@242 | 73 |
} |
| faluco@242 | 74 |
|
| faluco@242 | 75 |
inline int CPlayerManager::GetPlayerCount() const |
| faluco@242 | 76 |
{ |
| faluco@242 | 77 |
return m_PlayerCount; |
| faluco@242 | 78 |
} |
| faluco@242 | 79 |
|
| faluco@242 | 80 |
#endif //_INCLUDE_SOURCEMOD_CPLAYERMANAGER_H_ |