public/IPlayerHelpers.h
author David Anderson <dvander@alliedmods.net>
Fri Feb 16 03:47:10 2007 +0000 (2007-02-16)
changeset 501 e209a7296936
parent 458 77520125ee67
child 541 43e600fc2aa7
permissions -rw-r--r--
removed this potential feature, not useful enough
dvander@435
     1
/**
dvander@435
     2
 * vim: set ts=4 :
dvander@435
     3
 * ===============================================================
dvander@435
     4
 * SourceMod, Copyright (C) 2004-2007 AlliedModders LLC. 
dvander@435
     5
 * All rights reserved.
dvander@435
     6
 * ===============================================================
dvander@435
     7
 *
dvander@435
     8
 *  This file is part of the SourceMod/SourcePawn SDK.  This file may only be 
dvander@435
     9
 * used or modified under the Terms and Conditions of its License Agreement, 
dvander@435
    10
 * which is found in public/licenses/LICENSE.txt.  As of this notice, derivative 
dvander@435
    11
 * works must be licensed under the GNU General Public License (version 2 or 
dvander@435
    12
 * greater).  A copy of the GPL is included under public/licenses/GPL.txt.
dvander@435
    13
 * 
dvander@435
    14
 * To view the latest information, see: http://www.sourcemod.net/license.php
dvander@435
    15
 *
dvander@435
    16
 * Version: $Id$
dvander@435
    17
 */
dvander@435
    18
dvander@435
    19
#ifndef _INCLUDE_SOURCEMOD_INTERFACE_IPLAYERHELPERS_H_
dvander@435
    20
#define _INCLUDE_SOURCEMOD_INTERFACE_IPLAYERHELPERS_H_
dvander@435
    21
dvander@435
    22
#include <IShareSys.h>
dvander@458
    23
#include <IAdminSystem.h>
dvander@435
    24
dvander@435
    25
#define SMINTERFACE_PLAYERMANAGER_NAME		"IPlayerManager"
dvander@435
    26
#define SMINTERFACE_PLAYERMANAGER_VERSION	1
dvander@435
    27
dvander@435
    28
struct edict_t;
dvander@435
    29
dvander@435
    30
/**
dvander@435
    31
 * @file IPlayerHelpers.h
dvander@435
    32
 * @brief Defines basic helper functions for Half-Life 2 clients
dvander@435
    33
 */
dvander@435
    34
