protected static string GenerateResultEffectsString_DecreasePreference(Faction faction, string preferenceId)
    {
        CulturalPreference preference = faction.Culture.GetPreference(preferenceId);

        return(faction.GetNameAndTypeStringBold().FirstLetterToUpper() + ": " + preference.Name.ToLower() + " preference decreases to: " +
               preference.Value.ToString("0.00"));
    }
    protected static string GenerateResultEffectsString_DecreasePreference(Polity polity, string preferenceId)
    {
        Faction dominantFaction = polity.DominantFaction;

        CulturalPreference preference = dominantFaction.Culture.GetPreference(preferenceId);

        return(polity.GetNameAndTypeStringBold().FirstLetterToUpper() + ": " + dominantFaction.GetNameAndTypeStringBold().AddPossApos() + " preference decreases to: " +
               preference.Value.ToString("0.00"));
    }
Пример #3
0
    protected void RemovePreference(CulturalPreference preference)
    {
        if (!_preferences.ContainsKey(preference.Id))
        {
            return;
        }

        _preferences.Remove(preference.Id);
    }
Пример #4
0
    public void RemovePreference(string preferenceId)
    {
        CulturalPreference preference = GetPreference(preferenceId);

        if (preference == null)
        {
            return;
        }

        RemovePreference(preference);
    }
Пример #5
0
    protected void AddPreference(CulturalPreference preference)
    {
        if (_preferences.ContainsKey(preference.Id))
        {
            return;
        }

        World.AddExistingCulturalPreferenceInfo(preference);

        _preferences.Add(preference.Id, preference);
    }
    public float GetPreferenceValue(string id)
    {
        CulturalPreference preference = Culture.GetPreference(id);

        if (preference != null)
        {
            return(preference.Value);
        }

        return(0);
    }
    public void DecreasePreferenceValue(string id, float percentage)
    {
        CulturalPreference preference = Culture.GetPreference(id);

        if (preference == null)
        {
            throw new System.Exception("preference is null: " + id);
        }

        float value = preference.Value;

        preference.Value = MathUtility.DecreaseByPercent(value, percentage);
    }
    public void AddPolityProminenceEffect(CulturalPreference polityPreference, PolityProminence polityProminence, long timeSpan)
    {
        float targetValue      = polityPreference.Value;
        float prominenceEffect = polityProminence.Value;

        TerrainCell groupCell = Group.Cell;

        float randomEffect = groupCell.GetNextLocalRandomFloat(RngOffsets.PREFERENCE_POLITY_PROMINENCE + RngOffset + unchecked ((int)polityProminence.PolityId));

        float timeEffect = timeSpan / (float)(timeSpan + TimeEffectConstant);

        // _newvalue should have been set correctly either by the constructor or by the Update function
        float change = (targetValue - _newValue) * prominenceEffect * timeEffect * randomEffect;

        _newValue = _newValue + change;
    }
    protected static string GenerateEffectsString_DecreasePreference(Faction faction, string preferenceId, float minPercentChange, float maxPercentChange)
    {
        float charismaFactor = faction.CurrentLeader.Charisma / 10f;
        float wisdomFactor   = faction.CurrentLeader.Wisdom / 15f;

        float attributesFactor = Mathf.Max(charismaFactor, wisdomFactor);

        attributesFactor = Mathf.Clamp(attributesFactor, 0.5f, 2f);

        float modMinPercentChange = minPercentChange / attributesFactor;
        float modMaxPercentChange = maxPercentChange / attributesFactor;

        CulturalPreference preference = faction.Culture.GetPreference(preferenceId);
        float originalValue           = preference.Value;

        float minValChange = MathUtility.DecreaseByPercent(originalValue, modMinPercentChange);
        float maxValChange = MathUtility.DecreaseByPercent(originalValue, modMaxPercentChange);

        return(faction.GetNameAndTypeStringBold().FirstLetterToUpper() + ": " + preference.Name.ToLower() + " preference (" + originalValue.ToString("0.00") + ") decreases to: " +
               minValChange.ToString("0.00") + " - " + maxValChange.ToString("0.00"));
    }
Пример #10
0
 public CulturalPreference(CulturalPreference basePreference) : base(basePreference)
 {
     Value = basePreference.Value;
 }
