summaryrefslogtreecommitdiff
path: root/src/main/kotlin/io/dico/parcels2/GlobalAddedData.kt
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/kotlin/io/dico/parcels2/GlobalAddedData.kt')
-rw-r--r--src/main/kotlin/io/dico/parcels2/GlobalAddedData.kt39
1 files changed, 12 insertions, 27 deletions
diff --git a/src/main/kotlin/io/dico/parcels2/GlobalAddedData.kt b/src/main/kotlin/io/dico/parcels2/GlobalAddedData.kt
index eb00c52..055e681 100644
--- a/src/main/kotlin/io/dico/parcels2/GlobalAddedData.kt
+++ b/src/main/kotlin/io/dico/parcels2/GlobalAddedData.kt
@@ -1,38 +1,25 @@
+@file:Suppress("UNCHECKED_CAST")
+
package io.dico.parcels2
-import io.dico.parcels2.util.uuid
-import kotlinx.coroutines.experimental.CompletableDeferred
-import kotlinx.coroutines.experimental.Deferred
-import org.bukkit.OfflinePlayer
import java.util.*
interface GlobalAddedData : AddedData {
- val uuid: UUID
+ val owner: ParcelOwner
}
-class GlobalAddedDataManager(val plugin: ParcelsPlugin) {
- private val map = mutableMapOf<UUID, GlobalAddedData?>()
-
- operator fun get(player: OfflinePlayer) = get(player.uuid)
-
- operator fun get(uuid: UUID): GlobalAddedData? {
-
- }
-
- fun getDeferred(uuid: UUID): Deferred<AddedData> {
- get(uuid)?.let { return CompletableDeferred(it) }
+interface GlobalAddedDataManager {
+ operator fun get(owner: ParcelOwner): GlobalAddedData
+}
- }
+class GlobalAddedDataManagerImpl(val plugin: ParcelsPlugin) : GlobalAddedDataManager {
+ private val map = mutableMapOf<ParcelOwner, GlobalAddedData>()
- private suspend fun getAsync(uuid: UUID): GlobalAddedData {
- val data = plugin.storage.readGlobalAddedData(ParcelOwner(uuid = uuid)).await()
- ?: return GlobalAddedDataImpl(uuid)
- val result = GlobalAddedDataImpl(uuid, data)
- map[uuid] = result
- return result
+ override fun get(owner: ParcelOwner): GlobalAddedData {
+ return map[owner] ?: GlobalAddedDataImpl(owner).also { map[owner] = it }
}
- private inner class GlobalAddedDataImpl(override val uuid: UUID,
+ private inner class GlobalAddedDataImpl(override val owner: ParcelOwner,
data: MutableMap<UUID, AddedStatus> = emptyData)
: AddedDataHolder(data), GlobalAddedData {
@@ -45,7 +32,7 @@ class GlobalAddedDataManager(val plugin: ParcelsPlugin) {
data = mutableMapOf()
}
return super.setAddedStatus(uuid, status).also {
- if (it) plugin.storage.setGlobalAddedStatus(ParcelOwner(uuid = this.uuid), uuid, status)
+ if (it) plugin.storage.setGlobalAddedStatus(owner, uuid, status)
}
}
@@ -59,5 +46,3 @@ class GlobalAddedDataManager(val plugin: ParcelsPlugin) {
-
-