예제 #1
0
        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()]);
            }
        }
예제 #2
0
        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);
        }