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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
 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();
            }
        }
Example #7
0
 internal void PlayerPlay(Card card)
 {
     if (card.Mechanics.Any(a => a == "Battlecry"))
     {
         _view.Update(card);
     }
 }
Example #8
0
 private void AddToMulligan(Card card)
 {
     Mulligan.HighlightCard(card);
     if (CoreAPI.Game.IsMulliganDone)
     {
         Reset();
     }
 }
Example #9
0
 public void AddCard(HDTCard card)
 {
     if (!_cards.Contains(card))
     {
         _cards.Add(card);
         _deck.Cards.Add(new SingleCard(card.Id));
     }
 }
Example #10
0
        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);
        }
Example #12
0
        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();
     }
 }
Example #14
0
        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);
            }
        }
Example #15
0
        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);
        }
Example #17
0
        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);
                }
            }
        }
Example #18
0
 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);
 }
Example #19
0
        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);
            }
        }
Example #20
0
 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);
     }
 }
Example #21
0
        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);
        }
Example #22
0
        /// <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;
            }
        }
Example #23
0
        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
        }
Example #24
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;

            if (!(any || deathrattle || nzoth || hadr || guldan || rez || mulch || kangor || witching))
            {
                Normal?.Update(card);
            }
        }
Example #25
0
 /// <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());
     }
 }
Example #26
0
 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());
     }
 }
Example #28
0
        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);
                }
            }
        }
Example #29
0
        /// <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);
        }
Example #30
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);
            }
        }