private int ComputeGlobalNumberOfSites(PointOfInterestTemplate poiTemplate)
        {
            int num;

            if (!int.TryParse(poiTemplate.GetPropertyValue("NormalQuantity"), out num))
            {
                num = 1;
            }
            else if (num == 0)
            {
                return(0);
            }
            num *= this.AbundanceFactor * this.MapSizeFactor * this.CompetitionFactor;
            num /= 1000000;
            base.Trace(string.Format("{1} : normal number of sites : {0}", num, poiTemplate.GetPropertyValue("ResourceName")));
            if (base.Context.OceanicResourceCounts.ContainsKey(poiTemplate.GetPropertyValue("ResourceName")))
            {
                int num2 = base.Context.OceanicResourceCounts[poiTemplate.GetPropertyValue("ResourceName")];
                if (!base.Context.Settings.XephiStrategic)
                {
                    base.Trace(string.Format("removing {0} sites already moved to oceans", num2));
                    num -= num2;
                }
            }
            if (num < 1)
            {
                num = 1;
            }
            return(num);
        }
        private void PickResourceSite(PointOfInterestTemplate poiTemplate, List <PointOfInterestDefinition> createdPOIs, List <HexPos> availableSpots)
        {
            bool   flag          = false;
            int    num           = 20;
            string propertyValue = poiTemplate.GetPropertyValue("ResourceName");

            do
            {
                num--;
                HexPos hexPos = availableSpots.First <HexPos>();
                availableSpots.RemoveAt(0);
                Region region = base.Context.Regions[base.Context.RegionData[hexPos.Row, hexPos.Column]];
                PointOfInterestDefinition pointOfInterestDefinition = this.MakeNewPOI(hexPos, poiTemplate, 1);
                this.Influence.AddSpot(hexPos);
                if (pointOfInterestDefinition != null)
                {
                    createdPOIs.Add(pointOfInterestDefinition);
                    Dictionary <int, int> dictionary = this.CreatedSites[propertyValue];
                    int landMassIndex = region.LandMassIndex;
                    int num2          = dictionary[landMassIndex];
                    dictionary[landMassIndex] = num2 + 1;
                    region.Resources.Add(pointOfInterestDefinition);
                    flag = true;
                }
            }while (!flag && num > 0 && availableSpots.Count > 0);
        }
Esempio n. 3
0
    private void AssignLuxuryTypes(Dictionary <string, List <PointOfInterestTemplate> > availableLuxuries)
    {
        Random random = new Random(World.Seed);

        foreach (DepartmentOfScience.ConstructibleElement constructibleElement in this.technologyDatabase)
        {
            if (constructibleElement.TechnologyFlags == DepartmentOfScience.ConstructibleElement.TechnologyFlag.KaijuUnlock)
            {
                KaijuTechnologyDefinition kaijuTechnologyDefinition = constructibleElement as KaijuTechnologyDefinition;
                KaijuUnlockCost           kaijuUnlockCost           = kaijuTechnologyDefinition.KaijuUnlockCost;
                if (kaijuUnlockCost != null)
                {
                    List <PointOfInterestTemplate> list = new List <PointOfInterestTemplate>();
                    list.AddRange(availableLuxuries[kaijuUnlockCost.LuxuryTier]);
                    if (kaijuUnlockCost.LuxuryTier != "Tier3" && availableLuxuries[kaijuUnlockCost.LuxuryTier].Count <= 2)
                    {
                        list.AddRange((!(kaijuUnlockCost.LuxuryTier == "Tier1")) ? availableLuxuries["Tier1"] : availableLuxuries["Tier2"]);
                    }
                    PointOfInterestTemplate pointOfInterestTemplate = list[random.Next(list.Count)];
                    string empty = string.Empty;
                    if (pointOfInterestTemplate.Properties.TryGetValue("ResourceName", out empty))
                    {
                        kaijuTechnologyDefinition.SetKaijuUnlockCostResourceName(empty);
                    }
                }
            }
        }
    }
