private static void RenderPrerequisite(FeatPrerequisite prerequisite, TextWriter writer, Func<FeatPrerequisite, MvcHtmlString> featPrerequisiteDecoration)
        {
            var prereq = prerequisite;
            var inner = prereq.Description;
            if (prereq.Type == FeatPrerequisiteType.Feat)
            {
                inner = featPrerequisiteDecoration(prereq).ToString();
            }

            writer.Write("<span>");
            writer.Write(inner);
            writer.Write("</span>");
        }
        public static bool MatchAll(ClassLevel[] levels, FeatPrerequisite p)
        {
            if (p.Type != FeatPrerequisiteType.ClassLevel)
            {
                return true;
            }

            // Calcul de la somme des niveaux de la classe
            var classLevels = levels.Where(l => l.Id == p.Value).Sum(l => (int?)l.Level) ?? 0;

            // C'est ok si la somme des niveaux est supérieure au niveau nécessaire par le prerequis
            return p.Number <= classLevels;
        }
            private bool ValidatePrereq(FeatPrerequisite prereq)
            {
                foreach (var predicate in this.prereqPredicates)
                {
                    if (!predicate(prereq))
                    {
                        return false;
                    }
                }

                return true;
            }
 public bool Match(FeatPrerequisite p)
 {
     return (!this.Min.HasValue || p.Number > this.Min.Value) && (!this.Max.HasValue || p.Number <= this.Max.Value);
 }