Пример #11
0
    private void AddFactionCulture(Faction faction)
    {
        float influence = faction.Influence;

        //Profiler.BeginSample("foreach CulturalPreference");

        foreach (CulturalPreference p in faction.Culture.GetPreferences())
        {
            //Profiler.BeginSample("GetPreference");

            CulturalPreference preference = GetPreference(p.Id);

            //Profiler.EndSample();

            if (preference == null)
            {
                //Profiler.BeginSample("AddPreference");

                preference        = new CulturalPreference(p);
                preference.Value *= influence;

                AddPreference(preference);

                //Profiler.EndSample();
            }
            else
            {
                //Profiler.BeginSample("update preference value");

                preference.Value += p.Value * influence;

                //Profiler.EndSample();
            }
        }

        //Profiler.EndSample();

        //Profiler.BeginSample("foreach CulturalActivity");

        foreach (CulturalActivity a in faction.Culture.GetActivities())
        {
            //Profiler.BeginSample("GetActivity");

            CulturalActivity activity = GetActivity(a.Id);

            //Profiler.EndSample();

            if (activity == null)
            {
                //Profiler.BeginSample("AddActivity");

                activity               = new CulturalActivity(a);
                activity.Value        *= influence;
                activity.Contribution *= influence;

                AddActivity(activity);

                //Profiler.EndSample();
            }
            else
            {
                //Profiler.BeginSample("update activity value");

                activity.Value        += a.Value * influence;
                activity.Contribution += a.Contribution * influence;

                //Profiler.EndSample();
            }
        }

        //Profiler.EndSample();

        //Profiler.BeginSample("foreach CulturalSkill");

        foreach (CulturalSkill s in faction.Culture.GetSkills())
        {
            //Profiler.BeginSample("GetSkill");

            CulturalSkill skill = GetSkill(s.Id);

            //Profiler.EndSample();

            if (skill == null)
            {
                //Profiler.BeginSample("AddSkill");

                skill        = new CulturalSkill(s);
                skill.Value *= influence;

                AddSkill(skill);

                //Profiler.EndSample();
            }
            else
            {
                //Profiler.BeginSample("update skill value");

                skill.Value += s.Value * influence;

                //Profiler.EndSample();
            }
        }

        //Profiler.EndSample();

        //Profiler.BeginSample("foreach CulturalKnowledge");

        foreach (CulturalKnowledge k in faction.Culture.GetKnowledges())
        {
            //Profiler.BeginSample("GetKnowledge");

            PolityCulturalKnowledge knowledge = GetKnowledge(k.Id) as PolityCulturalKnowledge;

            //Profiler.EndSample();

            if (knowledge == null)
            {
                //Profiler.BeginSample("AddKnowledge");

                knowledge           = new PolityCulturalKnowledge(k);
                knowledge.AccValue += k.Value * influence;

                AddKnowledge(knowledge);

                //Profiler.EndSample();
            }
            else
            {
                //Profiler.BeginSample("update knowledge value");

                knowledge.AccValue += k.Value * influence;

                //Profiler.EndSample();
            }
        }

        //Profiler.EndSample();

        //Profiler.BeginSample("foreach CulturalDiscovery");

        foreach (Discovery d in faction.Culture.Discoveries.Values)
        {
            AddDiscovery(d);
        }

        //Profiler.EndSample();
    }
 public void Merge(CulturalPreference preference, float percentage)
 {
     // _newvalue should have been set correctly either by the constructor or by the Update function
     _newValue = _newValue * (1f - percentage) + preference.Value * percentage;
 }
 public static CellCulturalPreference CreateCellInstance(CellGroup group, CulturalPreference basePreference, float initialValue)
 {
     return(new CellCulturalPreference(group, basePreference.Id, basePreference.Name, basePreference.RngOffset, initialValue));
 }
 public static CellCulturalPreference CreateCellInstance(CellGroup group, CulturalPreference basePreference)
 {
     return(CreateCellInstance(group, basePreference, basePreference.Value));
 }
    private void UpdatePreferences(CellCulture coreCulture, float timeFactor)
    {
        //Profiler.BeginSample("Culture - Update Preferences");

        foreach (CulturalPreference p in coreCulture.GetPreferences())
        {
            //Profiler.BeginSample("GetPreference");

            CulturalPreference preference = GetPreference(p.Id);

            //Profiler.EndSample();

            //#if DEBUG
            //            float prevValue = 0;
            //#endif

            if (preference == null)
            {
                //Profiler.BeginSample("new CulturalPreference");

                preference = new CulturalPreference(p);
                AddPreference(preference);

                preference.Value = p.Value * timeFactor;

                //Profiler.EndSample();
            }
            else
            {
                //Profiler.BeginSample("update preference.Value");

                //#if DEBUG
                //                prevValue = preference.Value;
                //#endif

                preference.Value = (preference.Value * (1f - timeFactor)) + (p.Value * timeFactor);

                //Profiler.EndSample();
            }

            //#if DEBUG
            //            if ((Manager.RegisterDebugEvent != null) && (Manager.TracingData.Priority <= 0))
            //            {
            //                if (Manager.TracingData.FactionId == Faction.Id)
            //                {
            //                    SaveLoadTest.DebugMessage debugMessage = new SaveLoadTest.DebugMessage(
            //                        "FactionCulture:Update - coreCulture.Preferences - Faction.Id:" + Faction.Id,
            //                        "CurrentDate: " + World.CurrentDate +
            //                        ", coreCulture.Group.Id: " + coreCulture.Group.Id +
            //                        ", preference.Id: " + preference.Id +
            //                        ", prevValue: " + prevValue +
            //                        ", p.Value: " + p.Value +
            //                        ", preference.Value: " + preference.Value +
            //                        "");

            //                    Manager.RegisterDebugEvent("DebugMessage", debugMessage);
            //                }
            //            }
            //#endif
        }

        foreach (CulturalPreference p in _preferences.Values)
        {
            //Profiler.BeginSample("coreCulture.Preferences.ContainsKey");

            if (coreCulture.GetPreference(p.Id) != null)
            {
                p.Value = p.Value * (1f - timeFactor);
            }

            //Profiler.EndSample();
        }

        //Profiler.EndSample();
    }