public void pushCodeGetCloser(MapLocation destination) throws GameActionException {
   if (NavSystem.navMode != NavMode.GETCLOSER || NavSystem.destination != destination) {
     NavSystem.setupGetCloser(destination);
   }
   if (rc.isActive()) {
     NavSystem.moveCloserFavorNoMines();
   }
 }
  /**
   * code to be used by capturers
   *
   * @throws GameActionException
   */
  private void captureCode() throws GameActionException {
    if (!unassigned) { // if assigned to something
      EncampmentJobSystem.updateJobTaken();
    }
    if (rc.isActive()) {
      if (rc.senseEncampmentSquare(currentLocation)
          && currentLocation.equals(EncampmentJobSystem.goalLoc)) {
        if (rc.getTeamPower() > rc.senseCaptureCost()) {
          rc.captureEncampment(EncampmentJobSystem.assignedRobotType);
        }
      } else {

        if (rc.senseNearbyGameObjects(Robot.class, 14, rc.getTeam().opponent()).length > 0) {
          unassigned = true;
          soldierState = SoldierState.FIGHTING;
        }

        if (NavSystem.navMode == NavMode.BFSMODE) {
          NavSystem.tryBFSNextTurn();
        } else if (NavSystem.navMode == NavMode.GETCLOSER) {
          NavSystem.tryMoveCloser();
        } else if (rc.getLocation().distanceSquaredTo(EncampmentJobSystem.goalLoc) <= 8) {
          NavSystem.setupGetCloser(EncampmentJobSystem.goalLoc);
          NavSystem.tryMoveCloser();
        } else {
          NavSystem.moveCloserFavorNoMines(EncampmentJobSystem.goalLoc);
          //					if (NavSystem.navMode == NavMode.NEUTRAL){
          //						NavSystem.setupSmartNav(EncampmentJobSystem.goalLoc);
          //						NavSystem.followWaypoints();
          //					} else {
          //						NavSystem.followWaypoints();
          //					}
        }
      }
    }
  }