public void DeckConversion(string path) { DeckName = Path.GetFileName(Path.ChangeExtension(Path.Combine(Outputdir, _open.FileName), "txt")); DeckYdk deck = BuildDeckTxt(path); YdkToTxt(deck); MessageBox.Show(String.Format("{0} Converted", DeckName)); textBox1.Text = @"Select file to convert"; }
public DeckYdk BuildDeckTxt(string path) { DeckYdk deck = new DeckYdk(); path = _open.FileName; using (StreamReader reader = new StreamReader(path)) { string text = reader.ReadToEnd(); string[] s = text.Split(new[] { "#main", "#extra", "!side" }, StringSplitOptions.None); string s1 = s[1], s2 = s[2], s3 = s[3]; string[] s11 = s1.Split(new[] { "\r\n" }, StringSplitOptions.None), s22 = s2.Split(new[] { "\r\n" }, StringSplitOptions.None), s33 = s3.Split(new[] { "\r\n" }, StringSplitOptions.None); foreach (int cardNumber in s11.Where(cardNumber => !String.IsNullOrEmpty(cardNumber)).Select(cardNumber => Convert.ToInt32(cardNumber))) { deck.Main.Add(new Card(cardNumber)); } foreach (int cardNumber in s22.Where(cardNumber => !String.IsNullOrEmpty(cardNumber)).Select(cardNumber => Convert.ToInt32(cardNumber))) { deck.Extra.Add(new Card(cardNumber)); } foreach (int cardNumber in s33.Where(cardNumber => !String.IsNullOrEmpty(cardNumber)).Select(cardNumber => Convert.ToInt32(cardNumber))) { deck.Side.Add(new Card(cardNumber)); } } return(deck); }
public void YdkToTxt(DeckYdk deck) { Dictionary <Card, int> mainDeck = new Dictionary <Card, int>(new CardComparer()), extraDeck = new Dictionary <Card, int>(new CardComparer()), sideDeck = new Dictionary <Card, int>(new CardComparer()); StringBuilder builder = new StringBuilder(); List <Card> mainList = deck.Main, extraList = deck.Extra, sideList = deck.Side; //main deck foreach (Card card in mainList) { if (mainDeck.ContainsKey(card)) { mainDeck[card]++; } else { mainDeck.Add(card, 1); } } //extra deck foreach (Card card in extraList) { if (extraDeck.ContainsKey(card)) { extraDeck[card]++; } else { extraDeck.Add(card, 1); } } //side deck foreach (Card card in sideList) { if (sideDeck.ContainsKey(card)) { sideDeck[card]++; } else { sideDeck.Add(card, 1); } } builder.AppendLine("#main"); foreach (KeyValuePair <Card, int> card in mainDeck) { builder.AppendLine(String.Format("{0} {1}", card.Value, GetCardName(card.Key.Id))); } builder.AppendLine(); builder.AppendLine("#extra"); foreach (KeyValuePair <Card, int> card in extraDeck) { builder.AppendLine(String.Format("{0} {1}", card.Value, GetCardName(card.Key.Id))); } builder.AppendLine(); builder.AppendLine("!side"); foreach (KeyValuePair <Card, int> card in sideDeck) { builder.AppendLine(String.Format("{0} {1}", card.Value, GetCardName(card.Key.Id))); } if (!Directory.Exists(Outputdir)) { Directory.CreateDirectory(Outputdir); } File.WriteAllText(Path.Combine(Outputdir, DeckName), builder.ToString()); }