(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.
--- 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;