Пример #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);
        }
Пример #2
0
        public static Set Parse(string name, JObject data, CardsManager manager)
        {
            Set set = new Set();

            set.name = name;
            if (data.ContainsKey("releaseDate"))
            {
                set.releaseDate = DateTime.ParseExact(data["releaseDate"].ToString(), "yyyy-MM-dd", CultureInfo.InvariantCulture);
            }
            else
            {
                set.releaseDate = DateTime.ParseExact("1970-01-01", "yyyy-MM-dd", CultureInfo.InvariantCulture);
            }

            if (data.ContainsKey("cards"))
            {
                int i = 0;
                foreach (var raw_card in data["cards"])
                {
                    Card card = Card.Parse(raw_card.ToObject <JObject>(), set);
                    ++i;
                    manager.Add(card);
                }
            }

            if (data.ContainsKey("tokens"))
            {
                int i = 0;
                foreach (var raw_token in data["tokens"])
                {
                    Token token = Token.Parse(raw_token.ToObject <JObject>(), set);
                    ++i;
                    manager.Add(token);
                }
            }

            return(set);
        }
Пример #3
0
        private static void InitializeCardsManager()
        {
            manager = new CardsManager();

            if (!File.Exists(cache_data_file))
            {
                max_steps += 2;
                if (!File.Exists(cache_data_printings_file))
                {
                    max_steps += 3;
                    if (!File.Exists(cache_data_printings_archive))
                    {
                        max_steps += 2;
                    }

                    if (!File.Exists(cache_data_tokens_file))
                    {
                        max_steps += 2;
                    }
                }
            }

            if (!File.Exists(cache_data_file))
            {
                Console.WriteLine(GetSteps() + "Cache (" + cache_data_file + ") not found, creating cache...");
                if (!File.Exists(cache_data_printings_file))
                {
                    Console.WriteLine(GetSteps() + "Card data (" + cache_data_printings_file + ") not found...");
                    if (!File.Exists(cache_data_printings_archive))
                    {
                        Console.WriteLine(GetSteps() + "Card archive (" + cache_data_printings_archive + ") not found, downloading...");

                        Download(allsets_url, cache_data_printings_archive, true);

                        Console.WriteLine(GetSteps() + "Download complete");
                    }

                    if (!File.Exists(cache_data_tokens_file))
                    {
                        Console.WriteLine(GetSteps() + "Token XML (" + cache_data_tokens_file + ") not found, downloading...");

                        Download(tokens_url, cache_data_tokens_file);

                        Console.WriteLine(GetSteps() + "Download complete");
                    }

                    Console.WriteLine(GetSteps() + "Extracting card archive...");
                    using (Stream xz = new XZInputStream(File.OpenRead(cache_data_printings_archive)))
                        using (Stream stream = new FileStream(cache_data_printings_file, FileMode.OpenOrCreate))
                        {
                            xz.CopyTo(stream);
                        }
                    Console.WriteLine(GetSteps() + "Extraction complete");
                }

                Console.WriteLine(GetSteps() + "Processing data set (cards and tokens)...");

                string  string_data = File.ReadAllText(cache_data_printings_file);
                JObject data        = JObject.Parse(string_data);

                List <Thread> threads = new List <Thread>();
                foreach (var set in data)
                {
                    threads.Add(new Thread(() =>
                    {
                        Set.Parse(set.Key, set.Value.ToObject <JObject>(), manager);
                    }));
                }


                foreach (var thread in threads)
                {
                    thread.Start();
                }

                foreach (var thread in threads)
                {
                    thread.Join();
                }

                WriteToBinaryFile(cache_data_file, manager);

                Console.WriteLine(GetSteps() + "Cache (" + cache_data_file + ") creation completed.");
            }
            else
            {
                Console.Write(GetSteps() + "Cache (" + cache_data_file + ") found! Loading...");

                manager = ReadFromBinaryFile <CardsManager>(cache_data_file);

                Console.WriteLine(" Done");
            }
        }