namespace SourceMod
dvander@435
    35
{
dvander@435
    36
	/**
dvander@435
    37
	 * @brief Abstracts some Half-Life 2 and SourceMod properties about clients.
dvander@435
    38
	 */
dvander@435
    39
	class IGamePlayer
dvander@435
    40
	{
dvander@435
    41
	public:
dvander@435
    42
		/**
dvander@435
    43
		 * @brief Returns the player's name.
dvander@435
    44
		 *
dvander@435
    45
		 * @return		String containing the player's name,
dvander@435
    46
		 *				or NULL if unavailable.
dvander@435
    47
		 */
dvander@435
    48
		virtual const char *GetName() const =0;
dvander@435
    49
dvander@435
    50
		/**
dvander@435
    51
		 * @brief Returns the player's IP address.
dvander@435
    52
		 *
dvander@435
    53
		 * @return		String containing the player's IP address,
dvander@435
    54
		 *				or NULL if unavailable.
dvander@435
    55
		 */
dvander@435
    56
		virtual const char *GetIPAddress() const =0;
dvander@435
    57
dvander@435
    58
		/**
dvander@435
    59
		 * @brief Returns the player's authentication string.
dvander@435
    60
		 *
dvander@435
    61
		 * @return		String containing the player's auth string.
dvander@435
    62
		 *				May be NULL if unavailable.
dvander@435
    63
		 */
dvander@435
    64
		virtual const char *GetAuthString() const =0;
dvander@435
    65
dvander@435
    66
		/**
dvander@435
    67
		 * @brief Returns the player's edict_t structure.
dvander@435
    68
		 *
dvander@435
    69
		 * @return		edict_t pointer, or NULL if unavailable.
dvander@435
    70
		 */
dvander@435
    71
		virtual edict_t *GetEdict() const =0;
dvander@435
    72
dvander@435
    73
		/**
dvander@435
    74
		 * @brief Returns whether the player is in game (putinserver).
dvander@435
    75
		 *
dvander@435
    76
		 * @return		True if in game, false otherwise.
dvander@435
    77
		 */
dvander@435
    78
		virtual bool IsInGame() const =0;
dvander@435
    79
dvander@435
    80
		/**
dvander@435
    81
		 * @brief Returns whether the player is connected.
dvander@435
    82
		 *
dvander@435
    83
		 * Note: If this returns true, all above functions except for
dvander@435
    84
		 * GetAuthString() should return non-NULL results.
dvander@435
    85
		 *
dvander@435
    86
		 * @return		True if connected, false otherwise.
dvander@435
    87
		 */
dvander@435
    88
		virtual bool IsConnected() const =0;
dvander@435
    89
dvander@435
    90
		/**
dvander@435
    91
		 * @brief Returns whether the player is a fake client.
dvander@435
    92
		 *
dvander@435
    93
		 * @return		True if a fake client, false otherwise.
dvander@435
    94
		 */
dvander@435
    95
		virtual bool IsFakeClient() const =0;
dvander@458
    96
dvander@458
    97
		/**
dvander@458
    98
		 * @brief Returns the client's AdminId, if any.
dvander@458
    99
		 *
dvander@458
   100
		 * @return		AdminId, or INVALID_ADMIN_ID if none.
dvander@458
   101
		 */
dvander@458
   102
		virtual AdminId GetAdminId() const =0;
dvander@458
   103
dvander@458
   104
		/**
dvander@458
   105
		 * @brief Sets the client's AdminId.
dvander@458
   106
		 *
dvander@458
   107
		 * @param id	AdminId to set.
dvander@458
   108
		 * @param temp	If true, the id will be invalidated on disconnect.
dvander@458
   109
		 */
dvander@458
   110
		virtual void SetAdminId(AdminId id, bool temp) =0;
dvander@435
   111
	};
dvander@435
   112
dvander@435
   113
	/**
dvander@435
   114
	 * @brief Provides callbacks for important client events.
dvander@435
   115
	 */
dvander@435
   116
	class IClientListener
dvander@435
   117
	{
dvander@435
   118
	public:
dvander@435
   119
		virtual unsigned int GetInterfaceVersion()
dvander@435
   120
		{
dvander@435
   121
			return SMINTERFACE_PLAYERMANAGER_VERSION;
dvander@435
   122
		}
dvander@435
   123
	public:
dvander@435
   124
		/**
dvander@435
   125
		 * @brief Called when a client requests connection.
dvander@435
   126
		 *
dvander@435
   127
		 * @param client		Index of the client.
dvander@435
   128
		 * @param error			Error buffer for a disconnect reason.
dvander@435
   129
		 * @param maxlength		Maximum length of error buffer.
dvander@435
   130
		 * @return				True to allow client, false to reject.
dvander@435
   131
		 */
dvander@435
   132
		virtual bool InterceptClientConnect(int client, char *error, size_t maxlength)
dvander@435
   133
		{
dvander@435
   134
			return true;
dvander@435
   135
		}
dvander@435
   136
dvander@435
   137
		/**
dvander@435
   138
		 * @brief Called when a client has connected.
dvander@435
   139
		 *
dvander@435
   140
		 * @param client		Index of the client.
dvander@435
   141
		 */
dvander@435
   142
		virtual void OnClientConnected(int client)
dvander@435
   143
		{
dvander@435
   144
		}
dvander@435
   145
dvander@435
   146
		/**
dvander@435
   147
		 * @brief Called when a client is put in server.
dvander@435
   148
		 *
dvander@435
   149
		 * @param client		Index of the client.
dvander@435
   150
		 */
dvander@435
   151
		virtual void OnClientPutInServer(int client)
dvander@435
   152
		{
dvander@435
   153
		}
dvander@435
   154
dvander@435
   155
		/**
dvander@435
   156
		 * @brief Called when a client is disconnecting (not fully disconnected yet).
dvander@435
   157
		 *
dvander@435
   158
		 * @param client		Index of the client.
dvander@435
   159
		 */
dvander@435
   160
		virtual void OnClientDisconnecting(int client)
dvander@435
   161
		{
dvander@435
   162
		}
dvander@435
   163
dvander@435
   164
		/**
dvander@435
   165
		 * @brief Called when a client has fully disconnected.
dvander@435
   166
		 *
dvander@435
   167
		 * @param client		Index of the client.
dvander@435
   168
		 */
dvander@435
   169
		virtual void OnClientDisconnected(int client)
dvander@435
   170
		{
dvander@435
   171
		}
dvander@435
   172
dvander@435
   173
		/**
dvander@435
   174
		 * @brief Called when a client has recieved authorization.
dvander@435
   175
		 *
dvander@435
   176
		 * @param client		Index of the client.
dvander@435
   177
		 * @param authstring	Authorization string.
dvander@435
   178
		 */
dvander@435
   179
		virtual void OnClientAuthorized(int client, const char *authstring)
dvander@435
   180
		{
dvander@435
   181
		}
dvander@435
   182
	};
dvander@435
   183
dvander@435
   184
	class IPlayerManager : public SMInterface
dvander@435
   185
	{
dvander@435
   186
	public:
dvander@435
   187
		const char *GetInterfaceName()
dvander@435
   188
		{
dvander@435
   189
			return SMINTERFACE_PLAYERMANAGER_NAME;
dvander@435
   190
		}
dvander@435
   191
		unsigned int GetInterfaceVersion()
dvander@435
   192
		{
dvander@435
   193
			return SMINTERFACE_PLAYERMANAGER_VERSION;
dvander@435
   194
		}
dvander@435
   195
	public:
dvander@435
   196
		/**
dvander@435
   197
		 * @brief Adds a client listener.
dvander@435
   198
		 *
dvander@435
   199
		 * @param listener		Pointer to an IClientListener.
dvander@435
   200
		 */
dvander@435
   201
		virtual void AddClientListener(IClientListener *listener) =0;
dvander@435
   202
dvander@435
   203
		/**
dvander@435
   204
		 * @brief Removes a client listener.
dvander@435
   205
		 *
dvander@435
   206
		 * @param listener		Pointer to an IClientListener.
dvander@435
   207
		 */
dvander@435
   208
		virtual void RemoveClientListener(IClientListener *listener) =0;
dvander@435
   209
dvander@435
   210
		/**
dvander@435
   211
		 * @brief Retrieves an IGamePlayer object by its client index.
dvander@435
   212
		 *
dvander@435
   213
		 * Note: This will return a valid object for any player, connected or not.
dvander@435
   214
		 * Note: Client indexes start at 1, not 0.
dvander@435
   215
		 *
dvander@435
   216
		 * @param client		Index of the client.
dvander@435
   217
		 * @return				An IGamePlayer pointer, or NULL if out of range.
dvander@435
   218
		 */
dvander@435
   219
		virtual IGamePlayer *GetGamePlayer(int client) =0;
dvander@435
   220
dvander@435
   221
		/**
dvander@435
   222
		 * @brief Retrieves an IGamePlayer object by its edict_t pointer.
dvander@435
   223
		 *
dvander@435
   224
		 * @param pEdict		Index of the client
dvander@435
   225
		 * @return				An IGamePlayer pointer, or NULL if out of range.
dvander@435
   226
		 */
dvander@435
   227
		virtual IGamePlayer *GetGamePlayer(edict_t *pEdict) =0;
dvander@435
   228
dvander@435
   229
		/**
dvander@435
   230
		 * @brief Returns the maximum number of clients.
dvander@435
   231
		 *
dvander@435
   232
		 * @return				Maximum number of clients.
dvander@435
   233
		 */
dvander@435
   234
		virtual int GetMaxClients() =0;
dvander@435
   235
dvander@435
   236
		/**
dvander@435
   237
		 * @brief Returns the number of players currently connected.
dvander@435
   238
		 *
dvander@435
   239
		 * @return				Current number of connected clients.
dvander@435
   240
		 */
dvander@435
   241
		virtual int GetNumPlayers() =0;
dvander@435
   242
	};
dvander@435
   243
}
dvander@435
   244
dvander@435
   245
#endif //_INCLUDE_SOURCEMOD_INTERFACE_IPLAYERHELPERS_H_