Beispiel #1
0
        private void CalcEffects(Vic2World vic2World, int siblingProvinces, List <Eu4ProvinceBase> eu4Provinces)
        {
            var factories     = new Dictionary <string, float>();
            var baseFactories = 0f;

            //Factories = new HashSet<string>();

            IterateEffects(vic2World, vic2World.ProvinceEffects, siblingProvinces, eu4Provinces, (effects, fromProvince) =>
            {
                CalcPopEffects(effects, fromProvince);
                baseFactories += CalcFactoryEffects(effects, fromProvince, factories);
                if (effects.ContainsKey("railroad"))
                {
                    RailroadLevel += effects["railroad"];
                }
                if (effects.ContainsKey("fort"))
                {
                    RailroadLevel += effects["fort"];
                }
            });
            IterateEffects(vic2World, vic2World.ProvinceEffects, siblingProvinces, eu4Provinces, (effects, fromProvince) =>
            {
                CalcRelativePopEffects(effects, fromProvince);
            });
            FinaliseFactoryEffects(factories, baseFactories);

            //on country
        }
Beispiel #2
0
        public Vic2Culture(string eu4Name, Vic2World vic2World, string vic2Name, Vic2CultureGroup group, string prefix, bool neoCulture = false)
        {
            Group = group;
            Name  = vic2Name;

            World       = vic2World;
            eu4Cultures = new List <Eu4Culture>();
            eu4Cultures.Add(vic2World.Eu4Save.Cultures[eu4Name]);
            var display = string.Empty;

            if (isNeoCulture)
            {
                var culture = vic2World.Cultures[vic2World.V2Mapper.GetV2Culture(eu4Cultures[0].Name)];
                display = culture.DisplayName;
            }
            else
            {
                display = eu4Cultures[0].DisplayName;
            }
            DisplayName  = (string.IsNullOrEmpty(prefix) ? string.Empty : (prefix + "-")) + display;
            FirstNames   = eu4Cultures[0].MaleNames.ToList();
            isNeoCulture = neoCulture;

            LastNames = eu4Cultures[0].DynastyNames;
            if (vic2World.PrimaryNations)
            {
                SetupPrimaryNation(vic2World);
            }
        }
Beispiel #3
0
 public PoliticalParty(string name, Ideology ideology, Vic2World world)
 {
     Name      = name;
     Ideology  = ideology;
     StartDate = new DateTime(world.StartYear - 5, 1, 1);
     EndDate   = new DateTime(1940, 1, 1);
 }
Beispiel #4
0
 public Vic2CultureGroup(string name, Vic2World world)
 {
     World    = world;
     Name     = name;
     Cultures = new List <Vic2Culture>();
     // todo: better default values (dynamic?)
     Leader = "european";
     Unit   = "EuropeanGC";
 }
Beispiel #5
0
        public Vic2Culture AddCulture(string eu4Culture, Vic2World vic2World, string vic2Name = null, string prefix = "", bool neoCulture = false)
        {
            if (vic2Name == "british_north_america")
            {
                Console.WriteLine();
            }
            var culture = new Vic2Culture(eu4Culture, vic2World, vic2Name, this, prefix, neoCulture);

            Cultures.Add(culture);
            return(culture);
        }
Beispiel #6
0
 public void SetupUnionNation(Vic2World world)
 {
     if (world.CultureNations.GetSublist("union").KeyValuePairs.ContainsKey(Name))
     {
         var tag = world.CultureNations.GetSublist("union").GetString(Name);
         Union = world.Vic2Countries.Find(c => c.CountryTag == tag) ?? new Vic2Country(world, tag, this);
     }
     else if (unionKey != null)
     {
         Union = new Vic2Country(world, unionKey, this);
     }
 }
