Esempio n. 1
0
        public void TaskStack_TwoTasksThenOne()
        {
            var taskStack = new MTaskStack();
            var num       = new MInt(5);
            var a         = new MTask((t) => num.Value == 4);
            var b         = new MTask((t) => num.Value == 3);
            var c         = new MTask((t) => num.Value == 2);

            c.OnComplete += () => num.Value = 0;
            taskStack.PushQueue(a);
            taskStack.PushQueue(b);

            num.Value--;
            taskStack.Evaluate();

            Assert.AreSame(b, taskStack.Current);

            num.Value--;
            taskStack.Evaluate();
            taskStack.Evaluate();

            taskStack.PushQueue(c);
            taskStack.Evaluate();
            num.Value = 2;
            taskStack.Evaluate();

            Assert.AreEqual(0, num.Value);
            Assert.AreEqual(0, taskStack.Count);
        }
Esempio n. 2
0
        protected override void Awake()
        {
            base.Awake();
            _renderer = GetComponent <MeshRenderer>();

            _tasks = new MTaskStack();

            _red   = new SimpleState(FSM, "red");
            _green = new SimpleState(FSM, "green");
            _blue  = new SimpleState(FSM, "blue");

            FSM.SetInitialState(_red);

            _red.OnEnter += state =>
            {
                _renderer.sharedMaterial.color = Color.red;
                current = "red";
            };
            _red.OnUpdate += state => { transform.Rotate(0, 45 * Time.deltaTime, 0); };

            _green.OnEnter += state =>
            {
                _renderer.sharedMaterial.color = Color.green;
                current = "green";
            };
            _green.OnUpdate += state => { transform.Rotate(45 * Time.deltaTime, 0, 0); };

            _blue.OnEnter += state =>
            {
                _renderer.sharedMaterial.color = Color.blue;
                current = "blue";
            };
            _blue.OnUpdate += state => { transform.Rotate(0, 0, 45 * Time.deltaTime); };
        }
Esempio n. 3
0
        public void TaskStack_SingleCompleted()
        {
            var taskStack = new MTaskStack();
            var num       = new MInt(5);
            var a         = new MTask((t) => num.Value == 4);

            a.OnComplete += () => num.Value = 0;
            taskStack.PushQueue(a);
            num.Value--;
            taskStack.Evaluate();

            Assert.That(num.Value == 0);
            Assert.AreEqual(0, taskStack.Count);
        }
Esempio n. 4
0
        public void TaskStack_ThreeQueuedThreeCapacity()
        {
            var taskStack = new MTaskStack(3);
            var num       = new MInt(5);
            var a         = new MTask((t) => num.Value == 4);
            var b         = new MTask((t) => num.Value == 3);
            var c         = new MTask((t) => num.Value == 2);

            c.OnComplete += () => num.Value = 0;
            taskStack.PushQueue(a);
            taskStack.PushQueue(b);
            taskStack.PushQueue(c);

            Assert.AreSame(c, taskStack.Next);

            Assert.AreEqual(3, taskStack.Count);
        }