(svn r9912) -Fix: the AIs could build any road(station)s.
authorrubidium
Thu, 24 May 2007 21:45:54 +0000
changeset 7177 08330bb931a1
parent 7176 5686c2e9d167
child 7178 117401da853a
(svn r9912) -Fix: the AIs could build any road(station)s.
src/ai/default/default.cpp
src/ai/trolly/build.cpp
src/ai/trolly/pathfinder.cpp
--- a/src/ai/default/default.cpp	Thu May 24 21:08:08 2007 +0000
+++ b/src/ai/default/default.cpp	Thu May 24 21:45:54 2007 +0000
@@ -2600,10 +2600,10 @@
 		} else if (p->mode == 1) {
 			if (_want_road_truck_station) {
 				// Truck station
-				ret = DoCommand(c, p->attr, RoadStop::TRUCK, flag | DC_AUTO | DC_NO_WATER | DC_AI_BUILDING, CMD_BUILD_ROAD_STOP);
+				ret = DoCommand(c, p->attr, ROADTYPES_ROAD << 2 | RoadStop::TRUCK, flag | DC_AUTO | DC_NO_WATER | DC_AI_BUILDING, CMD_BUILD_ROAD_STOP);
 			} else {
 				// Bus station
-				ret = DoCommand(c, p->attr, RoadStop::BUS, flag | DC_AUTO | DC_NO_WATER | DC_AI_BUILDING, CMD_BUILD_ROAD_STOP);
+				ret = DoCommand(c, p->attr, ROADTYPES_ROAD << 2 | RoadStop::BUS, flag | DC_AUTO | DC_NO_WATER | DC_AI_BUILDING, CMD_BUILD_ROAD_STOP);
 			}
 clear_town_stuff:;
 
--- a/src/ai/trolly/build.cpp	Thu May 24 21:08:08 2007 +0000
+++ b/src/ai/trolly/build.cpp	Thu May 24 21:45:54 2007 +0000
@@ -42,9 +42,9 @@
 		return AI_DoCommand(tile, direction + (numtracks << 8) + (length << 16), 0, flag | DC_AUTO | DC_NO_WATER, CMD_BUILD_RAILROAD_STATION);
 
 	if (type == AI_BUS)
-		return AI_DoCommand(tile, direction, RoadStop::BUS, flag | DC_AUTO | DC_NO_WATER, CMD_BUILD_ROAD_STOP);
+		return AI_DoCommand(tile, direction, ROADTYPES_ROAD << 2 | RoadStop::BUS, flag | DC_AUTO | DC_NO_WATER, CMD_BUILD_ROAD_STOP);
 
-	return AI_DoCommand(tile, direction, RoadStop::TRUCK, flag | DC_AUTO | DC_NO_WATER, CMD_BUILD_ROAD_STOP);
+	return AI_DoCommand(tile, direction, ROADTYPES_ROAD << 2 | RoadStop::TRUCK, flag | DC_AUTO | DC_NO_WATER, CMD_BUILD_ROAD_STOP);
 }
 
 
@@ -75,7 +75,7 @@
 	if (p->ainew.tbt == AI_TRAIN) {
 		return AI_DoCommand(tile_a, tile_b, (0x00 << 8) + type2, flag | DC_AUTO, CMD_BUILD_BRIDGE);
 	} else {
-		return AI_DoCommand(tile_a, tile_b, (0x80 << 8) + type2, flag | DC_AUTO, CMD_BUILD_BRIDGE);
+		return AI_DoCommand(tile_a, tile_b, ((0x80 | ROADTYPES_ROAD) << 8) + type2, flag | DC_AUTO, CMD_BUILD_BRIDGE);
 	}
 }
 
@@ -162,7 +162,7 @@
 	} else {
 		// Tunnel code
 		if ((AI_PATHFINDER_FLAG_TUNNEL & route_extra[part]) != 0) {
-			cost += AI_DoCommand(route[part], 0x200, 0, flag, CMD_BUILD_TUNNEL);
+			cost += AI_DoCommand(route[part], 0x200 | ROADTYPES_ROAD, 0, flag, CMD_BUILD_TUNNEL);
 			PathFinderInfo->position++;
 			// TODO: problems!
 			if (CmdFailed(cost)) {
--- a/src/ai/trolly/pathfinder.cpp	Thu May 24 21:08:08 2007 +0000
+++ b/src/ai/trolly/pathfinder.cpp	Thu May 24 21:45:54 2007 +0000
@@ -237,17 +237,10 @@
 					if (IsTunnel(atile)) {
 						if (GetTunnelDirection(atile) != i) continue;
 					} else {
-						if ((_m[atile].m5 & 1) != DiagDirToAxis(i)) continue;
+						if (GetBridgeRampDirection(atile) != i) continue;
 					}
 				}
 			}
-			// But also if we are on a bridge, we can only move a certain direction
-			if (!PathFinderInfo->rail_or_road && IsRoad(ctile)) {
-				if (IsTileType(ctile, MP_TUNNELBRIDGE)) {
-					// An existing bridge/tunnel... let's test the direction ;)
-					if ((_m[ctile].m5 & 1) != (i & 1)) continue;
-				}
-			}
 
 			if ((AI_PATHFINDER_FLAG_BRIDGE & current->path.node.user_data[0]) != 0 ||
 					(AI_PATHFINDER_FLAG_TUNNEL & current->path.node.user_data[0]) != 0) {
@@ -291,9 +284,9 @@
 							dir = 0;
 						} else {
 							// It already has road.. check if we miss any bits!
-							if ((_m[ctile].m5 & dir) != dir) {
+							if ((GetRoadBits(ctile, ROADTYPE_ROAD) & dir) != dir) {
 								// We do miss some pieces :(
-								dir &= ~_m[ctile].m5;
+								dir &= ~GetRoadBits(ctile, ROADTYPE_ROAD);
 							} else {
 								dir = 0;
 							}