From df037346744ea57204017e296625fb04fb17a726 Mon Sep 17 00:00:00 2001 From: maedhros Date: Sun, 23 Sep 2007 10:54:11 +0000 Subject: (svn r11149) -Fix [FS#1225]: Draw building stages for new house ground sprites. --- src/macros.h | 9 +++++++++ src/newgrf_house.cpp | 6 +++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/macros.h b/src/macros.h index 4ff23c1df..924276907 100644 --- a/src/macros.h +++ b/src/macros.h @@ -341,6 +341,15 @@ template static inline T TOGGLEBIT(T& x, int y) #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]; /** diff --git a/src/newgrf_house.cpp b/src/newgrf_house.cpp index 921c0dc10..f4fb9bf9a 100644 --- a/src/newgrf_house.cpp +++ b/src/newgrf_house.cpp @@ -308,14 +308,18 @@ void DrawTileLayout(const TileInfo *ti, const SpriteGroup *group, byte stage, Ho 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); -- cgit v1.2.3-54-g00ecf