コード例 #1
0
    protected void RemoveActivity(CulturalActivity activity)
    {
        if (!_activities.ContainsKey(activity.Id))
        {
            return;
        }

        _activities.Remove(activity.Id);
    }
コード例 #2
0
    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));
 }
コード例 #9
0
 public CulturalActivity(CulturalActivity baseActivity) : base(baseActivity)
 {
     Value        = baseActivity.Value;
     Contribution = baseActivity.Contribution;
 }
コード例 #10
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();
    }