You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

62 lines
2.4 KiB

# 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
class KeyBindings:
def key_pressed(self, key, coords=None):
if key in self.keybindings["quit"]:
self.engine.close()
elif key in self.keybindings["new_rat"]:
self.new_rat()
elif key in self.keybindings["kill_rat"]:
if self.units:
self.units[random.choice(list(self.units.keys()))].die(score=5)
elif key in self.keybindings["toggle_audio"]:
self.audio = not self.audio
elif key in self.keybindings["toggle_full_screen"]:
self.full_screen = not self.full_screen
self.engine.full_screen(self.full_screen)
elif key in self.keybindings["scroll_up"]:
self.start_scrolling("Up")
elif key in self.keybindings["scroll_down"]:
self.start_scrolling("Down")
elif key in self.keybindings["scroll_left"]:
self.start_scrolling("Left")
elif key in self.keybindings["scroll_right"]:
self.start_scrolling("Right")
elif key in self.keybindings["spawn_bomb"]:
self.play_sound("PUTDOWN.WAV", tag="effects")
self.spawn_bomb(self.pointer)
elif key in self.keybindings["pause"]:
self.pause = not self.pause
def quit_game(self):
self.engine.close()
def key_released(self, key):
if key in ["Up", "Down", "Left", "Right", 8, 9, 10, 11]:
self.stop_scrolling()
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)