/** * Handle the even when a new pirate becomes available. * @param pirateEvent new pirate emerged */ @Subscribe public void handleNewPirate(NewPirateEvent pirateEvent) { IShip ship = (IShip) pirateEvent.getPirate().getShip(); Point2D adjustedSource = aStarHeuristicProvider.findClosest(ship.getLocation()); ship.setLocation(adjustedSource); selectDestination(pirateEvent.getPirate()); }
/** * Ship has reached it's destination, select a new one. * @param event ship arrives at destination */ @Subscribe public void handleShipReachesDestination(ShipArrivesAtDestinationEvent event) { INavigableVessel vessel = event.getShip(); if (handlePirateShip(vessel)) { int damageInv = vessel.getDamage(); if (damageInv < 20) { selectDestination((ISeaPirate) vessel.getOwner()); } else { sendForRepairs(vessel); } } } /** * Select a new destination for the pirate.