(svn r1854) Split GetSpritePtr() into GetSprite() for regular sprites (returning a Sprite*) and GetNonSprite() for "sprites" of type 0xFF (returning byte*)
authortron
Thu, 10 Feb 2005 12:14:38 +0000
changeset 1350 067b22970f19
parent 1349 07514c2cc6d1
child 1351 3e7aa0d35f8f
(svn r1854) Split GetSpritePtr() into GetSprite() for regular sprites (returning a Sprite*) and GetNonSprite() for "sprites" of type 0xFF (returning byte*)
gfx.c
gfx.h
landscape.c
main_gui.c
smallmap_gui.c
spritecache.c
spritecache.h
--- a/gfx.c	Thu Feb 10 05:43:30 2005 +0000
+++ b/gfx.c	Thu Feb 10 12:14:38 2005 +0000
@@ -144,7 +144,7 @@
 			} while (--bottom);
 		} else {
 			/* use colortable mode */
-			ctab = GetSpritePtr(color & 0x3FFF) + 1;
+			ctab = GetNonSprite(color & 0x3FFF) + 1;
 			do {
 				int i;
 				for(i=0; i!=right;i++)
@@ -528,7 +528,7 @@
 		if (c >= ASCII_LETTERSTART) {
 			if (x >= dpi->left + dpi->width) goto skip_char;
 			if (x + 26 >= dpi->left) {
-				GfxMainBlitter(GetSpritePtr(base + 2 + c - ASCII_LETTERSTART), x, y, 1);
+				GfxMainBlitter(GetSprite(base + 2 + c - ASCII_LETTERSTART), x, y, 1);
 			}
 			x += _stringwidth_table[base + c - ' '];
 		} else if (c == ASCII_NL) { // newline = {}
@@ -560,13 +560,13 @@
 
 void DrawSprite(uint32 img, int x, int y) {
 	if (img & 0x8000) {
-		_color_remap_ptr = GetSpritePtr(img >> 16) + 1;
-		GfxMainBlitter(GetSpritePtr(img & 0x3FFF), x, y, 1);
+		_color_remap_ptr = GetNonSprite(img >> 16) + 1;
+		GfxMainBlitter(GetSprite(img & 0x3FFF), x, y, 1);
 	} else if (img & 0x4000) {
-		_color_remap_ptr = GetSpritePtr(img >> 16) + 1;
-		GfxMainBlitter(GetSpritePtr(img & 0x3FFF), x, y, 2);
+		_color_remap_ptr = GetNonSprite(img >> 16) + 1;
+		GfxMainBlitter(GetSprite(img & 0x3FFF), x, y, 2);
 	} else {
-		GfxMainBlitter(GetSpritePtr(img & 0x3FFF), x, y, 0);
+		GfxMainBlitter(GetSprite(img & 0x3FFF), x, y, 0);
 	}
 }
 
@@ -1628,15 +1628,15 @@
 
 	// 2 equals space.
 	for(i=2; i != 0xE2; i++) {
-		*b++ = (byte)((i < 93 || i >= 129 || i == 98) ? GetSpritePtr(i)[2] : 0);
+		*b++ = (byte)((i < 93 || i >= 129 || i == 98) ? TO_LE16(GetSprite(i)->width) : 0);
 	}
 
 	for(i=0xE2; i != 0x1C2; i++) {
-		*b++ = (byte)((i < 317 || i >= 353) ? GetSpritePtr(i)[2]+1 : 0);
+		*b++ = (byte)((i < 317 || i >= 353) ? TO_LE16(GetSprite(i)->width) + 1 : 0);
 	}
 
 	for(i=0x1C2; i != 0x2A2; i++) {
-		*b++ = (byte)((i < 541 || i >= 577) ? GetSpritePtr(i)[2]+1 : 0);
+		*b++ = (byte)((i < 541 || i >= 577) ? TO_LE16(GetSprite(i)->width) + 1 : 0);
 	}
 }
 
@@ -1911,7 +1911,7 @@
 	if (cv->sprite == cursor)
 		return;
 
-	p =	GetSpritePtr(cursor & 0x3FFF);
+	p =	GetSprite(cursor & 0x3FFF);
 	cv->sprite = cursor;
 	cv->size.y = p->height;
 	cv->size.x = TO_LE16(p->width);
--- a/gfx.h	Thu Feb 10 05:43:30 2005 +0000
+++ b/gfx.h	Thu Feb 10 12:14:38 2005 +0000
@@ -17,16 +17,6 @@
 };
 
 
-typedef struct Sprite {
-	byte info;
-	byte height;
-	uint16 width; // LE!
-	int16 x_offs; // LE!
-	int16 y_offs; // LE!
-	byte data[VARARRAY_SIZE];
-} Sprite;
-assert_compile(sizeof(Sprite) == 8);
-
 typedef struct CursorVars {
 	Point pos, size, offs, delta;
 	Point draw_pos, draw_size;
--- a/landscape.c	Thu Feb 10 05:43:30 2005 +0000
+++ b/landscape.c	Thu Feb 10 12:14:38 2005 +0000
@@ -476,7 +476,7 @@
 	byte direction;
 
 	r = Random();
-	p = GetSpritePtr((((r >> 24) * _genterrain_tbl_1[type]) >> 8) + _genterrain_tbl_2[type] + 4845);
+	p = GetNonSprite((((r >> 24) * _genterrain_tbl_1[type]) >> 8) + _genterrain_tbl_2[type] + 4845);
 
 	x = r & MapMaxX();
 	y = (r >> MapLogX()) & MapMaxY();
--- a/main_gui.c	Thu Feb 10 05:43:30 2005 +0000
+++ b/main_gui.c	Thu Feb 10 12:14:38 2005 +0000
@@ -2378,7 +2378,7 @@
 	int width,height;
 
 	for(i=0; i!=16; i++) {
-		b = GetSpritePtr(0x307 + i);
+		b = GetNonSprite(0x307 + i);
 		assert(b);
 		_color_list[i] = *(ColorList*)(b + 0xC6);
 	}
--- a/smallmap_gui.c	Thu Feb 10 05:43:30 2005 +0000
+++ b/smallmap_gui.c	Thu Feb 10 12:14:38 2005 +0000
@@ -618,7 +618,7 @@
 		FOR_ALL_PLAYERS(p) {
 			if (p->is_active)
 				_owner_colors[p->index] =
-					dup_byte32(GetSpritePtr(0x307 + p->player_color)[0xCB]);
+					dup_byte32(GetNonSprite(0x307 + p->player_color)[0xCB]);
 		}
 	}
 
--- a/spritecache.c	Thu Feb 10 05:43:30 2005 +0000
+++ b/spritecache.c	Thu Feb 10 12:14:38 2005 +0000
@@ -698,7 +698,12 @@
 }
 #endif
 
