From 1f0fd6ab1feac10dff342e4e1f78d02a360ed667 Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Sat, 14 Jan 2023 20:13:43 +0200 Subject: [PATCH] "Street fighter" style of health bars --- .../ui/worldscreen/bottombar/BattleTable.kt | 8 ++++---- .../bottombar/BattleTableHelpers.kt | 18 +++++++++++++----- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/core/src/com/unciv/ui/worldscreen/bottombar/BattleTable.kt b/core/src/com/unciv/ui/worldscreen/bottombar/BattleTable.kt index 5ed2ca8b68..b0c72a160a 100644 --- a/core/src/com/unciv/ui/worldscreen/bottombar/BattleTable.kt +++ b/core/src/com/unciv/ui/worldscreen/bottombar/BattleTable.kt @@ -230,8 +230,8 @@ class BattleTable(val worldScreen: WorldScreen): Table() { } add(defeatedText.toLabel()) } else { - add(getHealthBar(attacker.getHealth(), attacker.getMaxHealth(), maxDamageToAttacker, minDamageToAttacker)) - add(getHealthBar(defender.getHealth(), defender.getMaxHealth(), maxDamageToDefender, minDamageToDefender)).row() + add(getHealthBar(attacker.getHealth(), attacker.getMaxHealth(), maxDamageToAttacker, minDamageToAttacker, true)) + add(getHealthBar(defender.getHealth(), defender.getMaxHealth(), maxDamageToDefender, minDamageToDefender, false)).row() val attackerHealth = attacker.getHealth() val minRemainingLifeAttacker = max(attackerHealth-maxDamageToAttacker, 0) @@ -393,8 +393,8 @@ class BattleTable(val worldScreen: WorldScreen): Table() { row().pad(2f) } - add(getHealthBar(attacker.getHealth(), attacker.getMaxHealth(), 0,0)) - add(getHealthBar(attacker.getMaxHealth(), attacker.getMaxHealth(), 0,0)) + add(getHealthBar(attacker.getHealth(), attacker.getMaxHealth(), 0,0, true)) + add(getHealthBar(attacker.getMaxHealth(), attacker.getMaxHealth(), 0,0, false)) row().pad(5f) val attackButton = "Air Sweep".toTextButton().apply { color = Color.RED } diff --git a/core/src/com/unciv/ui/worldscreen/bottombar/BattleTableHelpers.kt b/core/src/com/unciv/ui/worldscreen/bottombar/BattleTableHelpers.kt index b8e6322d87..aeac8f6d63 100644 --- a/core/src/com/unciv/ui/worldscreen/bottombar/BattleTableHelpers.kt +++ b/core/src/com/unciv/ui/worldscreen/bottombar/BattleTableHelpers.kt @@ -63,14 +63,13 @@ object BattleTableHelpers { )) } - fun getHealthBar(currentHealth: Int, maxHealth: Int, maxDamage: Int, minDamage: Int): Table { + fun getHealthBar(currentHealth: Int, maxHealth: Int, maxDamage: Int, minDamage: Int, leftToRight:Boolean): Table { val healthBar = Table() val totalWidth = 100f fun addHealthToBar(image: Image, amount:Int) { val width = totalWidth * amount / maxHealth healthBar.add(image).size(width.coerceIn(0f, totalWidth),3f) } - addHealthToBar(ImageGetter.getDot(Color.BLACK), maxHealth - currentHealth) val damagedHealth = ImageGetter.getDot(Color.FIREBRICK) if (UncivGame.Current.settings.continuousRendering) { @@ -79,15 +78,24 @@ object BattleTableHelpers { Actions.color(Color.BLACK, 0.7f), Actions.color(Color.FIREBRICK, 0.7f) ))) } - addHealthToBar(damagedHealth, maxDamage - minDamage) val maybeDamagedHealth = ImageGetter.getDot(Color.ORANGE) - addHealthToBar(maybeDamagedHealth, minDamage) val remainingHealth = currentHealth - minDamage val remainingHealthDot = ImageGetter.getWhiteDot() remainingHealthDot.color = Color.GREEN - addHealthToBar(remainingHealthDot ,remainingHealth) + + if (leftToRight) { + addHealthToBar(ImageGetter.getDot(Color.BLACK), maxHealth - currentHealth) + addHealthToBar(damagedHealth, maxDamage - minDamage) + addHealthToBar(maybeDamagedHealth, minDamage) + addHealthToBar(remainingHealthDot, remainingHealth) + } else { + addHealthToBar(remainingHealthDot, remainingHealth) + addHealthToBar(maybeDamagedHealth, minDamage) + addHealthToBar(damagedHealth, maxDamage - minDamage) + addHealthToBar(ImageGetter.getDot(Color.BLACK), maxHealth - currentHealth) + } healthBar.pack() return healthBar