public static CardCollection GetAllCards(Func <Card, Boolean> predicate) { CardCollection _Cards = new CardCollection(); IEnumerable <Type> _CardSets = Assembly.GetExecutingAssembly().GetTypes().Where(x => x.Namespace.StartsWith("DominionBase.Cards") && x.Name == "TypeClass"); foreach (Type cardSet in _CardSets) { foreach (FieldInfo fi in cardSet.GetFields()) { // These aren't the ones we're looking for if (!fi.IsPublic || !fi.IsStatic) { continue; } Type t = (Type)fi.GetValue(null); if (t.IsSubclassOf(typeof(Card))) { Card c = Card.CreateInstance(t); if (predicate(c)) { _Cards.Add(c); } } } } return(_Cards); }
internal static CardCollection Load(XmlNode xnCards) { CardCollection cc = new CardCollection(); foreach (XmlNode xnCard in xnCards.SelectNodes("card")) { cc.Add(Card.Load(xnCard)); } return(cc); }