Beispiel #7
0
        private void IterateEffects(Vic2World vic2World, PdxSublist provEffects, int siblingProvinces, List <Eu4ProvinceBase> eu4Provinces, Action <Dictionary <string, float>, Eu4ProvinceBase> callback)
        {
            foreach (var prov in eu4Provinces)
            {
                Action <Dictionary <string, float> > newCallback = (Dictionary <string, float> effects) =>
                {
                    callback(effects, prov);
                };
                // development
                vic2World.ValueEffect(provEffects, newCallback, "base_tax", prov.BaseTax / (float)siblingProvinces);
                vic2World.ValueEffect(provEffects, newCallback, "base_production", prov.BaseProduction / (float)siblingProvinces);
                vic2World.ValueEffect(provEffects, newCallback, "base_manpower", prov.BaseManpower / (float)siblingProvinces);
                // total dev
                vic2World.ValueEffect(provEffects, newCallback, "development", (prov.BaseTax + prov.BaseProduction + prov.BaseManpower) / (float)siblingProvinces);

                // estates
                if (prov.Estate != null && provEffects.Sublists["estate"].Sublists.ContainsKey(prov.Estate))
                {
                    newCallback(provEffects.Sublists["estate"].Sublists[prov.Estate].FloatValues.ToDictionary(effect => effect.Key, effect => effect.Value.Sum() / eu4Provinces.Count));
                }


                // province flags
                if (provEffects.Sublists.ContainsKey("province_flags") && prov.Flags != null)
                {
                    foreach (var flag in prov.Flags)
                    {
                        if (provEffects.Sublists["province_flags"].Sublists.ContainsKey(flag))
                        {
                            newCallback(provEffects.Sublists["province_flags"].Sublists[flag].FloatValues.ToDictionary(effect => effect.Key, effect => effect.Value.Sum() / eu4Provinces.Count));
                        }
                    }
                }

                // buildings
                if (provEffects.Sublists.ContainsKey("buildings"))
                {
                    foreach (var build in prov.Buildings)
                    {
                        if (provEffects.Sublists["buildings"].Sublists.ContainsKey(build))
                        {
                            newCallback(provEffects.Sublists["buildings"].Sublists[build].FloatValues.ToDictionary(effect => effect.Key, effect => effect.Value.Sum() / eu4Provinces.Count));
                        }
                    }
                }
                // from owner country
                if (prov.Owner != null && provEffects.Sublists.ContainsKey("owner"))
                {
                    Vic2Country.IterateCountryEffects(vic2World, prov.Owner, provEffects.Sublists["owner"], (effects) => { callback(effects, null); });
                }
            }
        }
Beispiel #8
0
        public PdxSublist GetHistoryCountryFile(Vic2World world)
        {
            var data = new PdxSublist(null);

            data.AddValue("capital", Capital.ToString());
            data.AddValue("primary_culture", PrimaryCulture);
            AcceptedCultures.ForEach(c => data.AddValue("culture", c));
            data.AddValue("religion", Religion);
            data.AddValue("government", Government);
            data.AddValue("plurality", Plurality.ToString());
            if (NationalValues != null)
            {
                data.AddValue("nationalvalue", NationalValues.Value);
            }
            data.AddValue("literacy", Literacy.ToString());
            data.AddValue("civilized", IsCivilised ? "yes" : "no");

            data.AddValue("prestige", Prestige.ToString());
            if (Reforms != null)
            {
                Reforms.AddData(data);
            }
            if (Technologies != null)
            {
                Technologies.ForEach(t => data.AddValue(t, "1"));
            }
            data.AddValue("consciousness", Consciousness.ToString());
            // todo
            data.AddValue("nonstate_consciousness", (Consciousness / 3).ToString());
            if (RulingParty != null)
            {
                data.AddValue("ruling_party", RulingParty.Name);
            }
            data.AddDate("last_election", LastElection);
            if (UpperHouse != null)
            {
                data.AddSublist("upper_house", UpperHouse.GetData(data));
            }
            if (TechSchools != null)
            {
                data.AddValue("schools", Enum.GetName(typeof(TechSchool), TechSchools.TechSchool));
            }

            if (FemaleLeaders && (Reforms.vote_franschise == vote_franschise.universal_voting || Reforms.vote_franschise == vote_franschise.universal_weighted_voting))
            {
                var entry = new PdxSublist();
                entry.AddValue("decision", "enact_female_suffrage");

                data.AddSublist(world.StartDate, entry);
            }
            return(data);
        }
Beispiel #9
0
 public PopPool(Vic2World world, Vic2Province province)
 {
     World         = world;
     pops          = new Dictionary <string, Pop>();
     this.province = province;
     //culture = new Dictionary<Eu4Province, ValueSet<string>>();
     //religion = new Dictionary<Eu4Province, ValueSet<string>>();
     //foreach (var prov in eu4Provinces)
     //{
     //	culture[prov] = HistoryEffect(prov.CulturalHistory);
     //	religion[prov] = HistoryEffect(prov.ReligiousHistory);
     //}
 }
