This commit is contained in:
Yohann D'ANELLO 2020-12-11 17:06:30 +01:00
parent b9b776b7ad
commit 98b5dd64a8
3 changed files with 21 additions and 16 deletions

View File

@ -3,7 +3,7 @@ from ..translations import gettext as _
from .player import Player
from .items import Item
from random import choice
from typing import Dict, Tuple, Any
from typing import Any
class Merchant(FriendlyEntity):
@ -51,7 +51,7 @@ class Merchant(FriendlyEntity):
d = super().save_state()
d["inventory"] = [item.save_state() for item in self.inventory]
return d
def add_to_inventory(self, obj: Any) -> None:
"""
Adds an object to inventory

View File

@ -17,8 +17,8 @@ class Item(Entity):
held_by: Optional[Player]
price: int
def __init__(self, held: bool = False, held_by: Optional[Player] = None, price : int=2,
*args, **kwargs):
def __init__(self, held: bool = False, held_by: Optional[Player] = None,
price: int = 2, *args, **kwargs):
super().__init__(*args, **kwargs)
self.held = held
self.held_by = held_by
@ -66,27 +66,30 @@ class Item(Entity):
def get_all_items() -> list:
return [BodySnatchPotion, Bomb, Heart, Sword]
def be_sold(self, buyer: Entity, seller: Entity, game : Any) -> bool:
def be_sold(self, buyer: Entity, seller: Entity, game: Any) -> bool:
"""
Does all necessary actions when an object is to be sold.
Is overwritten by some classes that cannot exist in the player's inventory
Is overwritten by some classes that cannot exist in the player's
inventory
"""
if buyer.hazel>=self.price :
if buyer.hazel >= self.price:
buyer.add_to_inventory(self)
seller.remove_from_inventory(self)
buyer.change_hazel_balance(-self.price)
seller.change_hazel_balance(self.price)
return True
else :
else:
return False
class Heart(Item):
"""
A heart item to return health to the player
"""
healing: int
def __init__(self, name: str = "heart", healing: int = 5, price: int = 3, *args, **kwargs):
def __init__(self, name: str = "heart", healing: int = 5, price: int = 3,
*args, **kwargs):
super().__init__(name=name, price=price, *args, **kwargs)
self.healing = healing
@ -105,20 +108,21 @@ class Heart(Item):
d["healing"] = self.healing
return d
def be_sold(self, buyer: Entity, seller: Entity, game: Any) -> str:
def be_sold(self, buyer: Entity, seller: Entity, game: Any) -> bool:
"""
Does all necessary actions when an object is to be sold.
Is overwritten by some classes that cannot exist in the player's inventory
Is overwritten by some classes that cannot exist in the player's
inventory
"""
if buyer.hazel>=self.price :
if buyer.hazel >= self.price:
self.hold(buyer)
seller.remove_from_inventory(self)
buyer.change_hazel_balance(-self.price)
seller.change_hazel_balance(self.price)
return True
else :
else:
return False
class Bomb(Item):
"""
@ -212,7 +216,8 @@ class BodySnatchPotion(Item):
other entity.
"""
def __init__(self, name: str = "body_snatch_potion", price: int = 14, *args, **kwargs):
def __init__(self, name: str = "body_snatch_potion", price: int = 14,
*args, **kwargs):
super().__init__(name=name, price=price, *args, **kwargs)
def use(self) -> None:

View File

@ -195,7 +195,7 @@ class Game:
if key == KeyValues.ENTER:
item = self.store_menu.validate()
flag = item.be_sold(self.player, self.store_menu.merchant, self)
if not flag :
if not flag:
self.message = _("You do not have enough money")
self.display_actions(DisplayActions.UPDATE)
# Ensure that the cursor has a good position