コード例 #1
0
        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);
        }
コード例 #2
0
        internal static CardCollection Load(XmlNode xnCards)
        {
            CardCollection cc = new CardCollection();

            foreach (XmlNode xnCard in xnCards.SelectNodes("card"))
            {
                cc.Add(Card.Load(xnCard));
            }

            return(cc);
        }