Beispiel #10
0
        static void Main(string[] args)
        {
            var keepStartDate = !args.Contains("1836");
            //TGAWriter.WriteTricolourTGA("test.tga", new Colour(0, 85, 164), new Colour(255, 255, 255), new Colour(239, 65, 53));

            var save = new Eu4Save("Grindia.eu4", @"C:\Users\Blake\Documents\Paradox Interactive\Europa Universalis IV\mod\converter_test");

            //Console.WriteLine(save.RootList);
            var V2World = new Vic2World(save, keepStartDate);


            Console.Read();
        }
Beispiel #11
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()]);
            }
        }
Beispiel #12
0
        public Vic2CultureGroup(Vic2World world, PdxSublist data) : this(data.Key, world)
        {
            //World = world;
            Leader = data.GetString("leader");
            if (data.KeyValuePairs.ContainsKey("unit"))
            {
                Unit = data.GetString("unit");
            }

            data.ForEachSublist(sub =>
            {
                Cultures.Add(new Vic2Culture(world, sub.Value, this));
            });

            if (data.KeyValuePairs.ContainsKey("union"))
            {
                unionKey = data.GetString("union");
            }
        }
Beispiel #13
0
 public Vic2Culture(Vic2World world, PdxSublist data, Vic2CultureGroup group)
 {
     World       = world;
     Group       = group;
     Name        = data.Key;
     DisplayName = world.VanillaLocalisation[Name];
     FirstNames  = data.GetSublist("first_names").Values;
     LastNames   = data.GetSublist("last_names").Values;
     Colour      = new Colour(data.GetSublist("color").FloatValues[string.Empty]);
     eu4Cultures = world.V2Mapper.Culture.Where(c => c.Value == Name).Select(s => world.Eu4Save.Cultures.ContainsKey(s.Key) ? world.Eu4Save.Cultures[s.Key] : null).Where(s => s != null).ToList();
     if (data.KeyValuePairs.ContainsKey("primary"))
     {
         primaryKey = data.GetString("primary");
     }
     if (world.PrimaryNations)
     {
         SetupPrimaryNation(world);
     }
 }
Beispiel #14
0
        public Mapper(Vic2World vic2World)        //string mappingPath)
        {
            World = vic2World;
            //instance = this;
            Country     = Mappings("country_mappings.txt");
            Culture     = Mappings("cultureMap.txt");
            NeoCultures = new Dictionary <string, string>();
            Religion    = Mappings("religionMap.txt");
            var gov = MappingsFile("governmentMapping.txt");

            Government = Mappings(gov);
            Monarchies = new List <Monarchy>();
            var monarchies = gov.GetSublist("monarchies");

            monarchies.ForEachSublist(monarchy =>
            {
                Monarchies.Add(new Monarchy(monarchy.Value));
            });
        }
Beispiel #15
0
        public Vic2Country(Vic2World vic2World, Eu4CountryBase eu4Country)
        {
            World            = vic2World;
            CountryTag       = vic2World.V2Mapper.GetV2Country(eu4Country.CountryTag);
            IsVic2Country    = !vic2World.ExistingCountries.Add(CountryTag);
            Eu4Country       = eu4Country;
            MapColour        = eu4Country.MapColour;
            GraphicalCulture = "Generic";
            DisplayNoun      = eu4Country.DisplayNoun;
            DisplayAdj       = eu4Country.DisplayAdj;

            PrimaryCulture   = vic2World.V2Mapper.GetV2Culture(eu4Country.PrimaryCulture);
            AcceptedCultures = eu4Country.AcceptedCultures.ConvertAll(c => vic2World.V2Mapper.GetV2Culture(c));

            Religion = vic2World.V2Mapper.GetV2Religion(eu4Country.Religion);

            Government = vic2World.V2Mapper.GetV2Government(eu4Country);

            Capital = vic2World.GetBestVic2ProvinceMatch(eu4Country.Capital);

            //base literacy
            Literacy = 0.1f;

            IsCivilised = eu4Country.Institutions.Values.All(b => b);
            // -100 - 100 scaled to 0 - 100
            //Prestige = (eu4Country.Prestige + 100) / 2;

            Prestige = (100 * eu4Country.GreatPowerScore) / eu4Country.World.GreatestPower.GreatPowerScore;

            LastElection = eu4Country.LastElection;

            CalcEffects(vic2World);
            // TODO: make this less of a hack
            if (Government == "absolute_monarchy" && Reforms.vote_franschise != vote_franschise.none_voting)
            {
                Government = "prussian_constitutionalism";
            }
            if (Government == null)
            {
                Console.WriteLine("Uh oh");
            }
            //RulingParty = PoliticalParties.First(p => p.Ideology == UpperHouse.GetMode());
        }
