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