from common import deepcopy, dataclass, field, scale_image, path_exists @dataclass class Object: id: str name: str sprite_name: str sprite_state: int = 0 #sprite_scale: int = 1 #sprite_cache: dict = field(default_factory = dict) #sprite_cache_upd: int = 100 # #def cache_sprite(self, sprites): # if self.sprite_name not in self.sprite_cache: # self.sprite_cache[self.sprite_name] = {} # self.sprite_cache[self.sprite_name][self.sprite_state] = deepcopy(sprites[self.sprite_name][self.sprite_state]) # #def scale_cached(self, draw_data): # if self.sprite_scale != draw_data["scale"]: # self.sprite_scale = draw_data["scale"] # self.sprite_cache[self.sprite_name][self.sprite_state] = deepcopy(scale_image(draw_data["sprites"][self.sprite_name][self.sprite_state], draw_data["scale"])) def draw(self, draw_data): #if draw_data["global_counter"] > self.sprite_cache_upd: # self.sprite_cache = {} 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 #if path_exists(self.sprite_cache, [self.sprite_name, self.sprite_state]): # self.scale_cached(draw_data) #else: # self.cache_sprite(draw_data["sprites"]) sp = scale_image(draw_data["sprites"][self.sprite_name][self.sprite_state], draw_data["scale"]) 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) @dataclass class Terrain(Object): pass @dataclass class Creature(Object): pass #status #actions #tasks #items @dataclass class Item(Object): pass @dataclass class Building(Object): pass