Beispiel #16
0
        public Vic2DiploRelation(Eu4DiploRelation eu4, Vic2World world)
        {
            World = world;
            Type  = V2Relation.invalid;
            switch (eu4.Type)
            {
            case Relation.alliance:
                Type = V2Relation.alliance;
                break;

            case Relation.dependency:
                if (eu4.SubjectType == "vassal")
                {
                    Type = V2Relation.vassal;
                }
                break;
            }
            First  = world.GetCountry(eu4.First);
            Second = world.GetCountry(eu4.Second);
        }
Beispiel #17
0
 private void FinalisePoliticalParties(Vic2World vic2World, IdeologyModifier baseModifier)
 {
     if (Eu4Country?.CountryTag == "Z16")
     {
         Console.WriteLine("Me!");
     }
     foreach (var ideology in vic2World.IdeologyModifiers)
     {
         var polParty      = new PoliticalParty(CountryTag + "_" + Enum.GetName(typeof(Ideology), ideology.Key), ideology.Key, vic2World);
         var totalModifier = baseModifier + ideology.Value;
         foreach (var pol in totalModifier.Policies)
         {
             polParty.SetIssue(pol.Key, pol.Value);
         }
         PoliticalParties.Add(polParty);
         if (ideology.Key == UpperHouse?.GetMode())
         {
             RulingParty = polParty;
         }
     }
 }
Beispiel #18
0
        private void CalcEffects(Vic2World vic2World)
        {
            NationalValues = new NV();

            TechSchools = new TechSchoolValues();

            Reforms = new Reforms();
            var reforms = new Dictionary <Type, float>();

            UpperHouse = new UHouse();

            PoliticalParties  = new List <PoliticalParty>();
            BasePartyModifier = new IdeologyModifier();

            Technologies = new List <string>();
            var techInvestment = new Dictionary <string, float>();
            var femaleLeaders  = 0f;

            foreach (var techCategory in vic2World.TechOrder.Keys)
            {
                techInvestment.Add(techCategory, 0);
            }
            IterateEffects(vic2World, (Dictionary <string, float> effects) =>
            {
                CalcNationalValues(effects);
                CalcTechSchool(effects);
                CalcReforms(effects, reforms);
                CalcUpperHouse(effects);
                CalcPoliticalParties(effects, BasePartyModifier);
                CalcLiteracy(effects);
                CalcConsciousness(effects);
                CalcMilitancy(effects);
                CalcTechnology(effects, techInvestment);
                femaleLeaders = CalcFemaleLeaders(effects, femaleLeaders);
            });
            FinaliseReforms(reforms);
            FinalisePoliticalParties(vic2World, BasePartyModifier);
            FinaliseTechnology(techInvestment, vic2World.TechOrder);
            FinaliseFemaleLeaders(femaleLeaders);
        }
Beispiel #19
0
 private void IterateEffects(Vic2World vic2World, Action <Dictionary <string, float> > callback)
 {
     IterateCountryEffects(vic2World, Eu4Country, vic2World.CountryEffects, callback);
 }
