Refactor keybindings configuration and remove obsolete JSON files

This commit is contained in:
2025-08-19 23:21:37 +02:00
parent 1269913275
commit 8451ac7913
14 changed files with 102 additions and 90 deletions
+21 -50
View File
@@ -11,73 +11,44 @@ with open("conf/keybindings.yaml", "r") as f:
class KeyBindings:
def trigger(self, action):
print(f"Triggering action: {action}")
#print(f"Triggering action: {action}")
# Check if the action is in the bindings
if action in bindings[f"keybinding_{self.game_status}"]:
value = bindings[f"keybinding_{self.game_status}"][action]
# Call the corresponding method
if value:
print(f"Calling method: {value}")
#print(f"Calling method: {value}")
if "|" in value:
method_name, *args = value.split("|")
method = getattr(self, method_name)
method(*args)
else:
getattr(self, value)()
else:
print(f"Action {action} not found in keybindings for {self.game_status}")
#else:
#print(f"Action {action} not found in keybindings for {self.game_status}")
return
print(f"Action {action} not found in keybindings for {self.game_status}")
#print(f"Action {action} not found in keybindings for {self.game_status}")
return None
def key_pressed(self, key, coords=None):
if key != "mouse":
key = [key, coords]
print(f"Key pressed: {key}")
keybindings = self.configs[f"keybinding_{self.game_status}"]
if key in keybindings.get("quit", []):
self.render_engine.close()
elif key in keybindings.get("new_rat", []):
self.spawn_rat()
elif key in keybindings.get("kill_rat", []):
if self.units:
self.units[random.choice(list(self.units.keys()))].die(score=5)
elif key in keybindings.get("toggle_audio", []):
self.audio = not self.audio
elif key in keybindings.get("toggle_full_screen", []):
self.full_screen = not self.full_screen
self.render_engine.full_screen(self.full_screen)
elif key in keybindings.get("scroll_up", []):
self.start_scrolling("Up")
elif key in keybindings.get("scroll_down", []):
self.start_scrolling("Down")
elif key in keybindings.get("scroll_left", []):
self.start_scrolling("Left")
elif key in keybindings.get("scroll_right", []):
self.start_scrolling("Right")
elif key in keybindings.get("spawn_bomb", []):
self.spawn_bomb(self.pointer)
elif key in keybindings.get("spawn_mine", []):
self.spawn_mine(self.pointer)
elif key in keybindings.get("spawn_nuclear_bomb", []):
self.spawn_nuclear_bomb(self.pointer)
elif key in keybindings.get("pause", []):
self.game_status = "paused" if self.game_status == "game" else "game"
elif key in keybindings.get("start_game", []):
self.pause = False
self.game_status = "game"
self.start_game()
elif key in keybindings.get("reset_game", []):
self.pause = False
self.game_status = "game"
self.game_end = (False, None)
self.units.clear()
self.points = 0
self.start_game()
def spawn_new_bomb(self):
self.spawn_bomb(self.pointer)
def spawn_new_mine(self):
self.spawn_mine(self.pointer)
def spawn_new_nuclear_bomb(self):
self.spawn_nuclear_bomb(self.pointer)
def toggle_audio(self):
self.render_engine.audio = not self.render_engine.audio
def toggle_pause(self):
self.game_status = "paused" if self.game_status == "game" else "game"
def toggle_full_screen(self):
self.full_screen = not self.full_screen
self.render_engine.full_screen(self.full_screen)
def quit_game(self):
self.render_engine.close()
def start_scrolling(self, direction):
+6 -2
View File
@@ -74,7 +74,7 @@ class GameWindow:
# Audio system initialization
self._init_audio_system()
self.audio = True
# Input devices
self.load_joystick()
@@ -279,7 +279,7 @@ class GameWindow:
self.renderer.copy(self.ammo_background, dstrect=sdl2.SDL_Rect(position[0] - 5, position[1] - 2, text_width + 10, text_height + 4))
self.renderer.copy(self.ammo_sprite, dstrect=sdl2.SDL_Rect(position[0], position[1], text_width, text_height))
self.renderer.copy(assets["BMP_BOMB0"], dstrect=sdl2.SDL_Rect(position[0]+25, position[1], 20, 20))
self.renderer.copy(assets["mine"], dstrect=sdl2.SDL_Rect(position[0]+80, position[1], 20, 20))
self.renderer.copy(assets["BMP_POISON"], dstrect=sdl2.SDL_Rect(position[0]+80, position[1], 20, 20))
self.renderer.copy(assets["BMP_NUCLEAR"], dstrect=sdl2.SDL_Rect(position[0]+130, position[1], 20, 20))
# ======================
# VIEW & NAVIGATION
@@ -319,6 +319,8 @@ class GameWindow:
def play_sound(self, sound_file, tag="base"):
"""Play a sound file on the specified audio channel"""
if not self.audio:
return
sound_path = os.path.join("sound", sound_file)
rw = sdl2.SDL_RWFromFile(byteify(sound_path, "utf-8"), b"rb")
if not rw:
@@ -383,10 +385,12 @@ class GameWindow:
# print in file keycode
keycode = event.key.keysym.sym
key = sdl2.SDL_GetKeyName(event.key.keysym.sym).decode('utf-8')
key = key.replace(" ", "_")
# Check for Right Ctrl key to trigger white flash
self.trigger(f"keydown_{key}")
elif event.type == sdl2.SDL_KEYUP:
key = sdl2.SDL_GetKeyName(event.key.keysym.sym).decode('utf-8')
key = key.replace(" ", "_")
self.trigger(f"keyup_{key}")
elif event.type == sdl2.SDL_MOUSEMOTION:
self.trigger(f"mousemove_{event.motion.x}, {event.motion.y}")
+1 -1
View File
@@ -1,6 +1,6 @@
import random
import uuid
from units import rat, bomb, mine
from units import rat, bomb, mine, points
class UnitManager:
def count_rats(self):