private void UpdateValue()
{
bool clamped = false;
if((_flags & CvarFlags.Bool) == CvarFlags.Bool)
{
bool tmpValue;
int tmpValue2;
if(bool.TryParse(_value, out tmpValue) == false)
{
// try to parse as an int to handle 1/0
if(int.TryParse(_value, out tmpValue2) == true)
{
tmpValue = (tmpValue2 == 0) ? false : true;
}
}
_intValue = (tmpValue == true) ? 1 : 0;
_floatValue = _intValue;
if((_intValue == 0) || (_intValue == 1))
{
_valueString = tmpValue.ToString();
_value = _valueString;
}
}
else if((_flags & CvarFlags.Integer) == CvarFlags.Integer)
{
int.TryParse(_value, out _intValue);
if(_valueMin < _valueMax)
{
if(_intValue < _valueMin)
{
_intValue = (int) _valueMin;
clamped = true;
}
else if(_intValue > _valueMax)
{
_intValue = (int) _valueMax;
clamped = true;
}
}
int tmpValue;
if((clamped == true) || (int.TryParse(_value, out tmpValue) == false) || (_value.IndexOf('.') > 0))
{
_valueString = _intValue.ToString();
_value = _valueString;
}
_floatValue = _intValue;
}
else if((_flags & CvarFlags.Float) == CvarFlags.Float)
{
float.TryParse(_value, out _floatValue);
if(_valueMin < _valueMax)
{
if(_floatValue < _valueMin)
{
_floatValue = _valueMin;
clamped = true;
}
else if(_floatValue > _valueMax)
{
_floatValue = _valueMax;
clamped = true;
}
}
float tmpValue;
if((clamped == true) || (float.TryParse(_value, out tmpValue) == false))
{
_valueString = _floatValue.ToString();
_value = _valueString;
}
_intValue = (int) _floatValue;
}
else
{
if(_valueStrings != null)
{
_intValue = 0;
int count = _valueStrings.Length;
for(int i = 0; i < count; i++)
{
if(_valueString.ToLower() == _valueStrings[i].ToLower())
{
_intValue = i;
break;
}
}
_valueString = _valueStrings[_intValue];
_value = _valueString;
_floatValue = _intValue;
}
else if(_valueString.Length < 32)
{
float.TryParse(_value, out _floatValue);
_intValue = (int) _floatValue;
}
else
{
_floatValue = 0;
_intValue = 0;
}
}
}