Mercurial > hg > openttd
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);