From 6d21087be9e6c7c5de6c3e0aa4477c4d4c97603f Mon Sep 17 00:00:00 2001 From: dP Date: Fri, 5 Nov 2021 01:40:35 +0300 Subject: [PATCH] grf.py: Don't write pseudo sprites for EZ sprites --- grf/cmclient/gencmclientgrf.py | 10 ++++------ grf/cmclient/grf.py | 22 +++++++++++++--------- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/grf/cmclient/gencmclientgrf.py b/grf/cmclient/gencmclientgrf.py index a2b2479e6c..d527e177cb 100644 --- a/grf/cmclient/gencmclientgrf.py +++ b/grf/cmclient/gencmclientgrf.py @@ -12,16 +12,14 @@ gen.add_sprite(grf.FileSprite(toolbar_png, 0, 0, 20, 14, yofs=4), grf.FileSprite(toolbar_png, 32, 0, 40, 40, zoom=grf.ZOOM_2X)) sprite = lambda *args, **kw: gen.add_sprite(grf.FileSprite(toolbar_png, *args, **kw)) +sprite2 = lambda x, y, w, h, x2, y2: gen.add_sprite(grf.FileSprite(toolbar_png, x, y, w, h), grf.FileSprite(toolbar_png, x2, y2, w * 2, h * 2, zoom=grf.ZOOM_2X)) sprite( 0, 44, 12, 10) # hq button icon for i in range(3): for j in range(4): sprite(66 + 20 * j, 44 + 11 * i, 10, 10) -sprite( 0, 82, 11, 11) -sprite(12, 82, 11, 11) -sprite(24, 82, 11, 11) -# sprite( 0, 67, 11, 11) -# sprite(12, 67, 11, 11) -# sprite(24, 67, 11, 11) +sprite2( 0, 82, 11, 11, 0, 94) +sprite2(12, 82, 11, 11, 23, 94) +sprite2(24, 82, 11, 11, 47, 94) innerhl_png = grf.ImageFile('sprites/innerhighlight00.png') sprite = lambda *args, **kw: gen.add_sprite(grf.FileSprite(innerhl_png, *args, **kw)) diff --git a/grf/cmclient/grf.py b/grf/cmclient/grf.py index 8932950ba9..ec6e198b23 100644 --- a/grf/cmclient/grf.py +++ b/grf/cmclient/grf.py @@ -242,21 +242,26 @@ class DescriptionSprite(BaseSprite): class NewGRF: def __init__(self, grfid, name, description): self.sprites = [] - self.sprites.append(DescriptionSprite(grfid, name, description)) + self.pseudo_sprites = [] + self.pseudo_sprites.append(DescriptionSprite(grfid, name, description)) self._next_sprite_id = 1 def add_sprite(self, *sprites): - if len(sprites) > 1: + assert(len(sprites) > 0) + if isinstance(sprites[0], RealSprite): assert(all(isinstance(s, RealSprite) for s in sprites)) assert(len(set(s.zoom for s in sprites)) == len(sprites)) - - if isinstance(sprites[0], RealSprite): for s in sprites: s.sprite_id = self._next_sprite_id self._next_sprite_id += 1 - for s in sprites: - self.sprites.append(s) + for s in sprites: + self.sprites.append(s) + + self.pseudo_sprites.append(sprites[0]) + else: + assert(len(sprites) == 1) + self.pseudo_sprites.append(sprites[0]) def _write_pseudo_sprite(self, f, data, grf_type=0xff): f.write(struct.pack(' recoloursprites() (257 each) self._write_pseudo_sprite(f, b'\x02\x00\x00\x00') - for s in self.sprites: + for s in self.pseudo_sprites: self._write_pseudo_sprite(f, s.get_data(), grf_type=0xfd if isinstance(s, RealSprite) else 0xff) f.write(b'\x00\x00\x00\x00') for s in self.sprites: - if not isinstance(s, RealSprite): continue f.write(s.get_real_data()) f.write(b'\x00\x00\x00\x00') \ No newline at end of file