(svn r2674) - CodeChange: [pbs] Generalise the PSBISPbsDepot function so it can check if an arbitrary junction is a pbs junction. Preparations for making pbs more safe.
authorhackykid
Fri, 22 Jul 2005 08:40:19 +0000
changeset 2164 5523a9711651
parent 2163 b17b313113a0
child 2165 ae3653f5ee34
(svn r2674) - CodeChange: [pbs] Generalise the PSBISPbsDepot function so it can check if an arbitrary junction is a pbs junction. Preparations for making pbs more safe.
npf.c
pbs.c
pbs.h
train_cmd.c
--- a/npf.c	Fri Jul 22 07:02:20 2005 +0000
+++ b/npf.c	Fri Jul 22 08:40:19 2005 +0000
@@ -525,7 +525,7 @@
 			if (NPFGetFlag(current, NPF_FLAG_PBS_BLOCKED)) {
 				cost += 1000;
 			}
-			if (PBSIsPbsDepot(tile)) {
+			if (PBSIsPbsSegment(tile, ReverseTrackdir(trackdir))) {
 				NPFSetFlag(current, NPF_FLAG_PBS_EXIT, true);
 				NPFSetFlag(current, NPF_FLAG_SEEN_SIGNAL, true);
 			}
--- a/pbs.c	Fri Jul 22 07:02:20 2005 +0000
+++ b/pbs.c	Fri Jul 22 08:40:19 2005 +0000
@@ -269,11 +269,11 @@
 	return false;
 }
 
-bool PBSIsPbsDepot(uint tile)
+bool PBSIsPbsSegment(uint tile, Trackdir trackdir)
 {
 	SetSignalsDataPbs ssd;
-	bool result = false;
-	DiagDirection direction = GetDepotDirection(tile,TRANSPORT_RAIL);
+	bool result = PBSIsPbsSignal(tile, trackdir);
+	DiagDirection direction = TrackdirToExitdir(trackdir);//GetDepotDirection(tile,TRANSPORT_RAIL);
 	int i;
 
 	ssd.cur = 0;
--- a/pbs.h	Fri Jul 22 07:02:20 2005 +0000
+++ b/pbs.h	Fri Jul 22 08:40:19 2005 +0000
@@ -72,12 +72,13 @@
  * @return True when there are pbs signals on that tile
  */
 
-bool PBSIsPbsDepot(uint tile);
+bool PBSIsPbsSegment(uint tile, Trackdir trackdir);
 /**<
- * Checks if a depot is inside a pbs block.
- * Tis means that the block it is in needs to have at least 1 signal, and that all signals in it need to be pbs signals.
- * @param tile The depot tile to check
- * @return True when the depot is inside a pbs block.
+ * Checks if a signal/depot leads to a pbs block.
+ * This means that the block needs to have at least 1 signal, and that all signals in it need to be pbs signals.
+ * @param tile The tile to check
+ * @param trackdir The direction in which to check
+ * @return True when the depot is inside a pbs block
  */
 
 #endif
--- a/train_cmd.c	Fri Jul 22 07:02:20 2005 +0000
+++ b/train_cmd.c	Fri Jul 22 08:40:19 2005 +0000
@@ -1801,6 +1801,7 @@
 			return false;
 
 	if (v->u.rail.force_proceed == 0) {
+		byte trackdir = GetVehicleTrackdir(v);
 		if (++v->load_unload_time_rem < 37) {
 			InvalidateWindowClasses(WC_TRAINS_LIST);
 			return true;
@@ -1808,8 +1809,7 @@
 
 		v->load_unload_time_rem = 0;
 
-		if (PBSIsPbsDepot(v->tile)) {
-			byte trackdir = GetVehicleTrackdir(v);
+		if (PBSIsPbsSegment(v->tile, trackdir)) {
 			NPFFindStationOrTileData fstd;
 			NPFFoundTargetData ftd;