示例#1
0
 protected jbt.execution.core.ExecutionTask.Status internalTick() {
   Log.debug(this.getClass().getCanonicalName(), "ticked");
   GDXPath objective = (GDXPath) getContext().getVariable(AIFieldEnum.OBJECTIVE.name());
   NPC self = (NPC) getContext().getVariable(AIFieldEnum.SELF.name());
   if (objective != null && !objective.getNodes().isEmpty()) {
     Vector2 target = objective.getNodes().get(0);
     getContext().setVariable("CurrentObjectiveTarget", new float[] {target.x, target.y});
     if (objective.getNodes().get(0).dst(self.getPosition()) < 1) objective.getNodes().remove(0);
     if (objective.getNodes().isEmpty()) {
       switch (objective.getCompletionCriteria()) {
         case END:
           getContext().clearVariable(AIFieldEnum.OBJECTIVE.name());
           break;
         case REPEAT:
           getContext().setVariable(AIFieldEnum.OBJECTIVE.name(), self.getPath().clone());
           break;
         case REVERSE:
           boolean reversed =
               getContext().getVariable("PATH_REVERSED") == null
                   || (boolean) getContext().getVariable("PATH_REVERSED");
           GDXPath clone = (GDXPath) self.getPath().clone();
           if (!reversed) clone.reverse();
           getContext().setVariable("PATH_REVERSED", !reversed);
           getContext().setVariable(AIFieldEnum.OBJECTIVE.name(), clone);
           break;
       }
     }
     return Status.SUCCESS;
   } else {
     getContext().clearVariable("CurrentObjectiveTarget");
     self.stopMovement();
     return Status.FAILURE;
   }
 }
示例#2
0
 protected jbt.execution.core.ExecutionTask.Status internalTick() {
   WorldManager world = (WorldManager) getContext().getVariable(AIFieldEnum.WORLD.name());
   NPC self = (NPC) getContext().getVariable(AIFieldEnum.SELF.name());
   VisibilityReturnStruct struct = world.isVisible(self);
   getContext().setVariable(NPC.AIFieldEnum.VISIBLE.name(), struct);
   return Status.SUCCESS;
 }