From 6d4f9a049cf530930fe502a3a716b8ba5cb59827 Mon Sep 17 00:00:00 2001 From: Appability Date: Tue, 15 Aug 2023 10:31:16 -0700 Subject: fix formatDuration and refactor with Timer class --- src/main/java/at/hannibal2/skyhanni/utils/Timer.kt | 43 ++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 src/main/java/at/hannibal2/skyhanni/utils/Timer.kt (limited to 'src/main/java/at/hannibal2/skyhanni/utils') diff --git a/src/main/java/at/hannibal2/skyhanni/utils/Timer.kt b/src/main/java/at/hannibal2/skyhanni/utils/Timer.kt new file mode 100644 index 000000000..55ea90b52 --- /dev/null +++ b/src/main/java/at/hannibal2/skyhanni/utils/Timer.kt @@ -0,0 +1,43 @@ +package at.hannibal2.skyhanni.utils + +import com.google.gson.annotations.Expose +import kotlin.time.Duration + +class Timer( + @Expose + var duration: Duration, + + @Expose + private var started: SimpleTimeMark = SimpleTimeMark.now(), + + startPaused: Boolean = false +): Comparable { + + @Expose + private var paused: SimpleTimeMark? = null + + init { + if (startPaused) { + paused = started + } + } + + val ended get() = !remaining.isPositive() + val remaining get() = duration - elapsed + val elapsed get() = paused?.let { it - started } ?: started.passedSince() + + fun pause() { + paused = SimpleTimeMark.now() + } + + fun resume() { + paused?.let { + started = it + duration = it - started + paused = null + } + } + + override fun compareTo(other: Timer): Int = remaining.compareTo(other.remaining) + +} \ No newline at end of file -- cgit