예제 #1
0
            public virtual VSMXBaseObject call(VSMXBaseObject[] arguments)
            {
                VSMXBaseObject returnValue = null;

                try
                {
                    object result = method.invoke(@object, (object[])arguments);
                    if (result is VSMXBaseObject)
                    {
                        returnValue = (VSMXBaseObject)result;
                    }
                }
                catch (System.ArgumentException e)
                {
                    Console.WriteLine("call", e);
                }
                catch (IllegalAccessException e)
                {
                    Console.WriteLine("call", e);
                }
                catch (InvocationTargetException e)
                {
                    Console.WriteLine("call", e);
                }
                return(returnValue);
            }
예제 #2
0
 public PlayAnimAction(BaseAnim[] children, int index, int Length, VSMXBaseObject @object)
 {
     this.children = children;
     this.index    = index;
     this.Length   = Length;
     this.@object  = @object;
 }
예제 #3
0
 public virtual void clearInterval(VSMXBaseObject @object, VSMXBaseObject id)
 {
     //if (log.DebugEnabled)
     {
         Console.WriteLine(string.Format("Timer.clearInterval {0:D}", id.getPropertyValue(0).IntValue));
     }
 }
예제 #4
0
        private VSMXBaseObject setInterval(VSMXBaseObject @object, VSMXBaseObject function, VSMXBaseObject interval, params VSMXBaseObject[] parameters)
        {
            //if (log.DebugEnabled)
            {
                Console.WriteLine(string.Format("Timer.setInterval function={0}, interval={1:D}, numberOfParameters={2:D}", function, interval.IntValue, parameters.Length));
                for (int i = 0; i < parameters.Length; i++)
                {
                    Console.WriteLine(string.Format("Timer.setInterval param{0:D}={1}", i, parameters[i]));
                }
            }

            int  id       = currentTimerId++;
            long schedule = Scheduler.Now + interval.IntValue * 1000;

            TimerAction timerAction = new TimerAction(this, id, @object, function, parameters);

            timers[id] = timerAction;
            Scheduler.Instance.addAction(schedule, timerAction);

            // setInterval seems to return an array object. Not sure how to fill it.
            VSMXArray result = new VSMXArray(interpreter, 1);

            result.setPropertyValue(0, new VSMXNumber(interpreter, id));

            return(result);
        }
예제 #5
0
        private BasePositionObject getFirstButton(VSMXBaseObject @object)
        {
            if (@object.hasPropertyValue(childrenName))
            {
                VSMXBaseObject children      = @object.getPropertyValue(childrenName);
                IList <string> childrenNames = children.PropertyNames;
                foreach (string childName in childrenNames)
                {
                    VSMXBaseObject child = children.getPropertyValue(childName);
                    if (child is VSMXNativeObject)
                    {
                        BaseNativeObject childObject = ((VSMXNativeObject)child).Object;
                        if (childObject is UButtonObject)
                        {
                            return((BasePositionObject)childObject);
                        }
                    }
                    BasePositionObject button = getFirstButton(child);
                    if (button != null)
                    {
                        return(button);
                    }
                }
            }

            return(null);
        }
예제 #6
0
 public virtual void add(VSMXBaseObject @object)
 {
     if (@object is VSMXNativeObject)
     {
         add(((VSMXNativeObject)@object).Object);
     }
 }
예제 #7
0
 public virtual void remove(VSMXBaseObject @object)
 {
     if (@object is VSMXNativeObject)
     {
         remove(((VSMXNativeObject)@object).Object);
     }
 }
예제 #8
0
        public virtual void play(VSMXBaseObject thisObject, VSMXBaseObject @object)
        {
            //if (log.DebugEnabled)
            {
                Console.WriteLine(string.Format("BaseAnim.play {0}, {1}", thisObject, @object));
            }

            if (thisObject.hasPropertyValue(Resource.childrenName))
            {
                VSMXBaseObject children        = thisObject.getPropertyValue(Resource.childrenName);
                IList <string> names           = children.PropertyNames;
                BaseAnim[]     baseAnims       = new BaseAnim[names.Count + 1];
                int            numberBaseAnims = 0;
                baseAnims[numberBaseAnims++] = this;
                foreach (string name in names)
                {
                    VSMXBaseObject child = children.getPropertyValue(name);
                    if (child is VSMXNativeObject)
                    {
                        BaseNativeObject baseNativeObject = ((VSMXNativeObject)child).Object;
                        if (baseNativeObject is BaseAnim)
                        {
                            baseAnims[numberBaseAnims++] = (BaseAnim)baseNativeObject;
                        }
                    }
                }

                if (numberBaseAnims > 0)
                {
                    Scheduler.addAction(new PlayAnimAction(baseAnims, 0, numberBaseAnims, @object));
                }
            }
        }
