diff options
Diffstat (limited to 'src/main/kotlin/events/HandledScreenKeyPressedEvent.kt')
| -rw-r--r-- | src/main/kotlin/events/HandledScreenKeyPressedEvent.kt | 54 |
1 files changed, 28 insertions, 26 deletions
diff --git a/src/main/kotlin/events/HandledScreenKeyPressedEvent.kt b/src/main/kotlin/events/HandledScreenKeyPressedEvent.kt index 183ec71..5a5f1e9 100644 --- a/src/main/kotlin/events/HandledScreenKeyPressedEvent.kt +++ b/src/main/kotlin/events/HandledScreenKeyPressedEvent.kt @@ -1,38 +1,40 @@ package moe.nea.firmament.events -import net.minecraft.client.gui.screen.ingame.HandledScreen -import net.minecraft.client.option.KeyBinding -import moe.nea.firmament.keybindings.IKeyBinding +import org.lwjgl.glfw.GLFW +import net.minecraft.client.gui.screens.Screen +import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen +import moe.nea.firmament.keybindings.GenericInputAction +import moe.nea.firmament.keybindings.InputModifiers +import moe.nea.firmament.keybindings.SavedKeyBinding -sealed interface HandledScreenKeyEvent { - val screen: HandledScreen<*> - val keyCode: Int - val scanCode: Int - val modifiers: Int - - fun matches(keyBinding: KeyBinding): Boolean { - return matches(IKeyBinding.minecraft(keyBinding)) - } - - fun matches(keyBinding: IKeyBinding): Boolean { - return keyBinding.matches(keyCode, scanCode, modifiers) - } +sealed interface HandledScreenInputEvent { + val screen: Screen + val input: GenericInputAction + val modifiers: InputModifiers } data class HandledScreenKeyPressedEvent( - override val screen: HandledScreen<*>, - override val keyCode: Int, - override val scanCode: Int, - override val modifiers: Int -) : FirmamentEvent.Cancellable(), HandledScreenKeyEvent { + override val screen: Screen, + override val input: GenericInputAction, + override val modifiers: InputModifiers, + // TODO: val isRepeat: Boolean, +) : FirmamentEvent.Cancellable(), HandledScreenInputEvent { + fun matches(keyBinding: SavedKeyBinding, atLeast: Boolean = false): Boolean { + return keyBinding.matches(input, modifiers, atLeast) + } + + fun isLeftClick() = input == GenericInputAction.mouse(GLFW.GLFW_MOUSE_BUTTON_LEFT) companion object : FirmamentEventBus<HandledScreenKeyPressedEvent>() } data class HandledScreenKeyReleasedEvent( - override val screen: HandledScreen<*>, - override val keyCode: Int, - override val scanCode: Int, - override val modifiers: Int -) : FirmamentEvent.Cancellable(), HandledScreenKeyEvent { + override val screen: AbstractContainerScreen<*>, + override val input: GenericInputAction, + override val modifiers: InputModifiers, +) : FirmamentEvent.Cancellable(), HandledScreenInputEvent { + fun matches(keyBinding: SavedKeyBinding, atLeast: Boolean = false): Boolean { + return keyBinding.matches(input, modifiers, atLeast) + } + companion object : FirmamentEventBus<HandledScreenKeyReleasedEvent>() } |
