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:
		@@ -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
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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):
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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:
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user