from common import deepcopy, dataclass, field, path_exists @dataclass class Object: id: str name: str sprite_name: str sprite_state: int = 0 # weight # effects = {} def draw(self, draw_data): if draw_data["spr_up"] == 0: if self.sprite_state == len(draw_data["sprites"][self.sprite_name]) - 1: self.sprite_state = 0 else: self.sprite_state += 1 sp = draw_data["sprites"][self.sprite_name][self.sprite_state] rect = sp.get_rect(center = (draw_data["x"] + draw_data["w"] /2, draw_data["y"] + draw_data["h"]/ 2)) draw_data["screen"].blit(sp, rect) def update(self): pass @dataclass class Terrain(Object): pass @dataclass class Creature(Object): current_action: int = 0 quick_actions: list = field(default_factory = list) tasks: list = field(default_factory = list) inventory: dict = field(default_factory = dict) def update(self): pass @dataclass class Item(Object): # passive_abilities = {} # active_abilities = {} pass @dataclass class Container(Item): # content = {} pass @dataclass class Building(Object): pass