public void HighlightCard(Card card) { var cardPosition = _winrateTracker.GetPosition(card); MulliganWinratesCardList.Update(Cards, false); var match = Cards.FirstOrDefault(c => c.Name == card.Name); if (match != null) { Cards.Remove(card); card.HighlightInHand = true; MulliganWinratesCardList.Update(Cards, false); } for (var i = 0; i < ((AnimatedCardList)Children[1]).Items.Count; i++) { if ((((AnimatedCardList)Children[1]).Items.GetItemAt(i) as UserControl)?.Content is Grid grid2) { ((HearthstoneTextBlock)grid2.Children[2]).Fill = new SolidColorBrush(Colors.Green); } } if ((MulliganWinratesCardList.Items.GetItemAt(cardPosition) as UserControl)?.Content is Grid grid) { var textblock = (HearthstoneTextBlock)grid.Children[2]; textblock.Fill = new SolidColorBrush(Colors.Green); grid.Children[2] = textblock; } MulliganWinratesCardList.Update(Cards, false); }
public bool Update(Card card, bool isSpell = false) { if (card.Type != "Minion" && !isSpell) { return(false); } // Increment var match = Cards.FirstOrDefault(c => c.Name == card.Name); if (match != null) { Cards.Remove(match); card = match.Clone() as Card; card.Count++; } // Update View Cards.Add(card); View.Update(Cards, false); Label.Visibility = Visibility.Visible; return(true); }
public virtual bool Update(Card card) { if (card.Type == "Spell") { HearthDb.Cards.All.TryGetValue(card.Id, out DbCard dbCard); if (dbCard?.SpellSchool > 0) { if (SchoolList.ContainsKey(dbCard.SpellSchool)) { SchoolList[dbCard.SpellSchool] = card.Clone() as Card; } else { SchoolList.Add(dbCard.SpellSchool, card.Clone() as Card); } Cards.Update(SchoolList.Values.ToList(), true); Visibility = Visibility.Visible; return(true); } } return(false); }
public void PlayerPlayUpdate(Card card) { Shudderwock?.Update(card); DragoncallerAlanna?.Update(card); Caverns?.Update(card); TessGreymane?.Update(card); }
public void OnOpponentPlayCard(Hearthstone_Deck_Tracker.Hearthstone.Card card) { if (!card.Collectible) { return; } m_CurrentDeck.AddCard(card); m_BestDeck = m_GameDecks.GetBestCompareDeck(m_CurrentDeck); List <Hearthstone_Deck_Tracker.Hearthstone.Card> cardList = new List <Hearthstone_Deck_Tracker.Hearthstone.Card>(); var pEnum = m_BestDeck.GetEnumerator(); for (; pEnum.MoveNext();) { cardList.Add(pEnum.Current.Key); } for (int i = 0; i < cardList.Count - 1; i++) { for (int j = 0; j < cardList.Count - 1; j++) { if (cardList[j].Cost > cardList[j + 1].Cost) { var temp = cardList[j]; cardList[j] = cardList[j + 1]; cardList[j + 1] = temp; } } } if (m_List != null) { m_List.Update(cardList); m_List.Show(); } //m_List.Update(m_BestDeck); }
public void Update(Card card, List <Card> cards, AnimatedCardList view, Dictionary <int, double> winrates) { for (var i = 0; i < cards.Count; i++) { if (!_winratesToCardMapping.ContainsKey(cards[i])) { var winrate = new HearthstoneTextBlock { FontSize = 18, TextAlignment = TextAlignment.Left }; if (view.Items.Count > i) { if ((view.Items.GetItemAt(i) as UserControl)?.Content is Grid grid) { grid.Width = 260; ((Hearthstone_Deck_Tracker.Controls.Card)grid.Children[0]).HorizontalAlignment = HorizontalAlignment.Right; ((Rectangle)grid.Children[1]).Width = 260; grid.Children.Add(winrate); } } _winratesToCardMapping.Add(cards[i], winrate); } winrates.TryGetValue(cards[i].DbfIf, out var winratePercentage); _winratesToCardMapping[cards[i]].Text = winratePercentage.ToString(); } }
internal void PlayerPlay(Card card) { if (card.Mechanics.Any(a => a == "Battlecry")) { _view.Update(card); } }
private void AddToMulligan(Card card) { Mulligan.HighlightCard(card); if (CoreAPI.Game.IsMulliganDone) { Reset(); } }
public void AddCard(HDTCard card) { if (!_cards.Contains(card)) { _cards.Add(card); _deck.Cards.Add(new SingleCard(card.Id)); } }
public virtual bool Update(Card card) { CardLists[0].Add(card.Clone() as Card); Views[0].Cards.Update(CardLists[0], false); Visibility = Visibility.Visible; return(true); }
public void TestImageSize() { var cardDb = HearthDb.Cards.Collectible[HearthDb.CardIds.Collectible.Druid.AddledGrizzly]; Hearthstone_Deck_Tracker.Hearthstone.Card card = new Hearthstone_Deck_Tracker.Hearthstone.Card(cardDb); System.Drawing.Bitmap bmp = Hearthstone_Deck_Tracker.Utility.ImageCache.GetCardBitmap(card); Assert.AreEqual(bmp.Height, PluginExample.kernal.ComponentSize.DeckSize.ImageHeight); Assert.AreEqual(bmp.Width, PluginExample.kernal.ComponentSize.DeckSize.ImageWidth); }
public virtual bool Update(Card card) { Cards.Update(new List <Card> { card.Clone() as Card }, false); Visibility = Visibility.Visible; return(true); }
/// <summary> /// Called when [mouse over]. /// </summary> /// <param name="card">The card.</param> private void PlayerHandMouseOver(Card card) { if (card.Id == Settings.Default.MinstrelCardId) { var playerDeck = Core.Game.Player.PlayerCardList .Where(c => c.Type == "Minion" && c.Count > 0).ToList(); setListDisplay.CheckDeck(playerDeck); setListDisplay.Show(); } }
public void Update(Card card) { var a = Anyfin?.Update(card) ?? false; var b = NZoth?.Update(card) ?? false; var c = Resurrect?.Update(card) ?? false; if (!(a || b || c)) { Normal?.Update(card); } }
public void PlayerGraveyardUpdate(Card card) { var any = Anyfin?.Update(card) ?? false; var nzoth = NZoth?.Update(card) ?? false; var rez = Resurrect?.Update(card) ?? false; var guldan = Guldan?.Update(card) ?? false; if (!(any || nzoth || rez || guldan)) { Normal?.Update(card); } }
public int GetPosition(Card card) { for (var i = 0; i < _winratesToCardMapping.Keys.Count; i++) { if (_winratesToCardMapping.Keys.ToList()[i].Id == card.Id) { return(i); } } return(-1); }
public void RemoveCard(Hearthstone_Deck_Tracker.Hearthstone.Card card) { int CardCount = HaveCard(card); if (CardCount > 0) { m_Cards[card]--; if (m_Cards[card] == 0) { m_Cards.Remove(card); } } }
public override bool Update(Card card) { if (card.Type == "Spell") { HearthDb.Card dbCard; HearthDb.Cards.All.TryGetValue(card.Id, out dbCard); if (dbCard?.SpellSchool == 2) { return(base.Update(card)); } } return(false); }
public void PlayerGraveyardUpdate(Card card) { var any = Anyfin?.Update(card) ?? false; var nzoth = NZoth?.Update(card) ?? false; var hadr = Hadronox?.Update(card) ?? false; var guldan = Guldan?.Update(card) ?? false; var rez = Resurrect?.Update(card) ?? false; var ninel = NineLives?.Update(card) ?? false; var witch = WitchingHour?.Update(card) ?? false; if (!(any || nzoth || hadr || guldan || rez || ninel || witch)) { Normal?.Update(card); } }
public void AddCard(Hearthstone_Deck_Tracker.Hearthstone.Card card) { if (!card.Collectible) { return; } if (HaveCard(card) > 0) { m_Cards[card]++; } else { m_Cards.Add(card, 1); } }
public int HaveCard(Hearthstone_Deck_Tracker.Hearthstone.Card card) { var pEnum = m_Cards.GetEnumerator(); int CardCount = 0; for (; pEnum.MoveNext();) { if (pEnum.Current.Key.Equals(card)) { CardCount = pEnum.Current.Value; break; } } return(CardCount); }
/// <summary> /// Starts the configuration mode for setting the layout. /// </summary> public void StartConfigMode() { var card = new Card(HearthDb.Cards.Collectible.Values.FirstOrDefault(c => c.Id == Settings.Default.MinstrelCardId)); if (card != null) { TitleBarLabel.Visibility = Visibility.Hidden; var Cards = new List <Card>(); Cards.Add(card); DrawPoolCardList.Update(Cards, true); ProbabilityLabel.Text = $"X% / Y"; DeckMixLabel.Text = $"M/D"; Visibility = Visibility.Visible; } }
public void Update(Card card, Dictionary <int, double> winrates) { MulliganWinratesCardList.Visibility = Visibility.Visible; Label.Visibility = Visibility.Visible; // Increment var match = Cards.FirstOrDefault(c => c.Name == card.Name); if (match == null) { Cards.Add(card); MulliganWinratesCardList.Update(Cards, false); _winrateTracker.Update(card, Cards, MulliganWinratesCardList, winrates); } // Update View }
public void PlayerGraveyardUpdate(Card card) { var any = Anyfin?.Update(card) ?? false; var deathrattle = Deathrattle?.Update(card) ?? false; var nzoth = NZoth?.Update(card) ?? false; var hadr = Hadronox?.Update(card) ?? false; var guldan = Guldan?.Update(card) ?? false; var rez = Resurrect?.Update(card) ?? false; var mulch = Mulchmuncher?.Update(card) ?? false; var kangor = Kangor?.Update(card) ?? false; var witching = WitchingHour?.Update(card) ?? false; if (!(any || deathrattle || nzoth || hadr || guldan || rez || mulch || kangor || witching)) { Normal?.Update(card); } }
/// <summary> /// When the Player mouses over a <see cref="Card" /> in his hand. /// </summary> /// <param name="card">The <see cref="Card" />.</param> public void PlayerHandMouseOver(Card card) { if (card.Id != CardId()) { this.Visibility = Visibility.Collapsed; } else { if (CheckDeckChanged()) { LoadCards(); DoMath(); } ShowDisplay(new CurtainCall { CallingView = ViewModes.ElvenMinstrel, ShouldShow = true }, new EventArgs()); } }
public void PlayerPlayUpdate(Card card) { FriendlyQuestline?.Update(card); Shudderwock?.Update(card); LastPlayed?.UpdateBrilliantMacaw(card); DragoncallerAlanna?.Update(card); LastPlayed?.UpdateGreySageParrot(card); Caverns?.Update(card); TessGreymane?.Update(card); Zuljin?.Update(card); LadyLiadrin?.Update(card); LastPlayed?.UpdateSunwingSquawker(card); YShaarj?.Update(card); Kargal?.Update(card); Antonidas?.Update(card); GrandFinale?.Update(card); Multicaster?.Update(card); Shirvallah?.Update(card); }
/// <summary> /// When the Player mouses over a <see cref="Card" /> in his hand. /// </summary> /// <param name="card">The <see cref="Card" />.</param> public void PlayerHandMouseOver(Card card) { if (card.Id != CardId()) { this.Visibility = Visibility.Collapsed; } else { if (CheckDeckChanged()) { LoadCards(); // ToDo: Should do math be moved into the load cards process? DoMath(); } ShowDisplay(new CurtainCall { CallingView = ViewModes.WitchWoodPiper, ShouldShow = true }, new EventArgs()); } }
public void OnOpponentPlayCard(Hearthstone_Deck_Tracker.Hearthstone.Card card) { if (m_NeedFilterByClass) { var game = Hearthstone_Deck_Tracker.API.Core.Game; if (game != null) //для игры { m_GameDecks = m_GameDecks.FilterDeck(utils.KlassConverter(game.Opponent.Class)); m_NeedFilterByClass = false; } else if (card.IsClassCard)//для отладки тестов (игры то нет) { m_GameDecks = m_GameDecks.FilterDeck(utils.KlassConverter(card.PlayerClass)); m_NeedFilterByClass = false; } } if (!card.Collectible) { return; } if (card.IsCreated) { return; } m_CurrentDeck.AddCard(card); List <PlayedDeck> deckList = m_GameDecks.GetBestDeckList(m_CurrentDeck); deckList.Sort(delegate(PlayedDeck d1, PlayedDeck d2) { return(d2.GetFoundPercent().CompareTo(d1.GetFoundPercent())); }); m_BestDeck = deckList[0]; if (m_procentForm != null) { if (deckList.Count <= 8) //иначе по ширине в экран не влезет { m_procentForm.SetShowDeckList(deckList); } else { m_procentForm.SetShowDeck(m_BestDeck); } } }
/// <summary> /// Cleans the list of <see cref="Card">Cards</see>, by combining copies /// </summary> /// <param name="cards">The List of <see cref="Card">Cards</see>.</param> internal void CleanCards(List <Card> cards) { var dups = cards.GroupBy(c => c.Id).Where(d => d.Count() > 1).ToList(); if (dups.Count() >= 1) { foreach (var d in dups.ToList()) { var count = 0; Card first = d.First(); foreach (var i in d) { i.IsCreated = false; count += i.Count; i.Count = 0; } first.Count = count; } } cards.RemoveAll(c => c.Count == 0); }
public void PlayerGraveyardUpdate(Card card) { var any = Anyfin?.Update(card) ?? false; var deathrattle = Deathrattle?.Update(card) ?? false; var nzoth = NZoth?.Update(card) ?? false; var hadr = Hadronox?.Update(card) ?? false; var guldan = Guldan?.Update(card) ?? false; var rez = Resurrect?.Update(card) ?? false; var mulch = Mulchmuncher?.Update(card) ?? false; var kangor = Kangor?.Update(card) ?? false; var witching = WitchingHour?.Update(card) ?? false; var hoardpillager = HoardPillager?.Update(card) ?? false; var nzothgotd = NZothGotD?.Update(card) ?? false; var rally = Rally?.Update(card) ?? false; var saurfang = Saurfang?.Update(card) ?? false; if (!(any || deathrattle || nzoth || hadr || guldan || rez || mulch || kangor || witching || hoardpillager || nzothgotd || rally || saurfang)) { Normal?.Update(card); } }