public/IPlayerHelpers.h
author Phong Dang <teame06@gmail.com>
Mon Jul 30 20:26:18 2007 +0000 (2007-07-30)
changeset 1217 759155bea814
parent 1137 049e7c6bf36b
child 1226 478550a4d5ec
permissions -rw-r--r--
Fixed PrintCenterTextAll not accepting the small translation key.
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@1137
    22
/**
dvander@1137
    23
 * @file IPlayerHelpers.h
dvander@1137
    24
 * @brief Defines basic helper functions for Half-Life 2 clients
dvander@1137
    25
 */
dvander@1137
    26
dvander@435
    27
#include <IShareSys.h>
dvander@458
    28
#include <IAdminSystem.h>
dvander@435
    29
dvander@435
    30
#define SMINTERFACE_PLAYERMANAGER_NAME		"IPlayerManager"
dvander@435
    31
#define SMINTERFACE_PLAYERMANAGER_VERSION	1
dvander@435
    32
dvander@435
    33
struct edict_t;
dvander@435
    34
dvander@435
    35
namespace SourceMod
dvander@435
    36
{
dvander@435
    37
	/**
dvander@435
    38
	 * @brief Abstracts some Half-Life 2 and SourceMod properties about clients.
dvander@435
    39
	 */
dvander@435
    40
	class IGamePlayer
dvander@435
    41
	{
dvander@435
    42
	public:
dvander@435
    43
		/**
dvander@435
    44
		 * @brief Returns the player's name.
dvander@435
    45
		 *
dvander@435
    46
		 * @return		String containing the player's name,
dvander@435
    47
		 *				or NULL if unavailable.
dvander@435
    48
		 */
dvander@615
    49
		virtual const char *GetName() =0;
dvander@435
    50
dvander@435
    51
		/**
dvander@435
    52
		 * @brief Returns the player's IP address.
dvander@435
    53
		 *
dvander@435
    54
		 * @return		String containing the player's IP address,
dvander@435
    55
		 *				or NULL if unavailable.
dvander@435
    56
		 */
dvander@615
    57
		virtual const char *GetIPAddress() =0;
dvander@435
    58
dvander@435
    59
		/**
dvander@435
    60
		 * @brief Returns the player's authentication string.
dvander@435
    61
		 *
dvander@435
    62
		 * @return		String containing the player's auth string.
dvander@435
    63
		 *				May be NULL if unavailable.
dvander@435
    64
		 */
dvander@615
    65
		virtual const char *GetAuthString() =0;
dvander@435
    66
dvander@435
    67
		/**
dvander@435
    68
		 * @brief Returns the player's edict_t structure.
dvander@435
    69
		 *
dvander@435
    70
		 * @return		edict_t pointer, or NULL if unavailable.
dvander@435
    71
		 */
dvander@615
    72
		virtual edict_t *GetEdict() =0;
dvander@435
    73
dvander@435
    74
		/**
dvander@435
    75
		 * @brief Returns whether the player is in game (putinserver).
dvander@435
    76
		 *
dvander@435
    77
		 * @return		True if in game, false otherwise.
dvander@435
    78
		 */
dvander@615
    79
		virtual bool IsInGame() =0;
dvander@435
    80
dvander@435
    81
		/**
dvander@435
    82
		 * @brief Returns whether the player is connected.
dvander@435
    83
		 *
dvander@435
    84
		 * Note: If this returns true, all above functions except for
dvander@435
    85
		 * GetAuthString() should return non-NULL results.
dvander@435
    86
		 *
dvander@435
    87
		 * @return		True if connected, false otherwise.
dvander@435
    88
		 */
dvander@615
    89
		virtual bool IsConnected() =0;
dvander@435
    90
dvander@435
    91
		/**
dvander@435
    92
		 * @brief Returns whether the player is a fake client.
dvander@435
    93
		 *
dvander@435
    94
		 * @return		True if a fake client, false otherwise.
dvander@435
    95
		 */
dvander@615
    96
		virtual bool IsFakeClient() =0;
dvander@458
    97
dvander@458
    98
		/**
dvander@458
    99
		 * @brief Returns the client's AdminId, if any.
dvander@458
   100
		 *
dvander@458
   101
		 * @return		AdminId, or INVALID_ADMIN_ID if none.
dvander@458
   102
		 */
dvander@615
   103
		virtual AdminId GetAdminId() =0;
dvander@458
   104
dvander@458
   105
		/**
dvander@458
   106
		 * @brief Sets the client's AdminId.
dvander@458
   107
		 *
dvander@458
   108
		 * @param id	AdminId to set.
dvander@458
   109
		 * @param temp	If true, the id will be invalidated on disconnect.
dvander@458
   110
		 */
dvander@458
   111
		virtual void SetAdminId(AdminId id, bool temp) =0;
dvander@435
   112
	};
dvander@435
   113
dvander@435
   114
	/**
dvander@435
   115
	 * @brief Provides callbacks for important client events.
dvander@435
   116
	 */
dvander@435
   117
	class IClientListener
dvander@435
   118
	{
dvander@435
   119
	public:
faluco@620
   120
	   /**
faluco@620
   121
		* @brief Returns the current client listener version.
faluco@620
   122
		*
faluco@620
   123
		* @return		Client listener version.
faluco@620
   124
		*/
dvander@541
   125
		virtual unsigned int GetClientListenerVersion()
dvander@435
   126
		{
dvander@435
   127
			return SMINTERFACE_PLAYERMANAGER_VERSION;
dvander@435
   128
		}
dvander@435
   129
	public:
dvander@435
   130
		/**
dvander@435
   131
		 * @brief Called when a client requests connection.
dvander@435
   132
		 *
dvander@435
   133
		 * @param client		Index of the client.
dvander@435
   134
		 * @param error			Error buffer for a disconnect reason.
dvander@435
   135
		 * @param maxlength		Maximum length of error buffer.
dvander@435
   136
		 * @return				True to allow client, false to reject.
dvander@435
   137
		 */
dvander@435
   138
		virtual bool InterceptClientConnect(int client, char *error, size_t maxlength)
dvander@435
   139
		{
dvander@435
   140
			return true;
dvander@435
   141
		}
dvander@435
   142
dvander@435
   143
		/**
dvander@435
   144
		 * @brief Called when a client has connected.
dvander@435
   145
		 *
dvander@435
   146
		 * @param client		Index of the client.
dvander@435
   147
		 */
dvander@435
   148
		virtual void OnClientConnected(int client)
dvander@435
   149
		{
dvander@435
   150
		}
dvander@435
   151
dvander@435
   152
		/**
dvander@435
   153
		 * @brief Called when a client is put in server.
dvander@435
   154
		 *
dvander@435
   155
		 * @param client		Index of the client.
dvander@435
   156
		 */
dvander@435
   157
		virtual void OnClientPutInServer(int client)
dvander@435
   158
		{
dvander@435
   159
		}
dvander@435
   160
dvander@435
   161
		/**
dvander@435
   162
		 * @brief Called when a client is disconnecting (not fully disconnected yet).
dvander@435
   163
		 *
dvander@435
   164
		 * @param client		Index of the client.
dvander@435
   165
		 */
dvander@435
   166
		virtual void OnClientDisconnecting(int client)
dvander@435
   167
		{
dvander@435
   168
		}
dvander@435
   169
dvander@435
   170
		/**
dvander@435
   171
		 * @brief Called when a client has fully disconnected.
dvander@435
   172
		 *
dvander@435
   173
		 * @param client		Index of the client.
dvander@435
   174
		 */
dvander@435
   175
		virtual void OnClientDisconnected(int client)
dvander@435
   176
		{
dvander@435
   177
		}
dvander@435
   178
dvander@435
   179
		/**
ds@729
   180
		 * @brief Called when a client has received authorization.
dvander@435
   181
		 *
dvander@435
   182
		 * @param client		Index of the client.
dvander@435
   183
		 * @param authstring	Authorization string.
dvander@435
   184
		 */
dvander@435
   185
		virtual void OnClientAuthorized(int client, const char *authstring)
dvander@435
   186
		{
dvander@435
   187
		}
dvander@435
   188
	};
dvander@435
   189
dvander@435
   190
	class IPlayerManager : public SMInterface
dvander@435
   191
	{
dvander@435
   192
	public:
dvander@435
   193
		const char *GetInterfaceName()
dvander@435
   194
		{
dvander@435
   195
			return SMINTERFACE_PLAYERMANAGER_NAME;
dvander@435
   196
		}
dvander@435
   197
		unsigned int GetInterfaceVersion()
dvander@435
   198
		{
dvander@435
   199
			return SMINTERFACE_PLAYERMANAGER_VERSION;
dvander@435
   200
		}
dvander@435
   201
	public:
dvander@435
   202
		/**
dvander@435
   203
		 * @brief Adds a client listener.
dvander@435
   204
		 *
dvander@435
   205
		 * @param listener		Pointer to an IClientListener.
dvander@435
   206
		 */
dvander@435
   207
		virtual void AddClientListener(IClientListener *listener) =0;
dvander@435
   208
dvander@435
   209
		/**
dvander@435
   210
		 * @brief Removes a client listener.
dvander@435
   211
		 *
dvander@435
   212
		 * @param listener		Pointer to an IClientListener.
dvander@435
   213
		 */
dvander@435
   214
		virtual void RemoveClientListener(IClientListener *listener) =0;
dvander@435
   215
dvander@435
   216
		/**
dvander@435
   217
		 * @brief Retrieves an IGamePlayer object by its client index.
dvander@435
   218
		 *
dvander@435
   219
		 * Note: This will return a valid object for any player, connected or not.
dvander@435
   220
		 * Note: Client indexes start at 1, not 0.
dvander@435
   221
		 *
dvander@435
   222
		 * @param client		Index of the client.
dvander@435
   223
		 * @return				An IGamePlayer pointer, or NULL if out of range.
dvander@435
   224
		 */
dvander@435
   225
		virtual IGamePlayer *GetGamePlayer(int client) =0;
dvander@435
   226
dvander@435
   227
		/**
dvander@435
   228
		 * @brief Retrieves an IGamePlayer object by its edict_t pointer.
dvander@435
   229
		 *
dvander@435
   230
		 * @param pEdict		Index of the client
dvander@435
   231
		 * @return				An IGamePlayer pointer, or NULL if out of range.
dvander@435
   232
		 */
dvander@435
   233
		virtual IGamePlayer *GetGamePlayer(edict_t *pEdict) =0;
dvander@435
   234
dvander@435
   235
		/**
dvander@435
   236
		 * @brief Returns the maximum number of clients.
dvander@435
   237
		 *
dvander@435
   238
		 * @return				Maximum number of clients.
dvander@435
   239
		 */
dvander@435
   240
		virtual int GetMaxClients() =0;
dvander@435
   241
dvander@435
   242
		/**
dvander@435
   243
		 * @brief Returns the number of players currently connected.
dvander@435
   244
		 *
dvander@435
   245
		 * @return				Current number of connected clients.
dvander@435
   246
		 */
dvander@435
   247
		virtual int GetNumPlayers() =0;
faluco@682
   248
faluco@682
   249
		/**
faluco@682
   250
		 * @brief Returns the client index by its userid.
faluco@682
   251
		 *
faluco@682
   252
		 * @param userid		Userid of the client.
faluco@682
   253
		 * @return				Client index, or 0 if invalid userid passed.
faluco@682
   254
		 */
faluco@682
   255
		virtual int GetClientOfUserId(int userid) =0;
dvander@435
   256
	};
dvander@435
   257
}
dvander@435
   258
dvander@435
   259
#endif //_INCLUDE_SOURCEMOD_INTERFACE_IPLAYERHELPERS_H_