Exemple #1
0
        public static Deck Parse(CardsManager manager, string filename)
        {
            Deck deck = new Deck();

            XmlReader xmlReader = XmlReader.Create(filename);

            while (xmlReader.Read())
            {
                if ((xmlReader.NodeType == XmlNodeType.Element) && (xmlReader.Name == "card"))
                {
                    if (xmlReader.HasAttributes)
                    {
                        int    amount = int.Parse(xmlReader.GetAttribute("number"));
                        string name   = xmlReader.GetAttribute("name");

                        ImageAble image_able = manager.GetNewest(name);
                        if (image_able == null)
                        {
                            Console.WriteLine("[W] WARNING: Cannot find card \"" + name + "\"");
                            continue;
                        }

                        if (amount < 1)
                        {
                            Console.WriteLine("[W] WARNING: Amount = 0, card \"" + name + "\"");
                            continue;
                        }

                        deck.Add(image_able, amount);
                    }
                }
            }

            return(deck);
        }
Exemple #2
0
        private static string GetCardImage(ImageAble card)
        {
            if (card == null)
            {
                return(null);
            }

            if (File.Exists(cache_image_dir + card.GetImageFileName()))
            {
                return(cache_image_dir + card.GetImageFileName());
            }

            List <ImageAble> banned = new List <ImageAble>();

            while (true)
            {
                foreach (string url in card.GetImageUrls())
                {
                    if (File.Exists(cache_image_dir + card.GetImageFileName()))
                    {
                        return(cache_image_dir + card.GetImageFileName());
                    }
                }

                banned.Add(card);
                card = manager.ReNew(card, banned);

                if (card == null)
                {
                    break;
                }
            }

            return(null);
        }
Exemple #3
0
        public ImageAble GetNewest(string name)
        {
            ImageAble newest = GetNewestCard(name);

            if (newest == null)
            {
                return(GetNewestToken(name));
            }
            return(newest);
        }
Exemple #4
0
        private static void ProcessCard(ImageAble card, int amount)
        {
            if (card == null)
            {
                return;
            }

            if (File.Exists(cache_image_dir + card.GetImageFileName()))
            {
                imaged_cards.Add(card, amount);
                card.SetCachedImage(cache_image_dir + card.GetImageFileName());
                return;
            }

            List <ImageAble> banned     = new List <ImageAble>();
            bool             downloaded = false;

            while (!downloaded)
            {
                foreach (string url in card.GetImageUrls())
                {
                    try
                    {
                        Thread.Sleep(100);
                        Download(url, cache_image_dir + card.GetImageFileName());
                        imaged_cards.Add(card, amount);
                        card.SetCachedImage(cache_image_dir + card.GetImageFileName());
                        downloaded = true;
                        break;
                    }
                    catch (Exception)
                    {
                        continue;
                    }
                }

                if (!downloaded)
                {
                    banned.Add(card);
                    card = manager.ReNew(card, banned);
                }

                if (card == null)
                {
                    Console.WriteLine("[E] Error: Failed to download card \"" + card.GetName() + "\"");
                    break;
                }
            }
        }
Exemple #5
0
        public void Add(ImageAble image_able, int amount)
        {
            if (image_able == null)
            {
                return;
            }

            if (cards.ContainsKey(image_able))
            {
                cards[image_able] += amount;
            }
            else
            {
                cards.Add(image_able, amount);
            }
        }
Exemple #6
0
        public ImageAble ReNew(ImageAble current, List <ImageAble> banned)
        {
            if (current as Card != null)
            {
                List <Card> banned_cards = new List <Card>();

                if (banned != null)
                {
                    banned_cards = banned.ConvertAll(x => (Card)x);
                }

                if (!banned_cards.Contains(current))
                {
                    banned_cards.Add(current as Card);
                }

                return(GetNewestCard(current.GetName(), banned_cards));
            }

            if (current as Token != null)
            {
                List <Token> banned_cards = new List <Token>();

                if (banned != null)
                {
                    banned_cards = banned.ConvertAll(x => (Token)x);
                }

                if (!banned_cards.Contains(current))
                {
                    banned_cards.Add(current as Token);
                }

                return(GetNewestToken(current.GetName(), banned_cards));
            }

            return(null);
        }