From c956293fec36d76a8b90c199bfaa6034742ea192 Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Sun, 15 Jan 2023 07:37:59 +0200 Subject: [PATCH] Resolved health bar overflow problems --- .../ui/worldscreen/bottombar/BattleTable.kt | 18 +++++++++--------- .../bottombar/BattleTableHelpers.kt | 18 +++++------------- 2 files changed, 14 insertions(+), 22 deletions(-) diff --git a/core/src/com/unciv/ui/worldscreen/bottombar/BattleTable.kt b/core/src/com/unciv/ui/worldscreen/bottombar/BattleTable.kt index 2fc7ae7af3..85ff4e962a 100644 --- a/core/src/com/unciv/ui/worldscreen/bottombar/BattleTable.kt +++ b/core/src/com/unciv/ui/worldscreen/bottombar/BattleTable.kt @@ -230,22 +230,22 @@ class BattleTable(val worldScreen: WorldScreen): Table() { } add(defeatedText.toLabel()) } else { - 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) val maxRemainingLifeAttacker = max(attackerHealth-minDamageToAttacker, 0) + val defenderHealth = defender.getHealth() + val minRemainingLifeDefender = max(defenderHealth-maxDamageToDefender, 0) + val maxRemainingLifeDefender = max(defenderHealth-minDamageToDefender, 0) + + add(getHealthBar(attacker.getMaxHealth(), attacker.getHealth(), maxRemainingLifeAttacker, minRemainingLifeAttacker)) + add(getHealthBar(defender.getMaxHealth(), defender.getHealth(), maxRemainingLifeDefender, minRemainingLifeDefender)).row() + if (minRemainingLifeAttacker == attackerHealth) add(attackerHealth.toLabel()) else if (maxRemainingLifeAttacker == minRemainingLifeAttacker) add("$attackerHealth → $maxRemainingLifeAttacker".toLabel()) else add("$attackerHealth → $minRemainingLifeAttacker-$maxRemainingLifeAttacker".toLabel()) - val defenderHealth = defender.getHealth() - val minRemainingLifeDefender = max(defenderHealth-maxDamageToDefender, 0) - val maxRemainingLifeDefender = max(defenderHealth-minDamageToDefender, 0) - if (minRemainingLifeDefender == maxRemainingLifeDefender) add("$defenderHealth → $maxRemainingLifeDefender".toLabel()) else add("$defenderHealth → $minRemainingLifeDefender-$maxRemainingLifeDefender".toLabel()) } @@ -393,8 +393,8 @@ class BattleTable(val worldScreen: WorldScreen): Table() { row().pad(2f) } - add(getHealthBar(attacker.getHealth(), attacker.getMaxHealth(), 0,0, true)) - add(getHealthBar(attacker.getMaxHealth(), attacker.getMaxHealth(), 0,0, false)) + add(getHealthBar(attacker.getMaxHealth(), attacker.getHealth(), attacker.getHealth(),attacker.getHealth())) + add(getHealthBar(attacker.getMaxHealth(), attacker.getMaxHealth(), attacker.getMaxHealth(), attacker.getMaxHealth())) 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 aeac8f6d63..e16e05d074 100644 --- a/core/src/com/unciv/ui/worldscreen/bottombar/BattleTableHelpers.kt +++ b/core/src/com/unciv/ui/worldscreen/bottombar/BattleTableHelpers.kt @@ -63,7 +63,7 @@ object BattleTableHelpers { )) } - fun getHealthBar(currentHealth: Int, maxHealth: Int, maxDamage: Int, minDamage: Int, leftToRight:Boolean): Table { + fun getHealthBar(maxHealth: Int, currentHealth: Int, maxRemainingHealth: Int, minRemainingHealth: Int): Table { val healthBar = Table() val totalWidth = 100f fun addHealthToBar(image: Image, amount:Int) { @@ -81,21 +81,13 @@ object BattleTableHelpers { val maybeDamagedHealth = ImageGetter.getDot(Color.ORANGE) - val remainingHealth = currentHealth - minDamage val remainingHealthDot = ImageGetter.getWhiteDot() remainingHealthDot.color = Color.GREEN - 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) - } + addHealthToBar(ImageGetter.getDot(Color.BLACK), maxHealth - currentHealth) + addHealthToBar(damagedHealth, currentHealth - maxRemainingHealth) + addHealthToBar(maybeDamagedHealth, maxRemainingHealth - minRemainingHealth) + addHealthToBar(remainingHealthDot, minRemainingHealth) healthBar.pack() return healthBar