Exemplo n.º 1
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); });
                }
            }
        }
Exemplo n.º 2
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()));
                    }
                }
            }
        }