Merge pull request #12 from psychonic/more2logic

Move many player natives from core to logic.
This commit is contained in:
Nicholas Hastings 2014-05-29 00:51:29 -04:00
commit 9ff6cdef8c
6 changed files with 1469 additions and 1328 deletions

View File

@ -180,8 +180,8 @@ public: //IAdminSystem
FlagBits flags, FlagBits flags,
bool override_only); bool override_only);
bool FindFlagChar(AdminFlag flag, char *c); bool FindFlagChar(AdminFlag flag, char *c);
public:
bool IsValidAdmin(AdminId id); bool IsValidAdmin(AdminId id);
public:
void DumpCache(FILE *fp); void DumpCache(FILE *fp);
AdminGroup *GetGroup(GroupId gid); AdminGroup *GetGroup(GroupId gid);
AdminUser *GetUser(AdminId id); AdminUser *GetUser(AdminId id);

View File

@ -62,6 +62,7 @@ class IVEngineServer_Logic
public: public:
virtual bool IsMapValid(const char *map) = 0; virtual bool IsMapValid(const char *map) = 0;
virtual void ServerCommand(const char *cmd) = 0; virtual void ServerCommand(const char *cmd) = 0;
virtual const char *GetClientConVarValue(int clientIndex, const char *name) = 0;
}; };
typedef void * FileHandle_t; typedef void * FileHandle_t;
@ -108,6 +109,25 @@ class IFileSystem;
class ConVar; class ConVar;
class KeyValues; class KeyValues;
class SMGlobalClass; class SMGlobalClass;
class IPlayerInfo;
class IPlayerInfo_Logic
{
public:
virtual bool IsObserver(IPlayerInfo *pInfo) = 0;
virtual int GetTeamIndex(IPlayerInfo *pInfo) = 0;
virtual int GetFragCount(IPlayerInfo *pInfo) = 0;
virtual int GetDeathCount(IPlayerInfo *pInfo) = 0;
virtual int GetArmorValue(IPlayerInfo *pInfo) = 0;
virtual void GetAbsOrigin(IPlayerInfo *pInfo, float *x, float *y, float *z) = 0;
virtual void GetAbsAngles(IPlayerInfo *pInfo, float *x, float *y, float *z) = 0;
virtual void GetPlayerMins(IPlayerInfo *pInfo, float *x, float *y, float *z) = 0;
virtual void GetPlayerMaxs(IPlayerInfo *pInfo, float *x, float *y, float *z) = 0;
virtual const char *GetWeaponName(IPlayerInfo *pInfo) = 0;
virtual const char *GetModelName(IPlayerInfo *pInfo) = 0;
virtual int GetHealth(IPlayerInfo *pInfo) = 0;
virtual void ChangeTeam(IPlayerInfo *pInfo, int iTeamNum) = 0;
};
namespace SourceMod namespace SourceMod
{ {
@ -236,6 +256,7 @@ struct sm_core_t
ILibrarySys *libsys; ILibrarySys *libsys;
IVEngineServer *engine; IVEngineServer *engine;
IFileSystem *filesystem; IFileSystem *filesystem;
IPlayerInfo_Logic *playerInfo;
IRootConsole *rootmenu; IRootConsole *rootmenu;
ITimerSystem *timersys; ITimerSystem *timersys;
IPlayerManager *playerhelpers; IPlayerManager *playerhelpers;
@ -252,6 +273,7 @@ struct sm_core_t
void (*Log)(const char*, ...); void (*Log)(const char*, ...);
void (*LogToFile)(FILE *fp, const char*, ...); void (*LogToFile)(FILE *fp, const char*, ...);
void (*LogToGame)(const char *message); void (*LogToGame)(const char *message);
void (*ConPrint)(const char *message);
const char * (*GetCvarString)(ConVar*); const char * (*GetCvarString)(ConVar*);
size_t (*Format)(char*, size_t, const char*, ...); size_t (*Format)(char*, size_t, const char*, ...);
size_t (*FormatArgs)(char*, size_t, const char*,va_list ap); size_t (*FormatArgs)(char*, size_t, const char*,va_list ap);
@ -273,6 +295,7 @@ struct sm_core_t
bool (*AreConfigsExecuted)(); bool (*AreConfigsExecuted)();
void (*ExecuteConfigs)(IPluginContext *ctx); void (*ExecuteConfigs)(IPluginContext *ctx);
DatabaseInfo (*GetDBInfoFromKeyValues)(KeyValues *); DatabaseInfo (*GetDBInfoFromKeyValues)(KeyValues *);
int (*GetActivityFlags)();
const char *gamesuffix; const char *gamesuffix;
/* Data */ /* Data */
ServerGlobals *serverGlobals; ServerGlobals *serverGlobals;

File diff suppressed because it is too large Load Diff

View File

@ -98,6 +98,11 @@ public:
{ {
engine->ServerCommand(cmd); engine->ServerCommand(cmd);
} }
virtual const char *GetClientConVarValue(int clientIndex, const char *name)
{
return engine->GetClientConVarValue(clientIndex, name);
}
}; };
static VEngineServer_Logic logic_engine; static VEngineServer_Logic logic_engine;
@ -146,6 +151,78 @@ public:
static VFileSystem_Logic logic_filesystem; static VFileSystem_Logic logic_filesystem;
class VPlayerInfo_Logic : public IPlayerInfo_Logic
{
public:
bool IsObserver(IPlayerInfo *pInfo)
{
return pInfo->IsObserver();
}
int GetTeamIndex(IPlayerInfo *pInfo)
{
return pInfo->GetTeamIndex();
}
int GetFragCount(IPlayerInfo *pInfo)
{
return pInfo->GetFragCount();
}
int GetDeathCount(IPlayerInfo *pInfo)
{
return pInfo->GetDeathCount();
}
int GetArmorValue(IPlayerInfo *pInfo)
{
return pInfo->GetArmorValue();
}
void GetAbsOrigin(IPlayerInfo *pInfo, float *x, float *y, float *z)
{
Vector vec = pInfo->GetAbsOrigin();
*x = vec.x;
*y = vec.y;
*z = vec.z;
}
void GetAbsAngles(IPlayerInfo *pInfo, float *x, float *y, float *z)
{
QAngle ang = pInfo->GetAbsAngles();
*x = ang.x;
*y = ang.y;
*z = ang.z;
}
void GetPlayerMins(IPlayerInfo *pInfo, float *x, float *y, float *z)
{
Vector vec = pInfo->GetPlayerMins();
*x = vec.x;
*y = vec.y;
*z = vec.z;
}
void GetPlayerMaxs(IPlayerInfo *pInfo, float *x, float *y, float *z)
{
Vector vec = pInfo->GetPlayerMaxs();
*x = vec.x;
*y = vec.y;
*z = vec.z;
}
const char *GetWeaponName(IPlayerInfo *pInfo)
{
return pInfo->GetWeaponName();
}
const char *GetModelName(IPlayerInfo *pInfo)
{
return pInfo->GetModelName();
}
int GetHealth(IPlayerInfo *pInfo)
{
return pInfo->GetHealth();
}
void ChangeTeam(IPlayerInfo *pInfo, int iTeamNum)
{
pInfo->ChangeTeam(iTeamNum);
}
};
static VPlayerInfo_Logic logic_playerinfo;
static ConVar sm_show_activity("sm_show_activity", "13", FCVAR_SPONLY, "Activity display setting (see sourcemod.cfg)");
static ConVar *find_convar(const char *name) static ConVar *find_convar(const char *name)
{ {
@ -191,6 +268,11 @@ static void log_to_game(const char *message)
Engine_LogPrintWrapper(message); Engine_LogPrintWrapper(message);
} }
static void conprint(const char *message)
{
META_CONPRINT(message);
}
static const char *get_cvar_string(ConVar* cvar) static const char *get_cvar_string(ConVar* cvar)
{ {
return cvar->GetString(); return cvar->GetString();
@ -314,6 +396,11 @@ static DatabaseInfo keyvalues_to_dbinfo(KeyValues *kv)
return info; return info;
} }
static int get_activity_flags()
{
return sm_show_activity.GetInt();
}
int read_cmd_argc(const CCommand &args) int read_cmd_argc(const CCommand &args)
{ {
return args.ArgC(); return args.ArgC();
@ -420,6 +507,7 @@ static sm_core_t core_bridge =
&g_LibSys, &g_LibSys,
reinterpret_cast<IVEngineServer*>(&logic_engine), reinterpret_cast<IVEngineServer*>(&logic_engine),
reinterpret_cast<IFileSystem*>(&logic_filesystem), reinterpret_cast<IFileSystem*>(&logic_filesystem),
&logic_playerinfo,
&g_RootMenu, &g_RootMenu,
&g_Timers, &g_Timers,
&g_Players, &g_Players,
@ -436,6 +524,7 @@ static sm_core_t core_bridge =
log_message, log_message,
log_to_file, log_to_file,
log_to_game, log_to_game,
conprint,
get_cvar_string, get_cvar_string,
UTIL_Format, UTIL_Format,
UTIL_FormatArgs, UTIL_FormatArgs,
@ -456,8 +545,9 @@ static sm_core_t core_bridge =
SM_AreConfigsExecuted, SM_AreConfigsExecuted,
SM_ExecuteForPlugin, SM_ExecuteForPlugin,
keyvalues_to_dbinfo, keyvalues_to_dbinfo,
get_activity_flags,
GAMEFIX, GAMEFIX,
&serverGlobals &serverGlobals,
}; };
void InitLogicBridge() void InitLogicBridge()

File diff suppressed because it is too large Load Diff

View File

@ -35,7 +35,7 @@
#include <IShareSys.h> #include <IShareSys.h>
#define SMINTERFACE_ADMINSYS_NAME "IAdminSys" #define SMINTERFACE_ADMINSYS_NAME "IAdminSys"
#define SMINTERFACE_ADMINSYS_VERSION 6 #define SMINTERFACE_ADMINSYS_VERSION 7
/** /**
* @file IAdminSystem.h * @file IAdminSystem.h
@ -726,6 +726,14 @@ namespace SourceMod
* @return True on success, false if not found. * @return True on success, false if not found.
*/ */
virtual bool FindFlagChar(AdminFlag flag, char *c) =0; virtual bool FindFlagChar(AdminFlag flag, char *c) =0;
/**
* brief Returns whether or not an admin id is valid.
*
* @param id Admin id to check.
* @return True if valid, otherwise false.
*/
virtual bool IsValidAdmin(AdminId id) =0;
}; };
} }