diff --git a/agrf/lib/building/layout.py b/agrf/lib/building/layout.py index c41a90f1..e75643ba 100644 --- a/agrf/lib/building/layout.py +++ b/agrf/lib/building/layout.py @@ -32,11 +32,12 @@ def __init__(self, *args, flags=None, **kwargs): super().__init__(*args, **kwargs) self.flags = flags or {} + @property + def flags_translated(self): + return {k: (v if k == "add" else v.get_index()) for k, v in self.flags.items() if v is not None} + def registers_to_grf_dict(self): - return { - "flags": sum(grf.SPRITE_FLAGS[k][1] for k in self.flags.keys()), - "registers": {k: (v if k == "add" else v.get_index()) for k, v in self.flags.items() if v is not None}, - } + return {"flags": sum(grf.SPRITE_FLAGS[k][1] for k in self.flags.keys()), "registers": self.flags_translated} class GroundSpriteMixin: @@ -246,16 +247,6 @@ def demo_translate(self, xofs, yofs, zofs): self.flags, ) - @functools.cache - def filter_register(self, reg): - return ADefaultParentSprite( - self.sprite, - self.extent, - self.offset, - [x for x in self.child_sprites if x.flags.get("dodraw") != reg], - self.flags, - ) - @property def L(self): return self @@ -333,6 +324,7 @@ def to_action2(self, sprite_list): "sprite": grf.SpriteRef(sprite_list.index(self.sprite), is_global=False), "offset": self.offset, "extent": self.extent, + **self.flags_translated, } ] + [s for x in self.child_sprites for s in x.to_action2(sprite_list)] @@ -370,16 +362,6 @@ def squash(self, ratio): self.flags, ) - @functools.cache - def filter_register(self, reg): - return AParentSprite( - self.sprite, - self.extent, - self.offset, - [x for x in self.child_sprites if x.flags.get("dodraw") != reg], - self.flags, - ) - @property def L(self): return self @@ -452,7 +434,13 @@ def to_grf(self, sprite_list): ) def to_action2(self, sprite_list): - return [{"sprite": grf.SpriteRef(sprite_list.index(self.sprite), is_global=False), "pixel_offset": self.offset}] + return [ + { + "sprite": grf.SpriteRef(sprite_list.index(self.sprite), is_global=False), + "pixel_offset": self.offset, + **self.flags_translated, + } + ] def graphics(self, scale, bpp, climate="temperate", subclimate="default"): if self.sprite is grf.EMPTY_SPRITE: @@ -581,12 +569,6 @@ def raise_tile(self, delta=1): def lower_tile(self, delta=1): return self.raise_tile(-delta) - @functools.cache - def filter_register(self, reg): - return replace( - self, parent_sprites=[s.filter_register(reg) for s in self.parent_sprites if s.flags.get("dodraw") != reg] - ) - @functools.cache def demo_translate(self, xofs, yofs): from station.stations.misc import empty_ground