special nuke animation, to make it feel more momentous

This commit is contained in:
yairm210 2024-07-22 00:06:06 +03:00
parent c765287333
commit 78737b6c2d

View File

@ -1,9 +1,12 @@
package com.unciv.ui.screens.worldscreen.bottombar
import com.badlogic.gdx.graphics.Color
import com.badlogic.gdx.math.Interpolation
import com.badlogic.gdx.scenes.scene2d.Touchable
import com.badlogic.gdx.scenes.scene2d.actions.Actions
import com.badlogic.gdx.scenes.scene2d.ui.Label
import com.badlogic.gdx.scenes.scene2d.ui.Table
import com.badlogic.gdx.utils.Align
import com.unciv.logic.battle.AirInterception
import com.unciv.logic.battle.AttackableTile
import com.unciv.logic.battle.Battle
@ -18,11 +21,7 @@ import com.unciv.models.UncivSound
import com.unciv.models.ruleset.unique.UniqueType
import com.unciv.models.translations.tr
import com.unciv.ui.audio.SoundPlayer
import com.unciv.ui.components.extensions.addBorderAllowOpacity
import com.unciv.ui.components.extensions.addSeparator
import com.unciv.ui.components.extensions.disable
import com.unciv.ui.components.extensions.toLabel
import com.unciv.ui.components.extensions.toTextButton
import com.unciv.ui.components.extensions.*
import com.unciv.ui.components.fonts.Fonts
import com.unciv.ui.components.input.onClick
import com.unciv.ui.components.widgets.UnitIconGroup
@ -348,6 +347,27 @@ class BattleTable(val worldScreen: WorldScreen) : Table() {
else {
attackButton.onClick(attacker.getAttackSound()) {
Nuke.NUKE(attacker, targetTile)
val nukeCircle = ImageGetter.getCircle()
nukeCircle.setSize(10f)
nukeCircle.setOrigin(Align.center)
nukeCircle.addAction(Actions.sequence(
Actions.fadeOut(0f),
Actions.parallel(
Actions.fadeIn(1f, Interpolation.pow2In),
Actions.scaleTo(200f, 200f, 1f, Interpolation.linear),
),
Actions.delay(1f),
Actions.fadeOut(1f, Interpolation.pow2Out),
Actions.removeActor()
)
)
val targetTileGroup = worldScreen.mapHolder.tileGroups[targetTile]!!
nukeCircle.x = targetTileGroup.x
nukeCircle.y = targetTileGroup.y
targetTileGroup.parent.addActor(nukeCircle)
worldScreen.mapHolder.removeUnitActionOverlay() // the overlay was one of attacking
worldScreen.shouldUpdate = true
}