From e96ed6bf8db6bd35ee9cd488d5338691078549d4 Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Sat, 23 Apr 2016 22:30:08 -0500 Subject: [PATCH] Add FBaseCVar::GetHumanString() - For most cvars, this is equivalent to calling GetGenericRep() to get a string. - For float cvars, it uses %g instead of %H, because %H is generally more information than is needed. --- src/c_cvars.cpp | 19 +++++++++++++++++-- src/c_cvars.h | 2 ++ src/c_dispatch.cpp | 3 +-- src/d_netinfo.cpp | 3 +-- src/menu/optionmenuitems.h | 6 +++--- 5 files changed, 24 insertions(+), 9 deletions(-) diff --git a/src/c_cvars.cpp b/src/c_cvars.cpp index 7c5394e4f..36e3d576b 100644 --- a/src/c_cvars.cpp +++ b/src/c_cvars.cpp @@ -132,6 +132,11 @@ FBaseCVar::~FBaseCVar () } } +const char *FBaseCVar::GetHumanString(int precision) const +{ + return GetGenericRep(CVAR_String).String; +} + void FBaseCVar::ForceSet (UCVarValue value, ECVarType type, bool nouserinfosend) { DoSet (value, type); @@ -750,6 +755,16 @@ ECVarType FFloatCVar::GetRealType () const return CVAR_Float; } +const char *FFloatCVar::GetHumanString(int precision) const +{ + if (precision < 0) + { + precision = 6; + } + mysnprintf(cstrbuf, countof(cstrbuf), "%.*g", precision, Value); + return cstrbuf; +} + UCVarValue FFloatCVar::GetGenericRep (ECVarType type) const { return FromFloat (Value, type); @@ -1675,7 +1690,7 @@ void FBaseCVar::ListVars (const char *filter, bool plain) if (!(flags & CVAR_UNSETTABLE)) { ++count; - Printf ("%s : %s\n", var->GetName(), var->GetGenericRep(CVAR_String).String); + Printf ("%s : %s\n", var->GetName(), var->GetHumanString()); } } else @@ -1692,7 +1707,7 @@ void FBaseCVar::ListVars (const char *filter, bool plain) flags & CVAR_MOD ? 'M' : ' ', flags & CVAR_IGNORE ? 'X' : ' ', var->GetName(), - var->GetGenericRep(CVAR_String).String); + var->GetHumanString()); } } var = var->m_Next; diff --git a/src/c_cvars.h b/src/c_cvars.h index 9d000e3c0..59a3208d1 100644 --- a/src/c_cvars.h +++ b/src/c_cvars.h @@ -108,6 +108,7 @@ public: virtual ECVarType GetRealType () const = 0; + virtual const char *GetHumanString(int precision=-1) const; virtual UCVarValue GetGenericRep (ECVarType type) const = 0; virtual UCVarValue GetFavoriteRep (ECVarType *type) const = 0; @@ -268,6 +269,7 @@ public: virtual UCVarValue GetGenericRepDefault (ECVarType type) const; virtual UCVarValue GetFavoriteRepDefault (ECVarType *type) const; virtual void SetGenericRepDefault (UCVarValue value, ECVarType type); + const char *GetHumanString(int precision) const override; float operator= (float floatval) { UCVarValue val; val.Float = floatval; SetGenericRep (val, CVAR_Float); return floatval; } diff --git a/src/c_dispatch.cpp b/src/c_dispatch.cpp index bffdce15b..811052e1c 100644 --- a/src/c_dispatch.cpp +++ b/src/c_dispatch.cpp @@ -651,8 +651,7 @@ void C_DoCommand (const char *cmd, int keynum) } else { // Get the variable's value - UCVarValue val = var->GetGenericRep (CVAR_String); - Printf ("\"%s\" is \"%s\"\n", var->GetName(), val.String); + Printf ("\"%s\" is \"%s\"\n", var->GetName(), var->GetHumanString()); } } else diff --git a/src/d_netinfo.cpp b/src/d_netinfo.cpp index 7a366e2d4..0b99fd73d 100644 --- a/src/d_netinfo.cpp +++ b/src/d_netinfo.cpp @@ -993,8 +993,7 @@ CCMD (playerinfo) if (pair->Key != NAME_Name && pair->Key != NAME_Team && pair->Key != NAME_Skin && pair->Key != NAME_Gender && pair->Key != NAME_PlayerClass) { - UCVarValue val = pair->Value->GetGenericRep(CVAR_String); - Printf("%20s: %s\n", pair->Key.GetChars(), val.String); + Printf("%20s: %s\n", pair->Key.GetChars(), pair->Value->GetHumanString()); } } if (argv.argc() > 2) diff --git a/src/menu/optionmenuitems.h b/src/menu/optionmenuitems.h index f810f788b..8a1840027 100644 --- a/src/menu/optionmenuitems.h +++ b/src/menu/optionmenuitems.h @@ -295,10 +295,10 @@ public: } else { - UCVarValue cv = mCVar->GetGenericRep(CVAR_String); + const char *cv = mCVar->GetHumanString(); for(unsigned i = 0; i < (*opt)->mValues.Size(); i++) { - if ((*opt)->mValues[i].TextValue.CompareNoCase(cv.String) == 0) + if ((*opt)->mValues[i].TextValue.CompareNoCase(cv) == 0) { Selection = i; break; @@ -995,7 +995,7 @@ public: if ( mCVar == NULL ) return ""; - return mCVar->GetGenericRep( CVAR_String ).String; + return mCVar->GetHumanString(); } virtual FString Represent()