@Subscribe public void handlePirateDefeated(ShipAttackEvent event) { INavigableVessel vessel = event.getAttackedShip(); INavigableVessel attackingShip = event.getAttackingShip(); updateReputationDueToPirateDefeat(vessel, attackingShip); } @Subscribe
@Subscribe public void handleShipAttack(ShipAttackEvent event) { if (event.getAttackedShip().equals(ship)) { state.incAttackCounter(); } } }
@VisibleForTesting void postAttackOutcome(List<IShip> attackingShips, List<IShip> defendingShips, List<IShip> defeatedDefendingShips, List<IShip> defeatedAttackingShips, INavigableVessel attackingVessel, INavigableVessel defendingVessel) { if (defendingShips.size() == defeatedDefendingShips.size()) { clientServerEventBus.post(new ShipAttackEvent(defendingVessel, attackingVessel)); if (attackingVessel.getPirateFlag()) { IShipOwner owner = attackingVessel.getOwner(); String name = owner.getName() + " " + owner.getLastName(); String titleKey = "ch.sahits.game.openpatrician.engine.sea.SeaFightService.eventvideo.title"; Object[] titleParams = new Object[]{}; DisplayEventVideo event = DisplayEventVideo.builder() .mediaType(EEventMediaType.PIRATE_ATTACK) .durationInSeconds(23) .titleKey(titleKey) .titleParams(titleParams) .descriptionKey("ch.sahits.game.openpatrician.engine.sea.SeaFightService.eventvideo.message") .descriptionParams(new Object[]{name}) .build(); for (IPlayer player : players ) { if (player instanceof IHumanPlayer) { clientServerEventBus.post(new TargetedEvent((IHumanPlayer) player, event)); } } } } if (attackingShips.size() == defeatedAttackingShips.size()) { clientServerEventBus.post(new ShipDefenseEvent(defendingVessel, attackingVessel)); } }
/** * Check if the destroyed ship was a pirate ship that belongs to an alderman task. * @param event ship attack */ public void checkPirateKilledAldermanTask(ShipAttackEvent event) { if (event.getAttackedShip().getOwner() instanceof ISeaPirate) { IAldermanOffice office = getAldermanOffice(); for (Iterator<IAcceptedAldermanTask> iterator = office.getWorkedOnTasks().iterator(); iterator.hasNext(); ) { IAcceptedAldermanTask task = iterator.next(); if (task.getTask() instanceof IHuntPirate) { IHuntPirate concreteTask = (IHuntPirate) task.getTask(); if (concreteTask.getPirate().equals(event.getAttackedShip().getOwner())) { if (date.getCurrentDate().isBefore(task.getDeadline())) { for (ICity iCity : map.getCities()) { iCity.getReputation(task.getPlayer()).update(15); } } iterator.remove(); } } } } }
/** * Handling ships attacks. * @param event of a ship attack */ @Subscribe public void handleShipAttack(ShipAttackEvent event) { IShipOwner attackedOwner = event.getAttackedShip().getOwner(); IShipOwner attackingOwner = event.getAttackingShip().getOwner(); if (attackedOwner != null && attackedOwner.equals(opponent) && attackingOwner != null && attackingOwner.equals(player)) { clientServerEventBus.unregister(this); if (order != null) { clientServerEventBus.unregister(order); } } }}
/** * Handle the ships attak * @param event ship attack event */ @Subscribe public void handleShipAttack(ShipAttackEvent event) { if (deadline.isAfter(date.getCurrentDate())) { IShipOwner attackedOwner = event.getAttackedShip().getOwner(); IShipOwner attackingOwner = event.getAttackingShip().getOwner(); if (attackedOwner != null && attackedOwner.equals(opponent) && attackingOwner != null && attackingOwner.equals(player)) { execute(); unregisterEventBus(); } } else { destroy(); unregisterEventBus(); } } @Override