Esempio n. 4
0
    private void ComputeTameCosts(global::Game game)
    {
        System.Random          random   = new System.Random(World.Seed);
        IDatabase <ArmyAction> database = Databases.GetDatabase <ArmyAction>(false);

        Diagnostics.Assert(database != null);
        Dictionary <string, List <PointOfInterestTemplate> > dictionary = KaijuTechsManager.ComputeLuxuryAbundance(game);

        for (int i = 0; i < database.Count <ArmyAction>(); i++)
        {
            ArmyAction armyAction = database.ElementAt(i);
            if (armyAction is IArmyActionWithKaijuTameCost)
            {
                KaijuTameCost tameCost = (armyAction as IArmyActionWithKaijuTameCost).TameCost;
                for (int j = 0; j < tameCost.CostDefinitions.Length; j++)
                {
                    KaijuTameCost.CostDefinition   costDefinition = tameCost.CostDefinitions[j];
                    List <PointOfInterestTemplate> list           = new List <PointOfInterestTemplate>();
                    list.AddRange(dictionary[costDefinition.LuxuryTier]);
                    PointOfInterestTemplate pointOfInterestTemplate = list[random.Next(list.Count)];
                    string empty = string.Empty;
                    if (pointOfInterestTemplate.Properties.TryGetValue("ResourceName", out empty))
                    {
                        costDefinition.SetResourceName(empty);
                    }
                }
            }
        }
    }
        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);
        }
        public override void Execute(object context)
        {
            base.Silent = false;
            base.Execute(context);
            base.UsedTemplates = new List <PointOfInterestTemplate>(from poiTemplate in base.Context.Settings.POITemplates.Values
                                                                    where poiTemplate.GetPropertyValue("Type") == "ResourceDeposit"
                                                                    where poiTemplate.GetPropertyValue("ResourceType") == "Strategic"
                                                                    where poiTemplate.HasProperty("StrategicTier")
                                                                    where poiTemplate.HasProperty("NormalQuantity")
                                                                    where poiTemplate.HasProperty("ResourceName")
                                                                    select poiTemplate);
            new List <PointOfInterestTemplate>(from poiT in base.UsedTemplates
                                               where poiT.GetPropertyValue("StrategicTier") == "Tier1"
                                               select poiT);
            if (base.UsedTemplates.Count < 1)
            {
                base.Trace("No valid POI template found");
                base.Trace("Algorithm bypassed");
                return;
            }
            this.Influence               = new InfluenceMap(base.Context.Grid);
            this.Sensitivity_MapSize     = base.Parameters.GetValue("MapSizeSensitivity");
            this.Sensitivity_EmpireCount = base.Parameters.GetValue("EmpireCountSensitivity");
            this.AbundanceFactor         = base.Context.Settings.StrategicResourcesAbundancePercent;
            if (this.AbundanceFactor <= 0)
            {
                return;
            }
            this.MapSizeFactor = (from d in base.Context.Districts.Values
                                  where d.Content == District.Contents.Land
                                  select d).Sum((District d) => d.Count) / 20;
            int num = (this.MapSizeFactor - 100) * this.Sensitivity_MapSize / 100;

            this.MapSizeFactor     = 100 + num;
            this.CompetitionFactor = base.Context.EmpiresCount * 25;
            num = (this.CompetitionFactor - 100) * this.Sensitivity_EmpireCount / 100;
            this.CompetitionFactor = 100 + num;
            this.ProcessRules();
            foreach (PointOfInterestTemplate pointOfInterestTemplate in base.UsedTemplates)
            {
                string propertyValue = pointOfInterestTemplate.GetPropertyValue("ResourceName");
                List <PointOfInterestDefinition> list = new List <PointOfInterestDefinition>();
                int num2 = this.ComputeGlobalNumberOfSites(pointOfInterestTemplate) + this.ExtraneousSiteCount[pointOfInterestTemplate.GetPropertyValue("ResourceName")];
                int num3 = this.MinSites[propertyValue].Values.Sum();
                if (num2 < num3)
                {
                    num2 = num3;
                }
                base.Trace(string.Format("{0} : {1} sites", pointOfInterestTemplate.GetPropertyValue("ResourceName"), num2));
                int           i     = 0;
                List <HexPos> list2 = new List <HexPos>();
                while (i < num2)
                {
                    list2.Clear();
                    HashSet <int> closedContinents = new HashSet <int>();
                    for (int j = 1; j <= base.Context.Settings.LandMasses; j++)
                    {
                        if (this.CreatedSites[propertyValue][j] >= this.MaxSites[propertyValue][j])
                        {
                            closedContinents.Add(j);
                        }
                    }
                    list2 = new List <HexPos>(from region in base.Context.Regions.Values
                                              where !closedContinents.Contains(region.LandMassIndex) && region.Resources.Count < this.Context.Settings.MaxResourcesPerRegion + region.Biome.BonusResourceLimit
                                              from district in region.Districts
                                              where district.Content == District.Contents.Land
                                              from hex in district
                                              where base.Context.POIValidityMap[hex.Row, hex.Column] == WorldGeneratorContext.POIValidity.Free
                                              orderby this.Influence.GetMinDistance(hex) descending
                                              select hex);
                    if (this.MinSites[propertyValue].Values.Any((int q) => q > 0))
                    {
                        int continent = 0;
                        int num4      = 0;
                        foreach (int num5 in this.MinSites[propertyValue].Keys)
                        {
                            if (num4 < this.MinSites[propertyValue][num5] - this.CreatedSites[propertyValue][num5])
                            {
                                continent = num5;
                                num4      = this.MinSites[propertyValue][num5] - this.CreatedSites[propertyValue][num5];
                            }
                        }
                        if (num4 > 0)
                        {
                            List <HexPos> list3 = new List <HexPos>(from region in base.Context.Regions.Values
                                                                    where region.LandMassIndex == continent && region.Resources.Count < this.Context.Settings.MaxResourcesPerRegion + region.Biome.BonusResourceLimit
                                                                    from district in region.Districts
                                                                    where district.Content == District.Contents.Land
                                                                    from hex in district
                                                                    where base.Context.POIValidityMap[hex.Row, hex.Column] == WorldGeneratorContext.POIValidity.Free
                                                                    orderby this.Influence.GetMinDistance(hex) descending
                                                                    select hex);
                            if (list3.Count > 0)
                            {
                                list2 = list3;
                            }
                        }
                    }
                    if (list2.Count != 0)
                    {
                        this.PickResourceSite(pointOfInterestTemplate, list, list2);
                    }
                    i++;
                }
                foreach (PointOfInterestDefinition pointOfInterestDefinition in list)
                {
                    base.Trace(string.Format("POI {0} in {1}", pointOfInterestDefinition.TemplateName, base.Context.GetDistrict(pointOfInterestDefinition.Position).MotherRegion.LandMassIndex));
                }
            }
            if (base.Context.Configuration.IsDLCAvailable("SummerFlamesPack"))
            {
                List <PointOfInterestDefinition> list4 = new List <PointOfInterestDefinition>();
                Region[] array = (from region in base.Context.Regions.Values
                                  where region.Biome.BonusResourceLimit != 0 && region.Resources.Count <= base.Context.Settings.MaxResourcesPerRegion + region.Biome.BonusResourceLimit
                                  select region).ToArray <Region>();
                Random random = new Random(base.Context.Settings.Seed);
                int    k      = 0;
                while (k < array.Length)
                {
                    base.Trace(string.Format("Adding bonus POI to {0}", array[k].Name));
                    List <HexPos> list5 = new List <HexPos>(from district in array[k].Districts
                                                            where district.Content == District.Contents.Land
                                                            from hex in district
                                                            where base.Context.POIValidityMap[hex.Row, hex.Column] == WorldGeneratorContext.POIValidity.Free
                                                            orderby this.Influence.GetMinDistance(hex) descending
                                                            select hex);
                    if (list5.Count <= 0 || random.NextDouble() >= (double)array[k].Biome.BonusResourceChance)
                    {
                        goto IL_909;
                    }
                    PointOfInterestTemplate poiTemplate3 = base.UsedTemplates[random.Next(base.UsedTemplates.Count)];
                    this.PickResourceSite(poiTemplate3, list4, list5);
                    if (array[k].Resources.Count < base.Context.Settings.MaxResourcesPerRegion + array[k].Biome.BonusResourceLimit && list5.Count != 0)
                    {
                        goto IL_909;
                    }
IL_957:
                    k++;
                    continue;
IL_909:
                    if (list5.Count > 0 && random.NextDouble() < (double)array[k].Biome.BonusResourceChance)
                    {
                        PointOfInterestTemplate poiTemplate2 = base.UsedTemplates[random.Next(base.UsedTemplates.Count)];
                        this.PickResourceSite(poiTemplate2, list4, list5);
                        goto IL_957;
                    }
                    goto IL_957;
                }
                foreach (PointOfInterestDefinition pointOfInterestDefinition2 in list4)
                {
                    base.Trace(string.Format("Bonus POI {0} in {1}", pointOfInterestDefinition2.TemplateName, base.Context.GetDistrict(pointOfInterestDefinition2.Position).MotherRegion.Name));
                }
            }
            base.Silent = true;
        }
