From 8c434da46138e7a6aaacd44cbbc1556ee9fe9abe Mon Sep 17 00:00:00 2001 From: Mo Date: Sat, 3 Dec 2016 16:03:16 +0300 Subject: [PATCH] add intersected summ --- .../controllers/PowerPlayController.java | 26 +++++++++++++------ .../resources/lang/locale_en_US.properties | 4 +-- .../resources/lang/locale_ru_RU.properties | 4 +-- 3 files changed, 22 insertions(+), 12 deletions(-) diff --git a/client/src/main/java/ru/trader/controllers/PowerPlayController.java b/client/src/main/java/ru/trader/controllers/PowerPlayController.java index 8414349..f158940 100644 --- a/client/src/main/java/ru/trader/controllers/PowerPlayController.java +++ b/client/src/main/java/ru/trader/controllers/PowerPlayController.java @@ -30,6 +30,7 @@ import ru.trader.view.support.autocomplete.SystemsProvider; import java.util.Collection; import java.util.Collections; import java.util.Optional; +import java.util.Set; import java.util.stream.Collectors; public class PowerPlayController { @@ -204,7 +205,9 @@ public class PowerPlayController { String ccFormat = Localization.getString("powerplay.label.summcc"); String pwCCFormat = Localization.getString("powerplay.label.cc"); PowerStringConverter converter = new PowerStringConverter(); + Place hq = ModelFabric.get(hqSystem.orElse(null)); long[] contestedCc = new long[POWER.values().length]; + long[] intersectedCc = new long[POWER.values().length]; long[] totalCc = new long[POWER.values().length]; long contested = 0; long summCc = 0; @@ -213,27 +216,34 @@ public class PowerPlayController { summCc += cc; if (entry.getPower() == null || entry.getPowerState() == null) continue; if (entry.getPowerState() != POWER_STATE.NONE){ - contested += cc; + if (hq == null || !entry.getPowerState().isExploited() && !entry.getPowerState().isControl() + || entry.getPower() != hq.getPower()) { + contested += cc; + } + Set powers = entry.getControllingSystems().stream().map(Place::getPower).collect(Collectors.toSet()); if (entry.getPowerState() == POWER_STATE.CONTESTED){ - for (Place place : entry.getControllingSystems()){ - contestedCc[place.getPower().ordinal()] += cc; + for (POWER power : powers){ + contestedCc[power.ordinal()] += cc; } } else { + if (entry.getControllingSystems().size()>1){ + intersectedCc[entry.getPower().ordinal()] += cc; + } totalCc[entry.getPower().ordinal()] += cc; } } } double upkeep = 0; - if (hqSystem.isPresent() && starSystem != null){ - upkeep = starSystem.computeUpkeep(ModelFabric.get(hqSystem.get())); + if (hq != null && starSystem != null){ + upkeep = starSystem.computeUpkeep(hq); } StringBuilder builder = new StringBuilder(); - builder.append(String.format(ccFormat, summCc, contested, upkeep, summCc - contested - upkeep)); + builder.append(String.format(ccFormat, summCc, contested, summCc - contested, upkeep, summCc - contested - upkeep)); for (int i = 0; i < POWER.values().length; i++) { if (totalCc[i] > 0 || contestedCc[i] > 0){ builder.append("\n"); - builder.append(String.format(pwCCFormat, converter.toString(POWER.values()[i]), totalCc[i], contestedCc[i])); + builder.append(String.format(pwCCFormat, converter.toString(POWER.values()[i]), totalCc[i], contestedCc[i], intersectedCc[i])); } } return builder.toString(); @@ -459,7 +469,7 @@ public class PowerPlayController { currentUpkeep = new SimpleLongProperty(data.getStarSystem().getUpkeep()); upkeep = new SimpleDoubleProperty(hq != null ? data.getStarSystem().computeUpkeep(hq) : Double.NaN); income = new SimpleLongProperty(data.getStarSystem().getIncome()); - cc = new SimpleLongProperty(data.getStarSystem().computeCC(ModelFabric.get(profile).getCCgroups())); + cc = new SimpleLongProperty(data.getStarSystem().computeCC()); } private String getControllingString(Collection controllings) { diff --git a/client/src/main/resources/lang/locale_en_US.properties b/client/src/main/resources/lang/locale_en_US.properties index 025abfd..54df4a4 100644 --- a/client/src/main/resources/lang/locale_en_US.properties +++ b/client/src/main/resources/lang/locale_en_US.properties @@ -285,8 +285,8 @@ powerplay.label.controlling=Controlled systems: powerplay.label.power.systems=Systems of Power: powerplay.label.power.state=State: powerplay.label.populationSumm=Summ populations: -powerplay.label.cc=%s: %4d CC Contested: %4d CC -powerplay.label.summcc=Summ: %6d CC Contested: %6d CC Upkeep: %6.1f CC Total: %6.1f CC +powerplay.label.cc=%s: %4d CC Contested: %4d CC Intersected: %4d CC +powerplay.label.summcc=Summ: %5d CC Contested: %5d CC Income: %5d CC Upkeep: %5.0f CC Total: %5.0f CC powerplay.result.title=Analyze result powerplay.column.intersecting=Intersect powerplay.column.intersectCount=Intersect count diff --git a/client/src/main/resources/lang/locale_ru_RU.properties b/client/src/main/resources/lang/locale_ru_RU.properties index cf5e45c..65e2b6c 100644 --- a/client/src/main/resources/lang/locale_ru_RU.properties +++ b/client/src/main/resources/lang/locale_ru_RU.properties @@ -285,8 +285,8 @@ powerplay.label.controlling=\u041A\u043E\u043D\u0442\u0440\u043E\u043B\u043B\u04 powerplay.label.power.systems=C\u0438\u0441\u0442\u0435\u043C\u044B \u0441\u0438\u043B\u044B: powerplay.label.power.state=\u0421\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u0435: powerplay.label.populationSumm=\u0421\u0443\u043C\u043C\u0430 \u043D\u0430\u0441\u0435\u043B\u0435\u043D\u0438\u044F: -powerplay.label.cc=%s: %4d \u041A\u041A \u041E\u0441\u043F\u0430\u0440\u0438\u0432\u0430\u0435\u043C\u044B\u0445: %4d \u041A\u041A -powerplay.label.summcc=\u0421\u0443\u043C\u043C\u0430: %6d \u041A\u041A \u041E\u0441\u043F\u0430\u0440\u0438\u0432\u0430\u0435\u043C\u044B\u0445: %6d \u041A\u041A \u0420\u0430\u0441\u0445\u043E\u0434\u044B: %6.1f \u041A\u041A \u0418\u0442\u043E\u0433\u043E: %6.1f \u041A\u041A +powerplay.label.cc=%s: %4d \u041A\u041A \u041E\u0441\u043F\u0430\u0440\u0438\u0432\u0430\u0435\u043C\u044B\u0445: %4d \u041A\u041A \u041F\u0435\u0440\u0435\u0441\u0435\u043A\u0430\u044E\u0449\u0438\u0445\u0441\u044F: %4d \u041A\u041A +powerplay.label.summcc=\u0421\u0443\u043C\u043C\u0430: %5d \u041A\u041A \u041E\u0441\u043F\u0430\u0440\u0438\u0432\u0430\u0435\u043C\u044B\u0445: %5d \u041A\u041A \u0414\u043E\u0445\u043E\u0434: %5d \u041A\u041A \u0420\u0430\u0441\u0445\u043E\u0434\u044B: %5.0f \u041A\u041A \u0418\u0442\u043E\u0433\u043E: %5.0f \u041A\u041A powerplay.result.title=\u0420\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u044B \u0430\u043D\u0430\u043B\u0438\u0437\u0430 powerplay.column.intersecting=\u041F\u0435\u0440\u0435\u0441\u0435\u043A\u0430\u0435\u0442\u0441\u044F \u0441 powerplay.column.intersectCount=\u041F\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043D\u0438\u0439