Fix Cloaking Device
This commit is contained in:
parent
291e870884
commit
cf22ce12c0
4 changed files with 37 additions and 35 deletions
|
@ -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<CloakingDevice.Instance>(
|
|||
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<CloakingDevice.Instance>(
|
|||
playSound(location, Resourcepack.Sounds.Item.CloakingDevice.off, SoundCategory.PLAYERS, 1F, 1F)
|
||||
}
|
||||
|
||||
// TODO: Show progress in level bar
|
||||
cooldownTask = startExpProgressTask(COOLDOWN) {
|
||||
cooldownTask = null
|
||||
}
|
||||
}
|
||||
|
||||
enabled = value
|
||||
|
|
|
@ -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) {
|
||||
override val task = instance.startExpProgressTask(instance.gun.cooldown) {
|
||||
instance.currentAction = null
|
||||
0F
|
||||
} else data.progress.toFloat()
|
||||
if (instance.isSelected) instance.carrier!!.player.exp = exp
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
Reference in a new issue