From 2cc6f4378565d9634f9f89f0508f4017c4828440 Mon Sep 17 00:00:00 2001 From: TheSaminator Date: Mon, 4 Jul 2022 18:33:11 -0400 Subject: [PATCH] Add total fleet strength calculation --- .../starshipfights/campaign/fleet_presence.kt | 3 +++ .../net/starshipfights/campaign/star_systems.kt | 5 ++++- .../net/starshipfights/campaign/campaign_ui.kt | 17 +++++++++++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/commonMain/kotlin/net/starshipfights/campaign/fleet_presence.kt b/src/commonMain/kotlin/net/starshipfights/campaign/fleet_presence.kt index 926e8af..822775c 100644 --- a/src/commonMain/kotlin/net/starshipfights/campaign/fleet_presence.kt +++ b/src/commonMain/kotlin/net/starshipfights/campaign/fleet_presence.kt @@ -47,6 +47,9 @@ data class FleetPresence( val admiralIsFemale: Boolean, val admiralRank: AdmiralRank, ) { + val pointValue: Int + get() = ships.values.sumOf { it.pointCost } + val admiralFullName: String get() = "${admiralRank.getDisplayName(owner)} $admiralName" } diff --git a/src/commonMain/kotlin/net/starshipfights/campaign/star_systems.kt b/src/commonMain/kotlin/net/starshipfights/campaign/star_systems.kt index c237444..9c7afa3 100644 --- a/src/commonMain/kotlin/net/starshipfights/campaign/star_systems.kt +++ b/src/commonMain/kotlin/net/starshipfights/campaign/star_systems.kt @@ -28,7 +28,10 @@ data class StarSystem( val position: Position, val radius: Double, val bodies: Map, CelestialObject> -) +) { + val totalFleetStrength: Int + get() = fleets.values.sumOf { it.pointValue } +} @Serializable data class WarpLane( diff --git a/src/jsMain/kotlin/net/starshipfights/campaign/campaign_ui.kt b/src/jsMain/kotlin/net/starshipfights/campaign/campaign_ui.kt index bc629cb..2be1410 100644 --- a/src/jsMain/kotlin/net/starshipfights/campaign/campaign_ui.kt +++ b/src/jsMain/kotlin/net/starshipfights/campaign/campaign_ui.kt @@ -203,6 +203,19 @@ object CampaignUI { +" system" } } + p { + style = "text-align:center" + +when (system.bodies.values.filterIsInstance().size) { + 1 -> "Unary star system" + 2 -> "Binary star system" + 3 -> "Trinary star system" + 0 -> "Rogue planet system" + else -> "Multiple star system" + } + val planets = system.bodies.values.filterIsInstance() + val habitablePlanets = planets.filter { it.type == PlanetType.TERRESTRIAL } + +" with ${planets.size} planets, ${habitablePlanets.size} of them habitable" + } p { style = "text-align:center" +(system.holder?.loyalties?.first()?.getDefiniteShortName()?.let { "Controlled by $it" } ?: "Wilderness") @@ -213,6 +226,10 @@ object CampaignUI { img(alt = it.displayName, src = it.flagUrl) { style = "width:4em;height:2.5em" } } } + p { + style = "text-align:center" + +"${system.totalFleetStrength} fleet strength" + } selectedSystemIndicators[selection.id]?.visible = true visibleSelectedSystemIndicators += selection.id -- 2.25.1