Changeset - r9549:382f2ad80529
[Not reviewed]
master
0 4 0
smatz - 16 years ago 2008-06-18 16:48:58
smatz@openttd.org
(svn r13565) -Change [FS#2077]: when invisibility is set, sprite sequences are now drawn until first non-opaque sprite is found (bit 14 not set)
This is to balance performance, code complexity and NewGRF requirements
4 files changed with 13 insertions and 12 deletions:
0 comments (0 inline, 0 general)
src/newgrf_house.cpp
Show inline comments
 
@@ -330,15 +330,15 @@ void DrawTileLayout(const TileInfo *ti, 
 

	
 
	if (GB(image, 0, SPRITE_WIDTH) != 0) DrawGroundSprite(image, pal);
 

	
 
	/* End now, if houses are invisible */
 
	if (IsInvisibilitySet(TO_HOUSES)) return;
 

	
 
	foreach_draw_tile_seq(dtss, dts->seq) {
 
		if (GB(dtss->image.sprite, 0, SPRITE_WIDTH) == 0) continue;
 

	
 
		image = dtss->image.sprite;
 
		pal   = dtss->image.pal;
 

	
 
		/* Stop drawing sprite sequence once we meet a sprite that doesn't have to be opaque */
 
		if (IsInvisibilitySet(TO_HOUSES) && !HasBit(image, SPRITE_MODIFIER_OPAQUE)) return;
 

	
 
		if (IS_CUSTOM_SPRITE(image)) image += stage;
 

	
 
		if ((HasBit(image, SPRITE_MODIFIER_OPAQUE) || !IsTransparencySet(TO_HOUSES)) && HasBit(image, PALETTE_MODIFIER_COLOR)) {
src/newgrf_industrytiles.cpp
Show inline comments
 
@@ -187,15 +187,15 @@ void IndustryDrawTileLayout(const TileIn
 

	
 
	if (GB(image, 0, SPRITE_WIDTH) != 0) DrawGroundSprite(image, pal);
 

	
 
	/* End now if industries are invisible */
 
	if (IsInvisibilitySet(TO_INDUSTRIES)) return;
 

	
 
	foreach_draw_tile_seq(dtss, dts->seq) {
 
		if (GB(dtss->image.sprite, 0, SPRITE_WIDTH) == 0) continue;
 

	
 
		image = dtss->image.sprite;
 
		pal   = dtss->image.pal;
 

	
 
		/* Stop drawing sprite sequence once we meet a sprite that doesn't have to be opaque */
 
		if (IsInvisibilitySet(TO_INDUSTRIES) && !HasBit(image, SPRITE_MODIFIER_OPAQUE)) return;
 

	
 
		if (IS_CUSTOM_SPRITE(image)) image += stage;
 

	
 
		if (HasBit(image, PALETTE_MODIFIER_COLOR)) {
src/rail_cmd.cpp
Show inline comments
 
@@ -1847,13 +1847,13 @@ default_waypoint:
 

	
 
		if (HasCatenaryDrawn(GetRailType(ti->tile))) DrawCatenary(ti);
 

	
 
		/* End now if buildings are invisible */
 
		if (IsInvisibilitySet(TO_BUILDINGS)) return;
 

	
 
		foreach_draw_tile_seq(dtss, dts->seq) {
 
			SpriteID image = dtss->image.sprite;
 
			SpriteID pal;
 

	
 
			/* Stop drawing sprite sequence once we meet a sprite that doesn't have to be opaque */
 
			if (IsInvisibilitySet(TO_BUILDINGS) && !HasBit(image, SPRITE_MODIFIER_OPAQUE)) return;
 

	
 
			/* Unlike stations, our default waypoint has no variation for
 
			 * different railtype, so don't use the railtype offset if
 
			 * no relocation is set */
src/station_cmd.cpp
Show inline comments
 
@@ -2221,12 +2221,13 @@ static void DrawTile_Station(TileInfo *t
 
		DrawTramCatenary(ti, axis == AXIS_X ? ROAD_X : ROAD_Y);
 
	}
 

	
 
	/* End now if buildings are invisible */
 
	if (IsInvisibilitySet(TO_BUILDINGS)) return;
 

	
 
	const DrawTileSeqStruct *dtss;
 
	foreach_draw_tile_seq(dtss, t->seq) {
 
		SpriteID image = dtss->image.sprite;
 

	
 
		/* Stop drawing sprite sequence once we meet a sprite that doesn't have to be opaque */
 
		if (IsInvisibilitySet(TO_BUILDINGS) && !HasBit(image, SPRITE_MODIFIER_OPAQUE)) return;
 

	
 
		if (relocation == 0 || HasBit(image, SPRITE_MODIFIER_USE_OFFSET)) {
 
			image += total_offset;
 
		} else {
0 comments (0 inline, 0 general)