Esempio n. 7
0
    private void Client_TurnBegin_RecalculateELCPTameResource()
    {
        if (this.ELCPTameCostCooldown < 1)
        {
            return;
        }
        int num  = (this.gameService.Game as global::Game).Turn + 1;
        int num2 = num % this.ELCPTameCostCooldown;

        if (num2 != 0 && this.eLCPResourceName != StaticString.Empty)
        {
            return;
        }
        num -= num2;
        System.Random random        = new System.Random(World.Seed + base.Empire.Index * base.Empire.Index * base.Empire.Index * base.Empire.Index * base.Empire.Index + num * num);
        int           maxEraNumber  = DepartmentOfScience.GetMaxEraNumber();
        KaijuTameCost kaijuTameCost = KaijuCouncil.GetKaijuTameCost();
        Dictionary <string, List <PointOfInterestTemplate> > dictionary = KaijuTechsManager.ComputeLuxuryAbundance(this.gameService.Game as global::Game);
        List <PointOfInterestTemplate> list = new List <PointOfInterestTemplate>();
        List <string> list2 = new List <string>();

        for (int i = 0; i < kaijuTameCost.CostDefinitions.Length; i++)
        {
            KaijuTameCost.CostDefinition costDefinition = kaijuTameCost.CostDefinitions[i];
            if (!list2.Contains(costDefinition.LuxuryTier))
            {
                string[] array = costDefinition.EraNumber.Split(new char[]
                {
                    ','
                });
                bool flag = false;
                for (int j = 0; j < array.Length; j++)
                {
                    int num3 = 0;
                    if (int.TryParse(array[j], out num3) && num3 <= maxEraNumber)
                    {
                        flag = true;
                        break;
                    }
                }
                if (flag)
                {
                    list.AddRange(dictionary[costDefinition.LuxuryTier]);
                    list2.Add(costDefinition.LuxuryTier);
                }
            }
        }
        PointOfInterestTemplate pointOfInterestTemplate = list[random.Next(list.Count)];
        string empty = string.Empty;

        if (pointOfInterestTemplate.Properties.TryGetValue("ResourceName", out empty))
        {
            Diagnostics.Log("ELCP {0} Client_TurnBegin_RecalculateELCPTameResource rolled Resource {1} instead of {2}", new object[]
            {
                base.Empire.Index.ToString() + "/" + this.KaijuEmpire.KaijuFaction.LocalizedName,
                empty,
                kaijuTameCost.ResourceName
            });
            this.eLCPResourceName = new StaticString(empty);
        }
    }
