--- 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)