(svn r11190) -Fix: make snowy roofs of (newgrf) houses also transparent.
authorrubidium
Sun, 30 Sep 2007 19:33:40 +0000
changeset 7659 c86da4c6292f
parent 7658 509348d18665
child 7660 ce99f31266a9
(svn r11190) -Fix: make snowy roofs of (newgrf) houses also transparent.
src/newgrf_house.cpp
src/newgrf_industrytiles.cpp
src/station_cmd.cpp
src/viewport.cpp
src/viewport.h
--- a/src/newgrf_house.cpp	Sun Sep 30 18:53:59 2007 +0000
+++ b/src/newgrf_house.cpp	Sun Sep 30 19:33:40 2007 +0000
@@ -346,7 +346,7 @@
 				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));
 		}
 	}
 }
--- a/src/newgrf_industrytiles.cpp	Sun Sep 30 18:53:59 2007 +0000
+++ b/src/newgrf_industrytiles.cpp	Sun Sep 30 19:33:40 2007 +0000
@@ -196,7 +196,7 @@
 				!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));
 		}
 	}
 }
--- a/src/station_cmd.cpp	Sun Sep 30 18:53:59 2007 +0000
+++ b/src/station_cmd.cpp	Sun Sep 30 19:33:40 2007 +0000
@@ -2115,7 +2115,7 @@
 				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));
 		}
 	}
 }
--- a/src/viewport.cpp	Sun Sep 30 18:53:59 2007 +0000
+++ b/src/viewport.cpp	Sun Sep 30 19:33:40 2007 +0000
@@ -613,13 +613,19 @@
 	_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;
--- a/src/viewport.h	Sun Sep 30 18:53:59 2007 +0000
+++ b/src/viewport.h	Sun Sep 30 19:33:40 2007 +0000
@@ -61,7 +61,7 @@
 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();