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.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
|
||||||
|
|
|
@ -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
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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
|
||||||
|
}
|
||||||
|
|
Reference in a new issue