public static int EstimatedGlobalNumberOfSites(WorldGeneratorContext context, WorldGeneratorSettings.AlgorithmParameters parameters, PointOfInterestTemplate poiTemplate)
        {
            int value  = parameters.GetValue("MapSizeSensitivity");
            int value2 = parameters.GetValue("EmpireCountSensitivity");
            int strategicResourcesAbundancePercent = context.Settings.StrategicResourcesAbundancePercent;

            if (strategicResourcesAbundancePercent <= 0)
            {
                return(0);
            }
            int num = (from d in context.Districts.Values
                       where d.Content == District.Contents.Land
                       select d).Sum((District d) => d.Count) / 20;
            int num2 = (num - 100) * value / 100;

            num = 100 + num2;
            int num3 = context.EmpiresCount * 25;

            num2 = (num3 - 100) * value2 / 100;
            num3 = 100 + num2;
            int num4;

            if (!int.TryParse(poiTemplate.GetPropertyValue("NormalQuantity"), out num4))
            {
                num4 = 1;
            }
            else if (num4 == 0)
            {
                return(0);
            }
            num4 *= strategicResourcesAbundancePercent * num * num3;
            num4 /= 1000000;
            if (context.OceanicResourceCounts != null && context.OceanicResourceCounts.ContainsKey(poiTemplate.GetPropertyValue("ResourceName")))
            {
                int num5 = context.OceanicResourceCounts[poiTemplate.GetPropertyValue("ResourceName")];
                num4 -= num5;
            }
            return(num4);
        }
Beispiel #2
0
        public static void FinalizeCoastalSkeleton(WorldGeneratorContext context)
        {
            CreateContinents.< > c__DisplayClass19_0 CS$ < > 8__locals1 = new CreateContinents.< > c__DisplayClass19_0();
            CS$ < > 8__locals1.context = context;
            CreateContinents.< > c__DisplayClass19_0 CS$ < > 8__locals2 = CS$ < > 8__locals1;
            ProximityComputer <District>             proximityComputer  = new ProximityComputer <District>(CS$ < > 8__locals1.context.Districts);

            proximityComputer.StartingNodes = new List <District>(from d in CS$ < > 8__locals1.context.Districts.Values
                                                                  where d.Content == District.Contents.Coastal || d.Content == District.Contents.WasteEW || d.Content == District.Contents.WasteNS
                                                                  select d);
            CS$ < > 8__locals2.proxer = proximityComputer;
            List <District> list = null;

            if (CS$ < > 8__locals1.context.IsSymmetrical)
            {
                list = new List <District>(from d in CS$ < > 8__locals1.context.Districts.Values
                                           where d.Any((HexPos h) => h.Column == 0 || h.Column == CS$ < > 8__locals1.context.Grid.Columns - 1)
                                           select d);
                list.ForEach(delegate(District d)
                {
                    CS$ < > 8__locals1.proxer.StartingNodes.Add(d);
                });
            }
            CS$ < > 8__locals1.proxer.Execute();
            for (int i = 0; i < CS$ < > 8__locals1.context.Districts.Nodes; i++)
            {
                District district = CS$ < > 8__locals1.context.Districts[i];
                if (district.Content == District.Contents.Ocean || district.Content == District.Contents.WasteEW)
                {
                    district.CoastalSkeletonValue = -CS$ < > 8__locals1.proxer.ProximityGraph[i];
                }
                else if (district.Content == District.Contents.Land || district.Content == District.Contents.Coastal)
                {
                    district.CoastalSkeletonValue = CS$ < > 8__locals1.proxer.ProximityGraph[i];
                }
                else if (district.Content == District.Contents.WasteNS)
                {
                    district.CoastalSkeletonValue = 99;
                }
                int num = -1;
                if (district.CoastalSkeletonValue > 0)
                {
                    num = 1;
                }
                else if (district.CoastalSkeletonValue == 0)
                {
                    num = 2;
                }
                else if (district.CoastalSkeletonValue < 0)
                {
                    num = 0;
                }
                if (num >= 0 && num <= 3)
                {
                    foreach (HexPos hexPos in district)
                    {
                    }
                }
            }
            if (CS$ < > 8__locals1.context.IsSymmetrical)
            {
                list.ForEach(delegate(District d)
                {
                    int coastalSkeletonValue = d.CoastalSkeletonValue;
                    d.CoastalSkeletonValue   = coastalSkeletonValue - 1;
                });
            }
        }