KStarbound/src/main/kotlin/ru/dbotthepony/kstarbound/util/GameTimer.kt

40 lines
708 B
Kotlin

package ru.dbotthepony.kstarbound.util
import ru.dbotthepony.kstarbound.Starbound
class GameTimer(val time: Double = 0.0) {
var timer = time
private set
fun reset() {
timer = time
}
var hasFinished: Boolean
get() = timer <= 0.0
set(value) {
if (value)
timer = 0.0
else
timer = time
}
val percent: Double
get() = if (time != 0.0) timer / time else 0.0
fun invert() {
timer = time - timer
}
fun tick(delta: Double = Starbound.TICK_TIME_ADVANCE): Boolean {
timer = (timer - delta).coerceAtLeast(0.0)
return timer == 0.0
}
fun wrapTick(delta: Double = Starbound.TICK_TIME_ADVANCE): Boolean {
val result = tick(delta)
if (result) reset()
return result
}
}