public ParseResult Parse(IReadOnlyList <Skill> skills)
        {
            var activeSkills  = new List <Skill>();
            var supportSkills = new List <Skill>(skills.Count);

            foreach (var skill in skills)
            {
                if (_skillDefinitions.GetSkillById(skill.Id).IsSupport)
                {
                    supportSkills.Add(skill);
                }
                else
                {
                    activeSkills.Add(skill);
                }
            }

            var parseResults = new List <ParseResult>(activeSkills.Count * supportSkills.Count);

            foreach (var activeSkill in activeSkills)
            {
                parseResults.Add(_activeSkillParser.Parse(activeSkill));
                var supportingSkills = _supportabilityTester.SelectSupportingSkills(activeSkill, supportSkills);
                foreach (var supportingSkill in supportingSkills)
                {
                    parseResults.Add(_supportSkillParser.Parse(activeSkill, supportingSkill));
                }
            }

            return(ParseResult.Aggregate(parseResults));
        }
 private IEnumerable <ParseResult> ParseAdditionalSkillStats(IReadOnlyList <Skill> skills, Entity entity)
 {
     var(supportSkills, activeSkills) = skills.Partition(s => _skillDefinitions.GetSkillById(s.Id).IsSupport);
     supportSkills = supportSkills.ToList();
     foreach (var activeSkill in activeSkills)
     {
         var supportingSkills = _supportabilityTester.SelectSupportingSkills(activeSkill, supportSkills).ToList();
         yield return(_additionalSkillStatParser.Parse(activeSkill, supportingSkills, entity));
     }
 }
Exemplo n.º 3
0
        private IEnumerable <ParseResult> Parse(IEnumerable <Skill> activeSkills, IReadOnlyList <Skill> supportSkills, Entity entity)
        {
            foreach (var activeSkill in activeSkills)
            {
                var supportingSkills = _supportabilityTester.SelectSupportingSkills(activeSkill, supportSkills);
                yield return(_activeSkillParser.Parse(activeSkill, entity));

                foreach (var supportingSkill in supportingSkills)
                {
                    yield return(_supportSkillParser.Parse(activeSkill, supportingSkill, entity));
                }
            }
        }