/** * Handle the event for the finished repair. * @param event repair has finished */ @Subscribe public void handleRepairFinished(RepairFinishedEvent event) { if (handlePirateShip(event.getShip())) { INavigableVessel vessel = event.getShip(); Point2D destination = mapService.getRandomPointAtSeaNear(vessel.getLocation()); seafaringService.travelFromCity(vessel, destination); vessel.togglePirateFlag(); } }
/** * 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.
public void handleRepairPirateShip(ShipEntersPortEvent event) { if (handlePirateShip(event.getShip())) { // repair the ship or group INavigableVessel vessel = event.getShip(); ICity city = event.getCity(); IShipyard shipyard = city.getCityState().getShipyardState(); if (vessel instanceof IShip) { shipyardEngine.repairPirateShip(shipyard, (IShip) vessel); } else if (vessel instanceof IShipGroup) { shipyardEngine.repair(shipyard, (IShipGroup)vessel); } else { logger.warn("Can only repair pirate ships and pirate ship groups."); } } }
public void handleShipPositionUpdate(ShipPositionUpdateEvent event) { INavigableVessel vessel = event.getShip(); if (handlePirateShip(vessel)) {