diff options
-rw-r--r-- | src/macros.h | 9 | ||||
-rw-r--r-- | src/newgrf_house.cpp | 6 |
2 files changed, 14 insertions, 1 deletions
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<typename T> 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); |