(svn r13927) -Add [YAPP]: Draw reserved tracks darker, toggeld by a patch setting. (michi_cc)
authorrubidium
Sat, 02 Aug 2008 22:47:34 +0000
changeset 9785 2005c34d0811
parent 9784 a9cc0dff1667
child 9786 0169b327f3d2
(svn r13927) -Add [YAPP]: Draw reserved tracks darker, toggeld by a patch setting. (michi_cc)
src/lang/english.txt
src/rail_cmd.cpp
src/road_cmd.cpp
src/settings.cpp
src/settings_gui.cpp
src/settings_type.h
src/station_cmd.cpp
src/tunnelbridge_cmd.cpp
--- a/src/lang/english.txt	Sat Aug 02 22:47:20 2008 +0000
+++ b/src/lang/english.txt	Sat Aug 02 22:47:34 2008 +0000
@@ -1136,6 +1136,7 @@
 STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_FIRST                      :First available
 STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_LAST                       :Last available
 STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MOST_USED                  :Most used
+STR_CONFIG_PATCHES_SHOW_TRACK_RESERVATION                       :{LTBLUE}Show reserved tracks: {ORANGE}{STRING1}
 
 STR_CONFIG_PATCHES_ALWAYS_BUILD_INFRASTRUCTURE                  :{LTBLUE}Show building tools when no suitable vehicles are available: {ORANGE}{STRING1}
 STR_CONFIG_PATCHES_MAX_TRAINS                                   :{LTBLUE}Max trains per player: {ORANGE}{STRING1}
--- a/src/rail_cmd.cpp	Sat Aug 02 22:47:20 2008 +0000
+++ b/src/rail_cmd.cpp	Sat Aug 02 22:47:34 2008 +0000
@@ -1688,6 +1688,29 @@
 		if (track & TRACK_BIT_RIGHT) DrawGroundSprite(rti->base_sprites.single_e, PAL_NONE);
 	}
 
+	/* PBS debugging, draw reserved tracks darker */
+	if (_settings_client.gui.show_track_reservation) {
+		TrackBits pbs = GetTrackReservation(ti->tile);
+		if (pbs & TRACK_BIT_X) {
+			if (ti->tileh == SLOPE_FLAT || ti->tileh == SLOPE_ELEVATED) {
+				DrawGroundSprite(rti->base_sprites.single_y, PALETTE_CRASH);
+			} else {
+				DrawGroundSprite(_track_sloped_sprites[ti->tileh - 1] + rti->base_sprites.single_sloped - 20, PALETTE_CRASH);
+			}
+		}
+		if (pbs & TRACK_BIT_Y) {
+			if (ti->tileh == SLOPE_FLAT || ti->tileh == SLOPE_ELEVATED) {
+				DrawGroundSprite(rti->base_sprites.single_x, PALETTE_CRASH);
+			} else {
+				DrawGroundSprite(_track_sloped_sprites[ti->tileh - 1] + rti->base_sprites.single_sloped - 20, PALETTE_CRASH);
+			}
+		}
+		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));
+		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));
+		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));
+		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));
+	}
+
 	if (IsValidCorner(halftile_corner)) {
 		DrawFoundation(ti, HalftileFoundation(halftile_corner));
 
@@ -1702,6 +1725,11 @@
 			default: break;
 		}
 		DrawGroundSprite(image, pal, &(_halftile_sub_sprite[halftile_corner]));
+
+		if (_settings_client.gui.show_track_reservation && IsSteepSlope(ti->tileh) && HasReservedTracks(ti->tile, CornerToTrackBits(halftile_corner))) {
+			static const byte _corner_to_track_sprite[] = {3, 1, 2, 0};
+			AddSortableSpriteToDraw(_corner_to_track_sprite[halftile_corner] + rti->base_sprites.single_n, PALETTE_CRASH, ti->x, ti->y, 16, 16, 0, ti->z + 16);
+		}
 	}
 }
 
@@ -1846,6 +1874,11 @@
 
 		DrawGroundSprite(image, PAL_NONE);
 
+		/* PBS debugging, draw reserved tracks darker */
+		if (_settings_client.gui.show_track_reservation && GetDepotWaypointReservation(ti->tile)) {
+			DrawGroundSprite(GetWaypointAxis(ti->tile) == AXIS_X ? rti->base_sprites.single_y : rti->base_sprites.single_x, PALETTE_CRASH);
+		}
+
 		if (HasCatenaryDrawn(GetRailType(ti->tile))) DrawCatenary(ti);
 
 		foreach_draw_tile_seq(dtss, dts->seq) {
--- a/src/road_cmd.cpp	Sat Aug 02 22:47:20 2008 +0000
+++ b/src/road_cmd.cpp	Sat Aug 02 22:47:34 2008 +0000
@@ -1176,6 +1176,12 @@
 			}
 
 			DrawGroundSprite(image, pal);
