private void DoSetup(int provID, PdxSublist defaultProvince, Vic2World vic2World, int siblingProvinces, List <Eu4ProvinceBase> eu4Provinces) { World = vic2World; Subfolder = Path.GetFileName(Path.GetDirectoryName(defaultProvince.Key)); FileName = Path.GetFileName(defaultProvince.Key); Eu4Provinces = eu4Provinces; ProvID = provID; TradeGoods = defaultProvince.GetString("trade_goods"); LifeRating = (int)defaultProvince.GetFloat("life_rating"); Pops = new PopPool(vic2World, this); Factories = new HashSet <string>(); SiblingProvinces = siblingProvinces; if (ProvID == 222) { Console.WriteLine(); } var mapPos = vic2World.Vic2ProvPositions[ProvID.ToString()]; var mapX = mapPos.Sum(p => p.X) / mapPos.Count; var mapY = mapPos.Sum(p => p.Y) / mapPos.Count; MapPosition = new Point(mapX, mapY); if (eu4Provinces.Count > 0) { // most common owner Owner = vic2World.GetCountry(eu4Provinces.GroupBy(p => p.Owner).OrderByDescending(grp => grp.Count()) .Select(grp => grp.Key).First()); if (Owner?.Eu4Country?.IsColonialNation ?? false) { Owner = vic2World.GetCountry(Owner.Eu4Country.Overlord); } if (Owner != null) { Owner.NumProvinces++; } // all countries that have full cores in any of the eu4 counterparts gets cores here Cores = eu4Provinces.Where(p => p.IsState).SelectMany(p => p.Cores).Select(c => vic2World.GetCountry(c)).Distinct().ToList(); //Cores = new List<Vic2Country>(); var r = eu4Provinces.GroupBy(p => p.Religion).OrderByDescending(g => g.Sum(p => p.Development)).First().First().Religion; if (r != "no_religion") { MajorityReligion = World.Eu4Save.Religions[r]; } FortLevel = eu4Provinces.Any(p => p.FortLevel > 6) ? 1 : 0; } else { Pops.ReadData(vic2World.PopData.Sublists[provID.ToString()]); } }
internal double GetDistance(Vic2Province prov, Eu4Religion religion) { //var religion = myReligion ?? prov.MajorityReligion; var dx = prov.MapPosition.X - Centre.MapPosition.X; var dy = prov.MapPosition.Y - Centre.MapPosition.Y; var dist = Math.Sqrt(dx * dx + dy * dy) / 100; if (religion != Centre.MajorityReligion) { dist += 5; } if (religion.Group != Centre.MajorityReligion.Group) { dist += 10; } if (prov.Owner != Centre.Owner) { dist += 5; } return(dist); }