Ejemplo n.º 1
0
        public override CharacterTask.Task getCurrentTask(CharacterTaskTracker taskTracker)
        {
            if (travelAlongPath != null)
            {
                if (travelAlongPath.isUseable() && !travelAlongPath.isComplete())
                {
                    CharacterTask.Task task = travelAlongPath.getCurrentTask(taskTracker);
                    if (task.taskType == CharacterTask.Type.StepToBlock)
                    {
                        CharacterTask.StepToBlock stepTask = (CharacterTask.StepToBlock)task;
                        Vector3 stepGoal = stepTask.getGoalLoc().toWorldSpaceVector3() + new Vector3(.5f, 0, .5f);
                        stepGoal.Y = boat.getFootLocation().Y;
                        Vector3 newFootLoc = LinearLocationInterpolator.interpolate(boat.getFootLocation(), stepGoal, boat.getSpeed());
                        newFootLoc.Y = boat.getFootLocation().Y;
                        boat.setFootLocation(newFootLoc);
                        boat.setRotationWithGivenDeltaVec(stepGoal - boat.getFootLocation());
                        boat.setVelocity(new Vector3());


                        if (LinearLocationInterpolator.isLinearInterpolationComplete(boat.getFootLocation(),
                                                                                     stepGoal, boat.getSpeed()))
                        {
                            stepTask.taskWasCompleted();
                        }
                    }
                }
                else if (travelAlongPath.isComplete())
                {
                    travelAlongPath = null;
                }
            }

            return(new CharacterTask.CaptainBoat(boat));
        }
Ejemplo n.º 2
0
 public CompleteTaskJob(Character nWorker, CharacterTask.Task nTask)
 {
     task            = nTask;
     workerCharacter = nWorker;
 }