82 lines
2.8 KiB
Python
82 lines
2.8 KiB
Python
# This file contains the Controls class, which is responsible for handling user input.
|
|
# The key_pressed method is called when a key is pressed, and it contains the logic for handling different key presses.
|
|
|
|
import random
|
|
import os
|
|
import json
|
|
|
|
bindings = {}
|
|
if os.path.exists("conf/keybindings.json"):
|
|
with open("conf/keybindings.json", "r") as f:
|
|
bindings = json.load(f)
|
|
else:
|
|
import yaml
|
|
# read yaml config file
|
|
with open("conf/keybindings.yaml", "r") as f:
|
|
bindings = yaml.safe_load(f)
|
|
|
|
class KeyBindings:
|
|
def trigger(self, 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}")
|
|
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}")
|
|
return
|
|
|
|
#print(f"Action {action} not found in keybindings for {self.game_status}")
|
|
return None
|
|
|
|
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):
|
|
self.scrolling_direction = direction
|
|
if not self.scrolling:
|
|
self.scrolling = 1
|
|
|
|
def stop_scrolling(self):
|
|
self.scrolling = 0
|
|
|
|
def scroll(self):
|
|
if self.scrolling:
|
|
if not self.scrolling % 5:
|
|
if self.scrolling_direction == "Up":
|
|
self.scroll_cursor(y=-1)
|
|
elif self.scrolling_direction == "Down":
|
|
self.scroll_cursor(y=1)
|
|
elif self.scrolling_direction == "Left":
|
|
self.scroll_cursor(x=-1)
|
|
elif self.scrolling_direction == "Right":
|
|
self.scroll_cursor(x=1)
|
|
self.scrolling += 1
|
|
|
|
def axis_scroll(self, x, y):
|
|
self.scroll_cursor(1 if x > 0 else -1, 1 if y > 0 else -1) |