Example #1
0
        public void Init()
        {
            Console.Title         = "HearthstoneCORE";
            Console.CursorVisible = false;

            //Console.SetWindowSize(Console.LargestWindowWidth, Console.LargestWindowHeight);
            //Console.SetBufferSize(Console.LargestWindowWidth, Console.LargestWindowHeight);

            RenderComponents = new List <RenderComponent>();


            List <HSCard> cards = HSCard.GetAllCards();

            HSDeck deck = new HSDeck();

            deck.AddCards(cards);

            player1 = new HSPlayer(deck);

            Logo = new ASCIIComponent("logo", new RenderLocation(Console.WindowWidth - 5, 10));

            GameBoard = new GameBoardComponent(new RenderLocation(1, 1));

            RenderComponents.Add(GameBoard);

            //int i = 1;
            //foreach(var card in deck.Cards)
            //{
            //    card.RenderComponent = new CardComponent(card, new RenderLocation(i * 5, 6));
            //    RenderComponents.Add(card.RenderComponent);
            //    i++;
            //}

            RenderComponents.Add(Logo);
        }
Example #2
0
        private void SaveDeck(string deckText, string deckUrl)
        {
            var dbDeck = _deckRepository.Where(d => d.Link == deckText).Select(x => x.Link).FirstOrDefault();

            if (dbDeck == null)
            {
                HSDeck deck = new HSDeck();
                deck.Name  = GetName(deckText);
                deck.Class = GetClass(deckText);
                deck.Link  = deckUrl;
                deck.Cards = GetCards(deckText);
                deck.Date  = DateTime.Now;
                _deckRepository.Add(deck);
            }
        }
Example #3
0
        public void Collect()
        {
            try
            {
                int decksCollected = 0;
                _navigationManager.GoToPage(SiteUrl);

                var decksLinks =
                    _actionManager.TryFindElementsByJquery(".recent-header ul li a")
                    .Select(x => x.GetAttribute("href"))
                    .ToList();

                var decksInBase = _deckRepository.Where(d => decksLinks.Contains(d.Link)).Select(x => x.Link).ToList();

                foreach (var link in decksLinks.Where(x => !decksInBase.Contains(x)))
                {
                    try
                    {
                        if (!link.Contains(DateTime.Now.ToString("MMMM").ToLower())) // only get decks from this month
                        {
                            continue;
                        }

                        _navigationManager.GoToPage(link);
                        var deckInfo = _actionManager.TryFindElementsByJquery(".deck-info a");

                        // deck header
                        HSDeck deck = new HSDeck();
                        deck.Class = deckInfo[0].Text;
                        deck.Link  = link;
                        deck.Type  = deckInfo[1].Text;
                        deck.Name  = _actionManager.TryFindElementByJquery("h1.entry-title").Text;
                        if (deck.Name.ToLower().Contains("wild"))
                        {
                            continue;
                        }

                        deck.Date = DateTime.Now;

                        // get cards names
                        var cardsNames = _actionManager.TryFindElementsByJquery(".deck-class li a span.card-name").Select(
                            x =>
                        {
                            var str = x.Text.Replace("’", "'");
                            return(str.ToUpper());
                        }).ToList();
                        var cardsCount = _actionManager.TryFindElementsByJquery(".deck-class li a span.card-count").Select(x => x.Text).ToList();

                        var listofCards = _cardRepository.Where(x => cardsNames.Contains(x.name)).ToList();

                        IList <HSCard> cardsInDeck = new List <HSCard>();
                        for (int i = 0; i < cardsNames.Count; i++)
                        {
                            var card = listofCards.FirstOrDefault(elm => elm.name == cardsNames[i]);
                            if (card != null)
                            {
                                card.count = int.Parse(cardsCount[i]);
                                cardsInDeck.Add(card);
                            }
                            else
                            {
                                Console.WriteLine("Card " + cardsNames[i] + " not found in the database; Deck is not collected!");
                                throw new CardNotFoundException();
                            }
                        }
                        deck.Cards = cardsInDeck;
                        _deckRepository.Add(deck);
                        decksCollected++;
                        Console.WriteLine("Collected : " + deck.Name);
                    }
                    catch (CardNotFoundException ex)
                    {
                        continue;
                    }
                }
            }

            catch (Exception ex)
            {
                Console.WriteLine("!!!!! " + ex.Message);
            }
        }
Example #4
0
        public void Collect()
        {
            int decksCollected = 0;

            _navigationManager.GoToPage(SiteUrl);

            // document.querySelectorAll('ul.class-tabs li')
            var classListCount = _actionManager.TryFindElementsByJs(".class-tabs li a span").Skip(1).ToList().Count;

            for (int i = 0; i < classListCount; i++)
            {
                int errorsCount = 0;
                try
                {
                    if (_navigationManager.CurrentUrl != SiteUrl)
                    {
                        _navigationManager.GoToPage(SiteUrl);
                    }
                    int counter = i + 2;
                    //document.querySelectorAll('.decks li a')
                    var dclass = _actionManager.TryFindElementByJs(".class-tabs li a[data-class-id='" + counter + "']");
                    dclass.Click();

                    Thread.Sleep(3000);


                    // check if deck is already exist
                    // by name
                    var decksLinks  = _actionManager.TryFindElementsByJquery(".decks li a").Select(x => x.GetAttribute("href")).Take(6).ToList();
                    var decksInBase = _deckRepository.Where(d => decksLinks.Contains(d.Link)).Select(x => x.Link).ToList();

                    string deckClass = dclass.Text;
                    Console.WriteLine("=== Collecting {0} ====", deckClass);
                    foreach (var link in decksLinks.Where(x => !decksInBase.Contains(x)))
                    {
                        try
                        {
                            HSDeck deck = new HSDeck();
                            deck.Class = deckClass;
                            deck.Link  = link;
                            deck.Date  = DateTime.Now;
                            //deck.SiteName = SiteUrl;
                            _navigationManager.GoToPage(link);

                            string deckName = _actionManager.TryFindElementByJquery(".deck-detail h2.deck-title").Text;
                            string deckType = _actionManager.TryFindElementsByJquery(".deck-details li .deck-type")[1].Text;

                            deck.Name = deckName;
                            deck.Type = deckType;

                            var exportDdl = _actionManager.TryFindElementByJquery(".t-export-deck select");
                            exportDdl.Click();
                            var option = _actionManager.TryFindElementsByJquery(".t-export-deck select option")[2];
                            option.Click();
                            var exportWindow = _actionManager.TryFindElementByJquery(".deck-export-area");

                            Dictionary <string, int> importedCards = GetCardsFromCockaTrice(exportWindow.Text.ToUpper());
                            var cardsNames  = importedCards.Select(c => c.Key.ToUpper()).ToList();
                            var listofCards = _cardRepository.Where(x => cardsNames.Contains(x.name)).ToList();

                            deck.Cards = GetCardsInDeckWithCount(listofCards, importedCards);
                            _deckRepository.Add(deck);
                            decksCollected++;
                            Console.WriteLine("Collected : " + deck.Name);
                        }
                        catch (CardNotFoundException ex)
                        {
                            continue;
                        }
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine("!!!! " + ex.Message);
                    Console.WriteLine("trying  again " + errorsCount);
                    errorsCount++;
                    if (errorsCount == 3)
                    {
                        continue;
                    }
                    i--;
                }
            }
            Console.WriteLine("HearthpwnCollector Decks collected: " + decksCollected);
        }