Esempio n. 1
0
        public void ValueEffect(PdxSublist effects, Action <Dictionary <string, float> > callback, string key, float value)
        {
            if (effects.Sublists.ContainsKey("values") && effects.GetSublist("values").Sublists.ContainsKey(key))
            {
                effects.GetSublist("values").Sublists.ForEach(key, (sub) =>
                {
                    var average = 0f;
                    if (sub.FloatValues.ContainsKey("average"))
                    {
                        average = sub.GetFloat("average");
                    }
                    var min = float.MinValue;
                    if (sub.FloatValues.ContainsKey("minimum"))
                    {
                        min = sub.GetFloat("minimum");
                    }
                    var max = float.MaxValue;
                    if (sub.FloatValues.ContainsKey("maximum"))
                    {
                        max = sub.GetFloat("maximum");
                    }

                    callback(sub.FloatValues.ToDictionary(effect => effect.Key, effect => Math.Min(max, Math.Max(min, (value - average))) * effect.Value.Sum()));
                });
            }
        }
Esempio n. 2
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);
     }
 }
Esempio n. 3
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));
                }
            }
        }
Esempio n. 4
0
        public Eu4Culture(PdxSublist data, Eu4CultureGroup group, Eu4WorldBase world)
        {
            IsVanilla   = true;
            Name        = data.Key;
            DisplayName = world.Localisation.ContainsKey(Name) ? world.Localisation[Name] : Name;
            if (Name == "russian_culture")
            {
                Console.WriteLine();
            }
            if (Name == "english")
            {
                Console.WriteLine();
            }
            Group = group;
            var capital = 0;

            if (data.KeyValuePairs.ContainsKey("primary"))
            {
                PrimaryNation = data.GetString("primary");
                if (world.Countries.ContainsKey(PrimaryNation))
                {
                    capital = world.Countries[PrimaryNation].Capital;
                }
            }
            if (capital == 0)
            {
                // highest development continent out of all eu4 provinces with that culture in 1444
                Continent = world.Provinces.Values.Where(p => p.OriginalCulture == Name).GroupBy(p => p.Continent).OrderByDescending(g => g.Sum(p => p.Development)).FirstOrDefault()?.Key;
            }
            else
            {
                Continent = world.Provinces[capital].Continent;
            }

            MaleNames = new List <string>();
            data.Sublists.ForEach("male_names", (sub) =>
            {
                MaleNames.AddRange(sub.Values);
            });            // ? data.GetSublist("male_names").Values : new List<string>();
            FemaleNames = new List <string>();
            data.Sublists.ForEach("female_names", (sub) =>
            {
                FemaleNames.AddRange(sub.Values);
            });

            DynastyNames = data.Sublists.ContainsKey("dynasty_names") ? data.GetSublist("dynasty_names").Values : new List <string>();
        }
Esempio n. 5
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()));
                    }
                }
            }
        }