Esempio n. 8
0
        private void GetPointOfInterests()
        {
            this.customRandomizationGroups = new Dictionary <int, List <int> >();
            this.randomAnomalyPositions    = new List <HexPos>();
            TerrainTransformation transform = base.Context.Settings.Transformations.Find((TerrainTransformation t) => t.Name == "Volcano");
            bool flag  = base.Context.Configuration.IsDLCAvailable("SummerFlamesPack");
            bool flag2 = base.Context.Configuration.IsDLCAvailable("NavalPack");

            for (int i = 0; i < base.Context.Grid.Columns; i++)
            {
                for (int j = 0; j < base.Context.Grid.Rows; j++)
                {
                    if (this.tmxPointOfInterestLayer.Data[j, i] != 0)
                    {
                        HexPos hexPos       = new HexPos(i, j);
                        bool   flag3        = false;
                        string tileProperty = base.Context.Settings.TmxMap.GetTileProperty(this.tmxPointOfInterestLayer.Data[hexPos.Row, hexPos.Column], "Values");
                        string poiName;
                        if (!string.IsNullOrEmpty(tileProperty))
                        {
                            poiName = this.GetPointOfInterest_CustomRandomization(hexPos, tileProperty);
                        }
                        else
                        {
                            poiName = base.Context.Settings.TmxMap.GetTileProperty(this.tmxPointOfInterestLayer.Data[j, i], ImportTmxPointOfInterestLayer.poiTypeNameProperty);
                        }
                        if (string.IsNullOrEmpty(poiName))
                        {
                            base.ReportTmx(string.Concat(new object[]
                            {
                                "?MissingPropertyTile&$Coordinate=",
                                i,
                                ",",
                                j - base.Context.Grid.Rows + 1,
                                "&$MissingProperty=",
                                ImportTmxPointOfInterestLayer.poiTypeNameProperty
                            }));
                        }
                        else
                        {
                            if (poiName.Contains("Facility"))
                            {
                                if (poiName == ImportTmxPointOfInterestLayer.randomFacilityName)
                                {
                                    string[] array = (from template in base.Context.Settings.POITemplates.Values
                                                      select template.Name into name
                                                      where name.Contains("Facility")
                                                      select name).ToArray <string>();
                                    poiName = array[this.random.Next(array.Length)];
                                }
                                bool flag4 = false;
                                for (int k = 0; k < 6; k++)
                                {
                                    HexPos hexPos2 = hexPos.Neighbour((HexPos.Direction)k);
                                    if (hexPos2.Row >= 0 && hexPos2.Row <= base.Context.Settings.Height && hexPos2.Column >= 0 && hexPos2.Column <= base.Context.Settings.Width && this.tmxPointOfInterestLayer.Data[hexPos2.Row, hexPos2.Column] != 0)
                                    {
                                        string tileProperty2 = base.Context.Settings.TmxMap.GetTileProperty(this.tmxPointOfInterestLayer.Data[hexPos2.Row, hexPos2.Column], ImportTmxPointOfInterestLayer.poiTypeNameProperty);
                                        if (!string.IsNullOrEmpty(tileProperty2) && tileProperty2.Contains("Citadel"))
                                        {
                                            if (flag4)
                                            {
                                                base.ReportTmx(string.Concat(new object[]
                                                {
                                                    "?CitadelIncorrectPosition&$Coordinate=",
                                                    hexPos2.Column,
                                                    ",",
                                                    hexPos2.Row - base.Context.Grid.Rows + 1
                                                }));
                                                throw new TmxImportException();
                                            }
                                            flag4 = true;
                                        }
                                    }
                                }
                                if (!flag4)
                                {
                                    goto IL_9F7;
                                }
                                flag3 = true;
                            }
                            if (poiName.Contains("Citadel"))
                            {
                                if (poiName == ImportTmxPointOfInterestLayer.randomCitadelName)
                                {
                                    string[] array2 = (from template in base.Context.Settings.POITemplates.Values
                                                       select template.Name into name
                                                       where name.Contains("Citadel")
                                                       select name).ToArray <string>();
                                    poiName = array2[this.random.Next(array2.Length)];
                                }
                                flag3 = true;
                            }
                            flag3 |= poiName.Contains("NavalQuestLocation_SunkenRuin");
                            Terrain terrain = base.Context.GetTerrain(hexPos);
                            if ((!flag3 && terrain.IsWaterTile) || terrain.Name.Contains("Waste"))
                            {
                                base.ReportTmx(string.Concat(new object[]
                                {
                                    "?POIIncompatibleTerrain&$Coordinate=",
                                    hexPos.Column,
                                    ",",
                                    hexPos.Row - base.Context.Grid.Rows + 1
                                }));
                            }
                            else if (flag3 && !terrain.IsWaterTile)
                            {
                                base.ReportTmx(string.Concat(new object[]
                                {
                                    "?POIIncompatibleTerrain&$Coordinate=",
                                    hexPos.Column,
                                    ",",
                                    hexPos.Row - base.Context.Grid.Rows + 1
                                }));
                            }
                            else if (poiName == "Ridge")
                            {
                                this.ridgesHexes.Add(hexPos);
                            }
                            else if (poiName == "Volcano")
                            {
                                this.ridgesHexes.Add(hexPos);
                                if (flag)
                                {
                                    base.Context.ApplyTransformation(transform, hexPos);
                                }
                            }
                            else
                            {
                                if (poiName.Contains("Anomaly"))
                                {
                                    if (poiName == ImportTmxPointOfInterestLayer.randomAnomalyName)
                                    {
                                        this.randomAnomalyPositions.Add(hexPos);
                                    }
                                    else if (base.Context.Anomalies.Keys.Contains(poiName))
                                    {
                                        if (!base.Context.Anomalies[poiName].Contains(hexPos))
                                        {
                                            base.Context.Anomalies[poiName].Add(hexPos);
                                        }
                                    }
                                    else
                                    {
                                        base.Context.Anomalies.Add(poiName, new List <HexPos>());
                                        base.Context.Anomalies[poiName].Add(hexPos);
                                    }
                                }
                                if (poiName.Contains("Village"))
                                {
                                    if (poiName == ImportTmxPointOfInterestLayer.randomMinorFactionVillage)
                                    {
                                        string[] array3 = (from template in base.Context.Settings.POITemplates.Values
                                                           select template.Name into name
                                                           where name.Contains("Village_")
                                                           select name).ToArray <string>();
                                        poiName = array3[this.random.Next(array3.Length)];
                                    }
                                    short  key    = base.Context.RegionData[j, i];
                                    Region region = base.Context.Regions[key];
                                    if (region == null || poiName.Split(new char[]
                                    {
                                        '_'
                                    }).Count <string>() < 2)
                                    {
                                        goto IL_9F7;
                                    }
                                    Region region2  = region;
                                    int    villages = region2.Villages;
                                    region2.Villages = villages + 1;
                                    if (string.IsNullOrEmpty(region.MinorFactionName))
                                    {
                                        region.MinorFactionName = poiName.Split(new char[]
                                        {
                                            '_'
                                        })[1];
                                    }
                                    else
                                    {
                                        poiName = "Village_" + region.MinorFactionName;
                                    }
                                }
                                if (poiName == ImportTmxPointOfInterestLayer.randomStrategicResourceDepositName)
                                {
                                    string[] array4 = (from template in base.Context.Settings.POITemplates.Values
                                                       select template.Name into name
                                                       where name.Contains("ResourceDeposit_Strategic")
                                                       select name).ToArray <string>();
                                    poiName = array4[this.random.Next(array4.Length)];
                                }
                                if (poiName == ImportTmxPointOfInterestLayer.randomLuxuryResourceDepositName)
                                {
                                    string[] array5 = (from template in base.Context.Settings.POITemplates.Values
                                                       select template.Name into name
                                                       where name.Contains("ResourceDeposit_Luxury")
                                                       select name).ToArray <string>();
                                    poiName = array5[this.random.Next(array5.Length)];
                                }
                                PointOfInterestTemplate pointOfInterestTemplate = base.Context.Settings.POITemplates.Values.FirstOrDefault((PointOfInterestTemplate template) => template.Name == poiName);
                                if (!flag2 && (poiName.Contains("Facility") || poiName.Contains("Citadel") || poiName.Contains("NavalQuestLocation_SunkenRuin")))
                                {
                                    pointOfInterestTemplate = null;
                                }
                                if (pointOfInterestTemplate != null)
                                {
                                    if (poiName.Contains("ResourceDeposit"))
                                    {
                                        short  key2    = base.Context.RegionData[j, i];
                                        Region region3 = base.Context.Regions[key2];
                                        if (region3 != null)
                                        {
                                            region3.Resources.Add(new PointOfInterestDefinition
                                            {
                                                Position     = new HexPos(i, j),
                                                TemplateName = pointOfInterestTemplate.Name
                                            });
                                        }
                                    }
                                    base.Context.POIDefinitions.Add(new PointOfInterestDefinition
                                    {
                                        Position     = new HexPos(i, j),
                                        TemplateName = pointOfInterestTemplate.Name
                                    });
                                }
                            }
                        }
                    }
                    IL_9F7 :;
                }
            }
            this.customRandomizationGroups.Clear();
        }