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();
            }
        }
        private async void UpdateAnimatedCardListAsync()
        {
            foreach (var cardId in _demoCards)
            {
                var card = _cards.FirstOrDefault(x => x.Id == cardId);
                if (card == null)
                {
                    _cards.Add(Hearthstone.Database.GetCardFromId(cardId));
                }
                else
                {
                    card.Count++;
                }
            }
            AnimatedCardList.Update(_cards.ToSortedCardList().Select(x => (Hearthstone.Card)x.Clone()).ToList(), true);
            while (_update)
            {
                foreach (var cardId in _demoCards)
                {
                    if (!_update)
                    {
                        break;
                    }
                    await Task.Delay(2000);

                    var card = _cards.FirstOrDefault(x => x.Id == cardId);
                    if (card != null)
                    {
                        if (card.Count == 1)
                        {
                            _cards.Remove(card);
                        }
                        else
                        {
                            card.Count--;
                        }
                    }
                    AnimatedCardList.Update(_cards.ToSortedCardList().Select(x => (Hearthstone.Card)x.Clone()).ToList(), false);
                }
                foreach (var cardId in _demoCards)
                {
                    if (!_update)
                    {
                        break;
                    }
                    await Task.Delay(2000);

                    var card = _cards.FirstOrDefault(x => x.Id == cardId);
                    if (card == null)
                    {
                        _cards.Add(Hearthstone.Database.GetCardFromId(cardId));
                    }
                    else
                    {
                        card.Count++;
                    }
                    AnimatedCardList.Update(_cards.ToSortedCardList().Select(x => (Hearthstone.Card)x.Clone()).ToList(), false);
                }
            }
        }
        public PlayPredictorList()
        {
            //InitializeComponent();

            Orientation = Orientation.Vertical;

            // Section Label
            this.Label          = new HearthstoneTextBlock();
            Label.FontSize      = 16;
            Label.TextAlignment = TextAlignment.Center;
            Label.Text          = "Opponent's Next Move";
            var margin = Label.Margin;

            margin.Top   = 0;
            Label.Margin = margin;
            Children.Add(Label);
            Label.Visibility = Visibility.Hidden;

            // Card View
            this.View = new AnimatedCardList();
            Children.Add(View);
            Cards = new List <Card>();

            // TODO: How to enable card mouseover tooltips?
        }
Esempio n. 4
0
        public MulticasterView()
        {
            Visibility  = Visibility.Collapsed;
            Orientation = Orientation.Vertical;

            Label = new HearthstoneTextBlock
            {
                FontSize      = 16,
                TextAlignment = TextAlignment.Center,
                Text          = Strings.GetLocalized("Multicaster"),
                Margin        = new Thickness(0, 20, 0, 0),
            };
            Children.Add(Label);

            Cards = new AnimatedCardList();
            Children.Add(Cards);
        }
Esempio n. 5
0
        public LastCardView(string title = "Last Card")
        {
            Visibility  = Visibility.Collapsed;
            Orientation = Orientation.Vertical;

            // Title
            Label = new HearthstoneTextBlock
            {
                FontSize      = 16,
                TextAlignment = TextAlignment.Center,
                Text          = title,
                Margin        = new Thickness(0, 20, 0, 0),
            };
            Children.Add(Label);

            Cards = new AnimatedCardList();
            Children.Add(Cards);
        }
Esempio n. 6
0
        public TurnView(string name)
        {
            Orientation = Orientation.Horizontal;

            Title = new HearthstoneTextBlock
            {
                FontSize          = 24,
                TextAlignment     = TextAlignment.Center,
                VerticalAlignment = VerticalAlignment.Top,
                MinHeight         = 30,
                MinWidth          = 30,
                Text = name,
            };
            Children.Add(Title);

            Cards = new AnimatedCardList();
            Children.Add(Cards);
        }
Esempio n. 7
0
        public MulliganView()
        {
            // Section Label

            Orientation = Orientation.Vertical;
            Label       = new HearthstoneTextBlock
            {
                FontSize = 16, TextAlignment = TextAlignment.Center, Text = "Mulligan Winrates"
            };
            var margin = Label.Margin;

            margin.Top   = 20;
            Label.Margin = margin;
            Children.Add(Label);

            // Card View
            MulliganWinratesCardList = new AnimatedCardList();
            Children.Add(MulliganWinratesCardList);
            Cards = new List <Card>();
        }
Esempio n. 8
0
        public NormalView()
        {
            Orientation = Orientation.Vertical;

            // Section Label
            Label               = new HearthstoneTextBlock();
            Label.FontSize      = 16;
            Label.TextAlignment = TextAlignment.Center;
            Label.Text          = Strings.Graveyard;
            var margin = Label.Margin;

            margin.Top   = 20;
            Label.Margin = margin;
            Children.Add(Label);
            Label.Visibility = Visibility.Hidden;

            // Card View
            View = new AnimatedCardList();
            Children.Add(View);
            Cards = new List <Card>();
        }
Esempio n. 9
0
        public BattlecryView()
        {
            Orientation = Orientation.Vertical;


            Label               = new HearthstoneTextBlock();
            Label.FontSize      = 16;
            Label.TextAlignment = TextAlignment.Center;
            Label.Text          = "Played Battlecrys";
            var margin = Label.Margin;

            margin.Top   = 20;
            Label.Margin = margin;
            Children.Add(Label);
            Label.Visibility = Visibility.Hidden;

            View            = new AnimatedCardList();
            View.Visibility = Visibility.Visible;
            Children.Add(View);
            _history = new List <Card>();
        }
Esempio n. 10
0
        public void Update(Card card, List <Card> Cards, AnimatedCardList View)
        {
            var count = (double)Cards.Aggregate(0, (total, c) => total + c.Count);

            for (var i = 0; i < Cards.Count(); i++)
            {
                if (!_chances.ContainsKey(Cards[i]))
                {
                    var chance = new HearthstoneTextBlock();
                    chance.FontSize      = 18;
                    chance.TextAlignment = TextAlignment.Left;
                    var grid = (View.Items.GetItemAt(i) as UserControl).Content as Grid;
                    grid.Width = 260;
                    (grid.Children[0] as Hearthstone_Deck_Tracker.Controls.Card).HorizontalAlignment = HorizontalAlignment.Right;
                    (grid.Children[1] as Rectangle).Width = 260;
                    grid.Children.Add(chance);
                    _chances.Add(Cards[i], chance);
                }

                _chances[Cards[i]].Text = $"{Math.Round(Cards[i].Count / count * 100)}%";
            }
        }