/** * Create an alderman task to hunt a pirate, while ignoring the ones that are already worked on. * @param office aderman office * @return pirate hunter task */ public Optional<IHuntPirate> createPirateHuntEledermanTask(IAldermanOffice office) { List<IAcceptedAldermanTask> workedOnTasks = office.getWorkedOnTasks(); List<ISeaPirate> tasks = new ArrayList<>(); for (IAcceptedAldermanTask workedOnTask : workedOnTasks) { if (workedOnTask.getTask() instanceof IHuntPirate) { tasks.add(((IHuntPirate)workedOnTask.getTask()).getPirate()); } } List<ISeaPirate> pirates = new ArrayList<>(pirateState.getFreePirates()); Collections.shuffle(pirates); for (ISeaPirate pirate : pirates) { if (tasks.contains(pirate)) { continue; } int duration = 60; IHuntPirate hunt = (IHuntPirate) context.getBean("huntPirate", duration, pirate); return Optional.of(hunt); } return Optional.empty(); }
boolean huntPirate = false; boolean capturePirateNest = false; List<ISeaPirate> pirates = new ArrayList<>(pirateState.getFreePirates()); for (Iterator<IAldermanTask> iterator = tasks.iterator(); iterator.hasNext(); ) { IAldermanTask task = iterator.next();
/** * Periodically check if there is a free pirate and if not, create one. * @param event weekly update */ @Subscribe public void handleWeeklyUpdate(PeriodicalTimeWeekEndUpdate event) { // Check if there is a free pirate and if not spawn a new one if (piratesState.getFreePirates().isEmpty()) { IShip ship = createInitialPiratesShip(); String name = firstNameLoader.getRandomName()+" "+lastNameLoader.getRandomName(); ISeaPirate pirate = peopleFactory.createNewPirate(name, ship); ship.setOwner(pirate); piratesState.add(pirate); } } /**