Refactor key handling and add keybindings configuration for game actions
This commit is contained in:
+14
-12
@@ -68,7 +68,7 @@ class GameWindow:
|
||||
self.white_flash_opacity = 255
|
||||
|
||||
# Input handling
|
||||
self.key_down, self.key_up, self.axis_scroll = key_callback
|
||||
self.trigger = key_callback
|
||||
self.button_cursor = [0, 0]
|
||||
self.buttons = {}
|
||||
|
||||
@@ -379,27 +379,29 @@ class GameWindow:
|
||||
for event in events:
|
||||
if event.type == sdl2.SDL_QUIT:
|
||||
self.running = False
|
||||
elif event.type == sdl2.SDL_KEYDOWN and self.key_down:
|
||||
elif event.type == sdl2.SDL_KEYDOWN:
|
||||
# print in file keycode
|
||||
keycode = event.key.keysym.sym
|
||||
open("keycode.txt", "a").write(f"{keycode}\n")
|
||||
key = sdl2.SDL_GetKeyName(event.key.keysym.sym).decode('utf-8')
|
||||
# Check for Right Ctrl key to trigger white flash
|
||||
if event.key.keysym.sym == sdl2.SDLK_RCTRL:
|
||||
self.trigger_white_flash()
|
||||
else:
|
||||
self.key_down(key)
|
||||
elif event.type == sdl2.SDL_KEYUP and self.key_up:
|
||||
self.trigger(f"keydown_{key}")
|
||||
elif event.type == sdl2.SDL_KEYUP:
|
||||
key = sdl2.SDL_GetKeyName(event.key.keysym.sym).decode('utf-8')
|
||||
self.key_up(key)
|
||||
self.trigger(f"keyup_{key}")
|
||||
elif event.type == sdl2.SDL_MOUSEMOTION:
|
||||
self.key_down("mouse", coords=(event.motion.x, event.motion.y))
|
||||
self.trigger(f"mousemove_{event.motion.x}, {event.motion.y}")
|
||||
elif event.type == sdl2.SDL_JOYBUTTONDOWN:
|
||||
key = event.jbutton.button
|
||||
self.key_down(key)
|
||||
self.trigger(f"joybuttondown_{key}")
|
||||
elif event.type == sdl2.SDL_JOYBUTTONUP:
|
||||
key = event.jbutton.button
|
||||
self.key_up(key)
|
||||
self.trigger(f"joybuttonup_{key}")
|
||||
elif event.type == sdl2.SDL_JOYHATMOTION:
|
||||
hat = event.jhat.hat
|
||||
value = event.jhat.value
|
||||
self.trigger(f"joyhatmotion_{hat}_{value}")
|
||||
|
||||
|
||||
|
||||
# Present the rendered frame
|
||||
self.renderer.present()
|
||||
|
||||
Reference in New Issue
Block a user