-byte *GetSpritePtr(SpriteID sprite)
+Sprite *GetSprite(SpriteID sprite)
+{
+	return GetNonSprite(sprite);
+}
+
+byte *GetNonSprite(SpriteID sprite)
 {
 	byte *p;
 
@@ -987,7 +992,7 @@
 
 	p = _sprite_ptr[sprite];
 	if (p == NULL)
-		p = GetSpritePtr(sprite);
+		p = GetSprite(sprite);
 
 	/* decode sprite header */
 	sd = &sd_static;
--- a/spritecache.h	Thu Feb 10 05:43:30 2005 +0000
+++ b/spritecache.h	Thu Feb 10 12:14:38 2005 +0000
@@ -1,13 +1,24 @@
 #ifndef SPRITECACHE_H
 #define SPRITECACHE_H
 
+typedef struct Sprite {
+	byte info;
+	byte height;
+	uint16 width; // LE!
+	int16 x_offs; // LE!
+	int16 y_offs; // LE!
+	byte data[VARARRAY_SIZE];
+} Sprite;
+assert_compile(sizeof(Sprite) == 8);
+
 typedef struct {
 	int xoffs, yoffs;
 	int xsize, ysize;
 } SpriteDimension;
 
 const SpriteDimension *GetSpriteDimension(SpriteID sprite);
-byte *GetSpritePtr(SpriteID sprite);
+Sprite *GetSprite(SpriteID sprite);
+byte *GetNonSprite(SpriteID sprite);
 
 void GfxInitSpriteMem(byte *ptr, uint32 size);
 void GfxLoadSprites(void);