Esempio n. 1
0
 public static void SetVar(string name, int i1, int i2, Value val)
 {
     if (DeclaredVariables.Contains(name))
     {
         if (ScopedVariables.ContainsKey(name))
         {
             if (ScopedVariables[name].IsReadOnly)
             {
                 throw new ProgramError(Error.CannotAssign);
             }
             ScopedVariables[name][i1, i2] = val;
         }
         else
         {
             ScopedVariables.Add(name, new Variable(i1, i2, val));
         }
     }
     else if (GlobalVariableExists(name))
     {
         var globalvar = GetGlobalVariable(name);
         if (globalvar.IsReadOnly)
         {
             throw new ProgramError(Error.CannotAssign);
         }
         globalvar[i1, i2] = val;
     }
     else if (Current != null)
     {
         if (Current.VariableExists(name))
         {
             var instancevar = Current.Variable(name);
             if (instancevar.IsReadOnly)
             {
                 throw new ProgramError(Error.CannotAssign);
             }
             instancevar[i1, i2] = val;
         }
         else
         {
             Current.SetLocalVar(name, val);
         }
     }
 }
Esempio n. 2
0
        public static GetSetValue Variable(int instance, string name)
        {
            switch ((InstanceTarget)instance)
            {
            case InstanceTarget.Self:
                return(Current.Variable(name));

            case InstanceTarget.Other:
                return(Other.Variable(name));

            case InstanceTarget.All:
                return(Instances.Where(e => e.VariableExists(name)).Select(e => e.Variable(name)).FirstOrDefault());

            case InstanceTarget.Noone:
                return(null);

            case InstanceTarget.Global:
                return(GetGlobalVariable(name));

            default:
                return(GetInstance(instance).Variable(name));
            }
        }