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); }
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); }
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"); } }