--- a/src/ai/api/ai_tunnel.cpp Sun Jun 15 23:35:40 2008 +0000
+++ b/src/ai/api/ai_tunnel.cpp Mon Jun 16 00:07:49 2008 +0000
@@ -42,7 +42,18 @@
type |= RAILTYPES_RAIL;
}
- return AIObject::DoCommand(start, type, 0, CMD_BUILD_TUNNEL);
+ if (!AIObject::DoCommand(start, type, 0, CMD_BUILD_TUNNEL)) return false;
+ if (vehicle_type == AIVehicle::VEHICLE_RAIL) return true;
+
+ /* Build 2 road-pieces at both ends of the tunnel */
+ TileIndex end = AIObject::GetNewTunnelEndtile();
+ 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 AITunnel::RemoveTunnel(TileIndex tile)