| author | David Anderson <dvander@alliedmods.net> |
| Tue Jan 16 20:36:09 2007 +0000 (2007-01-16) | |
| changeset 300 | 186b2f7bf277 |
| parent 269 | 0658b8daeba6 |
| child 370 | d3a484f98f6d |
| permissions | -rw-r--r-- |
| faluco@226 | 1 |
#ifndef _INCLUDE_SOURCEMOD_CPLAYERMANAGER_H_ |
| faluco@226 | 2 |
#define _INCLUDE_SOURCEMOD_CPLAYERMANAGER_H_ |
| faluco@226 | 3 |
|
| faluco@242 | 4 |
#include "sm_globals.h" |
| faluco@226 | 5 |
#include <eiface.h> |
| faluco@226 | 6 |
#include "sourcemm_api.h" |
| faluco@226 | 7 |
#include <IForwardSys.h> |
| faluco@242 | 8 |
#include "CPlayer.h" |
| faluco@242 | 9 |
|
| faluco@242 | 10 |
class CPlayer; |
| faluco@226 | 11 |
|
| faluco@226 | 12 |
class CPlayerManager : public SMGlobalClass |
| faluco@226 | 13 |
{ |
| faluco@269 | 14 |
public: |
| faluco@269 | 15 |
CPlayerManager() : m_FirstPass(true) {} |
| faluco@226 | 16 |
public: //SMGlobalClass |
| faluco@226 | 17 |
virtual void OnSourceModAllInitialized(); |
| faluco@226 | 18 |
virtual void OnSourceModShutdown(); |
| faluco@226 | 19 |
public: |
| faluco@242 | 20 |
int GetMaxClients() const; |
| faluco@242 | 21 |
CPlayer *GetPlayerByIndex(int client) const; |
| faluco@242 | 22 |
int GetPlayerCount() const; |
| faluco@242 | 23 |
public: |
| faluco@226 | 24 |
bool OnClientConnect(edict_t *pEntity, const char *pszName, const char *pszAddress, char *reject, int maxrejectlen); |
| faluco@226 | 25 |
void OnClientPutInServer(edict_t *pEntity, char const *playername); |
| faluco@226 | 26 |
void OnClientDisconnect(edict_t *pEntity); |
| faluco@226 | 27 |
void OnClientDisconnect_Post(edict_t *pEntity); |
| faluco@226 | 28 |
void OnClientAuthorized(); //:TODO: any args needed? |
| faluco@226 | 29 |
void OnClientCommand(edict_t *pEntity); |
| faluco@242 | 30 |
void OnClientSettingsChanged(edict_t *pEntity); |
| faluco@226 | 31 |
private: |
| faluco@268 | 32 |
void OnServerActivate(edict_t *pEdictList, int edictCount, int clientMax); |
| faluco@268 | 33 |
private: |
| faluco@226 | 34 |
IForward *m_clconnect; |
| faluco@226 | 35 |
IForward *m_cldisconnect; |
| faluco@226 | 36 |
IForward *m_cldisconnect_post; |
| faluco@226 | 37 |
IForward *m_clputinserver; |
| faluco@226 | 38 |
IForward *m_clcommand; |
| faluco@242 | 39 |
IForward *m_clinfochanged; |
| faluco@242 | 40 |
CPlayer *m_Players; |
| faluco@242 | 41 |
int m_maxClients; |
| faluco@242 | 42 |
int m_PlayerCount; |
| faluco@269 | 43 |
bool m_FirstPass; |
| faluco@226 | 44 |
}; |
| faluco@226 | 45 |
|
| faluco@242 | 46 |
extern CPlayerManager g_PlayerManager; |
| faluco@242 | 47 |
|
| faluco@242 | 48 |
inline int CPlayerManager::GetMaxClients() const |
| faluco@242 | 49 |
{ |
| faluco@242 | 50 |
return m_maxClients; |
| faluco@242 | 51 |
} |
| faluco@242 | 52 |
|
| faluco@242 | 53 |
inline CPlayer *CPlayerManager::GetPlayerByIndex(int client) const |
| faluco@242 | 54 |
{ |
| faluco@242 | 55 |
if (client > m_maxClients || client < 0) |
| faluco@242 | 56 |
{ |
| faluco@242 | 57 |
return NULL; |
| faluco@242 | 58 |
} |
| faluco@242 | 59 |
return &m_Players[client]; |
| faluco@242 | 60 |
} |
| faluco@242 | 61 |
|
| faluco@242 | 62 |
inline int CPlayerManager::GetPlayerCount() const |
| faluco@242 | 63 |
{ |
| faluco@242 | 64 |
return m_PlayerCount; |
| faluco@242 | 65 |
} |
| faluco@242 | 66 |
|
| faluco@242 | 67 |
#endif //_INCLUDE_SOURCEMOD_CPLAYERMANAGER_H_ |