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? }
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); }
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); }
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); }
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>(); }
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>(); }
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>(); }
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)}%"; } }