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.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

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.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
}
}
}

View file

@ -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) {

View file

@ -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
}