summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/macros.h9
-rw-r--r--src/newgrf_house.cpp6
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);