/// <summary> /// Add a supply chain link between the source and destination buildings. /// The supply chain link overrides all local area, all outside connections, and all district constraints. /// </summary> /// <param name="source"></param> /// <param name="destination"></param> public static void AddSupplyChainConnection(ushort source, ushort destination) { if (!TransferManagerInfo.IsSupplyChainBuilding(source) || !TransferManagerInfo.IsSupplyChainBuilding(destination)) { return; } if (!TransferManagerInfo.IsValidSupplyChainLink(source, destination)) { Logger.Log($"Constraints::AddSupplyChainConnection: Could not add invalid supply chain link: source={source}, destination={destination}"); return; } bool added = false; if (m_supplyDestinations[source] == null) { m_supplyDestinations[source] = new List <int>(); } if (!m_supplyDestinations[source].Contains(destination)) { added = true; m_supplyDestinations[source].Add(destination); } if (added) { var sourceBuildingName = TransferManagerInfo.GetBuildingName(source); var destinationBuildingName = TransferManagerInfo.GetBuildingName(destination); Logger.Log($"Constraints::AddSupplyChainConnection: {sourceBuildingName} ({source}) => {destinationBuildingName} ({destination}) ..."); } }