diff --git a/squirrelbattle/display/display_manager.py b/squirrelbattle/display/display_manager.py index f7a0882..20cdb3c 100644 --- a/squirrelbattle/display/display_manager.py +++ b/squirrelbattle/display/display_manager.py @@ -6,8 +6,8 @@ from squirrelbattle.display.display import VerticalSplit, HorizontalSplit from squirrelbattle.display.mapdisplay import MapDisplay from squirrelbattle.display.messagedisplay import MessageDisplay from squirrelbattle.display.statsdisplay import StatsDisplay -from squirrelbattle.display.menudisplay import SettingsMenuDisplay, \ - MainMenuDisplay +from squirrelbattle.display.menudisplay import MainMenuDisplay, \ + InventoryDisplay, SettingsMenuDisplay from squirrelbattle.display.logsdisplay import LogsDisplay from squirrelbattle.display.texturepack import TexturePack from typing import Any @@ -23,10 +23,11 @@ class DisplayManager: pack = TexturePack.get_pack(self.game.settings.TEXTURE_PACK) self.mapdisplay = MapDisplay(screen, pack) self.statsdisplay = StatsDisplay(screen, pack) + self.logsdisplay = LogsDisplay(screen, pack) + self.inventorydisplay = InventoryDisplay(screen, pack) self.mainmenudisplay = MainMenuDisplay(self.game.main_menu, screen, pack) self.settingsmenudisplay = SettingsMenuDisplay(screen, pack) - self.logsdisplay = LogsDisplay(screen, pack) self.messagedisplay = MessageDisplay(screen=screen, pack=None) self.hbar = HorizontalSplit(screen, pack) self.vbar = VerticalSplit(screen, pack) @@ -46,6 +47,7 @@ class DisplayManager: d.pack = TexturePack.get_pack(self.game.settings.TEXTURE_PACK) self.mapdisplay.update_map(self.game.map) self.statsdisplay.update_player(self.game.player) + self.inventorydisplay.update_menu(self.game.inventory_menu) self.settingsmenudisplay.update_menu(self.game.settings_menu) self.logsdisplay.update_logs(self.game.logs) self.messagedisplay.update_message(self.game.message) @@ -64,10 +66,12 @@ class DisplayManager: self.rows // 5 - 1, self.cols * 4 // 5) self.hbar.refresh(self.rows * 4 // 5, 0, 1, self.cols * 4 // 5) self.vbar.refresh(0, self.cols * 4 // 5, self.rows, 1) - if self.game.state == GameMode.MAINMENU: + elif self.game.state == GameMode.INVENTORY: + self.inventorydisplay.refresh(0, 0, self.rows, self.cols) + elif self.game.state == GameMode.MAINMENU: self.mainmenudisplay.refresh(0, 0, self.rows, self.cols) - if self.game.state == GameMode.SETTINGS: - self.settingsmenudisplay.refresh(0, 0, self.rows, self.cols - 1) + elif self.game.state == GameMode.SETTINGS: + self.settingsmenudisplay.refresh(0, 0, self.rows, self.cols) if self.game.message: height, width = 0, 0 diff --git a/squirrelbattle/display/menudisplay.py b/squirrelbattle/display/menudisplay.py index b3036a0..5720faa 100644 --- a/squirrelbattle/display/menudisplay.py +++ b/squirrelbattle/display/menudisplay.py @@ -100,3 +100,8 @@ class MainMenuDisplay(Display): self.menudisplay.refresh( menuy, menux, min(self.menudisplay.preferred_height, self.height - menuy), menuwidth) + + +class InventoryDisplay(MenuDisplay): + def update_pad(self) -> None: + pass diff --git a/squirrelbattle/enums.py b/squirrelbattle/enums.py index 024f167..cd88e66 100644 --- a/squirrelbattle/enums.py +++ b/squirrelbattle/enums.py @@ -37,6 +37,7 @@ class KeyValues(Enum): LEFT = auto() RIGHT = auto() ENTER = auto() + INVENTORY = auto() SPACE = auto() @staticmethod @@ -58,6 +59,8 @@ class KeyValues(Enum): return KeyValues.UP elif key == settings.KEY_ENTER: return KeyValues.ENTER + elif key == settings.KEY_INVENTORY: + return KeyValues.INVENTORY elif key == ' ': return KeyValues.SPACE return None diff --git a/squirrelbattle/game.py b/squirrelbattle/game.py index 44ad349..d6045ce 100644 --- a/squirrelbattle/game.py +++ b/squirrelbattle/game.py @@ -39,6 +39,7 @@ class Game: self.main_menu = menus.MainMenu() self.settings_menu = menus.SettingsMenu() self.settings_menu.update_values(self.settings) + self.inventory_menu = menus.InventoryMenu() self.logs = Logs() self.message = None @@ -104,6 +105,8 @@ class Game: elif key == KeyValues.RIGHT: if self.player.move_right(): self.map.tick() + elif key == KeyValues.INVENTORY: + self.state = GameMode.INVENTORY elif key == KeyValues.SPACE: self.state = GameMode.MAINMENU diff --git a/squirrelbattle/locale/de/LC_MESSAGES/squirrelbattle.po b/squirrelbattle/locale/de/LC_MESSAGES/squirrelbattle.po index dfd3365..55e3f1f 100644 --- a/squirrelbattle/locale/de/LC_MESSAGES/squirrelbattle.po +++ b/squirrelbattle/locale/de/LC_MESSAGES/squirrelbattle.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: squirrelbattle 3.14.1\n" "Report-Msgid-Bugs-To: squirrel-battle@crans.org\n" -"POT-Creation-Date: 2020-11-28 16:03+0100\n" +"POT-Creation-Date: 2020-12-04 14:18+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,8 +17,8 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: squirrelbattle/tests/game_test.py:284 squirrelbattle/tests/game_test.py:287 #: squirrelbattle/tests/translations_test.py:16 +#: squirrelbattle/tests/game_test.py:290 msgid "New game" msgstr "Neu Spiel" @@ -79,38 +79,42 @@ msgid "Key to validate a menu" msgstr "Menütaste" #: squirrelbattle/tests/translations_test.py:45 +msgid "Key used to open the inventory" +msgstr "Bestandtaste" + +#: squirrelbattle/tests/translations_test.py:47 msgid "Texture pack" msgstr "Textur-Packung" -#: squirrelbattle/tests/translations_test.py:46 +#: squirrelbattle/tests/translations_test.py:48 msgid "Language" msgstr "Sprache" -#: squirrelbattle/tests/translations_test.py:49 +#: squirrelbattle/tests/translations_test.py:51 msgid "player" msgstr "Spieler" -#: squirrelbattle/tests/translations_test.py:51 +#: squirrelbattle/tests/translations_test.py:53 msgid "tiger" msgstr "Tiger" -#: squirrelbattle/tests/translations_test.py:52 +#: squirrelbattle/tests/translations_test.py:54 msgid "hedgehog" msgstr "Igel" -#: squirrelbattle/tests/translations_test.py:53 +#: squirrelbattle/tests/translations_test.py:55 msgid "rabbit" msgstr "Kanninchen" -#: squirrelbattle/tests/translations_test.py:54 +#: squirrelbattle/tests/translations_test.py:56 msgid "teddy bear" msgstr "Teddybär" -#: squirrelbattle/tests/translations_test.py:56 +#: squirrelbattle/tests/translations_test.py:58 msgid "bomb" msgstr "Bombe" -#: squirrelbattle/tests/translations_test.py:57 +#: squirrelbattle/tests/translations_test.py:59 msgid "heart" msgstr "Herz" diff --git a/squirrelbattle/locale/en/LC_MESSAGES/squirrelbattle.po b/squirrelbattle/locale/en/LC_MESSAGES/squirrelbattle.po index 3f563fa..972d853 100644 --- a/squirrelbattle/locale/en/LC_MESSAGES/squirrelbattle.po +++ b/squirrelbattle/locale/en/LC_MESSAGES/squirrelbattle.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: squirrelbattle 3.14.1\n" "Report-Msgid-Bugs-To: squirrel-battle@crans.org\n" -"POT-Creation-Date: 2020-11-28 16:03+0100\n" +"POT-Creation-Date: 2020-12-04 14:18+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -38,6 +38,7 @@ msgstr "" #: squirrelbattle/menus.py:45 squirrelbattle/tests/translations_test.py:14 #: squirrelbattle/tests/game_test.py:284 squirrelbattle/tests/game_test.py:287 #: squirrelbattle/tests/translations_test.py:16 +#: squirrelbattle/tests/game_test.py:290 msgid "New game" msgstr "" @@ -145,12 +146,14 @@ msgstr "" #: squirrelbattle/settings.py:31 squirrelbattle/tests/translations_test.py:39 #: squirrelbattle/tests/translations_test.py:43 #: squirrelbattle/tests/translations_test.py:45 +#: squirrelbattle/tests/translations_test.py:47 msgid "Texture pack" msgstr "" #: squirrelbattle/settings.py:32 squirrelbattle/tests/translations_test.py:40 #: squirrelbattle/tests/translations_test.py:44 #: squirrelbattle/tests/translations_test.py:46 +#: squirrelbattle/tests/translations_test.py:48 msgid "Language" msgstr "" @@ -161,35 +164,46 @@ msgstr "" #: squirrelbattle/tests/translations_test.py:47 #: squirrelbattle/tests/translations_test.py:49 +#: squirrelbattle/tests/translations_test.py:51 msgid "player" msgstr "" #: squirrelbattle/tests/translations_test.py:49 #: squirrelbattle/tests/translations_test.py:51 +#: squirrelbattle/tests/translations_test.py:53 msgid "tiger" msgstr "" #: squirrelbattle/tests/translations_test.py:50 #: squirrelbattle/tests/translations_test.py:52 +#: squirrelbattle/tests/translations_test.py:54 msgid "hedgehog" msgstr "" #: squirrelbattle/tests/translations_test.py:51 #: squirrelbattle/tests/translations_test.py:53 +#: squirrelbattle/tests/translations_test.py:55 msgid "rabbit" msgstr "" #: squirrelbattle/tests/translations_test.py:52 #: squirrelbattle/tests/translations_test.py:54 +#: squirrelbattle/tests/translations_test.py:56 msgid "teddy bear" msgstr "" #: squirrelbattle/tests/translations_test.py:54 #: squirrelbattle/tests/translations_test.py:56 +#: squirrelbattle/tests/translations_test.py:58 msgid "bomb" msgstr "" #: squirrelbattle/tests/translations_test.py:55 #: squirrelbattle/tests/translations_test.py:57 +#: squirrelbattle/tests/translations_test.py:59 msgid "heart" msgstr "" + +#: squirrelbattle/tests/translations_test.py:45 +msgid "Key used to open the inventory" +msgstr "" diff --git a/squirrelbattle/locale/fr/LC_MESSAGES/squirrelbattle.po b/squirrelbattle/locale/fr/LC_MESSAGES/squirrelbattle.po index d46cee6..647ab97 100644 --- a/squirrelbattle/locale/fr/LC_MESSAGES/squirrelbattle.po +++ b/squirrelbattle/locale/fr/LC_MESSAGES/squirrelbattle.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: squirrelbattle 3.14.1\n" "Report-Msgid-Bugs-To: squirrel-battle@crans.org\n" -"POT-Creation-Date: 2020-11-28 16:03+0100\n" +"POT-Creation-Date: 2020-12-04 14:18+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -25,43 +25,43 @@ msgstr "Inventaire :" msgid "YOU ARE DEAD" msgstr "VOUS ÊTES MORT" -#: squirrelbattle/interfaces.py:394 squirrelbattle/interfaces.py:398 +#: squirrelbattle/interfaces.py:398 #, python-brace-format msgid "{name} hits {opponent}." msgstr "{name} frappe {opponent}." -#: squirrelbattle/interfaces.py:405 squirrelbattle/interfaces.py:410 +#: squirrelbattle/interfaces.py:410 #, python-brace-format msgid "{name} takes {amount} damage." msgstr "{name} prend {amount} points de dégât." -#: squirrelbattle/menus.py:45 squirrelbattle/tests/translations_test.py:14 -#: squirrelbattle/tests/game_test.py:284 squirrelbattle/tests/game_test.py:287 +#: squirrelbattle/menus.py:45 #: squirrelbattle/tests/translations_test.py:16 +#: squirrelbattle/tests/game_test.py:290 msgid "New game" msgstr "Nouvelle partie" -#: squirrelbattle/menus.py:46 squirrelbattle/tests/translations_test.py:15 +#: squirrelbattle/menus.py:46 #: squirrelbattle/tests/translations_test.py:17 msgid "Resume" msgstr "Continuer" -#: squirrelbattle/menus.py:47 squirrelbattle/tests/translations_test.py:17 +#: squirrelbattle/menus.py:47 #: squirrelbattle/tests/translations_test.py:19 msgid "Save" msgstr "Sauvegarder" -#: squirrelbattle/menus.py:48 squirrelbattle/tests/translations_test.py:16 +#: squirrelbattle/menus.py:48 #: squirrelbattle/tests/translations_test.py:18 msgid "Load" msgstr "Charger" -#: squirrelbattle/menus.py:49 squirrelbattle/tests/translations_test.py:18 +#: squirrelbattle/menus.py:49 #: squirrelbattle/tests/translations_test.py:20 msgid "Settings" msgstr "Paramètres" -#: squirrelbattle/menus.py:50 squirrelbattle/tests/translations_test.py:19 +#: squirrelbattle/menus.py:50 #: squirrelbattle/tests/translations_test.py:21 msgid "Exit" msgstr "Quitter" @@ -78,7 +78,7 @@ msgstr "" "Certaines clés de votre ficher de sauvegarde sont manquantes.\n" "Votre sauvegarde semble corrompue. Elle a été supprimée." -#: squirrelbattle/game.py:155 squirrelbattle/game.py:156 +#: squirrelbattle/game.py:156 msgid "" "No player was found on this map!\n" "Maybe you died?" @@ -86,7 +86,7 @@ msgstr "" "Aucun joueur n'a été trouvé sur la carte !\n" "Peut-être êtes-vous mort ?" -#: squirrelbattle/game.py:175 squirrelbattle/game.py:176 +#: squirrelbattle/game.py:176 msgid "" "The JSON file is not correct.\n" "Your save seems corrupted. It got deleted." @@ -94,108 +94,94 @@ msgstr "" "Le fichier JSON de sauvegarde est incorrect.\n" "Votre sauvegarde semble corrompue. Elle a été supprimée." -#: squirrelbattle/settings.py:21 squirrelbattle/tests/translations_test.py:21 -#: squirrelbattle/tests/translations_test.py:25 +#: squirrelbattle/settings.py:21 #: squirrelbattle/tests/translations_test.py:27 msgid "Main key to move up" msgstr "Touche principale pour aller vers le haut" -#: squirrelbattle/settings.py:22 squirrelbattle/tests/translations_test.py:23 -#: squirrelbattle/tests/translations_test.py:27 +#: squirrelbattle/settings.py:22 #: squirrelbattle/tests/translations_test.py:29 msgid "Secondary key to move up" msgstr "Touche secondaire pour aller vers le haut" -#: squirrelbattle/settings.py:23 squirrelbattle/tests/translations_test.py:25 -#: squirrelbattle/tests/translations_test.py:29 +#: squirrelbattle/settings.py:23 #: squirrelbattle/tests/translations_test.py:31 msgid "Main key to move down" msgstr "Touche principale pour aller vers le bas" -#: squirrelbattle/settings.py:24 squirrelbattle/tests/translations_test.py:27 -#: squirrelbattle/tests/translations_test.py:31 +#: squirrelbattle/settings.py:24 #: squirrelbattle/tests/translations_test.py:33 msgid "Secondary key to move down" msgstr "Touche secondaire pour aller vers le bas" -#: squirrelbattle/settings.py:25 squirrelbattle/tests/translations_test.py:29 -#: squirrelbattle/tests/translations_test.py:33 +#: squirrelbattle/settings.py:25 #: squirrelbattle/tests/translations_test.py:35 msgid "Main key to move left" msgstr "Touche principale pour aller vers la gauche" -#: squirrelbattle/settings.py:26 squirrelbattle/tests/translations_test.py:31 -#: squirrelbattle/tests/translations_test.py:35 +#: squirrelbattle/settings.py:26 #: squirrelbattle/tests/translations_test.py:37 msgid "Secondary key to move left" msgstr "Touche secondaire pour aller vers la gauche" -#: squirrelbattle/settings.py:27 squirrelbattle/tests/translations_test.py:33 -#: squirrelbattle/tests/translations_test.py:37 +#: squirrelbattle/settings.py:27 #: squirrelbattle/tests/translations_test.py:39 msgid "Main key to move right" msgstr "Touche principale pour aller vers la droite" -#: squirrelbattle/settings.py:29 squirrelbattle/tests/translations_test.py:35 -#: squirrelbattle/tests/translations_test.py:39 +#: squirrelbattle/settings.py:29 #: squirrelbattle/tests/translations_test.py:41 msgid "Secondary key to move right" msgstr "Touche secondaire pour aller vers la droite" -#: squirrelbattle/settings.py:30 squirrelbattle/tests/translations_test.py:37 -#: squirrelbattle/tests/translations_test.py:41 +#: squirrelbattle/settings.py:30 #: squirrelbattle/tests/translations_test.py:43 msgid "Key to validate a menu" msgstr "Touche pour valider un menu" -#: squirrelbattle/settings.py:31 squirrelbattle/tests/translations_test.py:39 -#: squirrelbattle/tests/translations_test.py:43 #: squirrelbattle/tests/translations_test.py:45 +msgid "Key used to open the inventory" +msgstr "Touche utilisée pour ouvrir l'inventaire" + +#: squirrelbattle/settings.py:31 +#: squirrelbattle/tests/translations_test.py:47 msgid "Texture pack" msgstr "Pack de textures" -#: squirrelbattle/settings.py:32 squirrelbattle/tests/translations_test.py:40 -#: squirrelbattle/tests/translations_test.py:44 -#: squirrelbattle/tests/translations_test.py:46 +#: squirrelbattle/settings.py:32 +#: squirrelbattle/tests/translations_test.py:48 msgid "Language" msgstr "Langue" -#: squirrelbattle/interfaces.py:407 squirrelbattle/interfaces.py:412 +#: squirrelbattle/interfaces.py:412 #, python-brace-format msgid "{name} dies." msgstr "{name} meurt." -#: squirrelbattle/tests/translations_test.py:47 -#: squirrelbattle/tests/translations_test.py:49 +#: squirrelbattle/tests/translations_test.py:51 msgid "player" msgstr "joueur" -#: squirrelbattle/tests/translations_test.py:49 -#: squirrelbattle/tests/translations_test.py:51 +#: squirrelbattle/tests/translations_test.py:53 msgid "tiger" msgstr "tigre" -#: squirrelbattle/tests/translations_test.py:50 -#: squirrelbattle/tests/translations_test.py:52 +#: squirrelbattle/tests/translations_test.py:54 msgid "hedgehog" msgstr "hérisson" -#: squirrelbattle/tests/translations_test.py:51 -#: squirrelbattle/tests/translations_test.py:53 +#: squirrelbattle/tests/translations_test.py:55 msgid "rabbit" msgstr "lapin" -#: squirrelbattle/tests/translations_test.py:52 -#: squirrelbattle/tests/translations_test.py:54 +#: squirrelbattle/tests/translations_test.py:56 msgid "teddy bear" msgstr "nounours" -#: squirrelbattle/tests/translations_test.py:54 -#: squirrelbattle/tests/translations_test.py:56 +#: squirrelbattle/tests/translations_test.py:58 msgid "bomb" msgstr "bombe" -#: squirrelbattle/tests/translations_test.py:55 -#: squirrelbattle/tests/translations_test.py:57 +#: squirrelbattle/tests/translations_test.py:59 msgid "heart" msgstr "cœur" diff --git a/squirrelbattle/menus.py b/squirrelbattle/menus.py index 4fcfabe..68c8c3e 100644 --- a/squirrelbattle/menus.py +++ b/squirrelbattle/menus.py @@ -115,3 +115,8 @@ class SettingsMenu(Menu): game.settings.write_settings() self.waiting_for_key = False self.update_values(game.settings) + + +class InventoryMenu(Menu): + # FIXME Use real menu + values = ["bomb"] diff --git a/squirrelbattle/settings.py b/squirrelbattle/settings.py index 3090679..a816d67 100644 --- a/squirrelbattle/settings.py +++ b/squirrelbattle/settings.py @@ -27,6 +27,7 @@ class Settings: self.KEY_RIGHT_PRIMARY = ['d', 'Main key to move right'] self.KEY_RIGHT_SECONDARY = ['KEY_RIGHT', 'Secondary key to move right'] self.KEY_ENTER = ['\n', 'Key to validate a menu'] + self.KEY_INVENTORY = ['i', 'Key used to open the inventory'] self.TEXTURE_PACK = ['ascii', 'Texture pack'] self.LOCALE = [locale.getlocale()[0][:2], 'Language'] diff --git a/squirrelbattle/tests/game_test.py b/squirrelbattle/tests/game_test.py index a23b6f9..42886e5 100644 --- a/squirrelbattle/tests/game_test.py +++ b/squirrelbattle/tests/game_test.py @@ -266,6 +266,7 @@ class TestGame(unittest.TestCase): self.game.handle_key_pressed(KeyValues.DOWN) self.game.handle_key_pressed(KeyValues.DOWN) self.game.handle_key_pressed(KeyValues.DOWN) + self.game.handle_key_pressed(KeyValues.DOWN) # Change texture pack self.assertEqual(self.game.settings.TEXTURE_PACK, "ascii") diff --git a/squirrelbattle/tests/settings_test.py b/squirrelbattle/tests/settings_test.py index b0d9739..06225b2 100644 --- a/squirrelbattle/tests/settings_test.py +++ b/squirrelbattle/tests/settings_test.py @@ -4,9 +4,13 @@ import unittest from squirrelbattle.settings import Settings +from squirrelbattle.translations import Translator class TestSettings(unittest.TestCase): + def setUp(self) -> None: + Translator.setlocale("en") + def test_settings(self) -> None: """ Ensure that settings are well loaded. diff --git a/squirrelbattle/tests/translations_test.py b/squirrelbattle/tests/translations_test.py index 6c18840..6d3a0e4 100644 --- a/squirrelbattle/tests/translations_test.py +++ b/squirrelbattle/tests/translations_test.py @@ -42,6 +42,8 @@ class TestTranslations(unittest.TestCase): "Touche secondaire pour aller vers la droite") self.assertEqual(_("Key to validate a menu"), "Touche pour valider un menu") + self.assertEqual(_("Key used to open the inventory"), + "Touche utilisée pour ouvrir l'inventaire") self.assertEqual(_("Texture pack"), "Pack de textures") self.assertEqual(_("Language"), "Langue")