src/rail_cmd.cpp
changeset 9785 2005c34d0811
parent 9775 22e256c3bf46
child 9788 8d1bdf1ba220
equal deleted inserted replaced
9784:a9cc0dff1667 9785:2005c34d0811
  1686 		if (track & TRACK_BIT_LOWER) DrawGroundSprite(rti->base_sprites.single_s, PAL_NONE);
  1686 		if (track & TRACK_BIT_LOWER) DrawGroundSprite(rti->base_sprites.single_s, PAL_NONE);
  1687 		if (track & TRACK_BIT_LEFT)  DrawGroundSprite(rti->base_sprites.single_w, PAL_NONE);
  1687 		if (track & TRACK_BIT_LEFT)  DrawGroundSprite(rti->base_sprites.single_w, PAL_NONE);
  1688 		if (track & TRACK_BIT_RIGHT) DrawGroundSprite(rti->base_sprites.single_e, PAL_NONE);
  1688 		if (track & TRACK_BIT_RIGHT) DrawGroundSprite(rti->base_sprites.single_e, PAL_NONE);
  1689 	}
  1689 	}
  1690 
  1690 
       
  1691 	/* PBS debugging, draw reserved tracks darker */
       
  1692 	if (_settings_client.gui.show_track_reservation) {
       
  1693 		TrackBits pbs = GetTrackReservation(ti->tile);
       
  1694 		if (pbs & TRACK_BIT_X) {
       
  1695 			if (ti->tileh == SLOPE_FLAT || ti->tileh == SLOPE_ELEVATED) {
       
  1696 				DrawGroundSprite(rti->base_sprites.single_y, PALETTE_CRASH);
       
  1697 			} else {
       
  1698 				DrawGroundSprite(_track_sloped_sprites[ti->tileh - 1] + rti->base_sprites.single_sloped - 20, PALETTE_CRASH);
       
  1699 			}
       
  1700 		}
       
  1701 		if (pbs & TRACK_BIT_Y) {
       
  1702 			if (ti->tileh == SLOPE_FLAT || ti->tileh == SLOPE_ELEVATED) {
       
  1703 				DrawGroundSprite(rti->base_sprites.single_x, PALETTE_CRASH);
       
  1704 			} else {
       
  1705 				DrawGroundSprite(_track_sloped_sprites[ti->tileh - 1] + rti->base_sprites.single_sloped - 20, PALETTE_CRASH);
       
  1706 			}
       
  1707 		}
       
  1708 		if (pbs & TRACK_BIT_UPPER) AddSortableSpriteToDraw(rti->base_sprites.single_n, PALETTE_CRASH, ti->x, ti->y, 16, 16, 0, ti->z + (ti->tileh & SLOPE_N ? 8 : 0));
       
  1709 		if (pbs & TRACK_BIT_LOWER) AddSortableSpriteToDraw(rti->base_sprites.single_s, PALETTE_CRASH, ti->x, ti->y, 16, 16, 0, ti->z + (ti->tileh & SLOPE_S ? 8 : 0));
       
  1710 		if (pbs & TRACK_BIT_LEFT)  AddSortableSpriteToDraw(rti->base_sprites.single_w, PALETTE_CRASH, ti->x, ti->y, 16, 16, 0, ti->z + (ti->tileh & SLOPE_W ? 8 : 0));
       
  1711 		if (pbs & TRACK_BIT_RIGHT) AddSortableSpriteToDraw(rti->base_sprites.single_e, PALETTE_CRASH, ti->x, ti->y, 16, 16, 0, ti->z + (ti->tileh & SLOPE_E ? 8 : 0));
       
  1712 	}
       
  1713 
  1691 	if (IsValidCorner(halftile_corner)) {
  1714 	if (IsValidCorner(halftile_corner)) {
  1692 		DrawFoundation(ti, HalftileFoundation(halftile_corner));
  1715 		DrawFoundation(ti, HalftileFoundation(halftile_corner));
  1693 
  1716 
  1694 		/* Draw higher halftile-overlay: Use the sloped sprites with three corners raised. They probably best fit the lightning. */
  1717 		/* Draw higher halftile-overlay: Use the sloped sprites with three corners raised. They probably best fit the lightning. */
  1695 		Slope fake_slope = SlopeWithThreeCornersRaised(OppositeCorner(halftile_corner));
  1718 		Slope fake_slope = SlopeWithThreeCornersRaised(OppositeCorner(halftile_corner));
  1700 			case RAIL_GROUND_ICE_DESERT:
  1723 			case RAIL_GROUND_ICE_DESERT:
  1701 			case RAIL_GROUND_HALF_SNOW:  image += rti->snow_offset;  break; // higher part has snow in this case too
  1724 			case RAIL_GROUND_HALF_SNOW:  image += rti->snow_offset;  break; // higher part has snow in this case too
  1702 			default: break;
  1725 			default: break;
  1703 		}
  1726 		}
  1704 		DrawGroundSprite(image, pal, &(_halftile_sub_sprite[halftile_corner]));
  1727 		DrawGroundSprite(image, pal, &(_halftile_sub_sprite[halftile_corner]));
       
  1728 
       
  1729 		if (_settings_client.gui.show_track_reservation && IsSteepSlope(ti->tileh) && HasReservedTracks(ti->tile, CornerToTrackBits(halftile_corner))) {
       
  1730 			static const byte _corner_to_track_sprite[] = {3, 1, 2, 0};
       
  1731 			AddSortableSpriteToDraw(_corner_to_track_sprite[halftile_corner] + rti->base_sprites.single_n, PALETTE_CRASH, ti->x, ti->y, 16, 16, 0, ti->z + 16);
       
  1732 		}
  1705 	}
  1733 	}
  1706 }
  1734 }
  1707 
  1735 
  1708 /** Enums holding the offsets from base signal sprite,
  1736 /** Enums holding the offsets from base signal sprite,
  1709  * according to the side it is representing.
  1737  * according to the side it is representing.
  1843 				if (IsSnowRailGround(ti->tile)) image += rti->snow_offset;
  1871 				if (IsSnowRailGround(ti->tile)) image += rti->snow_offset;
  1844 			}
  1872 			}
  1845 		}
  1873 		}
  1846 
  1874 
  1847 		DrawGroundSprite(image, PAL_NONE);
  1875 		DrawGroundSprite(image, PAL_NONE);
       
  1876 
       
  1877 		/* PBS debugging, draw reserved tracks darker */
       
  1878 		if (_settings_client.gui.show_track_reservation && GetDepotWaypointReservation(ti->tile)) {
       
  1879 			DrawGroundSprite(GetWaypointAxis(ti->tile) == AXIS_X ? rti->base_sprites.single_y : rti->base_sprites.single_x, PALETTE_CRASH);
       
  1880 		}
  1848 
  1881 
  1849 		if (HasCatenaryDrawn(GetRailType(ti->tile))) DrawCatenary(ti);
  1882 		if (HasCatenaryDrawn(GetRailType(ti->tile))) DrawCatenary(ti);
  1850 
  1883 
  1851 		foreach_draw_tile_seq(dtss, dts->seq) {
  1884 		foreach_draw_tile_seq(dtss, dts->seq) {
  1852 			SpriteID image = dtss->image.sprite;
  1885 			SpriteID image = dtss->image.sprite;