From 977b81f8303e3907fe82d506f30bf8b1888ee2b9 Mon Sep 17 00:00:00 2001 From: TheSaminator Date: Mon, 4 Jul 2022 14:30:51 -0400 Subject: [PATCH] Add admiral names --- .../starshipfights/campaign/fleet_presence.kt | 15 ++++-- .../net/starshipfights/game/admiralty.kt | 51 +++++++++++++++++++ .../starshipfights/campaign/campaign_ui.kt | 7 ++- .../starshipfights/campaign/cluster_test.kt | 17 +++++-- 4 files changed, 80 insertions(+), 10 deletions(-) diff --git a/src/commonMain/kotlin/net/starshipfights/campaign/fleet_presence.kt b/src/commonMain/kotlin/net/starshipfights/campaign/fleet_presence.kt index dc0308c..926e8af 100644 --- a/src/commonMain/kotlin/net/starshipfights/campaign/fleet_presence.kt +++ b/src/commonMain/kotlin/net/starshipfights/campaign/fleet_presence.kt @@ -2,9 +2,7 @@ package net.starshipfights.campaign import kotlinx.serialization.Serializable import net.starshipfights.data.Id -import net.starshipfights.game.Faction -import net.starshipfights.game.FactionFlavor -import net.starshipfights.game.Ship +import net.starshipfights.game.* val Faction.allegiences: Set get() = FactionFlavor.values().filter { this in it.loyalties }.toSet() @@ -43,5 +41,12 @@ val FactionFlavor.loyalties: List data class FleetPresence( val name: String, val owner: FactionFlavor, - val ships: Map, Ship> -) + val ships: Map, Ship>, + + val admiralName: String, + val admiralIsFemale: Boolean, + val admiralRank: AdmiralRank, +) { + val admiralFullName: String + get() = "${admiralRank.getDisplayName(owner)} $admiralName" +} diff --git a/src/commonMain/kotlin/net/starshipfights/game/admiralty.kt b/src/commonMain/kotlin/net/starshipfights/game/admiralty.kt index 62dcd70..3024efc 100644 --- a/src/commonMain/kotlin/net/starshipfights/game/admiralty.kt +++ b/src/commonMain/kotlin/net/starshipfights/game/admiralty.kt @@ -90,6 +90,57 @@ fun AdmiralRank.getDisplayName(faction: Faction) = when (faction) { } } +private val AdmiralRank.tylanDisplayName: String + get() = when (this) { + AdmiralRank.REAR_ADMIRAL -> "Toukas Vjargardisrar" + AdmiralRank.VICE_ADMIRAL -> "Toukas Vpursar" + AdmiralRank.ADMIRAL -> "Toukas" + AdmiralRank.HIGH_ADMIRAL -> "Toukas Maenar" + AdmiralRank.LORD_ADMIRAL -> "Hipratoukas" + } + +private val AdmiralRank.olympianDisplayName: String + get() = when (this) { + AdmiralRank.REAR_ADMIRAL -> "Centurio Postremus" + AdmiralRank.VICE_ADMIRAL -> "Centurio Vicarius" + AdmiralRank.ADMIRAL -> "Centurio Astronauticus" + AdmiralRank.HIGH_ADMIRAL -> "Legatus Astronauticus" + AdmiralRank.LORD_ADMIRAL -> "Dux Astronauticus" + } + +private val AdmiralRank.texandrianDisplayName: String + get() = when (this) { + AdmiralRank.REAR_ADMIRAL -> "Konteradmiral" + AdmiralRank.VICE_ADMIRAL -> "Vizeadmiral" + AdmiralRank.ADMIRAL -> "Admiral" + AdmiralRank.HIGH_ADMIRAL -> "Generaladmiral" + AdmiralRank.LORD_ADMIRAL -> "Großadmiral" + } + +fun AdmiralRank.getDisplayName(factionFlavor: FactionFlavor) = when (factionFlavor) { + FactionFlavor.MECHYRDIA -> getDisplayName(Faction.MECHYRDIA) + FactionFlavor.TYLA -> tylanDisplayName + FactionFlavor.OLYMPIA -> olympianDisplayName + FactionFlavor.TEXANDRIA -> texandrianDisplayName + FactionFlavor.NDRC -> getDisplayName(Faction.NDRC) + FactionFlavor.CCC -> getDisplayName(Faction.NDRC) + FactionFlavor.MJOLNIR_ENERGY -> getDisplayName(Faction.NDRC) + FactionFlavor.MASRA_DRAETSEN -> getDisplayName(Faction.MASRA_DRAETSEN) + FactionFlavor.AEDON_CULTISTS -> getDisplayName(Faction.MASRA_DRAETSEN) + FactionFlavor.FERTHLON_EXILES -> getDisplayName(Faction.MASRA_DRAETSEN) + FactionFlavor.RES_NOSTRA -> olympianDisplayName + FactionFlavor.CORSAIRS -> olympianDisplayName + FactionFlavor.FELINAE_FELICES -> getDisplayName(Faction.FELINAE_FELICES) + FactionFlavor.ISARNAREYKK -> getDisplayName(Faction.ISARNAREYKK) + FactionFlavor.SWARTAREYKK -> getDisplayName(Faction.ISARNAREYKK) + FactionFlavor.THEUDAREYKK -> getDisplayName(Faction.ISARNAREYKK) + FactionFlavor.STAHLAREYKK -> getDisplayName(Faction.ISARNAREYKK) + FactionFlavor.LYUDAREYKK -> getDisplayName(Faction.ISARNAREYKK) + FactionFlavor.NEUIA_FULKREYKK -> getDisplayName(Faction.ISARNAREYKK) + FactionFlavor.CORVUS_CLUSTER_VESTIGIUM -> getDisplayName(Faction.VESTIGIUM) + FactionFlavor.COLEMAN_SF_BASE_VESTIGIUM -> getDisplayName(Faction.VESTIGIUM) +} + @Serializable data class InGameUser( val id: Id, diff --git a/src/jsMain/kotlin/net/starshipfights/campaign/campaign_ui.kt b/src/jsMain/kotlin/net/starshipfights/campaign/campaign_ui.kt index 1f86767..bc629cb 100644 --- a/src/jsMain/kotlin/net/starshipfights/campaign/campaign_ui.kt +++ b/src/jsMain/kotlin/net/starshipfights/campaign/campaign_ui.kt @@ -10,6 +10,7 @@ import kotlinx.html.* import kotlinx.html.dom.append import kotlinx.html.dom.create import kotlinx.html.js.div +import kotlinx.html.js.p import net.starshipfights.data.Id import net.starshipfights.game.* import org.w3c.dom.HTMLDivElement @@ -258,7 +259,11 @@ object CampaignUI { } p { style = "text-align:center" - +"${fleet.ships.size} ships" + +"Commanded by ${fleet.admiralFullName}" + } + p { + style = "text-align:center" + +"${fleet.ships.values.sumOf { it.pointCost }} fleet strength" } selectedFleetIndicators[selection.pointer]?.visible = true diff --git a/src/jvmMain/kotlin/net/starshipfights/campaign/cluster_test.kt b/src/jvmMain/kotlin/net/starshipfights/campaign/cluster_test.kt index 08c24f9..f99ab33 100644 --- a/src/jvmMain/kotlin/net/starshipfights/campaign/cluster_test.kt +++ b/src/jvmMain/kotlin/net/starshipfights/campaign/cluster_test.kt @@ -1,7 +1,11 @@ package net.starshipfights.campaign import net.starshipfights.data.Id +import net.starshipfights.data.admiralty.AdmiralNameFlavor +import net.starshipfights.data.admiralty.AdmiralNames +import net.starshipfights.game.AdmiralRank import net.starshipfights.game.FactionFlavor +import kotlin.random.Random fun StarClusterView.testPostProcess(): StarClusterView { val flavors = FactionFlavor.values().toList().shuffled() @@ -14,12 +18,17 @@ fun StarClusterView.testPostProcess(): StarClusterView { val ownedSystems = (systems.toList().shuffled() zip ownerFlavors).associate { (systemWithId, flavor) -> val (systemId, system) = systemWithId - val numOfFleets = (0..1).random() + (0..1).random() + 1 + val numOfFleets = (0..2).random() + (0..2).random() + 1 val fleets = (1..numOfFleets).associate { i -> + val admiralIsFemale = flavor == FactionFlavor.FELINAE_FELICES || Random.nextBoolean() + Id("${systemId.id}-fleet-$i") to FleetPresence( - "Test Fleet $i", - flavor, - emptyMap() + name = "Test Fleet $i", + owner = flavor, + ships = emptyMap(), + admiralName = AdmiralNames.randomName(AdmiralNameFlavor.forFactionFlavor(flavor).random(), admiralIsFemale), + admiralIsFemale = admiralIsFemale, + admiralRank = AdmiralRank.values().random() ) } -- 2.25.1