string CTweakMetadataGameToken::GetValue(void) { string result = "Not found"; IGameToken* pGameToken = GetGameToken(); if (pGameToken) { // Should we treat this as a bool? if (eFDT_Bool == pGameToken->GetType() ) { bool value = false; pGameToken->GetValueAs(value); result = value ? "True" : "False"; } else { result = pGameToken->GetValueAsString(); } } return result; }
bool CTweakMetadataGameToken::ChangeValue(bool bIncrement) { // Get delta double fDelta = m_fDelta; if (!bIncrement) fDelta *= -1.0f; // Get and check CVAR IGameToken* pGameToken = GetGameToken(); if(!pGameToken) return false; string sValue; // Deal with appropriate type switch (pGameToken->GetType()) { case eFDT_Bool: { bool value = false; pGameToken->GetValueAs(value); TFlowInputData newValue; newValue.SetValueWithConversion(!value); pGameToken->SetValue(newValue); } break; case eFDT_Int: { int value = 0; pGameToken->GetValueAs(value); TFlowInputData newValue; newValue.SetValueWithConversion((int)ClampToLimits(value + fDelta)); pGameToken->SetValue(newValue); } break; case eFDT_Float: { float value = 0.0f; pGameToken->GetValueAs(value); TFlowInputData newValue; newValue.SetValueWithConversion((float)ClampToLimits(value + fDelta)); pGameToken->SetValue(newValue); } break; case eFDT_String: { // bools pretending to be strings string value = pGameToken->GetValueAsString(); if(!value.compareNoCase("true")) pGameToken->SetValueAsString("false"); else if(!value.compareNoCase("false")) pGameToken->SetValueAsString("true"); // other strings are non-obvious } break; default: break; } return true; }