Exemplo n.º 1
0
        /// <summary>
        /// Returns a descriptive text indicating the supply chain source buildings that the given building
        /// will receive shipments from.
        /// </summary>
        /// <param name="building"></param>
        /// <returns></returns>
        public static string GetSupplyBuildingSourcesText(ushort building)
        {
            if (building == 0)
            {
                return(string.Empty);
            }

            var txtItems = new List <string>();

            txtItems.Add($"<<Supply Chain Shipments From>>");

            if (Constraints.InputAllLocalAreas(building))
            {
                txtItems.Add($"All local areas");
            }

            if (Constraints.InputOutsideConnections(building))
            {
                txtItems.Add($"All outside connections");
            }

            if (Constraints.InputAllLocalAreas(building))
            {
                return(string.Join("\n", txtItems.ToArray()));
            }

            // Next, list input building names
            var supply = Constraints.SupplySources(building);

            if (supply?.Count > 0)
            {
                var buildingNames = supply
                                    .Select(b => $"{GetBuildingName(b)} ({b})")
                                    .OrderBy(s => s);

                foreach (var buildingName in buildingNames)
                {
                    txtItems.Add(buildingName);
                }
            }

            // Then add district names
            var districts = Constraints.InputDistrictParkServiced(building);

            if (districts?.Count > 0)
            {
                var districtParkNames = districts
                                        .Select(dp => dp.Name)
                                        .OrderBy(s => s);

                foreach (var districtParkName in districtParkNames)
                {
                    txtItems.Add($"{districtParkName} (DISTRICT)");
                }
            }

            if (txtItems.Count == 1)
            {
                return($"<<WARNING: No supply chain shipments accepted!>>");
            }
            else
            {
                return(string.Join("\n", txtItems.ToArray()));
            }
        }