(svn r1858) Let ReadSprite() handle the subtleties of loading a sprite, not its caller
authortron
Fri, 11 Feb 2005 13:46:25 +0000
changeset 1354 5e5c89b9b169
parent 1353 48b59d472641
child 1355 aa6c2b776727
(svn r1858) Let ReadSprite() handle the subtleties of loading a sprite, not its caller
spritecache.c
--- a/spritecache.c	Fri Feb 11 13:35:27 2005 +0000
+++ b/spritecache.c	Fri Feb 11 13:46:25 2005 +0000
@@ -149,13 +149,16 @@
 	}
 }
 
-static void ReadSprite(int num, byte *dest)
+static void ReadSprite(SpriteID id, byte *dest)
 {
+	uint num = _sprite_size[id];
 	byte type;
 	byte *rel;
 	int8 i;
 	int dist;
 
+	FioSeekToFile(_sprite_file_pos[id]);
+
 	type = FioReadByte();
 	/* We've decoded special sprites when reading headers. */
 	if (type != 0xFF) {
@@ -163,6 +166,7 @@
 		Sprite* sprite = dest;
 		sprite->info = type;
 		sprite->height = FioReadByte();
+		if (id == 142) sprite->height = 10; // Compensate for a TTD bug
 		sprite->width = FioReadWord();
 		sprite->x_offs = FioReadWord();
 		sprite->y_offs = FioReadWord();
@@ -625,11 +629,7 @@
 
 					_sprite_ptr[sprite] = s->data;
 
-					FioSeekToFile(_sprite_file_pos[sprite]);
-					ReadSprite(_sprite_size[sprite], s->data);
-
-					// Patch the height to compensate for a TTD bug?
-					if (sprite == 142) s->data[1] = 10;
+					ReadSprite(sprite, s->data);
 
 					// Return sprite ptr
 					return s->data;