mirror of
https://github.com/yairm210/Unciv.git
synced 2025-09-21 10:25:10 -04:00
lighten AlternatingStateManager
This commit is contained in:
parent
80253edb1d
commit
62630d53dd
@ -1,5 +1,6 @@
|
||||
package com.unciv.logic
|
||||
|
||||
import com.badlogic.gdx.Gdx
|
||||
import com.unciv.utils.Concurrency
|
||||
import kotlinx.coroutines.Job
|
||||
import kotlinx.coroutines.delay
|
||||
@ -9,11 +10,10 @@ import kotlin.time.Duration.Companion.milliseconds
|
||||
import kotlin.time.Duration.Companion.seconds
|
||||
import kotlin.time.ExperimentalTime
|
||||
|
||||
class AlternatingStateManager<State>(
|
||||
class AlternatingStateManager(
|
||||
private val name: String,
|
||||
private val state: State,
|
||||
private val originalState: (State) -> Unit,
|
||||
private val alternateState: (State) -> Unit
|
||||
private val originalState: () -> Unit,
|
||||
private val alternateState: () -> Unit
|
||||
) {
|
||||
private var job: Job? = null
|
||||
|
||||
@ -28,15 +28,15 @@ class AlternatingStateManager<State>(
|
||||
var isAlternateState = true
|
||||
while (true) {
|
||||
if (isAlternateState) {
|
||||
alternateState(state)
|
||||
Gdx.app.postRunnable(alternateState)
|
||||
isAlternateState = false
|
||||
} else {
|
||||
originalState(state)
|
||||
Gdx.app.postRunnable(originalState)
|
||||
isAlternateState = true
|
||||
}
|
||||
|
||||
if (Clock.System.now() - startTime >= duration) {
|
||||
originalState(state)
|
||||
Gdx.app.postRunnable(originalState)
|
||||
return@run
|
||||
}
|
||||
|
||||
@ -47,6 +47,6 @@ class AlternatingStateManager<State>(
|
||||
|
||||
fun stop() {
|
||||
job?.cancel()
|
||||
originalState(state)
|
||||
Gdx.app.postRunnable(originalState)
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,5 @@
|
||||
package com.unciv.ui.screens.worldscreen.chat
|
||||
|
||||
import com.badlogic.gdx.Gdx
|
||||
import com.badlogic.gdx.graphics.Color
|
||||
import com.badlogic.gdx.utils.Align
|
||||
import com.unciv.UncivGame
|
||||
@ -30,19 +29,12 @@ class ChatButton(val worldScreen: WorldScreen) : IconTextButton(
|
||||
|
||||
val flash = AlternatingStateManager(
|
||||
name = "ChatButton color flash",
|
||||
state = object {
|
||||
val initialColor = fontColor
|
||||
val targetColor = Color.ORANGE
|
||||
}, originalState = { state ->
|
||||
Gdx.app.postRunnable {
|
||||
icon?.color = state.initialColor
|
||||
label.color = state.initialColor
|
||||
}
|
||||
}, alternateState = { state ->
|
||||
Gdx.app.postRunnable {
|
||||
icon?.color = state.targetColor
|
||||
label.color = state.targetColor
|
||||
}
|
||||
originalState = {
|
||||
icon?.color = fontColor
|
||||
label.color = fontColor
|
||||
}, alternateState = {
|
||||
icon?.color = Color.ORANGE
|
||||
label.color = Color.ORANGE
|
||||
}
|
||||
)
|
||||
|
||||
|
@ -1,6 +1,5 @@
|
||||
package com.unciv.ui.screens.worldscreen.status
|
||||
|
||||
import com.badlogic.gdx.Gdx
|
||||
import com.badlogic.gdx.graphics.Color
|
||||
import com.badlogic.gdx.scenes.scene2d.Actor
|
||||
import com.badlogic.gdx.scenes.scene2d.ui.Button
|
||||
@ -137,19 +136,12 @@ private class TurnIndicator : HorizontalGroup(), Disposable {
|
||||
|
||||
val flash = AlternatingStateManager(
|
||||
name = "StatusButton color flash",
|
||||
state = object {
|
||||
val initialColor = Color.WHITE
|
||||
val targetColor = Color.ORANGE
|
||||
}, originalState = { state ->
|
||||
Gdx.app.postRunnable {
|
||||
image.color = state.initialColor
|
||||
gameAmount.color = state.initialColor
|
||||
}
|
||||
}, alternateState = { state ->
|
||||
Gdx.app.postRunnable {
|
||||
image.color = state.targetColor
|
||||
gameAmount.color = state.targetColor
|
||||
}
|
||||
originalState = {
|
||||
image.color = Color.WHITE
|
||||
gameAmount.color = Color.WHITE
|
||||
}, alternateState = {
|
||||
image.color = Color.ORANGE
|
||||
gameAmount.color = Color.ORANGE
|
||||
}
|
||||
)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user