core/CPlayerManager.h
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--
Optimized forwards, now paused functions are stored in a temp list so we dont have to check if they're runnable on each function execution.
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_