public void ApplyStats(object to)
        {
            if (to is StorytellerDef t)
            {
                t.listOrder                   = this.listOrder;
                t.listVisible                 = this.listVisible;
                t.tutorialMode                = this.tutorialMode;
                t.disableAdaptiveTraining     = this.disableAdaptiveTraining;
                t.disableAlerts               = this.disableAlerts;
                t.disablePermadeath           = this.disablePermadeath;
                t.adaptDaysMin                = this.adaptDaysMin;
                t.adaptDaysMax                = this.adaptDaysMax;
                t.adaptDaysGameStartGraceDays = this.adaptDaysGameStartGraceDays;

                this.populationIntentFactorFromPopCurve?.ApplyStats(t.populationIntentFactorFromPopCurve);
                this.populationIntentFactorFromPopAdaptDaysCurve?.ApplyStats(t.populationIntentFactorFromPopAdaptDaysCurve);
                this.pointsFactorFromDaysPassed?.ApplyStats(t.pointsFactorFromDaysPassed);
                this.pointsFactorFromAdaptDays?.ApplyStats(t.pointsFactorFromAdaptDays);
                this.adaptDaysLossFromColonistLostByPostPopulation?.ApplyStats(t.adaptDaysLossFromColonistLostByPostPopulation);
                this.adaptDaysLossFromColonistViolentlyDownedByPopulation?.ApplyStats(t.adaptDaysLossFromColonistViolentlyDownedByPopulation);
                this.adaptDaysGrowthRateCurve?.ApplyStats(t.adaptDaysGrowthRateCurve);

                t.forcedDifficulty = Util.AssignDef(this.forcedDifficulty);

                if (this.comps != null && this.comps.Count > 0)
                {
                    if (t.comps == null)
                    {
                        t.comps = new List <StorytellerCompProperties>();
                    }
                    Dictionary <int, StorytellerCompProperties> lookup = new Dictionary <int, StorytellerCompProperties>();
                    t.comps.ForEach(v => lookup[StorytellerCompPropertiesStats.GetHashCode(v)] = v);
                    t.comps.Clear();

                    foreach (var v in this.comps)
                    {
                        //Log.Warning("Find: " + StorytellerCompPropertiesStats.GetLabel(v));
                        if (lookup.TryGetValue(StorytellerCompPropertiesStats.GetHashCode(v), out StorytellerCompProperties p))
                        {
                            v.ApplyStats(p);
                            t.comps.Add(p);
                        }
                        else
                        {
                            //Log.Warning("Create new " + StorytellerCompPropertiesStats.GetLabel(v));
                            var newProp = v.ToStorytellerCompProperties();
                            if (newProp != null)
                            {
                                t.comps.Add(newProp);
                            }
                        }
                    }
                }
            }
        }
Exemplo n.º 2
0
        private AcceptanceReport IsUnique(StorytellerCompProperties toCheck)
        {
            var checkHashCode = StorytellerCompPropertiesStats.GetHashCode(toCheck);

            foreach (var c in base.Def.comps)
            {
                if (checkHashCode == StorytellerCompPropertiesStats.GetHashCode(c))
                {
                    return("Component already exists [" + StorytellerCompPropertiesStats.GetLabel(toCheck) + "]");
                }
            }
            return(true);
        }