Esempio n. 6
0
        public Eu4Country(PdxSublist country, Eu4Save save)
        {
            World      = save;
            CountryTag = country.Key;
            Opinions   = country.GetSublist("opinion_cache").Values.Select(int.Parse).ToList();
            //Console.WriteLine($"Loading {CountryTag}...");
            if (country.KeyValuePairs.ContainsKey("name"))
            {
                DisplayNoun = country.GetString("name").Replace("\"", string.Empty);
            }
            else
            {
                DisplayNoun = save.Localisation[CountryTag];
            }
            if (country.KeyValuePairs.ContainsKey("adjective"))
            {
                DisplayAdj = country.GetString("adjective").Replace("\"", string.Empty);
            }
            else
            {
                DisplayAdj = save.Localisation[$"{CountryTag}_ADJ"];
            }

            Exists = country.Sublists.ContainsKey("owned_provinces");

            if (country.KeyValuePairs.ContainsKey("overlord"))
            {
                Overlord = country.GetString("overlord").Replace("\"", string.Empty);
            }
            Subjects = new List <string>();
            if (country.Sublists.ContainsKey("subjects"))
            {
                country.Sublists["subjects"].Values.ForEach(s =>
                {
                    Subjects.Add(s);
                });
            }
            if (country.KeyValuePairs.ContainsKey("liberty_desire"))
            {
                LibertyDesire = float.Parse(country.GetString("liberty_desire"));
            }
            if (country.KeyValuePairs.ContainsKey("colonial_parent"))
            {
                IsColonialNation = true;
            }
            States = new HashSet <Eu4Area>();
            if (country.Sublists.ContainsKey("state"))
            {
                country.Sublists.ForEach("state", stData =>
                {
                    var area = save.Areas[stData.KeyValuePairs["area"]];
                    States.Add(area);
                    area.Prosperity = stData.GetFloat("prosperity");
                    //area.Owner = this;
                });
            }

            var institutions     = country.GetSublist("institutions");
            var listInstitutions = institutions.FloatValues[string.Empty].Select(ins => ins == 1).ToList();

            Institutions = new Dictionary <string, bool>();
            for (var i = 0; i < listInstitutions.Count; i++)
            {
                Institutions.Add(INSTITUTION_NAMES[i], listInstitutions[i]);
            }
            Capital = (int)country.GetFloat("capital");
            var colours   = country.GetSublist("colors");
            var mapColour = colours.GetSublist("map_color");

            MapColour = new Colour(mapColour.FloatValues[string.Empty]);

            PrimaryCulture = country.GetString("primary_culture");

            AcceptedCultures = new List <string>();

            country.KeyValuePairs.ForEach("accepted_culture", (value) =>
            {
                AcceptedCultures.Add(value);
            });
            if (country.KeyValuePairs.ContainsKey("religion"))
            {
                Religion = country.GetString("religion");
            }
            else
            {
                Religion = (country.Sublists["history"].Sublists.Where(s => s.Value.KeyValuePairs.ContainsKey("religion")).OrderByDescending(s => PdxSublist.ParseDate(s.Key).Ticks).FirstOrDefault().Value ?? country.Sublists["history"]).GetString("religion");
            }


            GovernmentRank = (byte)country.GetFloat("government_rank");

            var tech = country.GetSublist("technology");

            AdmTech = (byte)tech.GetFloat("adm_tech");
            DipTech = (byte)tech.GetFloat("dip_tech");
            MilTech = (byte)tech.GetFloat("adm_tech");

            Estates = new List <Estate>();
            country.Sublists.ForEach("estate", (est) =>
            {
                Estates.Add(new Estate(est));
            });


            PowerProjection = LoadFloat(country, "current_power_projection");

            LastElection = country.GetDate("last_election");

            Prestige = LoadFloat(country, "prestige");

            Stability = (sbyte)country.GetFloat("stability");
            Inflation = LoadFloat(country, "inflation");


            country.GetAllMatchingSublists("loan", (loan) =>
            {
                Debt += (int)loan.GetFloat("amount");
            });

            Absolutism          = LoadFloat(country, "absolutism");
            Legitimacy          = LoadFloat(country, "legitimacy", 50);
            RepublicanTradition = LoadFloat(country, "republican_tradition", 50);
            Corruption          = LoadFloat(country, "corruption");
            Mercantilism        = LoadFloat(country, "mercantilism");

            Ideas = new Dictionary <string, byte>();
            var ideas = country.GetSublist("active_idea_groups");

            foreach (var idp in ideas.FloatValues)
            {
                Ideas.Add(idp.Key, (byte)idp.Value.Single());
            }

            Flags    = country.Sublists.ContainsKey("flags") ? country.GetSublist("flags").KeyValuePairs.Keys.ToList() : new List <string>();
            Policies = new List <string>();
            country.Sublists.ForEach("active_policy", (pol) =>
            {
                Policies.Add(pol.GetString("policy"));
            });

            Government = country.GetSublist("government").GetString("government");
            if (country.Key == "GBR")
            {
                //	Console.WriteLine(Institutions);
            }
        }
