Added a Gamemode for selling interfaces, as well as the base of the player/merchant interaction, related to issue #18

This commit is contained in:
eichhornchen 2020-12-05 21:43:13 +01:00
parent 3886bee1ba
commit ba68e68584
5 changed files with 18 additions and 4 deletions

View File

@ -11,7 +11,7 @@ class Merchant(FriendlyEntity) :
inventory = list inventory = list
hazel = int hazel = int
def keys(self) -> list : def keys(self) -> list:
""" """
Returns a friendly entitie's specific attributes Returns a friendly entitie's specific attributes
""" """
@ -22,7 +22,7 @@ class Merchant(FriendlyEntity) :
self.inventory = inventory self.inventory = inventory
self.hazel = hazel self.hazel = hazel
def talk_to(self, player : Player) -> None: def talk_to(self, player : Player) -> str:
""" """
This function is used to open the merchant's inventory in a menu, This function is used to open the merchant's inventory in a menu,
and allow the player to buy/sell objects and allow the player to buy/sell objects

View File

@ -117,6 +117,12 @@ class Player(FightingEntity):
queue.append((new_y, new_x)) queue.append((new_y, new_x))
self.paths = predecessors self.paths = predecessors
def add_to_inventory(self, obj : Item) -> None :
"""
Adds an object to inventory
"""
self.inventory.append(obj)
def save_state(self) -> dict: def save_state(self) -> dict:
""" """
Saves the state of the entity into a dictionary Saves the state of the entity into a dictionary

View File

@ -26,6 +26,7 @@ class GameMode(Enum):
PLAY = auto() PLAY = auto()
SETTINGS = auto() SETTINGS = auto()
INVENTORY = auto() INVENTORY = auto()
STORE = auto()
class KeyValues(Enum): class KeyValues(Enum):

View File

@ -130,7 +130,8 @@ class Game:
if entity.is_friendly() and entity.x == xp and entity.y == yp : if entity.is_friendly() and entity.x == xp and entity.y == yp :
msg = entity.talk_to(self.player) msg = entity.talk_to(self.player)
self.logs.add_message(msg) self.logs.add_message(msg)
if entity.is_merchant() :
self.state = GameMode.STORE
def handle_key_pressed_main_menu(self, key: KeyValues) -> None: def handle_key_pressed_main_menu(self, key: KeyValues) -> None:

View File

@ -329,6 +329,12 @@ class Entity:
""" """
return isinstance(self, FriendlyEntity) return isinstance(self, FriendlyEntity)
def is_merchant(self) -> bool:
"""
Is this entity a merchant?
"""
return isinstance(self, Merchant)
@property @property
def translated_name(self) -> str: def translated_name(self) -> str:
return _(self.name.replace("_", " ")) return _(self.name.replace("_", " "))
@ -459,7 +465,7 @@ class FriendlyEntity(FightingEntity):
""" """
dialogue_option : list dialogue_option : list
def talk_to(self, player : Any) -> str: def talk_to(self, player : Any) -> str :
a = randint(0,len(self.dialogue_option)-1) a = randint(0,len(self.dialogue_option)-1)
return "The "+self.name+" said : "+self.dialogue_option[a] return "The "+self.name+" said : "+self.dialogue_option[a]