(svn r2554) - Fix: [pathfinding] Change to using some helper functions for checking the railtype.
authorludde
Tue, 12 Jul 2005 20:41:17 +0000
changeset 2045 8ae4fcc273ef
parent 2044 68ec4a2f2d79
child 2046 a922d528e2f4
(svn r2554) - Fix: [pathfinding] Change to using some helper functions for checking the railtype.
pathfind.c
--- a/pathfind.c	Tue Jul 12 20:28:19 2005 +0000
+++ b/pathfind.c	Tue Jul 12 20:41:17 2005 +0000
@@ -690,7 +690,7 @@
 
 		// Not a regular rail tile?
 		// Then we can't use the code below, but revert to more general code.
-		if (!IsTileType(tile, MP_RAILWAY) || (bits = _map5[tile]) & 0x80) {
+		if (!IsTileType(tile, MP_RAILWAY) || !IsPlainRailTile(tile)) {
 			bits = GetTileTrackStatus(tile, TRANSPORT_RAIL) & _tpfmode1_and[direction];
 			bits = (bits | (bits >> 8)) & 0x3F;
 			if (bits == 0) goto stop_search;
@@ -708,13 +708,14 @@
 		track = _new_track[FIND_FIRST_BIT(bits)][direction];
 
 		// Check if this rail is an upwards slope. If it is, then add a penalty.
-		if ((track & 7) <= 5 && (_is_upwards_slope[GetTileSlope(tile, NULL)] & (1 << track)) ) {
+		// Small optimization here.. if (track&7)>1 then it can't be a slope so we avoid calling GetTileSlope
+		if ((track & 7) <= 1 && (_is_upwards_slope[GetTileSlope(tile, NULL)] & (1 << track)) ) {
 			// upwards slope. add some penalty.
 			si.cur_length += 2;
 		}
 
 		// railway tile with signals..?
-		if (_map5[tile] & 0x40) {
+		if (HasSignals(tile)) {
 			byte m3;
 
 			m3 = _map3_lo[tile];