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