diff options
Diffstat (limited to 'src/input.odin')
| -rw-r--r-- | src/input.odin | 52 |
1 files changed, 22 insertions, 30 deletions
diff --git a/src/input.odin b/src/input.odin index 6c02349..de2af7e 100644 --- a/src/input.odin +++ b/src/input.odin @@ -1,10 +1,10 @@ package demonchime -import sapp "shared:sokol/app" +import rl "vendor:raylib" KeybindInput :: union { - sapp.Keycode, - sapp.Mousebutton, + rl.KeyboardKey, + rl.MouseButton, } Keybind :: struct { @@ -13,44 +13,36 @@ Keybind :: struct { just_pressed: bool, } -Input :: struct { +actions: struct { move_left: Keybind, move_right: Keybind, jump: Keybind, - - key_down: [sapp.MAX_KEYCODES]bool, - key_just_down: [sapp.MAX_KEYCODES]bool, - mouse_down: [sapp.MAX_MOUSEBUTTONS]bool, - mouse_just_down: [sapp.MAX_MOUSEBUTTONS]bool, } -init_keybinds :: proc(input: ^Input) { - input.move_left.input = sapp.Keycode.A - input.move_right.input = sapp.Keycode.D - input.jump.input = sapp.Keycode.SPACE +init_keybinds :: proc() { + actions.move_left.input = .A + actions.move_right.input = .D + actions.jump.input = .SPACE } -input_event :: proc(event: ^sapp.Event, input: ^Input) { - #partial switch event.type { - case .KEY_DOWN: - input.key_down[event.key_code] = true - input.key_just_down[event.key_code] = true - case .KEY_UP: - input.key_down[event.key_code] = false - case .MOUSE_DOWN: - input.mouse_down[event.key_code] = true - input.mouse_just_down[event.key_code] = true - case .MOUSE_UP: - input.mouse_down[event.key_code] = false +is_keybind_down :: proc(keybind: Keybind) -> bool { + switch val in keybind.input { + case rl.KeyboardKey: + return rl.IsKeyDown(val) + case rl.MouseButton: + return rl.IsMouseButtonDown(val) } + + assert(false) + return false } -is_keybind_down :: proc(input: Input, keybind: Keybind) -> bool { +is_keybind_just_down :: proc(keybind: Keybind) -> bool { switch val in keybind.input { - case sapp.Keycode: - return input.key_down[val] - case sapp.Mousebutton: - return input.mouse_down[val] + case rl.KeyboardKey: + return rl.IsKeyPressed(val) + case rl.MouseButton: + return rl.IsMouseButtonPressed(val) } assert(false) |
