/// <summary>
        /// Evaluating a Stat by wiring it through all skillsets on this StatMachine.
        /// </summary>
        /// <param name="stat">The stat to be evaluating.</param>
        /// <returns>The value this Stat resolves to after applying all effects.</returns>
        public object EvaluateStat(Stat stat, List <SkillsetStackEntry> Stack)
        {
            RefreshSkillsetStack(false);
            object value = stat.GetValueAsObject();

            foreach (SkillsetStackEntry entry in Stack)
            {
                FunctionSolver.VariableAssignments variableAssignments = new FunctionSolver.VariableAssignments()
                                                                         .AddVariable("t", (entry.IgnoreTimeScale ? Time.realtimeSinceStartup : Time.time) - entry.EntryTime);
                float Strength;
                if (entry.StrengthFunction == null)
                {
                    Strength = entry.Strength;
                }
                else
                {
                    Strength = entry.StrengthFunction.Solve(variableAssignments);
                }
                value = entry.Skillset.ProcessStat(stat, value, Strength, this);
            }
            return(value);
        }
Пример #2
0
 public FactFunction ReplaceAssignements(FunctionSolver.VariableAssignments newAssignements)
 {
     assignements = newAssignements;
     return(this);
 }