summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/newgrf_house.cpp2
-rw-r--r--src/newgrf_industrytiles.cpp2
-rw-r--r--src/station_cmd.cpp2
-rw-r--r--src/viewport.cpp8
-rw-r--r--src/viewport.h2
5 files changed, 11 insertions, 5 deletions
diff --git a/src/newgrf_house.cpp b/src/newgrf_house.cpp
index 49679017d..b7718ee62 100644
--- a/src/newgrf_house.cpp
+++ b/src/newgrf_house.cpp
@@ -346,7 +346,7 @@ void DrawTileLayout(const TileInfo *ti, const SpriteGroup *group, byte stage, Ho
HASBIT(_transparent_opt, TO_HOUSES)
);
} else {
- AddChildSpriteScreen(image, pal, dtss->delta_x, dtss->delta_y);
+ AddChildSpriteScreen(image, pal, dtss->delta_x, dtss->delta_y, HASBIT(_transparent_opt, TO_HOUSES));
}
}
}
diff --git a/src/newgrf_industrytiles.cpp b/src/newgrf_industrytiles.cpp
index 22a50df8b..6c3c40c99 100644
--- a/src/newgrf_industrytiles.cpp
+++ b/src/newgrf_industrytiles.cpp
@@ -196,7 +196,7 @@ void IndustryDrawTileLayout(const TileInfo *ti, const SpriteGroup *group, byte r
!HASBIT(image, SPRITE_MODIFIER_OPAQUE) && HASBIT(_transparent_opt, TO_INDUSTRIES)
);
} else {
- AddChildSpriteScreen(image, pal, dtss->delta_x, dtss->delta_y);
+ AddChildSpriteScreen(image, pal, dtss->delta_x, dtss->delta_y, HASBIT(_transparent_opt, TO_INDUSTRIES));
}
}
}
diff --git a/src/station_cmd.cpp b/src/station_cmd.cpp
index 28ac9e134..ef27fc4a6 100644
--- a/src/station_cmd.cpp
+++ b/src/station_cmd.cpp
@@ -2115,7 +2115,7 @@ static void DrawTile_Station(TileInfo *ti)
HASBIT(_transparent_opt, TO_BUILDINGS)
);
} else {
- AddChildSpriteScreen(image, pal, dtss->delta_x, dtss->delta_y);
+ AddChildSpriteScreen(image, pal, dtss->delta_x, dtss->delta_y, HASBIT(_transparent_opt, TO_BUILDINGS));
}
}
}
diff --git a/src/viewport.cpp b/src/viewport.cpp
index a33df3db3..b23f4d1f2 100644
--- a/src/viewport.cpp
+++ b/src/viewport.cpp
@@ -613,13 +613,19 @@ void EndSpriteCombine()
_cur_vd->combine_sprites = 0;
}
-void AddChildSpriteScreen(SpriteID image, SpriteID pal, int x, int y)
+void AddChildSpriteScreen(SpriteID image, SpriteID pal, int x, int y, bool transparent)
{
ViewportDrawer *vd = _cur_vd;
ChildScreenSpriteToDraw *cs;
assert((image & SPRITE_MASK) < MAX_SPRITES);
+ /* make the sprites transparent with the right palette */
+ if (transparent) {
+ SETBIT(image, PALETTE_MODIFIER_TRANSPARENT);
+ pal = PALETTE_TO_TRANSPARENT;
+ }
+
if (vd->spritelist_mem >= vd->eof_spritelist_mem) {
DEBUG(sprite, 0, "Out of sprite memory");
return;
diff --git a/src/viewport.h b/src/viewport.h
index 4bd9fec5a..869bbee1a 100644
--- a/src/viewport.h
+++ b/src/viewport.h
@@ -61,7 +61,7 @@ void DrawGroundSprite(SpriteID image, SpriteID pal);
void DrawGroundSpriteAt(SpriteID image, SpriteID pal, int32 x, int32 y, byte z);
void AddSortableSpriteToDraw(SpriteID image, SpriteID pal, int x, int y, int w, int h, int dz, int z, bool transparent = false, int bb_offset_x = 0, int bb_offset_y = 0, int bb_offset_z = 0);
void *AddStringToDraw(int x, int y, StringID string, uint64 params_1, uint64 params_2);
-void AddChildSpriteScreen(SpriteID image, SpriteID pal, int x, int y);
+void AddChildSpriteScreen(SpriteID image, SpriteID pal, int x, int y, bool transparent = false);
void StartSpriteCombine();