void doAttackBack() { if (!isAttacked() || getAggressionPlaceDistance() > PURSUE_RADIUS) { stateMachine.popState(); } else if (unit.arming.acquiring()) { unit.arming.attack(); } else if (unit.arming.scanning()) { unit.getMover().seek(unit.arming.getNearestScanned().getMover()); } else if (getValidNearest(getAttackers()) != null) { unit.getMover().seek(getValidNearest(getAttackers()).getMover()); } else { stateMachine.popState(); } }
void doAutoAttack(ArrayList<Unit> enemies) { if (isAttacked()) { stateMachine.pushState(ATTACK_BACK); } else if (getPostDistance() > PURSUE_RADIUS) { stateMachine.popState(); } else if (unit.arming.acquiring()) { unit.arming.attack(); } else if (unit.arming.scanning()) { unit.getMover().seek(unit.arming.getNearestScanned().getMover()); } else if (getValidNearest(enemies) != null) { unit.getMover().seek(getValidNearest(enemies).getMover()); } else { stateMachine.popState(); } }
void doMove() { post = unit.getPos(); if (!unit.getMover().hasDestination()) { stateMachine.popState(); } else { unit.getMover().followPath(); } }
void doReturnPost() { if (getPostDistance() < POST_TOLERANCE) { stateMachine.popState(); } else if (isAttacked()) { stateMachine.pushState(ATTACK_BACK); } else { unit.getMover().separate(); unit.getMover().seek(post); } }
void doWait(double duration) { // let allies pass unit.getMover().separate(); if (disturbTime == 0) { disturbTime = System.currentTimeMillis(); } else if (disturbTime + duration < System.currentTimeMillis()) { disturbTime = 0; stateMachine.popState(); } }
void doMoveAttack() { post = unit.getPos(); if (!unit.getMover().hasDestination()) { stateMachine.popState(); } else { if (unit.arming.scanning()) { stateMachine.pushState(AUTO_ATTACK, new ArrayList<>()); } else { unit.getMover().followPath(); } } }
void doAttack(Unit u) { if (u.destroyed()) { post = unit.getPos(); stateMachine.popState(); } else if (unit.arming.acquiring(u)) { unit.arming.attack(u); unit.getMover().setDestinationReached(); } else if (!unit.getMover().hasDestination()) { unit.getMover().seek(u.getMover()); } else { unit.getMover().followPath(u.getMover()); } }
void doStop() { if (unit.getMover().velocity.equals(Point3D.ORIGIN)) { stateMachine.popState(); } }