private void updateFightingSkill(IShip ship) { ICaptain captain = ship.getCaptian().get(); ship.getCaptian().get().updateFightWon(); if (ship.getCaptian().get().upgradeToNextFightingLevel() && ship.getOwner() instanceof IHumanPlayer) { DialogTemplateParameterSupplier parameterSupplier = new DialogTemplateParameterSupplier(new Object[]{ship.getCaptian().get().getName(), ship.getName(), captain.getSalary()}); DialogTemplate template = dialogTemplateFactory.createDialogTemplate(EDialogTemplateType.CAPTAIN_UPGRADE, parameterSupplier); DisplayTemplateMessage message = new DisplayTemplateMessage("ch.sahits.game.openpatrician.model.people.impl.CaptainState.captainUpgrade.title", template); TargetedEvent tagetDisplayMsg = new TargetedEvent((IHumanPlayer)ship.getOwner(), message); clientServerEventBus.post(tagetDisplayMsg); } }
@VisibleForTesting double calculatePropSurvivingAttack(IShip attackingShip, IShip defendingShip) { double captainCapabilities = 1; if (attackingShip.getCaptian().isPresent()) { captainCapabilities -= attackingShip.getCaptian().get().getFightSkillLevel() * 0.1; } if (defendingShip.getCaptian().isPresent()) { captainCapabilities += defendingShip.getCaptian().get().getFightSkillLevel() * 0.1; } return Math.min(Math.abs(rnd.nextGaussian()) * captainCapabilities, 1); }
@VisibleForTesting int calculateAgility(IShip ship) { int agility = shipFactory.getShipSpeed(ship.getShipType()); if (ship.getCaptian().isPresent()) { ICaptain captain = ship.getCaptian().get(); agility += (int)Math.rint(captain.getNavigationSkillLevel() * 0.7); } return agility; }
intro.setLayoutX(2*FRAME_BORDER); intro.setLayoutY(100); intro.setText(messageSource.getMessage("ch.sahits.game.openpatrician.display.dialog.TavernCaptainDialog.dialog1", new Object[]{captain.getName()}, locale.getCurrentLocal())); getContent().add(intro); pane1.setLayoutY(200); pane1.getColumnConstraints().addAll(new ColumnConstraints(100), new ColumnConstraints(50), new ColumnConstraints(50), new ColumnConstraints(50)); String template = messageSource.getMessage("ch.sahits.game.openpatrician.display.dialog.TavernCaptainDialog.age", new Object[]{captain.getAge()}, locale.getCurrentLocal()); DecoratedText age = decoratedTextFactory.createDecoratedText(template, new HashMap<>()); TradingSkillAlwaysVisible trading = new TradingSkillAlwaysVisible(); NavigationSkillAlwaysVisible navigation = new NavigationSkillAlwaysVisible(); FightingSkillAlwaysVisible fighting = new FightingSkillAlwaysVisible(); trading.setAmount(captain.getTradingSkillLevel()); navigation.setAmount(captain.getNavigationSkillLevel()); fighting.setAmount(captain.getFightSkillLevel()); pane1.add(age, 0, 0); pane1.add(trading, 1, 0); String loadedText = messageSource.getMessage("ch.sahits.game.openpatrician.display.dialog.TavernCaptainDialog.price", new Object[]{}, locale.getCurrentLocal()); HashMap<String, Object> parameters = new HashMap<>(); parameters.put("salary", captain.getSalary()); DecoratedText dt = decoratedTextFactory.createDecoratedText(loadedText, parameters);
if (optCaptain.isPresent()) { ICaptain captain = optCaptain.get(); discountBonus = calculateExperianceBonusFactor(captain.getTradingSkillLevel()); int profit = (int) Math.rint(costsWithoutDiscount * (discountBonus - 1)); captain.updateProfit(profit); if (captain.upgradeToNextTradeLevel()) { DialogTemplateParameterSupplier parameterSupplier = new DialogTemplateParameterSupplier(new Object[]{captain.getName(), vessel.getName(), captain.getSalary()}); DialogTemplate template = dialogTemplateFactory.createDialogTemplate(EDialogTemplateType.CAPTAIN_UPGRADE, parameterSupplier); DisplayTemplateMessage message = new DisplayTemplateMessage("ch.sahits.game.openpatrician.model.people.impl.CaptainState.captainUpgrade.title", template);
double distance = source.distance(destination); int km = (int) Math.rint(mapService.convertToDistenceInKm(distance)); captain.updatedSailedDistance(km); if (captain.upgradeToNextNavigationLevel() && vessel.getOwner() instanceof IHumanPlayer) { DialogTemplateParameterSupplier parameterSupplier = new DialogTemplateParameterSupplier(new Object[]{captain.getName(), vessel.getName(), captain.getSalary()}); DialogTemplate template = dialogTemplateFactory.createDialogTemplate(EDialogTemplateType.CAPTAIN_UPGRADE, parameterSupplier); DisplayTemplateMessage message = new DisplayTemplateMessage("ch.sahits.game.openpatrician.model.people.impl.CaptainState.captainUpgrade.title", template);
wageCosts -= sailorSalary; if (ship.getCaptian().isPresent()) { wageCosts -= ship.getCaptian().get().getSalary(); } else if (sailorSalary > 0) { wageCosts -= dailySailorCost;
@VisibleForTesting double calculateAccuracy(List<IShip> shipsOnTurn) { double accuracy = 0.7; double captainAccuracy = 0; int nbCaptains = 0; for (IShip ship : shipsOnTurn) { if (ship.getCaptian().isPresent()) { nbCaptains++; captainAccuracy += ship.getCaptian().get().getFightSkillLevel(); } } if (nbCaptains > 0) { captainAccuracy = captainAccuracy / (nbCaptains*10.0); } return accuracy + captainAccuracy; }
@VisibleForTesting int calculateShipStrength(IShip ship) { int strength = shipStrenghtService.calculateShipsWeaponsStrength(ship); if (ship.getCaptian().isPresent()) { ICaptain captain = ship.getCaptian().get(); strength += captain.getFightSkillLevel()*2; } return strength; }