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
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) |