protected void RemoveActivity(CulturalActivity activity) { if (!_activities.ContainsKey(activity.Id)) { return; } _activities.Remove(activity.Id); }
protected void AddActivity(CulturalActivity activity) { if (_activities.ContainsKey(activity.Id)) { return; } World.AddExistingCulturalActivityInfo(activity); _activities.Add(activity.Id, activity); }
public void AddActivityToStop(string activityId) { CulturalActivity activity = null; if (!_activities.TryGetValue(activityId, out activity)) { Debug.LogWarning("CellCulture: Trying to remove activity that is not present: " + activityId); return; } _activitiesToStop.Add(activity as CellCulturalActivity); }
public void AddPolityProminenceEffect(CulturalActivity polityActivity, PolityProminence polityProminence, long timeSpan) { float targetValue = polityActivity.Value; float prominenceEffect = polityProminence.Value; TerrainCell groupCell = Group.Cell; float randomEffect = groupCell.GetNextLocalRandomFloat(RngOffsets.ACTIVITY_POLITY_PROMINENCE + RngOffset + unchecked ((int)polityProminence.PolityId)); float timeEffect = timeSpan / (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; }
private void UpdateActivities(CellCulture coreCulture, float timeFactor) { //Profiler.BeginSample("Culture - Update Activities"); foreach (CulturalActivity a in coreCulture.GetActivities()) { //Profiler.BeginSample("GetActivity"); CulturalActivity activity = GetActivity(a.Id); //Profiler.EndSample(); if (activity == null) { //Profiler.BeginSample("new CulturalActivity"); activity = new CulturalActivity(a); AddActivity(activity); activity.Value = a.Value * timeFactor; //Profiler.EndSample(); } else { //Profiler.BeginSample("update activity.Value"); activity.Value = (activity.Value * (1f - timeFactor)) + (a.Value * timeFactor); //Profiler.EndSample(); } } foreach (CulturalActivity a in _activities.Values) { //Profiler.BeginSample("coreCulture.Activities.ContainsKey"); if (coreCulture.GetActivity(a.Id) == null) { a.Value = a.Value * (1f - timeFactor); } //Profiler.EndSample(); } //Profiler.EndSample(); }
public void Merge(CulturalActivity activity, float percentage) { // _newvalue should have been set correctly either by the constructor or by the Update function _newValue = _newValue * (1f - percentage) + activity.Value * percentage; }
public static CellCulturalActivity CreateCellInstance(CellGroup group, CulturalActivity baseActivity, float initialValue, float initialContribution = 0) { return(new CellCulturalActivity(group, baseActivity.Id, baseActivity.Name, baseActivity.RngOffset, initialValue, initialContribution)); }
public static CellCulturalActivity CreateCellInstance(CellGroup group, CulturalActivity baseActivity) { return(CreateCellInstance(group, baseActivity, baseActivity.Value)); }
public CulturalActivity(CulturalActivity baseActivity) : base(baseActivity) { Value = baseActivity.Value; Contribution = baseActivity.Contribution; }
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(); }