Files
csgo2_tiny_server_plugin_sy…/csgo2/sdk/public/icvar.h
2023-10-08 01:56:49 +08:00

84 lines
3.5 KiB
C++

#pragma once
#include "../sdk.h"
class ConCommandBase;
class ConVar;
class Color;
class IConVarListener;
class CConVarDetail;
struct ConVarSnapshot_t;
union CVValue_t;
class KeyValues;
class ConVarRefAbstract;
class ConVarHandle;
struct CSplitScreenSlot;
class ConCommandHandle;
class ConCommand;
typedef void(*FnChangeCallbackGlobal_t)(ConVarRefAbstract* cvar, CSplitScreenSlot nSlot, const char* pNewValue, const char* pOldValue);
typedef void(*FnChangeCallback_t)(ConVarRefAbstract* cvar, CSplitScreenSlot nSlot, CVValue_t* pNewValue, CVValue_t* pOldValue);
class ConCommandRefAbstract;
class ConVarRefAbstract;
class ICVarListenerCallbacks
{
public:
virtual void OnConVarCreated(ConVarRefAbstract* pNewCvar) = 0;
virtual void OnConCommandCreated(ConCommandRefAbstract* pNewCommand) = 0;
};
//-----------------------------------------------------------------------------
// Purpose: DLL interface to ConVars/ConCommands
//-----------------------------------------------------------------------------
class ICvar : public IAppSystem
{
public:
// bAllowDeveloper - Allows finding convars with FCVAR_DEVELOPMENTONLY flag
virtual ConVarHandle FindConVar(const char* name, bool bAllowDeveloper = false) = 0;
virtual ConVarHandle FindFirstConVar() = 0;
virtual ConVarHandle FindNextConVar(ConVarHandle prev) = 0;
virtual void SetConVarValue(ConVarHandle cvarid, CSplitScreenSlot nSlot, CVValue_t* pNewValue, CVValue_t* pOldValue) = 0;
virtual ConCommandHandle FindCommand(const char* name) = 0;
virtual ConCommandHandle FindFirstCommand() = 0;
virtual ConCommandHandle FindNextCommand(ConCommandHandle prev) = 0;
virtual void DispatchConCommand(ConCommandHandle cmd, const CCommandContext& ctx, const CCommand& args) = 0;
// Install a global change callback (to be called when any convar changes)
virtual void InstallGlobalChangeCallback(FnChangeCallbackGlobal_t callback) = 0;
virtual void RemoveGlobalChangeCallback(FnChangeCallbackGlobal_t callback) = 0;
virtual void CallGlobalChangeCallbacks(ConVarRefAbstract* var, CSplitScreenSlot nSlot, const char* pOldString, float flOldValue) = 0;
// Reverts cvars which contain a specific flag
virtual void RevertFlaggedConVars(int nFlag) = 0;
virtual void SetMaxSplitScreenSlots(int nSlots) = 0;
virtual int GetMaxSplitScreenSlots() const = 0;
virtual void RegisterCreationListeners(ICVarListenerCallbacks* callbacks) = 0;
virtual void RemoveCreationListeners(ICVarListenerCallbacks* callbacks) = 0;
virtual void unk1() = 0;
virtual void ResetConVarsToDefaultValues(const char* pszPrefix) = 0;
virtual ConVarSnapshot_t* TakeConVarSnapshot(void) = 0;
virtual void ResetConVarsToSnapshot(ConVarSnapshot_t* pSnapshot) = 0;
virtual void DestroyConVarSnapshot(ConVarSnapshot_t* pSnaoshot) = 0;
virtual characterset_t GetCharacterSet(void) = 0;
virtual void SetConVarsFromGameInfo(KeyValues* pKV) = 0;
virtual void unk2() = 0;
// Register, unregister vars
virtual void RegisterConVar(ConVar* pConVar, int64 nAdditionalFlags, ConVarHandle& pCvarRef, ConVar& pCvar) = 0;
virtual void UnregisterConVar(ConVarHandle handle) = 0;
virtual ConVar* GetConVar(ConVarHandle handle) = 0;
// Register, unregister commands
virtual ConCommandHandle RegisterConCommand(ConCommand* pCmd, int64 nAdditionalFlags = 0) = 0;
virtual void UnregisterConCommand(ConCommandHandle handle) = 0;
virtual ConCommand* GetCommand(ConCommandHandle handle) = 0;
virtual void QueueThreadSetValue(ConVarRefAbstract* ref, CSplitScreenSlot nSlot, CVValue_t* value) = 0;
};