예제 #9
0
        protected internal virtual long doPlayReference(ObjectType @ref)
        {
            BasePositionObject positionObject = @ref.PositionObject;

            if (positionObject == null)
            {
                return(0);
            }

            VSMXBaseObject @object = positionObject.Object;
            long           delay   = doPlayReference(@object);

            if (@object.hasPropertyValue(Resource.childrenName))
            {
                VSMXBaseObject children = @object.getPropertyValue(Resource.childrenName);
                IList <string> names    = children.PropertyNames;
                if (names != null)
                {
                    foreach (string name in names)
                    {
                        VSMXBaseObject child = children.getPropertyValue(name);
                        delay = System.Math.Max(delay, doPlayReference(child));
                    }
                }
            }

            return(delay);
        }
예제 #10
0
 public TimerAction(Timer outerInstance, int id, VSMXBaseObject @object, VSMXBaseObject function, VSMXBaseObject[] parameters)
 {
     this.outerInstance = outerInstance;
     this.id            = id;
     this.@object       = @object;
     this.function      = function;
     this.parameters    = parameters;
 }
예제 #11
0
        protected internal virtual long doPlay(VSMXBaseObject @object)
        {
            //if (log.DebugEnabled)
            {
                Console.WriteLine(string.Format("BaseAnim play on {0}", @object));
            }

            return(0);
        }
예제 #12
0
        public virtual VSMXBaseObject Int(VSMXBaseObject @object, VSMXBaseObject value)
        {
            //if (log.DebugEnabled)
            {
                Console.WriteLine(string.Format("Int: {0}", value));
            }

            return(new VSMXNumber(@object.Interpreter, value.IntValue));
        }
예제 #13
0
 public override void call(VSMXCallState callState)
 {
     arguments[0] = callState.ThisObject;
     for (int i = 1; i < arguments.Length; i++)
     {
         arguments[i] = callState.getLocalVar(i);
     }
     returnValue = nativeFunction.call(arguments);
 }
예제 #14
0
        public override bool identity(VSMXBaseObject value)
        {
            if (value is VSMXNumber)
            {
                return(FloatValue == value.FloatValue);
            }

            return(base.identity(value));
        }
예제 #15
0
        private long doPlayReference(VSMXBaseObject @object)
        {
            if (@object is VSMXNativeObject)
            {
                return(doPlayReference(((VSMXNativeObject)@object).Object));
            }

            return(0);
        }
예제 #16
0
        public override VSMXBaseObject createVSMXObject(VSMXInterpreter interpreter, VSMXBaseObject parent, RCOEntry entry)
        {
            VSMXBaseObject @object = base.createVSMXObject(interpreter, parent, entry);

            VSMXObject root = new VSMXObject(interpreter, null);

            @object.setPropertyValue(Resource.rootName, root);

            return(root);
        }
예제 #17
0
        public virtual VSMXBaseObject isNaN(VSMXBaseObject @object, VSMXBaseObject value)
        {
            //if (log.DebugEnabled)
            {
                Console.WriteLine(string.Format("isNaN: {0}", value));
            }

            bool isNaN = float.IsNaN(value.FloatValue);

            return(VSMXBoolean.getValue(isNaN));
        }
예제 #18
0
 private void write(VSMXBaseObject @object, params VSMXBaseObject[] strings)
 {
     for (int i = 0; i < strings.Length; i++)
     {
         writeBuffer.Append(strings[i].StringValue);
     }
     //if (log.DebugEnabled)
     {
         Console.WriteLine(string.Format("write: '{0}'", writeBuffer.ToString()));
     }
 }
예제 #19
0
        public virtual VSMXBaseObject activate(VSMXBaseObject @object)
        {
            //if (log.DebugEnabled)
            {
                Console.WriteLine(string.Format("PageObject.activate"));
            }

            trigger(onActivate);

            return(@object);
        }
