Finally fixed sprite caching. For now it works only for one map, need to develop mapmanager and have a list of cached sprites for each map.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
from common import deepcopy, dataclass, field, scale_image, path_exists
|
||||
from common import deepcopy, dataclass, field, path_exists
|
||||
|
||||
@dataclass
|
||||
class Object:
|
||||
@@ -6,37 +6,15 @@ class Object:
|
||||
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"])
|
||||
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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user