mirror of https://github.com/OpenTTD/OpenTTD.git
(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.
This commit is contained in:
parent
559babcdc9
commit
aa29ee6eda
2
npf.c
2
npf.c
|
@ -525,7 +525,7 @@ static int32 NPFRailPathCost(AyStar* as, AyStarNode* current, OpenListNode* pare
|
|||
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);
|
||||
}
|
||||
|
|
6
pbs.c
6
pbs.c
|
@ -269,11 +269,11 @@ static bool SetSignalsEnumProcPBS(uint tile, SetSignalsDataPbs *ssd, int trackdi
|
|||
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;
|
||||
|
|
11
pbs.h
11
pbs.h
|
@ -72,12 +72,13 @@ bool PBSIsPbsSignal(TileIndex tile, Trackdir trackdir);
|
|||
* @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
|
||||
|
|
|
@ -1801,6 +1801,7 @@ static bool CheckTrainStayInDepot(Vehicle *v)
|
|||
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 @@ static bool CheckTrainStayInDepot(Vehicle *v)
|
|||
|
||||
v->load_unload_time_rem = 0;
|
||||
|
||||
if (PBSIsPbsDepot(v->tile)) {
|
||||
byte trackdir = GetVehicleTrackdir(v);
|
||||
if (PBSIsPbsSegment(v->tile, trackdir)) {
|
||||
NPFFindStationOrTileData fstd;
|
||||
NPFFoundTargetData ftd;
|
||||
|
||||
|
|
Loading…
Reference in New Issue