Resolved health bar overflow problems

This commit is contained in:
Yair Morgenstern
2023-01-15 07:37:59 +02:00
parent b5281e20c9
commit c956293fec
2 changed files with 14 additions and 22 deletions

View File

@ -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 }

View File

@ -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