40 lines
708 B
Kotlin
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
|
|
}
|
|
}
|