Beispiel #20
0
        private Vic2Country(Vic2World world, string tag, IEnumerable <Vic2Country> cultureNations, Vic2Culture primaryCulture)
        {
            World           = world;
            CountryTag      = tag;
            IsVic2Country   = !world.ExistingCountries.Add(tag);
            IsCultureNation = true;
            if (!IsVic2Country)
            {
                Console.WriteLine($"Creating nation for {primaryCulture.DisplayName} culture... ({primaryCulture.Name})");
                GraphicalCulture = "Generic";
                world.Vic2Countries.Add(this);
                //setup
                Capital = 1;

                PrimaryCulture = primaryCulture.Name;

                // Name generator
                DisplayNoun = world.LocalisationHelper.GetSublist("culture_nation").GetString("noun").Replace("%CULTURE%", primaryCulture.DisplayName).Replace("\"", string.Empty);
                DisplayAdj  = world.LocalisationHelper.GetSublist("culture_nation").GetString("adj").Replace("%CULTURE%", primaryCulture.DisplayName).Replace("\"", string.Empty);
                if (primaryCulture.DisplayName.Last() == 'n' && "aeiu".Contains(primaryCulture.DisplayName[primaryCulture.DisplayName.Length - 2]))
                {
                    DisplayNoun = primaryCulture.DisplayName.Substring(0, primaryCulture.DisplayName.Length - 1);
                    //DisplayNoun = world.LocalisationHelper.GetSublist("culture_nation").GetString("noun").Replace("%CULTURE%", primaryCulture.DisplayName).Replace("\"", string.Empty);
                }
                else if (primaryCulture.DisplayName.Last() == 'n' && primaryCulture.DisplayName[primaryCulture.DisplayName.Length - 2] == 'o')
                {
                    //TODO: make this less of a hack
                    if (primaryCulture.DisplayName.EndsWith("eton"))
                    {
                        DisplayNoun = primaryCulture.DisplayName.Substring(0, primaryCulture.DisplayName.Length - 4) + "ittany";
                    }
                    else
                    {
                        DisplayNoun = primaryCulture.DisplayName + 'y';
                    }
                    DisplayAdj = primaryCulture.DisplayName;
                }
                else if (primaryCulture.DisplayName.Last() == 'a')
                {
                    DisplayNoun = primaryCulture.DisplayName;
                    DisplayAdj  = primaryCulture.DisplayName + 'n';
                }
                else if (primaryCulture.DisplayName.Last() == 'i')
                {
                    DisplayNoun = primaryCulture.DisplayName + 'a';
                }
                else if ("ou".Contains(primaryCulture.DisplayName.Last()))
                {
                    DisplayNoun = primaryCulture.DisplayName + "ria";
                }
                else if (primaryCulture.DisplayName.EndsWith("ese"))
                {
                    DisplayNoun = primaryCulture.DisplayName.Substring(0, primaryCulture.DisplayName.Length - 3);
                }
                else if (primaryCulture.DisplayName.Last() == 'e')
                {
                    DisplayNoun = primaryCulture.DisplayName;
                }
                else if (primaryCulture.DisplayName.Last() == 'r' && "aeiou".Contains(primaryCulture.DisplayName[primaryCulture.DisplayName.Length - 2]))
                {
                    DisplayNoun = primaryCulture.DisplayName + "ia";
                }


                AcceptedCultures  = new List <string>();
                PoliticalParties  = new List <PoliticalParty>();
                BasePartyModifier = new IdeologyModifier();
                foreach (var nation in cultureNations)
                {
                    BasePartyModifier += nation.BasePartyModifier;
                }

                FinalisePoliticalParties(world, BasePartyModifier);



                MapColour = primaryCulture.Colour;
                // the most common religion out of nations with that culture
                //Religion = cultureNations.GroupBy(c => c.Religion).Select(c => new {
                //	Name = c.Key, Count = c.Count()
                //}).OrderByDescending(x => x.Count).Select(x => x.Name).First();
                //
                ////most common government type
                //Government = cultureNations.GroupBy(c => c.Government).Select(c => new {
                //	Name = c.Key,
                //	Count = c.Count()
                //}).OrderByDescending(x => x.Count).Select(x => x.Name).First();
            }
        }
