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); }
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); }; }
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); }
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); }