summaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni/utils
diff options
context:
space:
mode:
authorEmpa <42304516+ItsEmpa@users.noreply.github.com>2024-07-15 19:54:04 +0200
committerGitHub <noreply@github.com>2024-07-15 19:54:04 +0200
commitba091f8c3cfa665e83c789e1a5845d1ae0f26b6b (patch)
treef52c6c37addc52c27452e0a161ee0b54485e093d /src/main/java/at/hannibal2/skyhanni/utils
parent2de249337b48f5de439afd16c6793abbe3084a25 (diff)
downloadskyhanni-ba091f8c3cfa665e83c789e1a5845d1ae0f26b6b.tar.gz
skyhanni-ba091f8c3cfa665e83c789e1a5845d1ae0f26b6b.tar.bz2
skyhanni-ba091f8c3cfa665e83c789e1a5845d1ae0f26b6b.zip
Backend: RecalculatingValue as a ReadOnlyProperty (#2151)
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/utils')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/InventoryUtils.kt2
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/LorenzUtils.kt7
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/NEUItems.kt2
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/RecalculatingValue.kt17
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/SkyblockSeason.kt4
5 files changed, 18 insertions, 14 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/utils/InventoryUtils.kt b/src/main/java/at/hannibal2/skyhanni/utils/InventoryUtils.kt
index 76f9fbfcb..c8492086a 100644
--- a/src/main/java/at/hannibal2/skyhanni/utils/InventoryUtils.kt
+++ b/src/main/java/at/hannibal2/skyhanni/utils/InventoryUtils.kt
@@ -71,7 +71,7 @@ object InventoryUtils {
fun getLeggings(): ItemStack? = getArmor()[1]
fun getBoots(): ItemStack? = getArmor()[0]
- val isNeuStorageEnabled = RecalculatingValue(10.seconds) {
+ val isNeuStorageEnabled by RecalculatingValue(10.seconds) {
try {
val config = NotEnoughUpdates.INSTANCE.config
diff --git a/src/main/java/at/hannibal2/skyhanni/utils/LorenzUtils.kt b/src/main/java/at/hannibal2/skyhanni/utils/LorenzUtils.kt
index ea2a935a3..3c97919fc 100644
--- a/src/main/java/at/hannibal2/skyhanni/utils/LorenzUtils.kt
+++ b/src/main/java/at/hannibal2/skyhanni/utils/LorenzUtils.kt
@@ -315,13 +315,8 @@ object LorenzUtils {
this.cancel()
}
}
-
- // TODO move into mayor api
- private val recalculateDerpy =
- RecalculatingValue(1.seconds) { Perk.DOUBLE_MOBS_HP.isActive }
-
// TODO move into mayor api
- val isDerpy get() = recalculateDerpy.getValue()
+ val isDerpy by RecalculatingValue(1.seconds) { Perk.DOUBLE_MOBS_HP.isActive }
// TODO move into mayor api
fun Int.derpy() = if (isDerpy) this / 2 else this
diff --git a/src/main/java/at/hannibal2/skyhanni/utils/NEUItems.kt b/src/main/java/at/hannibal2/skyhanni/utils/NEUItems.kt
index 51a07c0b3..217d681c3 100644
--- a/src/main/java/at/hannibal2/skyhanni/utils/NEUItems.kt
+++ b/src/main/java/at/hannibal2/skyhanni/utils/NEUItems.kt
@@ -382,7 +382,7 @@ object NEUItems {
fun neuHasFocus(): Boolean {
if (AuctionSearchOverlay.shouldReplace()) return true
if (BazaarSearchOverlay.shouldReplace()) return true
- if (InventoryUtils.inStorage() && InventoryUtils.isNeuStorageEnabled.getValue()) return true
+ if (InventoryUtils.inStorage() && InventoryUtils.isNeuStorageEnabled) return true
if (NEUOverlay.searchBarHasFocus) return true
return false
diff --git a/src/main/java/at/hannibal2/skyhanni/utils/RecalculatingValue.kt b/src/main/java/at/hannibal2/skyhanni/utils/RecalculatingValue.kt
index 76f0c0c94..6059ed662 100644
--- a/src/main/java/at/hannibal2/skyhanni/utils/RecalculatingValue.kt
+++ b/src/main/java/at/hannibal2/skyhanni/utils/RecalculatingValue.kt
@@ -1,17 +1,28 @@
package at.hannibal2.skyhanni.utils
+import kotlin.properties.ReadOnlyProperty
+import kotlin.reflect.KProperty
import kotlin.time.Duration
-class RecalculatingValue<T>(private val expireTime: Duration, val calculation: () -> T) {
+class RecalculatingValue<T>(private val expireTime: Duration, private val calculation: () -> T) : ReadOnlyProperty<Any?, T> {
- private var currentValue = calculation()
+ private var currentValue: Any? = UNINITIALIZED_VALUE
private var lastAccessTime = SimpleTimeMark.farPast()
+ @Deprecated("use \"by RecalculatingValue\" instead")
fun getValue(): T {
if (lastAccessTime.passedSince() > expireTime) {
currentValue = calculation()
lastAccessTime = SimpleTimeMark.now()
}
- return currentValue
+ @Suppress("UNCHECKED_CAST")
+ return currentValue as T
+ }
+
+ @Suppress("DEPRECATION")
+ override fun getValue(thisRef: Any?, property: KProperty<*>): T = getValue()
+
+ companion object {
+ private val UNINITIALIZED_VALUE = Any()
}
}
diff --git a/src/main/java/at/hannibal2/skyhanni/utils/SkyblockSeason.kt b/src/main/java/at/hannibal2/skyhanni/utils/SkyblockSeason.kt
index edeb706b7..d74b80959 100644
--- a/src/main/java/at/hannibal2/skyhanni/utils/SkyblockSeason.kt
+++ b/src/main/java/at/hannibal2/skyhanni/utils/SkyblockSeason.kt
@@ -21,9 +21,7 @@ enum class SkyblockSeason(
companion object {
- fun getCurrentSeason(): SkyblockSeason? = currentSeason.getValue()
-
- private val currentSeason = RecalculatingValue(1.seconds) {
+ val currentSeason by RecalculatingValue(1.seconds) {
getSeasonByName(SkyBlockTime.now().monthName)
}