aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni/utils/ResettingTimer.kt
blob: cc610ac193e91288d19028ffa75fab4d04165cca (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package at.hannibal2.skyhanni.utils

import kotlin.time.Duration
import kotlin.time.ExperimentalTime
import kotlin.time.TimeMark
import kotlin.time.TimeSource

@OptIn(ExperimentalTime::class)
class ResettingTimer {
    /* null represents the far past */
    var timeMark: TimeMark? = null
    fun reset() {
        timeMark = TimeSource.Monotonic.markNow()
    }

    fun hasPassed(duration: Duration): Boolean {
        return timeMark?.plus(duration)?.hasPassedNow() ?: true
    }

    fun resetIfHasPassed(duration: Duration): Boolean {
        val passed = hasPassed(duration)
        if (passed) {
            reset()
        }
        return passed
    }
}