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(); }