roguepy/entity.py

64 lines
1.4 KiB
Python

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"
}
}