# HG changeset patch # User rubidium # Date 1191180820 0 # Node ID c86da4c6292fd9731b5a6c049273d1e7eee44d74 # Parent 509348d18665e14553e516dbe32e64f4e2e17478 (svn r11190) -Fix: make snowy roofs of (newgrf) houses also transparent. diff -r 509348d18665 -r c86da4c6292f src/newgrf_house.cpp --- 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)); } } } diff -r 509348d18665 -r c86da4c6292f src/newgrf_industrytiles.cpp --- 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)); } } } diff -r 509348d18665 -r c86da4c6292f src/station_cmd.cpp --- 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)); } } } diff -r 509348d18665 -r c86da4c6292f src/viewport.cpp --- 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; diff -r 509348d18665 -r c86da4c6292f src/viewport.h --- 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();