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")); }
protected void RemovePreference(CulturalPreference preference) { if (!_preferences.ContainsKey(preference.Id)) { return; } _preferences.Remove(preference.Id); }
public void RemovePreference(string preferenceId) { CulturalPreference preference = GetPreference(preferenceId); if (preference == null) { return; } RemovePreference(preference); }
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")); }
public CulturalPreference(CulturalPreference basePreference) : base(basePreference) { Value = basePreference.Value; }
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(); }