public Routeway BuildShortestRouteway(Architecture des, bool noWater) { Point? nullable; Point? nullable2; if (!noWater) { Point key = new Point(base.ID, des.ID); if (this.BelongedFaction.ClosedRouteways.ContainsKey(key)) { return null; } } base.Scenario.GetClosestPointsBetweenTwoAreas(this.GetRoutewayStartPoints(), des.GetRoutewayStartPoints(), out nullable, out nullable2); if (nullable.HasValue && nullable2.HasValue) { this.BelongedFaction.RoutewayPathBuilder.MultipleWaterCost = noWater; if (this.BelongedFaction.RoutewayPathAvail(nullable.Value, nullable2.Value, true)) { Routeway routeway = this.CreateRouteway(this.BelongedFaction.GetCurrentRoutewayPath()); routeway.DestinationArchitecture = des; routeway.EndArchitecture = des; return routeway; } if (!noWater) { this.BelongedFaction.ClosedRouteways.Add(new Point(base.ID, des.ID), null); } } return null; }