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.TIMESTEP): Boolean { timer = (timer - delta).coerceAtLeast(0.0) return timer == 0.0 } fun wrapTick(delta: Double = Starbound.TIMESTEP): Boolean { val result = tick(delta) if (result) reset() return result } }