You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
117 lines
5.8 KiB
117 lines
5.8 KiB
5 years ago
|
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||
|
//
|
||
|
// Purpose:
|
||
|
//
|
||
|
// $Workfile: $
|
||
|
// $Date: $
|
||
|
//
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// $NoKeywords: $
|
||
|
//===========================================================================//
|
||
|
|
||
|
#ifndef ICONVAR_H
|
||
|
#define ICONVAR_H
|
||
|
|
||
|
#if _WIN32
|
||
|
#pragma once
|
||
|
#endif
|
||
|
|
||
|
#include "tier0/dbg.h"
|
||
|
#include "tier0/platform.h"
|
||
|
#include "tier1/strtools.h"
|
||
|
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Forward declarations
|
||
|
//-----------------------------------------------------------------------------
|
||
|
class IConVar;
|
||
|
class CCommand;
|
||
|
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// ConVar flags
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// The default, no flags at all
|
||
|
#define FCVAR_NONE 0
|
||
|
|
||
|
// Command to ConVars and ConCommands
|
||
|
// ConVar Systems
|
||
|
#define FCVAR_UNREGISTERED (1<<0) // If this is set, don't add to linked list, etc.
|
||
|
#define FCVAR_DEVELOPMENTONLY (1<<1) // Hidden in released products. Flag is removed automatically if ALLOW_DEVELOPMENT_CVARS is defined.
|
||
|
#define FCVAR_GAMEDLL (1<<2) // defined by the game DLL
|
||
|
#define FCVAR_CLIENTDLL (1<<3) // defined by the client DLL
|
||
|
#define FCVAR_HIDDEN (1<<4) // Hidden. Doesn't appear in find or autocomplete. Like DEVELOPMENTONLY, but can't be compiled out.
|
||
|
|
||
|
// ConVar only
|
||
|
#define FCVAR_PROTECTED (1<<5) // It's a server cvar, but we don't send the data since it's a password, etc. Sends 1 if it's not bland/zero, 0 otherwise as value
|
||
|
#define FCVAR_SPONLY (1<<6) // This cvar cannot be changed by clients connected to a multiplayer server.
|
||
|
#define FCVAR_ARCHIVE (1<<7) // set to cause it to be saved to vars.rc
|
||
|
#define FCVAR_NOTIFY (1<<8) // notifies players when changed
|
||
|
#define FCVAR_USERINFO (1<<9) // changes the client's info string
|
||
|
#define FCVAR_CHEAT (1<<14) // Only useable in singleplayer / debug / multiplayer & sv_cheats
|
||
|
|
||
|
#define FCVAR_PRINTABLEONLY (1<<10) // This cvar's string cannot contain unprintable characters ( e.g., used for player name etc ).
|
||
|
#define FCVAR_UNLOGGED (1<<11) // If this is a FCVAR_SERVER, don't log changes to the log file / console if we are creating a log
|
||
|
#define FCVAR_NEVER_AS_STRING (1<<12) // never try to print that cvar
|
||
|
|
||
|
// It's a ConVar that's shared between the client and the server.
|
||
|
// At signon, the values of all such ConVars are sent from the server to the client (skipped for local
|
||
|
// client, of course )
|
||
|
// If a change is requested it must come from the console (i.e., no remote client changes)
|
||
|
// If a value is changed while a server is active, it's replicated to all connected clients
|
||
|
#define FCVAR_REPLICATED (1<<13) // server setting enforced on clients, TODO rename to FCAR_SERVER at some time
|
||
|
#define FCVAR_DEMO (1<<16) // record this cvar when starting a demo file
|
||
|
#define FCVAR_DONTRECORD (1<<17) // don't record these command in demofiles
|
||
|
#define FCVAR_RELOAD_MATERIALS (1<<20) // If this cvar changes, it forces a material reload
|
||
|
#define FCVAR_RELOAD_TEXTURES (1<<21) // If this cvar changes, if forces a texture reload
|
||
|
|
||
|
#define FCVAR_NOT_CONNECTED (1<<22) // cvar cannot be changed by a client that is connected to a server
|
||
|
#define FCVAR_MATERIAL_SYSTEM_THREAD (1<<23) // Indicates this cvar is read from the material system thread
|
||
|
#define FCVAR_ARCHIVE_XBOX (1<<24) // cvar written to config.cfg on the Xbox
|
||
|
|
||
|
#define FCVAR_ACCESSIBLE_FROM_THREADS (1<<25) // used as a debugging tool necessary to check material system thread convars
|
||
|
|
||
|
#define FCVAR_SERVER_CAN_EXECUTE (1<<28)// the server is allowed to execute this command on clients via ClientCommand/NET_StringCmd/CBaseClientState::ProcessStringCmd.
|
||
|
#define FCVAR_SERVER_CANNOT_QUERY (1<<29)// If this is set, then the server is not allowed to query this cvar's value (via IServerPluginHelpers::StartQueryCvarValue).
|
||
|
#define FCVAR_CLIENTCMD_CAN_EXECUTE (1<<30) // IVEngineClient::ClientCmd is allowed to execute this command.
|
||
|
// Note: IVEngineClient::ClientCmd_Unrestricted can run any client command.
|
||
|
#define FCVAR_EXEC_DESPITE_DEFAULT (1<<31) // -default causes a lot of commands to be ignored (but still be recorded as though they had run).
|
||
|
// This causes them to be executed anyways.
|
||
|
|
||
|
#define FCVAR_INTERNAL_USE (1<<15) // This var isn't archived, but is exposed to players--and its use is allowed in competitive play.
|
||
|
#define FCVAR_ALLOWED_IN_COMPETITIVE (1<<18) // This convar can be changed in competitive (strict) settings mode even though it is not archived. Meant for one-offs like cl_showfps that are not user facing settings but are benign
|
||
|
// #define FCVAR_AVAILABLE (1<<19)
|
||
|
// #define FCVAR_AVAILABLE (1<<26)
|
||
|
// #define FCVAR_AVAILABLE (1<<27)
|
||
|
|
||
|
#define FCVAR_MATERIAL_THREAD_MASK ( FCVAR_RELOAD_MATERIALS | FCVAR_RELOAD_TEXTURES | FCVAR_MATERIAL_SYSTEM_THREAD )
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Called when a ConVar changes value
|
||
|
// NOTE: For FCVAR_NEVER_AS_STRING ConVars, pOldValue == NULL
|
||
|
//-----------------------------------------------------------------------------
|
||
|
typedef void ( *FnChangeCallback_t )( IConVar *var, const char *pOldValue, float flOldValue );
|
||
|
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Abstract interface for ConVars
|
||
|
//-----------------------------------------------------------------------------
|
||
|
abstract_class IConVar
|
||
|
{
|
||
|
public:
|
||
|
// Value set
|
||
|
virtual void SetValue( const char *pValue ) = 0;
|
||
|
virtual void SetValue( float flValue ) = 0;
|
||
|
virtual void SetValue( int nValue ) = 0;
|
||
|
|
||
|
// Return name of command
|
||
|
virtual const char *GetName( void ) const = 0;
|
||
|
|
||
|
// Accessors.. not as efficient as using GetState()/GetInfo()
|
||
|
// if you call these methods multiple times on the same IConVar
|
||
|
virtual bool IsFlagSet( int nFlag ) const = 0;
|
||
|
};
|
||
|
|
||
|
|
||
|
#endif // ICONVAR_H
|