From b24cc1877f607c160ba50436d2b3f8c45bf4299f Mon Sep 17 00:00:00 2001 From: Yohann D'ANELLO Date: Mon, 7 Dec 2020 21:13:55 +0100 Subject: [PATCH] Merchant inventory is working! --- squirrelbattle/display/display_manager.py | 2 +- squirrelbattle/display/menudisplay.py | 2 +- squirrelbattle/display/texturepack.py | 2 ++ squirrelbattle/entities/friendly.py | 11 ++++++----- squirrelbattle/entities/items.py | 5 +++-- squirrelbattle/game.py | 6 ++---- 6 files changed, 15 insertions(+), 13 deletions(-) diff --git a/squirrelbattle/display/display_manager.py b/squirrelbattle/display/display_manager.py index 1ef0bfb..9d3b1dc 100644 --- a/squirrelbattle/display/display_manager.py +++ b/squirrelbattle/display/display_manager.py @@ -59,7 +59,7 @@ class DisplayManager: def refresh(self) -> None: if self.game.state == GameMode.PLAY \ or self.game.state == GameMode.INVENTORY \ - or self.game.state == GameMode.STORE : + or self.game.state == GameMode.STORE: # The map pad has already the good size self.mapdisplay.refresh(0, 0, self.rows * 4 // 5, self.mapdisplay.pack.tile_width diff --git a/squirrelbattle/display/menudisplay.py b/squirrelbattle/display/menudisplay.py index a96914c..3efd44c 100644 --- a/squirrelbattle/display/menudisplay.py +++ b/squirrelbattle/display/menudisplay.py @@ -112,7 +112,7 @@ class MainMenuDisplay(Display): class InventoryDisplay(MenuDisplay): message : str def update_pad(self) -> None: - self.addstr(self.pad, 0, (self.width - len(message)) // 2, message, + self.addstr(self.pad, 0, (self.width - len(self.message)) // 2, self.message, curses.A_BOLD | curses.A_ITALIC) for i, item in enumerate(self.menu.values): rep = self.pack[item.name.upper()] diff --git a/squirrelbattle/display/texturepack.py b/squirrelbattle/display/texturepack.py index fcb4ce5..55966fc 100644 --- a/squirrelbattle/display/texturepack.py +++ b/squirrelbattle/display/texturepack.py @@ -59,6 +59,7 @@ TexturePack.ASCII_PACK = TexturePack( MERCHANT='M', SUNFLOWER='I', BODY_SNATCH_POTION='S', + SWORD='\u2020', ) TexturePack.SQUIRREL_PACK = TexturePack( @@ -81,4 +82,5 @@ TexturePack.SQUIRREL_PACK = TexturePack( MERCHANT='🦜', SUNFLOWER='🌻', BODY_SNATCH_POTION='🔀', + SWORD='🗡️', ) diff --git a/squirrelbattle/entities/friendly.py b/squirrelbattle/entities/friendly.py index 2454909..4c973d2 100644 --- a/squirrelbattle/entities/friendly.py +++ b/squirrelbattle/entities/friendly.py @@ -18,12 +18,12 @@ class Merchant(FriendlyEntity) : """ return ["maxhealth", "health", "inventory", "hazel"] - def __init__(self, name : str = "merchant", hazel : int = 75): - super().__init__(name = name) + def __init__(self, name: str = "merchant", inventory: list = None, + hazel: int = 75, *args, **kwargs): + super().__init__(name=name, *args, **kwargs) + self.inventory = inventory or [] self.hazel = hazel - self.name = name - self.inventory = [] - for i in range(5) : + for i in range(5): self.inventory.append(choice(Item.get_all_items())()) def talk_to(self, player : Player) -> str: @@ -32,6 +32,7 @@ class Merchant(FriendlyEntity) : and allow the player to buy/sell objects """ # TODO + return _("I don't sell any squirrel") class Sunflower(FriendlyEntity) : """ diff --git a/squirrelbattle/entities/items.py b/squirrelbattle/entities/items.py index 9756fa4..f448c0d 100644 --- a/squirrelbattle/entities/items.py +++ b/squirrelbattle/entities/items.py @@ -59,9 +59,10 @@ class Item(Entity): d = super().save_state() d["held"] = self.held return d - + + @staticmethod def get_all_items() -> list: - return [BodySnatchPotion, Bomb, Heart, Weapon, Sword] + return [BodySnatchPotion, Bomb, Heart, Sword] class Heart(Item): diff --git a/squirrelbattle/game.py b/squirrelbattle/game.py index 82dee4f..10780cf 100644 --- a/squirrelbattle/game.py +++ b/squirrelbattle/game.py @@ -122,18 +122,16 @@ class Game: keykey = KeyValues.translate_key(keykey, self.settings) if keykey == KeyValues.UP: xp = self.player.x - yp = self.player.y+1 + yp = self.player.y-1 elif keykey == KeyValues.DOWN: xp = self.player.x - yp = self.player.y-1 + yp = self.player.y+1 elif keykey == KeyValues.LEFT: xp = self.player.x-1 yp = self.player.y elif keykey == KeyValues.RIGHT: xp = self.player.x+1 yp = self.player.y - else : - raise Exception(keykey) if self.map.entity_is_present(yp, xp) : for entity in self.map.entities : if entity.is_friendly() and entity.x == xp and entity.y == yp :