summaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni/utils/tracker
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/utils/tracker')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/tracker/SkyHanniTracker.kt8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/utils/tracker/SkyHanniTracker.kt b/src/main/java/at/hannibal2/skyhanni/utils/tracker/SkyHanniTracker.kt
index 6d0fcedb6..8d5b723df 100644
--- a/src/main/java/at/hannibal2/skyhanni/utils/tracker/SkyHanniTracker.kt
+++ b/src/main/java/at/hannibal2/skyhanni/utils/tracker/SkyHanniTracker.kt
@@ -13,20 +13,24 @@ import net.minecraft.client.gui.inventory.GuiInventory
class SkyHanniTracker<Data : TrackerData>(
private val name: String,
- private val currentSessionData: Data,
+ private val createNewSession: () -> Data,
private val getStorage: (Storage.ProfileSpecific) -> Data,
private val update: () -> Unit,
) {
private var inventoryOpen = false
private var displayMode = DisplayMode.TOTAL
+ private val currentSessions = mutableMapOf<Storage.ProfileSpecific, Data>()
fun isInventoryOpen() = inventoryOpen
private fun getSharedTracker(): SharedTracker<Data>? {
val profileSpecific = ProfileStorageData.profileSpecific ?: return null
- return SharedTracker(getStorage(profileSpecific), currentSessionData)
+ return SharedTracker(getStorage(profileSpecific), getCurrentSession(profileSpecific))
}
+ private fun getCurrentSession(profileSpecific: Storage.ProfileSpecific) =
+ currentSessions.getOrPut(profileSpecific) { createNewSession() }
+
fun addSessionResetButton(list: MutableList<List<Any>>) {
if (!inventoryOpen || displayMode != DisplayMode.SESSION) return