예제 #1
0
        private Vector2 DrawGroupedNodes(IEnumerable <ExpertiseNode> expertiseList, float max, ref Vector2 pos)
        {
            Vector2 maxView   = pos;
            var     techsList = expertiseList.Select(x => x.Tech);
            var     skillSet  = TechTracker.FindSkills(x => x.Techs.Any(y => techsList.Contains(y))).OrderByDescending(x => PawnToShowInfoAbout.skills.GetSkill(x).Level);

            foreach (var skill in skillSet)
            {
                var filtered = expertiseList.Where(x => skill.Techs.Contains(x.Tech)).ToList();
                if (filtered.NullOrEmpty())
                {
                    continue;
                }
                var  skillRatio = (float)PawnToShowInfoAbout.skills.GetSkill(skill).Level / SkillRecord.MaxLevel;
                Rect groupTitle = DrawGroupTitle(pos, skill, skillRatio, filtered);
                pos.y += groupTitle.height + margin;
                DrawResearchNodes(filtered, max, ref pos, true);
                if (!fullTechs)
                {
                    pos.y += margin;
                }
                if (maxView.y < pos.y)
                {
                    maxView.y = pos.y;
                }
                if (fullTechs)
                {
                    breakColumn(ref pos);
                }
                if (pos.x > maxView.x)
                {
                    maxView.x = fullTechs ? pos.x : pos.x + columnWidth;
                }
            }
            return(maxView);
        }
예제 #2
0
 private static bool SkillIsRelevant(SkillDef skill, TechLevel level)
 {
     return(TechTracker.FindSkills(x => x.Skill == skill && x.Techs.Any(y => y.techLevel == level)).Any());
 }