/// <summary> /// Creates new infinity walking task. /// </summary> /// <param name="holder">The holder of this task</param> /// <param name="positionCyrcle">Set of positions the inner move-tasks will lead toward</param> public InfinityWalkingTask(Human holder, IEnumerable <PositionInTown> positionCyrcle) : base(holder) { moveTasks = new Queue <MoveTask>(); foreach (PositionInTown pos in positionCyrcle) { MoveTask mt = new MoveTask(holder, pos); moveTasks.Enqueue(mt); } }
/// <summary> /// Creates new infinity walking task. /// </summary> /// <param name="holder">The holder of this task</param> /// <param name="positionCyrcle">Set of positions the inner move-tasks will lead toward</param> public InfinityWalkingTask(Human holder, IEnumerable<PositionInTown> positionCyrcle) : base(holder) { moveTasks = new Queue<MoveTask>(); foreach (PositionInTown pos in positionCyrcle) { MoveTask mt = new MoveTask(holder, pos); moveTasks.Enqueue(mt); } }
/// <summary> /// Update task logic - leads the human according the current inner move-task. /// </summary> /// <param name="gameTime"></param> public override void Update(GameTime gameTime) { MoveTask moveTask = moveTasks.Peek(); moveTask.Update(gameTime); if (moveTask.IsComplete()) { moveTasks.Dequeue(); moveTasks.Enqueue(moveTask); } base.Update(gameTime); }