From 398ea3b411891cac55fb2ba8682db0bfc24b2e8b Mon Sep 17 00:00:00 2001 From: Ceikry Date: Fri, 19 Mar 2021 16:57:20 -0500 Subject: [PATCH] Redid shooting star option handling into listeners --- .../{ => halloween}/CandyRewardPlugin.kt | 2 +- .../holiday/{ => halloween}/GrimDialogue.kt | 6 +- .../{ => halloween}/SimpleHalloweenEvent.kt | 2 +- .../shootingstar/ShootingStarOptionHandler.kt | 59 +++++-------------- 4 files changed, 20 insertions(+), 49 deletions(-) rename Server/src/main/kotlin/rs09/game/content/global/worldevents/holiday/{ => halloween}/CandyRewardPlugin.kt (93%) rename Server/src/main/kotlin/rs09/game/content/global/worldevents/holiday/{ => halloween}/GrimDialogue.kt (98%) rename Server/src/main/kotlin/rs09/game/content/global/worldevents/holiday/{ => halloween}/SimpleHalloweenEvent.kt (93%) diff --git a/Server/src/main/kotlin/rs09/game/content/global/worldevents/holiday/CandyRewardPlugin.kt b/Server/src/main/kotlin/rs09/game/content/global/worldevents/holiday/halloween/CandyRewardPlugin.kt similarity index 93% rename from Server/src/main/kotlin/rs09/game/content/global/worldevents/holiday/CandyRewardPlugin.kt rename to Server/src/main/kotlin/rs09/game/content/global/worldevents/holiday/halloween/CandyRewardPlugin.kt index 94babe3be..10c91e2b4 100644 --- a/Server/src/main/kotlin/rs09/game/content/global/worldevents/holiday/CandyRewardPlugin.kt +++ b/Server/src/main/kotlin/rs09/game/content/global/worldevents/holiday/halloween/CandyRewardPlugin.kt @@ -1,4 +1,4 @@ -package rs09.game.content.global.worldevents.holiday +package rs09.game.content.global.worldevents.holiday.halloween import core.game.node.entity.player.Player import core.game.node.item.GroundItemManager diff --git a/Server/src/main/kotlin/rs09/game/content/global/worldevents/holiday/GrimDialogue.kt b/Server/src/main/kotlin/rs09/game/content/global/worldevents/holiday/halloween/GrimDialogue.kt similarity index 98% rename from Server/src/main/kotlin/rs09/game/content/global/worldevents/holiday/GrimDialogue.kt rename to Server/src/main/kotlin/rs09/game/content/global/worldevents/holiday/halloween/GrimDialogue.kt index e31dd36dd..01d2cc69a 100644 --- a/Server/src/main/kotlin/rs09/game/content/global/worldevents/holiday/GrimDialogue.kt +++ b/Server/src/main/kotlin/rs09/game/content/global/worldevents/holiday/halloween/GrimDialogue.kt @@ -1,10 +1,10 @@ -package rs09.game.content.global.worldevents.holiday +package rs09.game.content.global.worldevents.holiday.halloween +import core.game.content.dialogue.DialoguePlugin +import core.game.content.dialogue.FacialExpression import core.game.node.entity.combat.ImpactHandler import core.game.node.entity.player.Player import core.game.node.item.Item -import core.game.content.dialogue.DialoguePlugin -import core.game.content.dialogue.FacialExpression class GrimDialogue(player: Player? = null) : DialoguePlugin(player){ var firstSpeak = true diff --git a/Server/src/main/kotlin/rs09/game/content/global/worldevents/holiday/SimpleHalloweenEvent.kt b/Server/src/main/kotlin/rs09/game/content/global/worldevents/holiday/halloween/SimpleHalloweenEvent.kt similarity index 93% rename from Server/src/main/kotlin/rs09/game/content/global/worldevents/holiday/SimpleHalloweenEvent.kt rename to Server/src/main/kotlin/rs09/game/content/global/worldevents/holiday/halloween/SimpleHalloweenEvent.kt index 935b478e3..17346af3e 100644 --- a/Server/src/main/kotlin/rs09/game/content/global/worldevents/holiday/SimpleHalloweenEvent.kt +++ b/Server/src/main/kotlin/rs09/game/content/global/worldevents/holiday/halloween/SimpleHalloweenEvent.kt @@ -1,4 +1,4 @@ -package rs09.game.content.global.worldevents.holiday +package rs09.game.content.global.worldevents.holiday.halloween import core.game.node.entity.npc.NPC import core.game.world.map.Location diff --git a/Server/src/main/kotlin/rs09/game/content/global/worldevents/shootingstar/ShootingStarOptionHandler.kt b/Server/src/main/kotlin/rs09/game/content/global/worldevents/shootingstar/ShootingStarOptionHandler.kt index 87d50f97b..643e2e110 100644 --- a/Server/src/main/kotlin/rs09/game/content/global/worldevents/shootingstar/ShootingStarOptionHandler.kt +++ b/Server/src/main/kotlin/rs09/game/content/global/worldevents/shootingstar/ShootingStarOptionHandler.kt @@ -1,59 +1,30 @@ package rs09.game.content.global.worldevents.shootingstar -import core.cache.def.impl.ObjectDefinition -import core.game.interaction.OptionHandler -import core.game.node.Node import core.game.node.entity.player.Player -import core.plugin.Plugin import rs09.game.content.global.worldevents.WorldEvents -import rs09.game.world.GameWorld -import java.util.concurrent.TimeUnit +import rs09.game.interaction.InteractionListener /** * Option handlers for the various shooting star objects. */ -class ShootingStarOptionHandler : OptionHandler() { +class ShootingStarOptionHandler : InteractionListener() { - override fun newInstance(arg: Any?): Plugin? { - for (star in ShootingStarType.values()) { - ObjectDefinition.forId(star.objectId).handlers["option:mine"] = this - ObjectDefinition.forId(star.objectId).handlers["option:prospect"] = this + val SHOOTING_STARS = ShootingStarType.values().map(ShootingStarType::objectId).toIntArray() + + override fun defineListeners() { + on(SHOOTING_STARS,OBJECT,"mine"){player, _ -> + val star = (WorldEvents.get("shooting-stars") as ShootingStarEvent).star + star.mine(player) + return@on true + } + + on(SHOOTING_STARS,OBJECT,"prospect"){player, _ -> + val star = (WorldEvents.get("shooting-stars") as ShootingStarEvent).star + star.prospect(player) + return@on true } - return this } - override fun handle(player: Player, node: Node, option: String): Boolean { - val star: ShootingStar? = (WorldEvents.get("shooting-stars") as ShootingStarEvent).star - star ?: return false - when (option) { - "mine" -> { - star.mine(player) - } - "prospect" -> { - star.prospect(player) - } - "observe" -> if (star.isSpawned) { - player.dialogueInterpreter.sendDialogue("A shooting star (Level " + (star.level.ordinal + 1).toString() + ")", "is currently crashed near the " + star.location + ".") - } else { - val tickDiff = (if (GameWorld.settings?.isDevMode == true) 200 else 7200) - star.ticks - val seconds = Math.ceil((tickDiff.toFloat() / 1000.toFloat()) * 600.toDouble()).toInt() - val hours = TimeUnit.SECONDS.toHours(seconds.toLong()).toInt() - val minutes = TimeUnit.SECONDS.toMinutes(seconds.toLong()).toInt() - var time = "" - time += if (hours > 0) { - "$hours hour" - } else { - if (minutes > 0) { - "$minutes minute(s)" - } else { - "$seconds second(s)" - } - } - player.dialogueInterpreter.sendDialogue("The next star will crash in approximately:", time) - } - } - return true - } companion object { const val STAR_DUST = 13727 /**