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