Changeset - r14392:cedf8b528183
[Not reviewed]
master
0 1 0
frosch - 14 years ago 2010-01-30 10:08:39
frosch@openttd.org
(svn r18959) -Feature: [NewGRF] Allow layering of multiple groundsprites in spritelayouts of stations, houses and industrytiles; so hacks with zero-sized bounding boxes are no longer needed and no longer cause trouble.
1 file changed with 12 insertions and 1 deletions:
0 comments (0 inline, 0 general)
src/sprite.cpp
Show inline comments
 
@@ -30,6 +30,7 @@
 
 */
 
void DrawCommonTileSeq(const TileInfo *ti, const DrawTileSprites *dts, TransparencyOption to, int32 orig_offset, uint32 newgrf_offset, PaletteID default_palette, bool child_offset_is_unsigned)
 
{
 
	bool parent_sprite_encountered = false;
 
	const DrawTileSeqStruct *dtss;
 
	foreach_draw_tile_seq(dtss, dts->seq) {
 
		SpriteID image = dtss->image.sprite;
 
@@ -45,6 +46,7 @@ void DrawCommonTileSeq(const TileInfo *t
 
		PaletteID pal = SpriteLayoutPaletteTransform(image, dtss->image.pal, default_palette);
 

	
 
		if ((byte)dtss->delta_z != 0x80) {
 
			parent_sprite_encountered = true;
 
			AddSortableSpriteToDraw(
 
				image, pal,
 
				ti->x + dtss->delta_x, ti->y + dtss->delta_y,
 
@@ -55,7 +57,16 @@ void DrawCommonTileSeq(const TileInfo *t
 
		} else {
 
			int offs_x = child_offset_is_unsigned ? (uint8)dtss->delta_x : dtss->delta_x;
 
			int offs_y = child_offset_is_unsigned ? (uint8)dtss->delta_y : dtss->delta_y;
 
			AddChildSpriteScreen(image, pal, offs_x, offs_y, !HasBit(image, SPRITE_MODIFIER_OPAQUE) && IsTransparencySet(to));
 
			bool transparent = !HasBit(image, SPRITE_MODIFIER_OPAQUE) && IsTransparencySet(to);
 
			if (parent_sprite_encountered) {
 
				AddChildSpriteScreen(image, pal, offs_x, offs_y, transparent);
 
			} else {
 
				if (transparent) {
 
					SetBit(image, PALETTE_MODIFIER_TRANSPARENT);
 
					pal = PALETTE_TO_TRANSPARENT;
 
				}
 
				DrawGroundSprite(image, pal, NULL, offs_x, offs_y);
 
			}
 
		}
 
	}
 
}
0 comments (0 inline, 0 general)