Esempio n. 7
0
        public Eu4Province(PdxSublist province, Eu4Save save)
        {
            ProvinceID = -int.Parse(province.Key);
            if (province.KeyValuePairs.ContainsKey("owner"))
            {
                Owner = save.Countries[province.GetString("owner")];
            }
            var institutions = province.GetSublist("institutions");

            Institutions = institutions.Values.Select(ins => float.Parse(ins)).ToList();
            try
            {
                Area = save.Areas.Values.Single(a => a.Provinces.Contains(ProvinceID));
            }
            catch (Exception ex)
            {
                Console.WriteLine($"WARNING: {ProvinceID} exists in multiple areas!");
                var areas = save.Areas.Values.Where(a => a.Provinces.Contains(ProvinceID));
                foreach (var area in areas)
                {
                    Console.WriteLine($"{ProvinceID} exists in {area.Name}");
                }
                Area = areas.Last();
            }
            IsState = Owner?.States.Contains(Area) ?? false;

            Continent = save.Continents.Values.Single(c => c.Provinces.Contains(ProvinceID));

            Cores = new List <Eu4CountryBase>();

            province.KeyValuePairs.ForEach("core", (value) =>
            {
                Cores.Add(save.Countries[value]);
            });

            Culture = province.GetString("culture");
            if (province.KeyValuePairs.ContainsKey("religion"))
            {
                Religion = province.GetString("religion");
            }
            else
            {
                // this probably happened because you messed up the conversion from ck2
                Religion = "no_religion";
            }

            var history = province.GetSublist("history");

            CulturalHistory = AddHistory(history, "culture");
            if (CulturalHistory.Count == 0)
            {
                OriginalCulture = Culture;
            }
            else
            {
                OriginalCulture = CulturalHistory.OrderBy(entry => entry.Key.Ticks).First().Value;
            }
            ReligiousHistory = AddHistory(history, "religion");

            //Culture = CulturalHistory.Last().Value;
            //Religion = ReligiousHistory.Last().Value;

            if (province.KeyValuePairs.ContainsKey("fort_level"))
            {
                FortLevel = (int)province.GetFloat("fort_level");
            }

            BaseTax        = (int)province.GetFloat("base_tax");
            BaseProduction = (int)province.GetFloat("base_production");
            BaseManpower   = (int)province.GetFloat("base_manpower");

            if (province.KeyValuePairs.ContainsKey("estate"))
            {
                Estate = Eu4Helper.Estate.EstateTypes[(int)province.GetFloat("estate")];
            }

            if (province.Sublists.ContainsKey("flags"))
            {
                Flags = province.GetSublist("flags").KeyValuePairs.Keys.ToList();
            }

            Buildings = new List <string>();
            if (province.Sublists.ContainsKey("buildings"))
            {
                foreach (var build in save.Buildings)
                {
                    if (province.Sublists["buildings"].BoolValues.ContainsKey(build) && province.Sublists["buildings"].GetBool(build))
                    {
                        Buildings.Add(build);
                    }
                }
            }

            if (ProvinceID == 233)
            {
                //Console.WriteLine("Cornwall!");
            }
        }
Esempio n. 8
0
        public CK2Title(string name, CK2World world, PdxSublist data) : this(name, world)
        {
            Laws = new HashSet <string>();
            data.KeyValuePairs.ForEach("law", (law) =>
            {
                Laws.Add(law);
            });

            if (data.FloatValues.ContainsKey("capital"))
            {
                Capital = (int)(data.FloatValues["capital"].Single());
            }

            if (data.Sublists.ContainsKey("color"))
            {
                var colour = data.GetSublist("color");
                Colour = new Colour(colour.FloatValues[string.Empty]);
            }

            if (data.KeyValuePairs.ContainsKey("name"))
            {
                DisplayName = data.KeyValuePairs["name"];
            }
            else if (world.Localisation.ContainsKey(Name))
            {
                DisplayName = world.Localisation[Name];
            }
            if (data.KeyValuePairs.ContainsKey("adjective"))
            {
                var adj = data.KeyValuePairs["adjective"];
                DisplayAdj = world.Localisation.ContainsKey(adj) ? world.Localisation[adj] : adj;
            }
            else if (world.Localisation.ContainsKey(Name + "_adj"))
            {
                DisplayAdj = world.Localisation[Name + "_adj"];
            }
            Succession       = data.KeyValuePairs["succession"];
            GenderSuccession = data.KeyValuePairs["gender"];
            if (data.FloatValues.ContainsKey("holder"))
            {
                Holder = world.CK2Characters[(int)data.FloatValues["holder"].Single()];
                Holder.Titles.Add(this);
            }
            if (data.KeyValuePairs.ContainsKey("liege"))
            {
                LiegeTitleID = data.KeyValuePairs["liege"];
            }
            else if (data.Sublists.ContainsKey("liege"))
            {
                LiegeTitleID = data.Sublists["liege"].KeyValuePairs["title"];
            }
            else
            {
                world.AddIndependentTitle(this);
            }
            if (data.KeyValuePairs.ContainsKey("de_jure_liege"))
            {
                DejureLiegeTitleID = data.KeyValuePairs["de_jure_liege"];
            }
            if (data.BoolValues.ContainsKey("major_revolt"))
            {
                IsRevolt = data.BoolValues["major_revolt"].Single();
            }
        }
Esempio n. 9
0
 public Eu4Religion(PdxSublist data, Eu4ReligionGroup group, Eu4WorldBase world) : this(data.Key, group, world)
 {
     Colour      = new Colour(data.GetSublist("color").FloatValues[string.Empty]);
     Icon        = (int)data.GetFloat("icon");
     DisplayName = world.Localisation[data.Key];
 }