grf.py: Don't write pseudo sprites for EZ sprites
This commit is contained in:
@@ -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))
|
||||
|
||||
@@ -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('<IB', len(data), grf_type))
|
||||
@@ -264,7 +269,7 @@ class NewGRF:
|
||||
|
||||
def write(self, filename):
|
||||
data_offset = 14
|
||||
for s in self.sprites:
|
||||
for s in self.pseudo_sprites:
|
||||
data_offset += s.get_data_size() + 5
|
||||
|
||||
with open(filename, 'wb') as f:
|
||||
@@ -276,11 +281,10 @@ class NewGRF:
|
||||
# f.write(b'\xb0\x01\x00\x00') # num + 0xff -> 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')
|
||||
Reference in New Issue
Block a user