예제 #20
0
        public virtual void close(VSMXBaseObject @object)
        {
            //if (log.DebugEnabled)
            {
                Console.WriteLine(string.Format("PageObject.close"));
            }

            if (display != null)
            {
                hide(@object.getPropertyValue(rootName));
            }
        }
예제 #21
0
        private void onTimer(int id, VSMXBaseObject @object, VSMXBaseObject function, VSMXBaseObject[] parameters)
        {
            //if (log.DebugEnabled)
            {
                Console.WriteLine(string.Format("Timer.onTimer id={0:D}, object={1}, function={2}, parameters={3}", id, @object, function, parameters));
            }

            if (function is VSMXFunction)
            {
                interpreter.interpretFunction((VSMXFunction)function, @object, parameters);
            }
        }
예제 #22
0
 private void display(VSMXBaseObject @object)
 {
     if (@object.hasPropertyValue(childrenName))
     {
         VSMXBaseObject children      = @object.getPropertyValue(childrenName);
         IList <string> childrenNames = children.PropertyNames;
         foreach (string childName in childrenNames)
         {
             VSMXBaseObject child = children.getPropertyValue(childName);
             display.add(child);
             display(child);
         }
     }
 }
예제 #23
0
		public virtual VSMXBaseObject createVSMXObject(VSMXInterpreter interpreter, VSMXBaseObject parent, RCOEntry entry)
		{
			VSMXNativeObject @object = new VSMXNativeObject(interpreter, this);
			Object = @object;
			entry.vsmxBaseObject = @object;
			if (!string.ReferenceEquals(entry.label, null))
			{
				name = entry.label;
				@object.setPropertyValue("name", new VSMXString(interpreter, entry.label));
				parent.setPropertyValue(entry.label, @object);
			}

			if (entry.parent != null && entry.parent.vsmxBaseObject is VSMXNativeObject)
			{
				Parent = ((VSMXNativeObject) entry.parent.vsmxBaseObject).Object;
			}

			return @object;
		}
예제 #24
0
        public virtual VSMXBaseObject open(VSMXBaseObject @object)
        {
            //if (log.DebugEnabled)
            {
                Console.WriteLine(string.Format("PageObject.open {0}, children: {1}", this, @object.getPropertyValue(rootName).getPropertyValue(childrenName)));
            }

            trigger(onInit);

            if (display != null)
            {
                display(@object.getPropertyValue(rootName));

                BasePositionObject button = getFirstButton(@object.getPropertyValue(rootName));
                if (button != null)
                {
                    button.setFocus();
                }
            }

            return(@object);
        }
예제 #25
0
 public virtual VSMXBaseObject setInterval(VSMXBaseObject @object, VSMXBaseObject function, VSMXBaseObject interval, VSMXBaseObject param1)
 {
     return(setInterval(@object, function, interval, new VSMXBaseObject[] { param1 }));
 }
예제 #26
0
 public virtual VSMXBaseObject setInterval(VSMXBaseObject @object, VSMXBaseObject function, VSMXBaseObject interval)
 {
     return(setInterval(@object, function, interval, new VSMXBaseObject[0]));
 }
예제 #27
0
        public virtual INativeFunction getNativeFunction(VSMXBaseObject @object, string name, int numberOfArguments)
        {
            INativeFunction nativeFunction = getNativeFunctionInterface(@object, name, numberOfArguments);

            return(nativeFunction);
        }
예제 #28
0
 public virtual VSMXBaseObject setInterval(VSMXBaseObject @object, VSMXBaseObject function, VSMXBaseObject interval, VSMXBaseObject param1, VSMXBaseObject param2, VSMXBaseObject param3, VSMXBaseObject param4, VSMXBaseObject param5, VSMXBaseObject param6)
 {
     return(setInterval(@object, function, interval, new VSMXBaseObject[] { param1, param2, param3, param4, param5, param6 }));
 }
예제 #29
0
 public override bool Equals(VSMXBaseObject value)
 {
     // null == undefined
     return(this == value || value == VSMXNull.singleton);
 }
예제 #30
0
 public virtual void writeln(VSMXBaseObject @object, VSMXBaseObject s1)
 {
     writeln(@object, new VSMXBaseObject[] { s1 });
 }