Beispiel #21
0
        public void SetupPrimaryNation(Vic2World world)
        {
            if (Name == "british_north_america")
            {
                Console.WriteLine();
            }
            //if(isNeoCulture)
            //{
            //	return;
            //}
            if (world.CultureNations.GetSublist("except").Values.Contains(Name))
            {
                // this culture is blacklisted
                return;
            }
            if (world.CultureNations.GetSublist("primary").KeyValuePairs.ContainsKey(Name))
            {
                var tag = world.CultureNations.GetSublist("primary").GetString(Name);
                PrimaryNation = world.Vic2Countries.Find(c => c.CountryTag == tag) ?? new Vic2Country(world, tag, this);
            }
            else if (primaryKey != null)
            {
                PrimaryNation = world.Vic2Countries.Find(c => c.CountryTag == primaryKey) ?? new Vic2Country(world, primaryKey, this);
            }
            else if (eu4Cultures.Count == 1 && (eu4Cultures[0].PrimaryNation != null || isNeoCulture))
            {
                if (isNeoCulture)
                {
                    //find colonial nation matching the culture-region
                    PrimaryNation = world.Vic2Countries.Where(c => (c.Eu4Country?.Overlord ?? string.Empty) == PrimaryNation?.Eu4Country?.CountryTag && c.Eu4Country.IsColonialNation && world.Eu4Save.Continents.Where(cul => cul.Value == eu4Cultures[0].Continent && cul.Value.Provinces.Contains(c.Capital)).Count() != 0).FirstOrDefault();
                }
                else if (eu4Cultures[0].PrimaryNation != null)
                {
                    PrimaryNation = world.GetCountry(eu4Cultures[0].PrimaryNation) ?? new Vic2Country(world, world.V2Mapper.GetV2Country(eu4Cultures[0].PrimaryNation), this);
                }
            }
            else if (Group.Union == null && !isNeoCulture)
            {
                var tag = 'P' + world.NumCultureNations.ToString("D2");
                world.NumCultureNations++;
                PrimaryNation = new Vic2Country(world, tag, this);
            }


            if (PrimaryNation?.FemaleLeaders ?? false)
            {
                foreach (var eu4Culture in eu4Cultures)
                {
                    FirstNames.AddRange(eu4Culture.FemaleNames);
                }
            }
            if (Colour == null)
            {
                Colour = PrimaryNation?.MapColour;
                if (Colour == null)
                {
                    byte r          = 0;
                    byte g          = 0;
                    byte b          = 240;
                    byte threshhold = 8;
                    while (!isUnique(r, g, b, (byte)(threshhold * 4)))
                    {
                        r += (byte)(threshhold * 2);
                        if (r < threshhold * 2)
                        {
                            g += (byte)(threshhold * 4);


                            if (g < threshhold * 4)
                            {
                                b += (byte)(threshhold * 3);
                            }
                        }
                    }
                    Colour = new Colour(r, g, b);
                }

                if (PrimaryNation != null && PrimaryNation.MapColour == null)
                {
                    PrimaryNation.MapColour = Colour;
                }
            }
        }
Beispiel #22
0
 public Vic2Country(Vic2World world, string tag, Vic2Culture culture) : this(world, tag, world.Vic2Countries.Where(c => c.PrimaryCulture == culture.Name), culture)
 {
 }
Beispiel #23
0
 public Vic2Country(Vic2World world, string tag, Vic2CultureGroup cultureGroup) : this(world, tag, world.Vic2Countries.Where(c => cultureGroup.Cultures.Find(cul => c.PrimaryCulture == cul.Name) != null), cultureGroup.Cultures.First())
 {
 }
Beispiel #24
0
 public Vic2CultureGroup(Eu4CultureGroup group, Vic2World world) : this(group.Name, world)
 {
     Eu4Group    = group;
     DisplayName = group.DisplayName;
 }
