from typing import Dict from actions import Action, Idle, NA class Entity(): pass class Item(Entity): pass class Creature(Entity): def __init__(self, codename): self.speed = CREATURES_DATA[codename]["speed"] self.max_hp = CREATURES_DATA[codename]["max_hp"] self.hp = self.max_hp self.damage = CREATURES_DATA[codename]["damage"] self.action: Action = NA() class Player(Creature): def __init__(self): super().__init__("player") self.equipment: Dict[str, Dict | None] = { "main_hand": None, "feet": None } def equip(self, item, slot) -> None: self.equipment[slot] = ITEMS_DATA[item] def total_damage(self) -> int: dmg = self.damage for item in self.equipment.values(): if item: dmg += item["damage"] return dmg class Enemy(Creature): def __init__(self, codename): super().__init__(codename) def calculate_action(self) -> None: self.action: Action = Idle() CREATURES_DATA = { "player": { "max_hp": 20, "speed": 10, "damage": 1 }, "slime": { "max_hp": 5, "speed": 5, "damage": 1 } } ITEMS_DATA = { "shiv": { "damage": 3, "name": "Shiv" }, "fire_gem": { "damage": 1, "name": "Fire gem" } }