mirror of
https://github.com/yairm210/Unciv.git
synced 2025-09-24 03:53:12 -04:00
Better battle menu (#13076)
* Better battle menu * Cleaned the code * More descriptive variable name * Added animations to unit action menu * Revert "Added animations to unit action menu" This reverts commit 4d29699e1e2526e3ea0c0bcf81a3a4779320569d. --------- Co-authored-by: K-OA <klishynoleh@gmail.com>
This commit is contained in:
parent
1c03133fdc
commit
f98995e718
@ -230,7 +230,7 @@ class BattleTable(val worldScreen: WorldScreen) : Table() {
|
|||||||
val maxRemainingLifeDefender = max(defenderHealth-minDamageToDefender, 0)
|
val maxRemainingLifeDefender = max(defenderHealth-minDamageToDefender, 0)
|
||||||
|
|
||||||
add(getHealthBar(attacker.getMaxHealth(), attacker.getHealth(), maxRemainingLifeAttacker, minRemainingLifeAttacker))
|
add(getHealthBar(attacker.getMaxHealth(), attacker.getHealth(), maxRemainingLifeAttacker, minRemainingLifeAttacker))
|
||||||
add(getHealthBar(defender.getMaxHealth(), defender.getHealth(), maxRemainingLifeDefender, minRemainingLifeDefender)).row()
|
add(getHealthBar(defender.getMaxHealth(), defender.getHealth(), maxRemainingLifeDefender, minRemainingLifeDefender, true)).row()
|
||||||
|
|
||||||
fun avg(vararg values: Int) = values.average().roundToInt()
|
fun avg(vararg values: Int) = values.average().roundToInt()
|
||||||
// Don't use original damage estimates - they're raw, before clamping to 0..max
|
// Don't use original damage estimates - they're raw, before clamping to 0..max
|
||||||
|
@ -226,32 +226,55 @@ object BattleTableHelpers {
|
|||||||
container.addAction(DamageLabelAnimation(container))
|
container.addAction(DamageLabelAnimation(container))
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getHealthBar(maxHealth: Int, currentHealth: Int, maxRemainingHealth: Int, minRemainingHealth: Int): Table {
|
fun getHealthBar(maxHealth: Int, currentHealth: Int, maxRemainingHealth: Int, minRemainingHealth: Int, forDefender: Boolean = false): Table {
|
||||||
val healthBar = Table()
|
val healthBar = Table()
|
||||||
val totalWidth = 100f
|
val totalWidth = 120f
|
||||||
fun addHealthToBar(image: Image, amount: Int) {
|
fun addHealthToBar(image: Image, amount: Int) {
|
||||||
val width = totalWidth * amount / maxHealth
|
val width = totalWidth * amount / maxHealth
|
||||||
healthBar.add(image).size(width.coerceIn(0f, totalWidth),3f)
|
healthBar.add(image).size(width.coerceIn(0f, totalWidth),4f)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun animateHealth(health: Image, healthDecreaseWidth: Float, move: Float) {
|
||||||
|
health.addAction(Actions.sequence(
|
||||||
|
Actions.sizeBy(healthDecreaseWidth, 0f),
|
||||||
|
Actions.sizeBy(-healthDecreaseWidth, 0f, 0.5f)
|
||||||
|
))
|
||||||
|
health.addAction(Actions.sequence(
|
||||||
|
Actions.moveBy(-move, 0f),
|
||||||
|
Actions.moveBy(move, 0f, 0.5f)
|
||||||
|
))
|
||||||
|
}
|
||||||
|
|
||||||
val damagedHealth = ImageGetter.getDot(Color.FIREBRICK)
|
val damagedHealth = ImageGetter.getDot(Color.FIREBRICK)
|
||||||
|
val remainingHealthDot = ImageGetter.getDot(Color.GREEN)
|
||||||
|
val maybeDamagedHealth = ImageGetter.getDot(Color.ORANGE)
|
||||||
|
val missingHealth = ImageGetter.getDot(ImageGetter.CHARCOAL)
|
||||||
if (UncivGame.Current.settings.continuousRendering) {
|
if (UncivGame.Current.settings.continuousRendering) {
|
||||||
damagedHealth.addAction(Actions.forever(Actions.sequence(
|
maybeDamagedHealth.addAction(Actions.forever(Actions.sequence(
|
||||||
Actions.color(ImageGetter.CHARCOAL, 0.7f),
|
Actions.color(Color.FIREBRICK, 0.7f),
|
||||||
Actions.color(Color.FIREBRICK, 0.7f)
|
Actions.color(Color.ORANGE, 0.7f)
|
||||||
)))
|
)))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val healthDecreaseWidth = (currentHealth - minRemainingHealth) * totalWidth / 100 // Used for animation only
|
||||||
|
if (forDefender) {
|
||||||
|
addHealthToBar(missingHealth, maxHealth - currentHealth)
|
||||||
|
addHealthToBar(damagedHealth, currentHealth - maxRemainingHealth)
|
||||||
|
addHealthToBar(maybeDamagedHealth, maxRemainingHealth - minRemainingHealth)
|
||||||
|
addHealthToBar(remainingHealthDot, minRemainingHealth)
|
||||||
|
|
||||||
val maybeDamagedHealth = ImageGetter.getDot(Color.ORANGE)
|
remainingHealthDot.toFront()
|
||||||
|
animateHealth(remainingHealthDot, healthDecreaseWidth, healthDecreaseWidth)
|
||||||
val remainingHealthDot = ImageGetter.getWhiteDot()
|
}
|
||||||
remainingHealthDot.color = Color.GREEN
|
else {
|
||||||
|
addHealthToBar(remainingHealthDot, minRemainingHealth)
|
||||||
addHealthToBar(ImageGetter.getDot(ImageGetter.CHARCOAL), maxHealth - currentHealth)
|
addHealthToBar(maybeDamagedHealth, maxRemainingHealth - minRemainingHealth)
|
||||||
addHealthToBar(damagedHealth, currentHealth - maxRemainingHealth)
|
addHealthToBar(damagedHealth, currentHealth - maxRemainingHealth)
|
||||||
addHealthToBar(maybeDamagedHealth, maxRemainingHealth - minRemainingHealth)
|
addHealthToBar(missingHealth, maxHealth - currentHealth)
|
||||||
addHealthToBar(remainingHealthDot, minRemainingHealth)
|
|
||||||
|
|
||||||
|
remainingHealthDot.toFront()
|
||||||
|
animateHealth(remainingHealthDot, healthDecreaseWidth, 0f)
|
||||||
|
}
|
||||||
healthBar.pack()
|
healthBar.pack()
|
||||||
return healthBar
|
return healthBar
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user