Allow battle calculations when not your turn (#10737)

Allow BattleTable display when it is not the viewing players turn.
This will allow for more planning while waiting for other players.
This commit is contained in:
soggerr
2023-12-15 02:12:45 -07:00
committed by GitHub
parent ad820b6a72
commit bc1a428eeb

View File

@ -58,8 +58,6 @@ class BattleTable(val worldScreen: WorldScreen) : Table() {
}
fun update() {
if (!worldScreen.canChangeState) return hide()
val attacker = tryGetAttacker() ?: return hide()
if (attacker is MapUnitCombatant && attacker.unit.baseUnit.isNuclearWeapon()) {
@ -239,23 +237,30 @@ class BattleTable(val worldScreen: WorldScreen) : Table() {
}
row().pad(5f)
if (worldScreen.canChangeState) {
val attackText: String = when (attacker) {
is CityCombatant -> "Bombard"
else -> "Attack"
}
val attackButton = attackText.toTextButton().apply { color= Color.RED }
val attackButton = attackText.toTextButton().apply { color = Color.RED }
var attackableTile: AttackableTile? = null
if (attacker.canAttack()) {
if (attacker is MapUnitCombatant) {
attackableTile = TargetHelper
.getAttackableEnemies(attacker.unit, attacker.unit.movement.getDistanceToTiles())
.firstOrNull{ it.tileToAttack == defender.getTile()}
.getAttackableEnemies(
attacker.unit,
attacker.unit.movement.getDistanceToTiles()
)
.firstOrNull { it.tileToAttack == defender.getTile() }
} else if (attacker is CityCombatant) {
val canBombard = TargetHelper.getBombardableTiles(attacker.city).contains(defender.getTile())
val canBombard =
TargetHelper.getBombardableTiles(attacker.city).contains(defender.getTile())
if (canBombard) {
attackableTile = AttackableTile(attacker.getTile(), defender.getTile(), 0f, defender)
attackableTile =
AttackableTile(attacker.getTile(), defender.getTile(), 0f, defender)
}
}
}
@ -270,6 +275,8 @@ class BattleTable(val worldScreen: WorldScreen) : Table() {
}
add(attackButton).colspan(2)
}
pack()