From 099508d4c05e9effaae147e70ce5e7c2503e395c Mon Sep 17 00:00:00 2001 From: Yohann D'ANELLO Date: Mon, 7 Dec 2020 21:29:57 +0100 Subject: [PATCH] Don't call screen.getkey() at a wrong place --- squirrelbattle/game.py | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/squirrelbattle/game.py b/squirrelbattle/game.py index 39ddac1..a7ea5de 100644 --- a/squirrelbattle/game.py +++ b/squirrelbattle/game.py @@ -33,6 +33,7 @@ class Game: Init the game. """ self.state = GameMode.MAINMENU + self.waiting_for_friendly_key = False self.settings = Settings() self.settings.load_settings() self.settings.write_settings() @@ -86,7 +87,11 @@ class Game: return if self.state == GameMode.PLAY: - self.handle_key_pressed_play(key) + if self.waiting_for_friendly_key: + # The player requested to talk with a friendly entity + self.handle_friendly_entity_chat(key) + else: + self.handle_key_pressed_play(key) elif self.state == GameMode.INVENTORY: self.handle_key_pressed_inventory(key) elif self.state == GameMode.MAINMENU: @@ -118,21 +123,28 @@ class Game: elif key == KeyValues.SPACE: self.state = GameMode.MAINMENU elif key == KeyValues.T: - self.handle_friendly_entity_chat() + # Wait for the direction of the friendly entity + self.waiting_for_friendly_key = True - def handle_friendly_entity_chat(self) -> None: - keykey = self.screen.getkey() - keykey = KeyValues.translate_key(keykey, self.settings) - if keykey == KeyValues.UP: + def handle_friendly_entity_chat(self, key: KeyValues) -> None: + """ + If the player is talking to a friendly entity, we get the direction + where the entity is, then we interact with it. + """ + if not self.waiting_for_friendly_key: + return + self.waiting_for_friendly_key = False + + if key == KeyValues.UP: xp = self.player.x yp = self.player.y - 1 - elif keykey == KeyValues.DOWN: + elif key == KeyValues.DOWN: xp = self.player.x yp = self.player.y + 1 - elif keykey == KeyValues.LEFT: + elif key == KeyValues.LEFT: xp = self.player.x - 1 yp = self.player.y - elif keykey == KeyValues.RIGHT: + elif key == KeyValues.RIGHT: xp = self.player.x + 1 yp = self.player.y else: