Esempio n. 1
0
        public DeckInfo ReadDeck(string deckDefinition)
        {
            HtmlParser    parser = new HtmlParser();
            IHtmlDocument doc    = parser.Parse(deckDefinition);

            var deckTitle = doc.QuerySelector("h1.page-header__title").TextContent;
            var deckList  = doc.QuerySelectorAll("div.div-col.columns.column-count.column-count-2 span.card-image-tooltip");

            const string titlePrefix = "Decks/";

            if (deckTitle.StartsWith(titlePrefix))
            {
                deckTitle = deckTitle.Substring(titlePrefix.Length);
            }

            DeckInfo deckInfo = new DeckInfo(deckTitle);

            foreach (var entry in deckList)
            {
                string cardName = entry.TextContent;
                if (!MagicDuelsHelper.IsBasicLand(cardName))
                {
                    string numberOf = entry.PreviousSibling.TextContent.Trim();
                    int    number   = int.Parse(numberOf);
                    deckInfo.Cards.Add(new DeckEntry
                    {
                        Required = number,
                        CardName = cardName,
                    });
                }
            }

            return(deckInfo);
        }
        public DeckInfo ReadDeck(string deckDefinition)
        {
            HtmlParser    parser = new HtmlParser();
            IHtmlDocument doc    = parser.Parse(deckDefinition);

            var deckTitle = doc.QuerySelector("h1").TextContent;
            var deckList  = doc.QuerySelector("#deckList");
            var cards     = deckList.QuerySelectorAll("img[data-cardName]");
            var amounts   = deckList.QuerySelectorAll("label[data-cardCount=count]");

            const string titlePrefix = "Magic Duels Deck: ";

            if (deckTitle.StartsWith(titlePrefix))
            {
                deckTitle = deckTitle.Substring(titlePrefix.Length);
            }

            DeckInfo deckInfo = new DeckInfo(deckTitle);

            for (int k = 0; k < cards.Length; k++)
            {
                string cardName = WebUtility.HtmlDecode(cards[k].GetAttribute("data-cardName"));
                if (!MagicDuelsHelper.IsBasicLand(cardName))
                {
                    int number = int.Parse(amounts[k].TextContent);
                    deckInfo.Cards.Add(new DeckEntry
                    {
                        Required = number,
                        CardName = cardName,
                    });
                }
            }
            return(deckInfo);
        }
Esempio n. 3
0
        public DeckInfo ReadDeck(string deckDefinition)
        {
            HtmlParser    parser = new HtmlParser();
            IHtmlDocument doc    = parser.Parse(deckDefinition);

            var deckTitle = doc.QuerySelector("title").TextContent.Trim();
            var deckList  = doc.QuerySelectorAll("ul.boardlist li.member > a:first-child");

            const string titlePostfix = " (Magic Duels MTG Deck)";

            if (deckTitle.EndsWith(titlePostfix))
            {
                deckTitle = deckTitle.Substring(0, deckTitle.Length - titlePostfix.Length);
            }

            DeckInfo deckInfo = new DeckInfo(deckTitle);

            foreach (var entry in deckList)
            {
                string cardName = AdjustTwoFacedCardNames(entry.GetAttribute("data-name"));
                if (!MagicDuelsHelper.IsBasicLand(cardName))
                {
                    string numberOf = entry.TextContent.Trim();
                    int    number   = int.Parse(numberOf.Substring(0, numberOf.Length - 1));
                    deckInfo.Cards.Add(new DeckEntry
                    {
                        Required = number,
                        CardName = cardName,
                    });
                }
            }
            return(deckInfo);
        }
 private void GetCards(dynamic deck, DeckInfo deckInfo)
 {
     foreach (var section in deck.sections)
     {
         dynamic cards;
         try { cards = section.cards; } catch (RuntimeBinderException) { cards = null; }
         if (cards != null)
         {
             foreach (var card in cards)
             {
                 if ((bool)card.isSideboard)
                 {
                     continue;
                 }
                 string cardName = AdjustTwoFacedCardNames((string)card.name);
                 if (!MagicDuelsHelper.IsBasicLand(cardName))
                 {
                     deckInfo.Cards.Add(new DeckEntry
                     {
                         Required = (int)card.amount,
                         CardName = cardName,
                     });
                 }
             }
         }
     }
 }
Esempio n. 5
0
        public DeckInfo ReadDeck(string deckDefinition)
        {
            deckDefinition = StripSideboard(deckDefinition);
            MatchCollection cardLines = Regex.Matches(deckDefinition, @"^(\d+)\s*[x|X]?\s+(.*)$", RegexOptions.Multiline);
            DeckInfo        deckInfo  = new DeckInfo("Magic Duels Deck");

            foreach (Match match in cardLines)
            {
                string cardName = AdjustTwoFacedCardNames(match.Groups[2].Value.TrimEnd());
                if (!MagicDuelsHelper.IsBasicLand(cardName))
                {
                    deckInfo.Cards.Add(new DeckEntry {
                        Required = int.Parse(match.Groups[1].Value),
                        CardName = cardName,
                    });
                }
            }
            return(deckInfo);
        }