public ControllableObject(Player owner, Zone initialBounds) : base(initialBounds) { Owner = owner; Owner.AddObject(this); currentTask = new IdleTask(); currentTask.Finished = true; }
public override void Update() { base.Update(); //i have tasks to perform... //decide what task to perform if (currentTask.Finished) { //wait until task is finished to change tasks //i have finished my current task if (Tasks.Count > 0) //if i have more tasks... currentTask = Tasks.Dequeue(); //start the next one else //if i am out of tasks... currentTask = new IdleTask(); //then i am idle } //do the current task currentTask.Update(this); }
public void SetTask(Task t) { if (Tasks.Count > 0) Tasks.Clear(); Tasks.Enqueue(t); }
public void EnqueueTask(Task t) { Tasks.Enqueue(t); }