diff options
Diffstat (limited to 'src/main/kotlin/io/dico/parcels2/GlobalAddedData.kt')
-rw-r--r-- | src/main/kotlin/io/dico/parcels2/GlobalAddedData.kt | 39 |
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) { - - |