mirror of
https://github.com/yairm210/Unciv.git
synced 2025-07-13 17:28:57 +07:00
Resolved health bar overflow problems
This commit is contained in:
@ -230,22 +230,22 @@ class BattleTable(val worldScreen: WorldScreen): Table() {
|
|||||||
}
|
}
|
||||||
add(defeatedText.toLabel())
|
add(defeatedText.toLabel())
|
||||||
} else {
|
} 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 attackerHealth = attacker.getHealth()
|
||||||
val minRemainingLifeAttacker = max(attackerHealth-maxDamageToAttacker, 0)
|
val minRemainingLifeAttacker = max(attackerHealth-maxDamageToAttacker, 0)
|
||||||
val maxRemainingLifeAttacker = max(attackerHealth-minDamageToAttacker, 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())
|
if (minRemainingLifeAttacker == attackerHealth) add(attackerHealth.toLabel())
|
||||||
else if (maxRemainingLifeAttacker == minRemainingLifeAttacker) add("$attackerHealth → $maxRemainingLifeAttacker".toLabel())
|
else if (maxRemainingLifeAttacker == minRemainingLifeAttacker) add("$attackerHealth → $maxRemainingLifeAttacker".toLabel())
|
||||||
else add("$attackerHealth → $minRemainingLifeAttacker-$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())
|
if (minRemainingLifeDefender == maxRemainingLifeDefender) add("$defenderHealth → $maxRemainingLifeDefender".toLabel())
|
||||||
else add("$defenderHealth → $minRemainingLifeDefender-$maxRemainingLifeDefender".toLabel())
|
else add("$defenderHealth → $minRemainingLifeDefender-$maxRemainingLifeDefender".toLabel())
|
||||||
}
|
}
|
||||||
@ -393,8 +393,8 @@ class BattleTable(val worldScreen: WorldScreen): Table() {
|
|||||||
row().pad(2f)
|
row().pad(2f)
|
||||||
}
|
}
|
||||||
|
|
||||||
add(getHealthBar(attacker.getHealth(), attacker.getMaxHealth(), 0,0, true))
|
add(getHealthBar(attacker.getMaxHealth(), attacker.getHealth(), attacker.getHealth(),attacker.getHealth()))
|
||||||
add(getHealthBar(attacker.getMaxHealth(), attacker.getMaxHealth(), 0,0, false))
|
add(getHealthBar(attacker.getMaxHealth(), attacker.getMaxHealth(), attacker.getMaxHealth(), attacker.getMaxHealth()))
|
||||||
row().pad(5f)
|
row().pad(5f)
|
||||||
|
|
||||||
val attackButton = "Air Sweep".toTextButton().apply { color = Color.RED }
|
val attackButton = "Air Sweep".toTextButton().apply { color = Color.RED }
|
||||||
|
@ -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 healthBar = Table()
|
||||||
val totalWidth = 100f
|
val totalWidth = 100f
|
||||||
fun addHealthToBar(image: Image, amount:Int) {
|
fun addHealthToBar(image: Image, amount:Int) {
|
||||||
@ -81,21 +81,13 @@ object BattleTableHelpers {
|
|||||||
|
|
||||||
val maybeDamagedHealth = ImageGetter.getDot(Color.ORANGE)
|
val maybeDamagedHealth = ImageGetter.getDot(Color.ORANGE)
|
||||||
|
|
||||||
val remainingHealth = currentHealth - minDamage
|
|
||||||
val remainingHealthDot = ImageGetter.getWhiteDot()
|
val remainingHealthDot = ImageGetter.getWhiteDot()
|
||||||
remainingHealthDot.color = Color.GREEN
|
remainingHealthDot.color = Color.GREEN
|
||||||
|
|
||||||
if (leftToRight) {
|
addHealthToBar(ImageGetter.getDot(Color.BLACK), maxHealth - currentHealth)
|
||||||
addHealthToBar(ImageGetter.getDot(Color.BLACK), maxHealth - currentHealth)
|
addHealthToBar(damagedHealth, currentHealth - maxRemainingHealth)
|
||||||
addHealthToBar(damagedHealth, maxDamage - minDamage)
|
addHealthToBar(maybeDamagedHealth, maxRemainingHealth - minRemainingHealth)
|
||||||
addHealthToBar(maybeDamagedHealth, minDamage)
|
addHealthToBar(remainingHealthDot, minRemainingHealth)
|
||||||
addHealthToBar(remainingHealthDot, remainingHealth)
|
|
||||||
} else {
|
|
||||||
addHealthToBar(remainingHealthDot, remainingHealth)
|
|
||||||
addHealthToBar(maybeDamagedHealth, minDamage)
|
|
||||||
addHealthToBar(damagedHealth, maxDamage - minDamage)
|
|
||||||
addHealthToBar(ImageGetter.getDot(Color.BLACK), maxHealth - currentHealth)
|
|
||||||
}
|
|
||||||
|
|
||||||
healthBar.pack()
|
healthBar.pack()
|
||||||
return healthBar
|
return healthBar
|
||||||
|
Reference in New Issue
Block a user