Merge commit 'refs/pull/122/head' of https://github.com/coelckers/gzdoom

# Conflicts:
#	src/posix/cocoa/i_video.mm
#	src/posix/sdl/hardware.cpp
#	src/win32/hardware.cpp
This commit is contained in:
Rachael Alexanderson 2016-11-16 01:03:32 -05:00
commit 71b4f57058
7 changed files with 34 additions and 3 deletions

View file

@ -52,6 +52,10 @@
#include "v_video.h" #include "v_video.h"
#include "colormatcher.h" #include "colormatcher.h"
// [SP] Lets the player (arbitrator) choose whether to override GetCVar checks.
// Danger of desync? Can we just make it a client var? This probably *fixes* desyncs, actually...
CVAR(Bool, sv_overridegetcvar, true, CVAR_SERVERINFO | CVAR_GLOBALCONFIG | CVAR_ARCHIVE)
struct FLatchedValue struct FLatchedValue
{ {
FBaseCVar *Variable; FBaseCVar *Variable;

View file

@ -63,6 +63,7 @@ enum
CVAR_NOSAVE = 4096, // when used with CVAR_SERVERINFO, do not save var to savegame CVAR_NOSAVE = 4096, // when used with CVAR_SERVERINFO, do not save var to savegame
CVAR_MOD = 8192, // cvar was defined by a mod CVAR_MOD = 8192, // cvar was defined by a mod
CVAR_IGNORE = 16384,// do not send cvar across the network/inaccesible from ACS (dummy mod cvar) CVAR_IGNORE = 16384,// do not send cvar across the network/inaccesible from ACS (dummy mod cvar)
CVAR_OVERRIDEGET = 32768,// this cvar disguises its return value for GetCVAR
}; };
union UCVarValue union UCVarValue

View file

@ -4549,6 +4549,8 @@ static void DoSetCVar(FBaseCVar *cvar, int value, bool is_string, bool force=fal
} }
} }
EXTERN_CVAR(Bool, sv_overridegetcvar)
// Converts floating- to fixed-point as required. // Converts floating- to fixed-point as required.
static int DoGetCVar(FBaseCVar *cvar, bool is_string) static int DoGetCVar(FBaseCVar *cvar, bool is_string)
{ {
@ -4558,6 +4560,24 @@ static int DoGetCVar(FBaseCVar *cvar, bool is_string)
{ {
return 0; return 0;
} }
else if (sv_overridegetcvar && (cvar->GetFlags() & CVAR_OVERRIDEGET))
{
if (is_string)
{
val = cvar->GetGenericRepDefault(CVAR_String);
return GlobalACSStrings.AddString(val.String);
}
else if (cvar->GetRealType() == CVAR_Float)
{
val = cvar->GetGenericRepDefault(CVAR_Float);
return DoubleToACS(val.Float);
}
else
{
val = cvar->GetGenericRepDefault(CVAR_Int);
return val.Int;
}
}
else if (is_string) else if (is_string)
{ {
val = cvar->GetGenericRep(CVAR_String); val = cvar->GetGenericRep(CVAR_String);

View file

@ -621,6 +621,8 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, GetCrouchFactor)
// //
//========================================================================== //==========================================================================
EXTERN_CVAR(Bool, sv_overridegetcvar)
DEFINE_ACTION_FUNCTION_PARAMS(AActor, GetCVar) DEFINE_ACTION_FUNCTION_PARAMS(AActor, GetCVar)
{ {
if (numret > 0) if (numret > 0)
@ -634,6 +636,10 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, GetCVar)
{ {
ret->SetFloat(0); ret->SetFloat(0);
} }
else if (sv_overridegetcvar && (cvar->GetFlags() & CVAR_OVERRIDEGET))
{
ret->SetFloat(cvar->GetGenericRepDefault(CVAR_Float).Float);
}
else else
{ {
ret->SetFloat(cvar->GetGenericRep(CVAR_Float).Float); ret->SetFloat(cvar->GetGenericRep(CVAR_Float).Float);

View file

@ -135,7 +135,7 @@ CUSTOM_CVAR(Bool, vid_autoswitch, true, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_
static int s_currentRenderer; static int s_currentRenderer;
CUSTOM_CVAR(Int, vid_renderer, 0, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_NOINITCALL) CUSTOM_CVAR(Int, vid_renderer, 0, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_NOINITCALL | CVAR_OVERRIDEGET)
{ {
// 0: Software renderer // 0: Software renderer
// 1: OpenGL renderer // 1: OpenGL renderer

View file

@ -65,7 +65,7 @@ void I_RestartRenderer();
int currentrenderer; int currentrenderer;
// [ZDoomGL] // [ZDoomGL]
CUSTOM_CVAR (Int, vid_renderer, 0, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_NOINITCALL) CUSTOM_CVAR (Int, vid_renderer, 0, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_NOINITCALL | CVAR_OVERRIDEGET)
{ {
// 0: Software renderer // 0: Software renderer
// 1: OpenGL renderer // 1: OpenGL renderer

View file

@ -81,7 +81,7 @@ CUSTOM_CVAR(Bool, vid_used3d, true, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_NOIN
} }
// [ZDoomGL] // [ZDoomGL]
CUSTOM_CVAR (Int, vid_renderer, 0, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_NOINITCALL) CUSTOM_CVAR (Int, vid_renderer, 0, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_NOINITCALL | CVAR_OVERRIDEGET)
{ {
// 0: Software renderer // 0: Software renderer
// 1: OpenGL renderer // 1: OpenGL renderer