diff --git a/entity.py b/entity.py index ef22087..75515a6 100644 --- a/entity.py +++ b/entity.py @@ -1,7 +1,20 @@ from .serializable import Serializable +from enum import Enum, IntEnum + +class Action(Enum): + ATTACK = 'strength' # Physical Battle action + FORCE = 'strength' # Actions that requires physical effort + SPELL = 'intelligence' # Many kind of spell (battle or not) + SCAN = 'wisdom' # Danger in environment or NPC's lies + SPEECH = 'charisma' # To persuade or deceive + AGILE = 'dexterity' # Avoid traps or incoming attacks & spell + +class BonusAction(IntEnum): + EQUIP_ITEM = 0 + USE_CONSUMMABLE = 1 class Entity(Serializable): - def __init__(self, name, strength, dexterity, intelligence, wisdom, charisma, hp, armor, speed): + def __init__(self, name, strength, dexterity, intelligence, wisdom, charisma, hp, armor, speed, equipped_item=None): self.name =name self.strength = strength self.dexterity = dexterity @@ -10,4 +23,8 @@ class Entity(Serializable): self.charisma = charisma self.hp =hp self.armor = armor - self.speed = speed \ No newline at end of file + self.speed = speed + self.equipped_item = equipped_item + + def make_a_turn(self, action:Action, bonus_action:BonusAction): + pass \ No newline at end of file diff --git a/inventory.py b/inventory.py index 0ae1030..07f7799 100644 --- a/inventory.py +++ b/inventory.py @@ -1,5 +1,31 @@ from .serializable import Serializable +from .item import Item class Inventory(Serializable): - def __init__(self): - super().__init__() \ No newline at end of file + def __init__(self, max_capacity:float = 50.0): + super().__init__() + self.items:list[Item] = [] + self.max_capacity = max_capacity # Weight (kg) + + def current_capacity(self): + return sum([item.weight for item in self.items]) + + def list_items(self): + s_items = '' + for item in self.items: + s_items += item.__str__() + '; ' + return s_items + + def add_item(self, added_item:Item): + if added_item.weight + self.current_capacity() > self.max_capacity: + return f'{added_item.name} is too heavy to fit inside the inventory: {added_item.weight + self.current_capacity() - self.max_capacity}kg in surplus!' + else: + self.items.append(added_item) + return f'{added_item.name} added to inventory. Current items load: {self.current_capacity()}kg' + + def remove_item(self, r_item): + if r_item in self.items: + self.items.remove(r_item) + return f'{r_item.name} was removed from the inventory' + else: + return f'{r_item.name} is not present within the inventory' \ No newline at end of file diff --git a/item.py b/item.py index aefbd56..7abb753 100644 --- a/item.py +++ b/item.py @@ -1,5 +1,11 @@ from .serializable import Serializable class Item(Serializable): - def __init__(self): - super().__init__() \ No newline at end of file + def __init__(self,name:str, description:str, weight:float = 10.0): + super().__init__() + self.name = name + self.description = description + self.weight = weight + + def __str__(self): + return self.name + '(' + self.weight + ' kg)' + ': ' + self.description \ No newline at end of file diff --git a/npc.py b/npc.py index 6ab6f9a..0602f8d 100644 --- a/npc.py +++ b/npc.py @@ -1,6 +1,5 @@ from .entity import Entity class NPC(Entity): - def __init__(self, name, strength, dexterity, intelligence, wisdom, charisma, hp, armor, speed, item=None): - super().__init__(name, strength, dexterity, intelligence, wisdom, charisma, hp, armor, speed) - self.item = item \ No newline at end of file + def __init__(self, name, strength, dexterity, intelligence, wisdom, charisma, hp, armor, speed, equipped_item=None): + super().__init__(name, strength, dexterity, intelligence, wisdom, charisma, hp, armor, speed, equipped_item) \ No newline at end of file diff --git a/player.py b/player.py index 6a05bcd..9d758b7 100644 --- a/player.py +++ b/player.py @@ -1,6 +1,7 @@ from .entity import Entity +from .inventory import Inventory class Player(Entity): - def __init__(self, name, strength, dexterity, intelligence, wisdom, charisma, hp, armor, speed, item=None): - super().__init__(name, strength, dexterity, intelligence, wisdom, charisma, hp, armor, speed) - self.item = item \ No newline at end of file + def __init__(self, name, strength, dexterity, intelligence, wisdom, charisma, hp, armor, speed, equipped_item=None): + super().__init__(name, strength, dexterity, intelligence, wisdom, charisma, hp, armor, speed, equipped_item) + self.inventory = Inventory(max_capacity=50) \ No newline at end of file