diff --git a/game/src/main/kotlin/org/apollo/game/plugin/kotlin/message/ButtonClick.kt b/game/src/main/kotlin/org/apollo/game/plugin/kotlin/message/ButtonClick.kt new file mode 100644 index 00000000..ae004e87 --- /dev/null +++ b/game/src/main/kotlin/org/apollo/game/plugin/kotlin/message/ButtonClick.kt @@ -0,0 +1,40 @@ +package org.apollo.game.plugin.kotlin.message + +import org.apollo.game.message.impl.ButtonMessage +import org.apollo.game.model.entity.Player +import org.apollo.game.plugin.kotlin.KotlinPluginScript +import org.apollo.game.plugin.kotlin.MessageListenable +import org.apollo.game.plugin.kotlin.PlayerContext + +/** + * Registers a listener for [ButtonMessage]s that occur on the given [button] id. + * + * ``` + * on(ButtonClick, button = 416) { + * player.sendMessage("You click the button.") + * } + * ``` + */ +fun KotlinPluginScript.on( + listenable: ButtonClick.Companion, + button: Int, + callback: ButtonClick.() -> Unit +) { + on(listenable) { + if (this.button == button) { + callback() + } + } +} + +class ButtonClick(override val player: Player, val button: Int) : PlayerContext { + + companion object : MessageListenable() { + override val type = ButtonMessage::class + + override fun createContext(player: Player, message: ButtonMessage): ButtonClick { + return ButtonClick(player, message.widgetId) + } + } + +} \ No newline at end of file