changeset 7619:fef910a0b55a draft

(svn r11149) -Fix [FS#1225]: Draw building stages for new house ground sprites.
author maedhros <maedhros@openttd.org>
date Sun, 23 Sep 2007 10:54:11 +0000
parents 73db71c7da86
children 2c1aff5f8c22
files src/macros.h src/newgrf_house.cpp
diffstat 2 files changed, 14 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/macros.h
+++ b/src/macros.h
@@ -341,6 +341,15 @@
 #define GENERAL_SPRITE_COLOR(color) ((color) + PALETTE_RECOLOR_START)
 #define PLAYER_SPRITE_COLOR(owner) (GENERAL_SPRITE_COLOR(_player_colors[owner]))
 
+/**
+ * Whether a sprite comes from the original graphics files or a new grf file
+ * (either supplied by OpenTTD or supplied by the user).
+ *
+ * @param sprite The sprite to check
+ * @return True if it is a new sprite, or false if it is original.
+ */
+#define IS_CUSTOM_SPRITE(sprite) ((sprite) >= SPR_SIGNALS_BASE)
+
 extern const byte _ffb_64[128];
 
 /**
--- a/src/newgrf_house.cpp
+++ b/src/newgrf_house.cpp
@@ -308,14 +308,18 @@
 	SpriteID image = dts->ground_sprite;
 	SpriteID pal   = dts->ground_pal;
 
+	if (IS_CUSTOM_SPRITE(image)) image += stage;
+
 	if (GB(image, 0, SPRITE_WIDTH) != 0) DrawGroundSprite(image, pal);
 
 	foreach_draw_tile_seq(dtss, dts->seq) {
 		if (GB(dtss->image, 0, SPRITE_WIDTH) == 0) continue;
 
-		image = dtss->image + stage;
+		image = dtss->image;
 		pal   = dtss->pal;
 
+		if (IS_CUSTOM_SPRITE(image)) image += stage;
+
 		if ((HASBIT(image, SPRITE_MODIFIER_OPAQUE) || !HASBIT(_transparent_opt, TO_HOUSES)) && HASBIT(image, PALETTE_MODIFIER_COLOR)) {
 			if (pal == 0) {
 				const HouseSpec *hs = GetHouseSpecs(house_id);