Beispiel #1
0
 public override object CreateInstance(List<Elements.Value> parameters)
 {
     List<AbstractVisualClass> LayerGenerators = new List<AbstractVisualClass>();
     foreach (Elements.Value parameter in parameters) {
         LayerGenerators.Add((AbstractVisualClass)parameter.ObjectValue);
     }
     return new LayerClass(LayerGenerators);
 }
Beispiel #2
0
 public override object CreateNewInstance(List<Elements.Value> parameters)
 {
     ListFactory<Visual> layerObjects = new List<Visual>();
     foreach (Elements.Value parameter in parameters) {
         layerObjects.Add((Visual)parameter.ObjectValue);
     }
     return new LayerFactory(layerObjects);
 }
Beispiel #3
0
 public LayerGenerator(List<AbstractVisualClass> layerClasses)
 {
     List<AbstractVisualGenerator> LayerGeneratorsTemp = new List<AbstractVisualGenerator>();
     foreach (AbstractVisualClass obj in layerClasses)
     {
         LayerGeneratorsTemp.Add(obj.Object);
     }
     this.LayerGenerators = LayerGeneratorsTemp;
 }
Beispiel #4
0
 public Layer(List<Visual> layerClasses)
 {
     ListFactory<Sprite> layerObjectsTemp = new List<Sprite>();
     foreach (Visual obj in layerClasses)
     {
         layerObjectsTemp.Add(obj.Object);
     }
     this.layerObjects = layerObjectsTemp;
 }
Beispiel #5
0
        protected override Value Invoke()
        {
            if (objectVar != null && scope != null)
            {
                var values = new List<Value>();
                foreach (AbstractNode node in parameters)
                {
                    values.Add(node.Evaluate());
                }

                Value resolvedValue = scope.Resolve(objectVar);
                if (resolvedValue == null)
                {
                    throw new CompilerException(line, 211, objectVar);
                }
                if (resolvedValue.Type == ValType.Object)
                {
                    try
                    {
                        AbstractClass objectInstance = resolvedValue.ObjectValue;
                        return objectInstance.InvokeMethod(funcName, values);
                    }
                    catch (CompilerException ce)
                    {
                        if (ce.ErrorCode == 314)
                        {
                            if (GlobalMemory.Instance.IsFunctionKnown(funcName))
                            {
                                Function function = GlobalMemory.Instance.GetFunction(funcName, values);
                                if (function is UserFunction)
                                {
                                    GlobalMemory.Instance.AddCallToStack(new CallItem(funcName, Line));
                                    Value returnValue = ((UserFunction) function).Invoke(resolvedValue, values);
                                    GlobalMemory.Instance.PopLastCall();
                                    return returnValue;
                                }
                                else
                                {
                                    throw;
                                }
                            }
                            else
                            {
                                throw;
                            }
                        }
                        else
                        {
                            throw;
                        }
                    }
                }
                throw new CompilerException(line, 316, resolvedValue.TypeString);
            }
            else
            {
                var values = new List<Value>();
                foreach (AbstractNode node in parameters)
                {
                    values.Add(node.Evaluate());
                }

                Function function;
                if (LibraryManager.Instance.IsFunctionKnown(funcName))
                {
                    function = LibraryManager.Instance.GetFunction(funcName, values);
                    return function.Invoke(values);
                }
                else
                {
                    GlobalMemory.Instance.AddCallToStack(new CallItem(funcName, Line));
                    function = GlobalMemory.Instance.GetFunction(funcName, values);
                    Value returnValue = function.Invoke(values);
                    GlobalMemory.Instance.PopLastCall();
                    return returnValue;
                }
            }
        }