private bool ParseRegisterEntry(string name, idScriptParser parser)
{
string work = name.ToLower();
idWindowVariable var = GetVariableByName(work, false);
if(var != null)
{
RegisterType regType;
// check builtins first
if(_builtInVariables.TryGetValue(work, out regType) == true)
{
_regList.AddRegister(work, regType, parser, this, var);
return true;
}
}
// not predefined so just read the next token and add it to the state
idToken token;
if((token = parser.ReadToken()) != null)
{
if(var != null)
{
var.Set(token.ToString());
return true;
}
switch(token.Type)
{
case TokenType.Number:
if((token.SubType & TokenSubType.Integer) == TokenSubType.Integer)
{
var = new idWinInteger(work);
var.Set(token.ToString());
}
else if((token.SubType & TokenSubType.Float) == TokenSubType.Float)
{
var = new idWinFloat(work);
var.Set(token.ToString());
}
else
{
var = new idWinString(work);
var.Set(token.ToString());
}
_definedVariables.Add(var);
break;
default:
var = new idWinString(work);
var.Set(token.ToString());
_definedVariables.Add(var);
break;
}
}
return true;
}