From f3fe91ca363b9fb64d6c3fbabf9cd7df631f6ba0 Mon Sep 17 00:00:00 2001 From: Matteo Benedetto Date: Mon, 23 Dec 2024 16:53:37 +0100 Subject: [PATCH] Aggiungi supporto per lo scrolling degli assi nella classe KeyBindings e integra la gestione degli eventi di movimento degli assi nella classe GameWindow --- engine/controls.py | 3 +++ engine/sdl2.py | 5 ++++- rats.py | 3 ++- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/engine/controls.py b/engine/controls.py index fb59d13..300f2e9 100644 --- a/engine/controls.py +++ b/engine/controls.py @@ -60,3 +60,6 @@ class KeyBindings: elif self.scrolling_direction == "Right": self.scroll_cursor(x=1) self.scrolling += 1 + + def axis_scroll(self, x, y): + self.scroll_cursor(bool(x)*1, bool(y)*1) \ No newline at end of file diff --git a/engine/sdl2.py b/engine/sdl2.py index 3126f9b..f3f42e5 100644 --- a/engine/sdl2.py +++ b/engine/sdl2.py @@ -32,7 +32,7 @@ class GameWindow: self.factory = sdl2.ext.SpriteFactory(renderer=self.renderer) self.fonts = self.generate_fonts("assets/decterm.ttf") self.running = True - self.key_down, self.key_up = key_callback + self.key_down, self.key_up, self.axis_scroll = key_callback self.performance = 0 def load_joystick(self): @@ -155,6 +155,9 @@ class GameWindow: elif event.type == sdl2.SDL_JOYBUTTONUP: key = event.jbutton.button self.key_up(key) + elif event.type == sdl2.SDL_JOYAXISMOTION: + self.axis_scroll(event.jaxis.axis, event.jaxis.value) + # Disegna qui gli sprite self.renderer.present() diff --git a/rats.py b/rats.py index a51eac2..c50815a 100644 --- a/rats.py +++ b/rats.py @@ -15,7 +15,8 @@ class MiceMaze(controls.KeyBindings): self.cell_size = 40 self.full_screen = False self.engine = engine.GameWindow(self.map.width, self.map.height, - self.cell_size, "Mice!", key_callback=(self.key_pressed, self.key_released)) + self.cell_size, "Mice!", + key_callback=(self.key_pressed, self.key_released, self.axis_scroll)) self.pointer = (random.randint(1, self.map.width-2), random.randint(1, self.map.height-2)) self.scroll_cursor() self.points = 0