core/CPlayerManager.h
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--
fixed up bad includes
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_