This repository has been archived on 2024-06-13. You can view files and clone it, but cannot push or open issues or pull requests.
nekohook/modules/source2013/sdk/public/tier1/convar_serverbounded.h
2020-08-04 13:13:01 -04:00

52 lines
2.1 KiB
C++

//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose: Helper class for cvars that have restrictions on their value.
//
//=============================================================================//
#ifndef CONVAR_SERVERBOUNDED_H
#define CONVAR_SERVERBOUNDED_H
#ifdef _WIN32
#pragma once
#endif
// This class is used to virtualize a ConVar's value, so the client can restrict
// its value while connected to a server. When using this across modules, it's
// important to dynamic_cast it to a ConVar_ServerBounded or you won't get the
// restricted value.
//
// NOTE: FCVAR_USERINFO vars are not virtualized before they are sent to the
// server
// (we have no way to detect if the virtualized value would change), so
// if you want to use a bounded cvar's value on the server, you must
// rebound it the same way the client does.
class ConVar_ServerBounded : public ConVar {
public:
ConVar_ServerBounded(char const *pName, char const *pDefaultValue,
int flags, char const *pHelpString)
: ConVar(pName, pDefaultValue, flags, pHelpString) {}
ConVar_ServerBounded(char const *pName, char const *pDefaultValue,
int flags, char const *pHelpString,
FnChangeCallback_t callback)
: ConVar(pName, pDefaultValue, flags, pHelpString, callback) {}
ConVar_ServerBounded(char const *pName, char const *pDefaultValue,
int flags, char const *pHelpString, bool bMin,
float fMin, bool bMax, float fMax)
: ConVar(pName, pDefaultValue, flags, pHelpString, bMin, fMin, bMax,
fMax) {}
// You must implement GetFloat.
virtual float GetFloat() const = 0;
// You can optionally implement these.
virtual int GetInt() const { return (int)GetFloat(); }
virtual bool GetBool() const { return (GetInt() != 0); }
// Use this to get the underlying cvar's value.
float GetBaseFloatValue() const { return ConVar::GetFloat(); }
};
#endif // CONVAR_SERVERBOUNDED_H