1
0
Fork 0

Fix Cloaking Device

This commit is contained in:
Moritz Ruth 2020-06-19 16:44:24 +02:00
parent 291e870884
commit cf22ce12c0
No known key found for this signature in database
GPG key ID: AFD57E23E753841B
4 changed files with 37 additions and 35 deletions

View file

@ -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.TTTPlayer
import de.moritzruth.spigot_ttt.game.players.roles import de.moritzruth.spigot_ttt.game.players.roles
import de.moritzruth.spigot_ttt.utils.applyMeta import de.moritzruth.spigot_ttt.utils.applyMeta
import de.moritzruth.spigot_ttt.utils.startExpProgressTask
import org.bukkit.ChatColor import org.bukkit.ChatColor
import org.bukkit.SoundCategory import org.bukkit.SoundCategory
import org.bukkit.event.EventHandler import org.bukkit.event.EventHandler
@ -46,8 +47,9 @@ object CloakingDevice: TTTItem<CloakingDevice.Instance>(
if (cooldownTask == null) setEnabled(carrier!!, !enabled) if (cooldownTask == null) setEnabled(carrier!!, !enabled)
} }
override fun onCarrierRemoved(oldCarrier: TTTPlayer) { override fun onDeselect() {
setEnabled(oldCarrier, false) setEnabled(carrier!!, false)
carrier!!.player.exp = 0F
} }
private fun setEnabled(tttPlayer: TTTPlayer, value: Boolean) { private fun setEnabled(tttPlayer: TTTPlayer, value: Boolean) {
@ -68,7 +70,9 @@ object CloakingDevice: TTTItem<CloakingDevice.Instance>(
playSound(location, Resourcepack.Sounds.Item.CloakingDevice.off, SoundCategory.PLAYERS, 1F, 1F) playSound(location, Resourcepack.Sounds.Item.CloakingDevice.off, SoundCategory.PLAYERS, 1F, 1F)
} }
// TODO: Show progress in level bar cooldownTask = startExpProgressTask(COOLDOWN) {
cooldownTask = null
}
} }
enabled = value enabled = value

View file

@ -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.Probability
import de.moritzruth.spigot_ttt.utils.applyMeta import de.moritzruth.spigot_ttt.utils.applyMeta
import de.moritzruth.spigot_ttt.utils.hideInfo 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.*
import org.bukkit.entity.Player import org.bukkit.entity.Player
import org.bukkit.inventory.ItemStack import org.bukkit.inventory.ItemStack
@ -170,17 +170,6 @@ abstract class Gun(
} catch (e: ActionInProgressError) {} } 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) { override fun onCarrierSet(carrier: TTTPlayer, isFirst: Boolean) {
setCarrierLevel() setCarrierLevel()
} }
@ -189,12 +178,16 @@ abstract class Gun(
setCarrierLevel() setCarrierLevel()
} }
override fun onCarrierRemoved(oldCarrier: TTTPlayer) {
onMovedOutOfHand(oldCarrier)
}
override fun onDeselect() { 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) { open class Reloading(instance: Instance): Action(instance) {
override val task = createProgressTask() override val task = createProgressTask()
protected open fun createProgressTask() = startProgressTask(instance.gun.reloadTime) { data -> protected open fun createProgressTask() =
val exp = if (data.isComplete) { instance.startExpProgressTask(instance.gun.reloadTime) {
instance.remainingShots = instance.gun.magazineSize instance.remainingShots = instance.gun.magazineSize
instance.currentAction = null instance.currentAction = null
0F
} else data.progress.toFloat()
if (instance.isSelected) instance.carrier!!.player.exp = exp
} }
} }
class Cooldown(instance: Instance): Action(instance) { class Cooldown(instance: Instance): Action(instance) {
override val task = startProgressTask(instance.gun.cooldown) { data -> override val task = instance.startExpProgressTask(instance.gun.cooldown) {
val exp = if (data.isComplete) {
instance.currentAction = null instance.currentAction = null
0F
} else data.progress.toFloat()
if (instance.isSelected) instance.carrier!!.player.exp = exp
} }
} }
} }

View file

@ -41,9 +41,9 @@ object Shotgun: Gun(
} }
} }
override fun onMovedOutOfHand(tttPlayer: TTTPlayer) { override fun onDeselect() {
tttPlayer.player.level = 0 carrier!!.player.level = 0
tttPlayer.player.exp = 0F carrier!!.player.exp = 0F
val action = currentAction val action = currentAction
if (action is ReloadingAction) { if (action is ReloadingAction) {

View file

@ -1,5 +1,6 @@
package de.moritzruth.spigot_ttt.utils package de.moritzruth.spigot_ttt.utils
import de.moritzruth.spigot_ttt.game.items.TTTItem
import de.moritzruth.spigot_ttt.plugin import de.moritzruth.spigot_ttt.plugin
import org.bukkit.scheduler.BukkitTask import org.bukkit.scheduler.BukkitTask
import java.time.Duration import java.time.Duration
@ -39,3 +40,14 @@ fun startProgressTask(duration: Double, startAt: Double = 0.0, onTick: (data: Ti
}, 0, 1) }, 0, 1)
return task 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
}