roguepy/entity.py

64 lines
1.4 KiB
Python
Raw Permalink Normal View History

2023-03-22 17:17:44 +00:00
from typing import Dict
2023-03-02 16:51:17 +00:00
from actions import Action, Idle, NA
2023-03-01 19:47:24 +00:00
class Entity():
pass
class Item(Entity):
pass
2023-03-13 18:46:29 +00:00
class Creature(Entity):
2023-03-21 18:36:19 +00:00
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"]
2023-03-02 16:51:17 +00:00
self.action: Action = NA()
2023-03-01 19:47:24 +00:00
2023-03-13 18:46:29 +00:00
class Player(Creature):
2023-03-01 19:47:24 +00:00
def __init__(self):
2023-03-21 18:36:19 +00:00
super().__init__("player")
2023-03-22 17:17:44 +00:00
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
2023-03-01 19:47:24 +00:00
2023-03-13 18:46:29 +00:00
class Enemy(Creature):
2023-03-21 18:36:19 +00:00
def __init__(self, codename):
super().__init__(codename)
2023-03-02 16:51:17 +00:00
2023-03-22 17:17:44 +00:00
def calculate_action(self) -> None:
2023-03-21 18:36:19 +00:00
self.action: Action = Idle()
CREATURES_DATA = {
"player": {
"max_hp": 20,
"speed": 10,
"damage": 1
},
"slime": {
"max_hp": 5,
"speed": 5,
"damage": 1
}
}
ITEMS_DATA = {
2023-03-22 17:17:44 +00:00
"shiv": {
"damage": 3,
"name": "Shiv"
},
"fire_gem": {
"damage": 1,
"name": "Fire gem"
2023-03-21 18:36:19 +00:00
}
}