From cf22ce12c06d5b2c28c5563afd661dc45c2e8ae7 Mon Sep 17 00:00:00 2001 From: Moritz Ruth Date: Fri, 19 Jun 2020 16:44:24 +0200 Subject: [PATCH] Fix Cloaking Device --- .../game/items/impl/CloakingDevice.kt | 10 +++-- .../game/items/impl/weapons/guns/Gun.kt | 44 +++++++------------ .../game/items/impl/weapons/guns/Shotgun.kt | 6 +-- .../spigot_ttt/utils/ProgressTask.kt | 12 +++++ 4 files changed, 37 insertions(+), 35 deletions(-) diff --git a/src/main/kotlin/de/moritzruth/spigot_ttt/game/items/impl/CloakingDevice.kt b/src/main/kotlin/de/moritzruth/spigot_ttt/game/items/impl/CloakingDevice.kt index 3507405..4c7a4c3 100644 --- a/src/main/kotlin/de/moritzruth/spigot_ttt/game/items/impl/CloakingDevice.kt +++ b/src/main/kotlin/de/moritzruth/spigot_ttt/game/items/impl/CloakingDevice.kt @@ -8,6 +8,7 @@ import de.moritzruth.spigot_ttt.game.players.Role import de.moritzruth.spigot_ttt.game.players.TTTPlayer import de.moritzruth.spigot_ttt.game.players.roles import de.moritzruth.spigot_ttt.utils.applyMeta +import de.moritzruth.spigot_ttt.utils.startExpProgressTask import org.bukkit.ChatColor import org.bukkit.SoundCategory import org.bukkit.event.EventHandler @@ -46,8 +47,9 @@ object CloakingDevice: TTTItem( if (cooldownTask == null) setEnabled(carrier!!, !enabled) } - override fun onCarrierRemoved(oldCarrier: TTTPlayer) { - setEnabled(oldCarrier, false) + override fun onDeselect() { + setEnabled(carrier!!, false) + carrier!!.player.exp = 0F } private fun setEnabled(tttPlayer: TTTPlayer, value: Boolean) { @@ -68,7 +70,9 @@ object CloakingDevice: TTTItem( playSound(location, Resourcepack.Sounds.Item.CloakingDevice.off, SoundCategory.PLAYERS, 1F, 1F) } - // TODO: Show progress in level bar + cooldownTask = startExpProgressTask(COOLDOWN) { + cooldownTask = null + } } enabled = value diff --git a/src/main/kotlin/de/moritzruth/spigot_ttt/game/items/impl/weapons/guns/Gun.kt b/src/main/kotlin/de/moritzruth/spigot_ttt/game/items/impl/weapons/guns/Gun.kt index 19c9dc5..1c68c2c 100644 --- a/src/main/kotlin/de/moritzruth/spigot_ttt/game/items/impl/weapons/guns/Gun.kt +++ b/src/main/kotlin/de/moritzruth/spigot_ttt/game/items/impl/weapons/guns/Gun.kt @@ -10,7 +10,7 @@ import de.moritzruth.spigot_ttt.game.players.TTTPlayer import de.moritzruth.spigot_ttt.utils.Probability import de.moritzruth.spigot_ttt.utils.applyMeta import de.moritzruth.spigot_ttt.utils.hideInfo -import de.moritzruth.spigot_ttt.utils.startProgressTask +import de.moritzruth.spigot_ttt.utils.startExpProgressTask import org.bukkit.* import org.bukkit.entity.Player import org.bukkit.inventory.ItemStack @@ -170,17 +170,6 @@ abstract class Gun( } catch (e: ActionInProgressError) {} } - protected open fun onMovedOutOfHand(tttPlayer: TTTPlayer) { - tttPlayer.player.level = 0 - tttPlayer.player.exp = 0F - - val action = currentAction - if (action is Action.Reloading) { - currentAction = null - action.cancel() - } - } - override fun onCarrierSet(carrier: TTTPlayer, isFirst: Boolean) { setCarrierLevel() } @@ -189,12 +178,16 @@ abstract class Gun( setCarrierLevel() } - override fun onCarrierRemoved(oldCarrier: TTTPlayer) { - onMovedOutOfHand(oldCarrier) - } - override fun onDeselect() { - onMovedOutOfHand(carrier!!) + val carrier = carrier!! + carrier.player.level = 0 + carrier.player.exp = 0F + + val action = currentAction + if (action is Action.Reloading) { + currentAction = null + action.cancel() + } } } @@ -211,23 +204,16 @@ abstract class Gun( open class Reloading(instance: Instance): Action(instance) { override val task = createProgressTask() - protected open fun createProgressTask() = startProgressTask(instance.gun.reloadTime) { data -> - val exp = if (data.isComplete) { + protected open fun createProgressTask() = + instance.startExpProgressTask(instance.gun.reloadTime) { instance.remainingShots = instance.gun.magazineSize instance.currentAction = null - 0F - } else data.progress.toFloat() - if (instance.isSelected) instance.carrier!!.player.exp = exp - } + } } class Cooldown(instance: Instance): Action(instance) { - override val task = startProgressTask(instance.gun.cooldown) { data -> - val exp = if (data.isComplete) { - instance.currentAction = null - 0F - } else data.progress.toFloat() - if (instance.isSelected) instance.carrier!!.player.exp = exp + override val task = instance.startExpProgressTask(instance.gun.cooldown) { + instance.currentAction = null } } } diff --git a/src/main/kotlin/de/moritzruth/spigot_ttt/game/items/impl/weapons/guns/Shotgun.kt b/src/main/kotlin/de/moritzruth/spigot_ttt/game/items/impl/weapons/guns/Shotgun.kt index 667f6ca..ded69af 100644 --- a/src/main/kotlin/de/moritzruth/spigot_ttt/game/items/impl/weapons/guns/Shotgun.kt +++ b/src/main/kotlin/de/moritzruth/spigot_ttt/game/items/impl/weapons/guns/Shotgun.kt @@ -41,9 +41,9 @@ object Shotgun: Gun( } } - override fun onMovedOutOfHand(tttPlayer: TTTPlayer) { - tttPlayer.player.level = 0 - tttPlayer.player.exp = 0F + override fun onDeselect() { + carrier!!.player.level = 0 + carrier!!.player.exp = 0F val action = currentAction if (action is ReloadingAction) { diff --git a/src/main/kotlin/de/moritzruth/spigot_ttt/utils/ProgressTask.kt b/src/main/kotlin/de/moritzruth/spigot_ttt/utils/ProgressTask.kt index 4f6e55e..62231a5 100644 --- a/src/main/kotlin/de/moritzruth/spigot_ttt/utils/ProgressTask.kt +++ b/src/main/kotlin/de/moritzruth/spigot_ttt/utils/ProgressTask.kt @@ -1,5 +1,6 @@ package de.moritzruth.spigot_ttt.utils +import de.moritzruth.spigot_ttt.game.items.TTTItem import de.moritzruth.spigot_ttt.plugin import org.bukkit.scheduler.BukkitTask import java.time.Duration @@ -39,3 +40,14 @@ fun startProgressTask(duration: Double, startAt: Double = 0.0, onTick: (data: Ti }, 0, 1) return task } +fun TTTItem.Instance.startExpProgressTask( + duration: Double, + startAt: Double = 0.0, + onFinish: () -> Unit +) = startProgressTask(duration, startAt) { data -> + val exp = if (data.isComplete) { + onFinish() + 0F + } else data.progress.toFloat() + if (isSelected) carrier!!.player.exp = exp +}