Changeset - r2164:bcdf63574138
[Not reviewed]
master
0 4 0
hackykid - 19 years ago 2005-07-22 08:40:19
hackykid@openttd.org
(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.
4 files changed with 12 insertions and 11 deletions:
0 comments (0 inline, 0 general)
npf.c
Show inline comments
 
@@ -525,7 +525,7 @@ static int32 NPFRailPathCost(AyStar* as,
 
			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);
 
			}
pbs.c
Show inline comments
 
@@ -269,11 +269,11 @@ static bool SetSignalsEnumProcPBS(uint t
 
	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;
pbs.h
Show inline comments
 
@@ -72,12 +72,13 @@ bool PBSIsPbsSignal(TileIndex tile, Trac
 
 * @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
train_cmd.c
Show inline comments
 
@@ -1801,6 +1801,7 @@ static bool CheckTrainStayInDepot(Vehicl
 
			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(Vehicl
 

	
 
		v->load_unload_time_rem = 0;
 

	
 
		if (PBSIsPbsDepot(v->tile)) {
 
			byte trackdir = GetVehicleTrackdir(v);
 
		if (PBSIsPbsSegment(v->tile, trackdir)) {
 
			NPFFindStationOrTileData fstd;
 
			NPFFoundTargetData ftd;
 

	
0 comments (0 inline, 0 general)