+
+			/* PBS debugging, draw reserved tracks darker */
+			if (_settings_client.gui.show_track_reservation && GetCrossingReservation(ti->tile)) {
+				DrawGroundSprite(GetCrossingRoadAxis(ti->tile) == AXIS_Y ? GetRailTypeInfo(GetRailType(ti->tile))->base_sprites.single_y : GetRailTypeInfo(GetRailType(ti->tile))->base_sprites.single_x, PALETTE_CRASH);
+			}
+
 			if (HasTileRoadType(ti->tile, ROADTYPE_TRAM)) {
 				DrawGroundSprite(SPR_TRAMWAY_OVERLAY + (GetCrossingRoadAxis(ti->tile) ^ 1), pal);
 				DrawTramCatenary(ti, GetCrossingRoadBits(ti->tile));
--- a/src/settings.cpp	Sat Aug 02 22:47:20 2008 +0000
+++ b/src/settings.cpp	Sat Aug 02 22:47:34 2008 +0000
@@ -1789,6 +1789,7 @@
 	 SDTC_BOOL(gui.bridge_pillars,                       S,  0,  true,                        STR_NULL,                                       NULL),
 	 SDTC_BOOL(gui.auto_euro,                            S,  0,  true,                        STR_NULL,                                       NULL),
 	  SDTC_VAR(gui.news_message_timeout,      SLE_UINT8, S,  0,     2,        1,      255, 0, STR_NULL,                                       NULL),
+	 SDTC_BOOL(gui.show_track_reservation,               S,  0, false,                        STR_CONFIG_PATCHES_SHOW_TRACK_RESERVATION,      RedrawScreen),
 
 #ifdef ENABLE_NETWORK
 	  SDTC_VAR(network.sync_freq,            SLE_UINT16,C|S,NO,   100,        0,      100, 0, STR_NULL,                                       NULL),
--- a/src/settings_gui.cpp	Sat Aug 02 22:47:20 2008 +0000
+++ b/src/settings_gui.cpp	Sat Aug 02 22:47:34 2008 +0000
@@ -613,6 +613,7 @@
 	"gui.timetable_in_ticks",
 	"gui.default_rail_type",
 	"gui.always_build_infrastructure",
+	"gui.show_track_reservation",
 };
 
 static const char *_patches_construction[] = {
--- a/src/settings_type.h	Sat Aug 02 22:47:20 2008 +0000
+++ b/src/settings_type.h	Sat Aug 02 22:47:34 2008 +0000
@@ -79,6 +79,7 @@
 	int16  autorenew_months;                 ///< how many months from EOL of vehicles should autorenew trigger for new companies?
 	int32  autorenew_money;                  ///< how much money before autorenewing for new companies?
 	byte   news_message_timeout;             ///< how much longer than the news message "age" should we keep the message in the history
+	bool   show_track_reservation;           ///< highlight reserved tracks.
 };
 
 /** Settings related to currency/unit systems. */
--- a/src/station_cmd.cpp	Sat Aug 02 22:47:20 2008 +0000
+++ b/src/station_cmd.cpp	Sat Aug 02 22:47:34 2008 +0000
@@ -2215,6 +2215,12 @@
 			image += total_offset;
 		}
 		DrawGroundSprite(image, HasBit(image, PALETTE_MODIFIER_COLOR) ? palette : PAL_NONE);
+
+		/* PBS debugging, draw reserved tracks darker */
+		if (_settings_client.gui.show_track_reservation && IsRailwayStation(ti->tile) && GetRailwayStationReservation(ti->tile)) {
+			const RailtypeInfo *rti = GetRailTypeInfo(GetRailType(ti->tile));
+			DrawGroundSprite(GetRailStationAxis(ti->tile) == AXIS_X ? rti->base_sprites.single_y : rti->base_sprites.single_x, PALETTE_CRASH);
+		}
 	}
 
 	if (IsRailwayStation(ti->tile) && HasCatenaryDrawn(GetRailType(ti->tile)) && IsStationTileElectrifiable(ti->tile)) DrawCatenary(ti);
--- a/src/tunnelbridge_cmd.cpp	Sat Aug 02 22:47:20 2008 +0000
+++ b/src/tunnelbridge_cmd.cpp	Sat Aug 02 22:47:34 2008 +0000
@@ -887,6 +887,13 @@
 
 		image += tunnelbridge_direction * 2;
 		DrawGroundSprite(image, PAL_NONE);
+
+		/* PBS debugging, draw reserved tracks darker */
+		if (_settings_client.gui.show_track_reservation && (transport_type == TRANSPORT_RAIL && GetTunnelBridgeReservation(ti->tile))) {
+			const RailtypeInfo *rti = GetRailTypeInfo(GetRailType(ti->tile));
+			DrawGroundSprite(DiagDirToAxis(tunnelbridge_direction) == AXIS_X ? rti->base_sprites.single_y : rti->base_sprites.single_x, PALETTE_CRASH);
+		}
+
 		if (transport_type == TRANSPORT_ROAD) {
 			RoadTypes rts = GetRoadTypes(ti->tile);
 
@@ -963,6 +970,15 @@
 		/* Bridge heads are drawn solid no matter how invisibility/transparency is set */
 		AddSortableSpriteToDraw(psid->sprite, psid->pal, ti->x, ti->y, 16, 16, ti->tileh == SLOPE_FLAT ? 0 : 8, ti->z);
 
+		if (_settings_client.gui.show_track_reservation && transport_type == TRANSPORT_RAIL && GetTunnelBridgeReservation(ti->tile)) {
+			const RailtypeInfo *rti = GetRailTypeInfo(GetRailType(ti->tile));
+			if (HasBridgeFlatRamp(ti->tileh, DiagDirToAxis(tunnelbridge_direction))) {
+				AddSortableSpriteToDraw(DiagDirToAxis(tunnelbridge_direction) == AXIS_X ? rti->base_sprites.single_y : rti->base_sprites.single_x, PALETTE_CRASH, ti->x, ti->y, 16, 16, 0, ti->z + 8);
+			} else {
+				AddSortableSpriteToDraw(rti->base_sprites.single_sloped + tunnelbridge_direction, PALETTE_CRASH, ti->x, ti->y, 16, 16, 8, ti->z);
+			}
+		}
+
 		if (transport_type == TRANSPORT_ROAD) {
 			RoadTypes rts = GetRoadTypes(ti->tile);