示例#1
0
 /// <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);
     }
 }
示例#2
0
 /// <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);
     }
 }
示例#3
0
        /// <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);
        }