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))
|
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))
|
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
|
sprite( 0, 44, 12, 10) # hq button icon
|
||||||
for i in range(3):
|
for i in range(3):
|
||||||
for j in range(4):
|
for j in range(4):
|
||||||
sprite(66 + 20 * j, 44 + 11 * i, 10, 10)
|
sprite(66 + 20 * j, 44 + 11 * i, 10, 10)
|
||||||
sprite( 0, 82, 11, 11)
|
sprite2( 0, 82, 11, 11, 0, 94)
|
||||||
sprite(12, 82, 11, 11)
|
sprite2(12, 82, 11, 11, 23, 94)
|
||||||
sprite(24, 82, 11, 11)
|
sprite2(24, 82, 11, 11, 47, 94)
|
||||||
# sprite( 0, 67, 11, 11)
|
|
||||||
# sprite(12, 67, 11, 11)
|
|
||||||
# sprite(24, 67, 11, 11)
|
|
||||||
|
|
||||||
innerhl_png = grf.ImageFile('sprites/innerhighlight00.png')
|
innerhl_png = grf.ImageFile('sprites/innerhighlight00.png')
|
||||||
sprite = lambda *args, **kw: gen.add_sprite(grf.FileSprite(innerhl_png, *args, **kw))
|
sprite = lambda *args, **kw: gen.add_sprite(grf.FileSprite(innerhl_png, *args, **kw))
|
||||||
|
|||||||
@@ -242,21 +242,26 @@ class DescriptionSprite(BaseSprite):
|
|||||||
class NewGRF:
|
class NewGRF:
|
||||||
def __init__(self, grfid, name, description):
|
def __init__(self, grfid, name, description):
|
||||||
self.sprites = []
|
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
|
self._next_sprite_id = 1
|
||||||
|
|
||||||
def add_sprite(self, *sprites):
|
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(all(isinstance(s, RealSprite) for s in sprites))
|
||||||
assert(len(set(s.zoom for s in sprites)) == len(sprites))
|
assert(len(set(s.zoom for s in sprites)) == len(sprites))
|
||||||
|
|
||||||
if isinstance(sprites[0], RealSprite):
|
|
||||||
for s in sprites:
|
for s in sprites:
|
||||||
s.sprite_id = self._next_sprite_id
|
s.sprite_id = self._next_sprite_id
|
||||||
self._next_sprite_id += 1
|
self._next_sprite_id += 1
|
||||||
|
|
||||||
for s in sprites:
|
for s in sprites:
|
||||||
self.sprites.append(s)
|
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):
|
def _write_pseudo_sprite(self, f, data, grf_type=0xff):
|
||||||
f.write(struct.pack('<IB', len(data), grf_type))
|
f.write(struct.pack('<IB', len(data), grf_type))
|
||||||
@@ -264,7 +269,7 @@ class NewGRF:
|
|||||||
|
|
||||||
def write(self, filename):
|
def write(self, filename):
|
||||||
data_offset = 14
|
data_offset = 14
|
||||||
for s in self.sprites:
|
for s in self.pseudo_sprites:
|
||||||
data_offset += s.get_data_size() + 5
|
data_offset += s.get_data_size() + 5
|
||||||
|
|
||||||
with open(filename, 'wb') as f:
|
with open(filename, 'wb') as f:
|
||||||
@@ -276,11 +281,10 @@ class NewGRF:
|
|||||||
# f.write(b'\xb0\x01\x00\x00') # num + 0xff -> recoloursprites() (257 each)
|
# f.write(b'\xb0\x01\x00\x00') # num + 0xff -> recoloursprites() (257 each)
|
||||||
self._write_pseudo_sprite(f, b'\x02\x00\x00\x00')
|
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)
|
self._write_pseudo_sprite(f, s.get_data(), grf_type=0xfd if isinstance(s, RealSprite) else 0xff)
|
||||||
f.write(b'\x00\x00\x00\x00')
|
f.write(b'\x00\x00\x00\x00')
|
||||||
for s in self.sprites:
|
for s in self.sprites:
|
||||||
if not isinstance(s, RealSprite): continue
|
|
||||||
f.write(s.get_real_data())
|
f.write(s.get_real_data())
|
||||||
|
|
||||||
f.write(b'\x00\x00\x00\x00')
|
f.write(b'\x00\x00\x00\x00')
|
||||||
Reference in New Issue
Block a user