Beispiel #25
0
        public static void IterateCountryEffects(Vic2World vic2World, Eu4CountryBase country, PdxSublist effects, Action <Dictionary <string, float> > callback)
        {
            if (effects.Sublists.ContainsKey("ideas"))
            {
                //idea groups
                foreach (var idea in country.Ideas)
                {
                    if (effects.GetSublist("ideas").Sublists.ContainsKey(idea.Key))
                    {
                        callback(effects.GetSublist("ideas").GetSublist(idea.Key).FloatValues.ToDictionary(effect => effect.Key, effect => (idea.Value + 1) * effect.Value.Sum()));
                    }
                }
            }

            // country flags
            if (effects.Sublists.ContainsKey("country_flags"))
            {
                foreach (var flag in country.Flags)
                {
                    if (effects.GetSublist("country_flags").Sublists.ContainsKey(flag))
                    {
                        callback(effects.GetSublist("country_flags").GetSublist(flag).FloatValues.ToDictionary(effect => effect.Key, effect => effect.Value.Sum()));
                    }
                }
            }
            // religion
            if (effects.Sublists.ContainsKey("religion"))
            {
                if (effects.GetSublist("religion").Sublists.ContainsKey(country.Religion))
                {
                    callback(effects.GetSublist("religion").GetSublist(country.Religion).FloatValues.ToDictionary(effect => effect.Key, effect => effect.Value.Sum()));
                    //newCallback(effects.GetSublist("religion").GetSublist(country.Religion), 1);
                }
            }

            // government
            if (effects.Sublists.ContainsKey("government"))
            {
                if (effects.GetSublist("government").Sublists.ContainsKey(country.Government))
                {
                    callback(effects.GetSublist("government").GetSublist(country.Government).FloatValues.ToDictionary(effect => effect.Key, effect => effect.Value.Sum()));
                    //newCallback(effects.GetSublist("government").GetSublist(country.Government), 1);
                    //callback(effects.Sublists["government"].Sublists[country.Government].KeyValuePairs.ToDictionary(effect => effect.Key, effect => float.Parse(effect.Value)));
                }
            }

            // policies
            if (effects.Sublists.ContainsKey("policies"))
            {
                foreach (var policy in country.Policies)
                {
                    if (effects.GetSublist("policies").Sublists.ContainsKey(policy))
                    {
                        callback(effects.GetSublist("policies").GetSublist(policy).FloatValues.ToDictionary(effect => effect.Key, effect => effect.Value.Sum()));
                        //newCallback(effects.GetSublist("policies").GetSublist(policy), 1);
                        //callback(effects.Sublists["policies"].Sublists[policy].KeyValuePairs.ToDictionary(effect => effect.Key, effect => float.Parse(effect.Value)));
                    }
                }
            }

            // values

            vic2World.ValueEffect(effects, callback, "mercantilism", country.Mercantilism);
            vic2World.ValueEffect(effects, callback, "legitimacy", country.Legitimacy);                    // - 50);
            vic2World.ValueEffect(effects, callback, "republican_tradition", country.RepublicanTradition); // - 50);
            vic2World.ValueEffect(effects, callback, "stability", country.Stability);
            vic2World.ValueEffect(effects, callback, "absolutism", country.Absolutism);
            // tech
            vic2World.ValueEffect(effects, callback, "adm_tech", country.AdmTech);
            vic2World.ValueEffect(effects, callback, "dip_tech", country.DipTech);
            vic2World.ValueEffect(effects, callback, "mil_tech", country.MilTech);


            //institutions
            if (effects.Sublists.ContainsKey("institutions"))
            {
                foreach (var institution in country.Institutions)
                {
                    var key = institution.Value ? institution.Key : ("not_" + institution.Key);
                    if (effects.Sublists["institutions"].Sublists.ContainsKey(key))
                    {
                        callback(effects.GetSublist("institutions").GetSublist(key).FloatValues.ToDictionary(effect => effect.Key, effect => effect.Value.Sum()));
                    }
                }
            }
        }
Beispiel #26
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="provID">ID of the province</param>
 /// <param name="defaultProvince">The province's default history file</param>
 /// <param name="vic2World">The world object the province exists in</param>
 /// <param name="siblingProvinces">The number of other vic2 provinces that eu4Provinces has been mapped to</param>
 /// <param name="eu4Provinces">List of eu4 provinces mapped to this province</param>
 public Vic2Province(int provID, PdxSublist defaultProvince, Vic2World vic2World, int siblingProvinces, List <Eu4ProvinceBase> eu4Provinces)
 {
     DoSetup(provID, defaultProvince, vic2World, siblingProvinces, eu4Provinces);
 }
Beispiel #27
0
        public void AddLocalisation(Dictionary <string, string> localisation, PdxSublist localeHelper, Vic2World world)
        {
            if (IsCultureNation)
            {
                localisation.Add($"form_{PrimaryCulture}_nation_title", $"Unite the {world.Cultures[PrimaryCulture].DisplayName} People");
                localisation.Add($"form_{PrimaryCulture}_nation_desc", $"Since time immemorial, the {world.Cultures[PrimaryCulture].DisplayName} people have been split among many nation states. In the modern days of nationalism, we need our own country to fulfil our desire for self-determination.");
            }
            if (!IsVic2Country)
            {
                localisation.Add(CountryTag, DisplayNoun);
                localisation.Add($"{CountryTag}_ADJ", DisplayAdj);
                localeHelper.GetSublist("government").ForEachString(gov =>
                {
                    // eg. "People's Republic of %NOUN%" -> "People's Republic of France"
                    localisation.Add($"{CountryTag}_{gov.Key}", gov.Value.Replace("%NOUN%", DisplayNoun).Replace("%ADJ%", DisplayAdj).Replace("\"", string.Empty));
                });

                foreach (var party in PoliticalParties)
                {
                    localisation.Add(party.Name, localeHelper.GetSublist("party").GetString(Enum.GetName(typeof(Ideology), party.Ideology)).Replace("\"", string.Empty));
                }
            }
        }
Beispiel #28
0
 public Vic2Culture(string name, Vic2World vic2World, Vic2CultureGroup group) : this(name, vic2World, name, group, "")
 {
 }