private boolean validePathPicked() { List<Point> path = unit.getMoveBehavior().getPath(); if (path == null) { return true; } Point lastPointPath = path.get(path.size() - 1); if (AStarMoveBehavior.getManhattanDistance(unit.getPos(), attackedUnit.getPos()) <= (AStarMoveBehavior.getManhattanDistance(lastPointPath, attackedUnit.getPos()))) { return false; } return true; }
private void findAndAttackNearbyEnemy() { Unit candidatUnit = null; for (Unit curUnit : rtsWorld.getUnits()) { if (curUnit.getPlayer() != unit.getPlayer()) { if (AStarMoveBehavior.getManhattanDistance(unit.getPos(), curUnit.getPos()) < getFindEnemyDistance() && (candidatUnit == null || AStarMoveBehavior.getManhattanDistance(unit.getPos(), curUnit.getPos()) < AStarMoveBehavior.getManhattanDistance( unit.getPos(), candidatUnit.getPos()))) { candidatUnit = curUnit; } /* if (getEuclideDistance(unit.getPos(), curUnit.getPos()) < getFindEnemyDistance() && (candidatUnit == null || getEuclideDistance(unit.getPos(), curUnit.getPos()) < (getEuclideDistance(unit.getPos(), candidatUnit.getPos())))) { candidatUnit = curUnit; }*/ } } if (candidatUnit != null) attackedUnit = candidatUnit; }