示例#1
0
        public IResponse GetResponse()
        {
            List <FRule> acceptedRules = new List <FRule>(_rules.Count);

            int maxCriteriaNumber = 0;

            for (int i = 0; i < _rules.Count; i++)
            {
                FRule rule = _rules[i];

                if (rule.Evaluate())
                {
                    if (rule.Criterias.Count >= maxCriteriaNumber)
                    {
                        if (rule.Criterias.Count > maxCriteriaNumber)
                        {
                            acceptedRules.Clear();

                            maxCriteriaNumber = rule.Criterias.Count;
                        }

                        acceptedRules.Add(rule);
                    }
                }
            }

            if (acceptedRules.Count == 0)
            {
                return(null);
            }

            return(acceptedRules[Random.Range(0, acceptedRules.Count)].Response);
        }
示例#2
0
 public void AddRule(FRule rule) => _rules.Add(rule);