src/ai/api/ai_bridge.cpp
branchnoai
changeset 10977 6c1a6657c7db
parent 10776 07203fc29812
child 11102 aacdde10b4ad
--- a/src/ai/api/ai_bridge.cpp	Sun Jun 15 23:35:40 2008 +0000
+++ b/src/ai/api/ai_bridge.cpp	Mon Jun 16 00:07:49 2008 +0000
@@ -38,7 +38,17 @@
 		type |= (RAILTYPES_RAIL << 8);
 	}
 
-	return AIObject::DoCommand(end, start, type | bridge_id, CMD_BUILD_BRIDGE);
+	if (!AIObject::DoCommand(end, start, type | bridge_id, CMD_BUILD_BRIDGE)) return false;
+	if (vehicle_type == AIVehicle::VEHICLE_RAIL) return true;
+
+	/* Build 2 road-pieces at both ends of the bridge */
+	DiagDirection dir_1 = (DiagDirection)((::TileX(start) == ::TileX(end)) ? (::TileY(start) < ::TileY(end) ? DIAGDIR_NW : DIAGDIR_SE) : (::TileX(start) < ::TileX(end) ? DIAGDIR_NE : DIAGDIR_SW));
+	DiagDirection dir_2 = ::ReverseDiagDir(dir_1);
+
+	AIObject::DoCommand(start + ::TileOffsByDiagDir(dir_1), ::DiagDirToRoadBits(dir_2) | (AIObject::GetRoadType() << 4), 0, CMD_BUILD_ROAD);
+	AIObject::DoCommand(end + ::TileOffsByDiagDir(dir_2), ::DiagDirToRoadBits(dir_1) | (AIObject::GetRoadType() << 4), 0, CMD_BUILD_ROAD);
+
+	return true;
 }
 
 /* static */ bool AIBridge::RemoveBridge(TileIndex tile)