private void MetroWindow_Loaded(object sender, RoutedEventArgs e)
        {
            var presentationsource = PresentationSource.FromVisual(this);

            if (presentationsource != null)            // make sure it's connected
            {
                Helper.DpiScalingX = presentationsource.CompositionTarget.TransformToDevice.M11;
                Helper.DpiScalingY = presentationsource.CompositionTarget.TransformToDevice.M22;
            }
            if (!_foundHsDirectory)
            {
                this.ShowHsNotInstalledMessage();
                return;
            }
            if (NewVersion != null)
            {
                ShowNewUpdateMessage();
            }
            if (_updatedVersion != null)
            {
                this.ShowUpdateNotesMessage();
            }

            if (_updatedLogConfig)
            {
                this.ShowMessage("Restart Hearthstone",
                                 "This is either your first time starting the tracker or the log.config file has been updated. Please restart Heartstone once, for the tracker to work properly.");
            }

            ManaCurveMyDecks.UpdateValues();
        }
        private void AddCardToDeck(Card card)
        {
            if (card == null)
            {
                return;
            }
            if (_newDeck.Cards.Contains(card))
            {
                var cardInDeck = _newDeck.Cards.First(c => c.Name == card.Name);
                cardInDeck.Count++;
            }
            else
            {
                _newDeck.Cards.Add(card);
            }

            UpdateTitle();
            Helper.SortCardCollection(ListViewDeck.Items, Config.Instance.CardSortingClassFirst);
            ManaCurveMyDecks.UpdateValues();
            try
            {
                TextBoxDBFilter.Focus();
                TextBoxDBFilter.Select(0, TextBoxDBFilter.Text.Length);
            }
            catch
            {
            }
        }
Пример #3
0
        private void AddCardToDeck(Card card)
        {
            if (card == null)
            {
                return;
            }
            var cardInDeck = _newDeck.Cards.FirstOrDefault(c => c.Name == card.Name);

            if (cardInDeck != null)
            {
                if (!_newDeck.IsArenaDeck && (cardInDeck.Count >= 2 || cardInDeck.Rarity == "Legendary" && cardInDeck.Count >= 1))
                {
                    return;
                }
                cardInDeck.Count++;
            }
            else
            {
                _newDeck.Cards.Add(card);
            }

            UpdateCardCount();
            Helper.SortCardCollection(ListViewDeck.Items, Config.Instance.CardSortingClassFirst);
            ManaCurveMyDecks.UpdateValues();
            try
            {
                TextBoxDBFilter.Focus();
                TextBoxDBFilter.Select(0, TextBoxDBFilter.Text.Length);
            }
            catch
            {
            }
        }
Пример #4
0
        private void RemoveCardFromDeck(Card card)
        {
            if (card == null)
            {
                return;
            }
            if (card.Count > 1)
            {
                card.Count--;
            }
            else
            {
                _newDeck.Cards.Remove(card);
            }

            UpdateCardCount();
            Helper.SortCardCollection(ListViewDeck.Items, Config.Instance.CardSortingClassFirst);
            ManaCurveMyDecks.UpdateValues();
            try
            {
                TextBoxDBFilter.Focus();
                TextBoxDBFilter.Select(0, TextBoxDBFilter.Text.Length);
            }
            catch
            {
            }
            UpdateExpansionIcons();
        }
Пример #5
0
        private void ComboBoxDeckVersion_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (!_initialized || DeckPickerList.ChangedSelection)
            {
                return;
            }
            var deck = DeckPickerList.SelectedDecks.FirstOrDefault();

            if (deck == null)
            {
                return;
            }
            var version = ComboBoxDeckVersion.SelectedItem as SerializableVersion;

            if (version == null || deck.SelectedVersion == version)
            {
                return;
            }
            deck.SelectVersion(version);
            DeckList.Save();
            DeckPickerList.UpdateDecks(forceUpdate: new[] { deck });
            UpdateDeckList(deck);
            ManaCurveMyDecks.UpdateValues();
            if (deck.Equals(DeckList.Instance.ActiveDeck))
            {
                UseDeck(deck);
            }
            Console.WriteLine(version);
        }
        private void ComboBoxDeckVersion_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (!_initialized || DeckPickerList.ChangedSelection)
            {
                return;
            }
            var deck = DeckPickerList.SelectedDecks.FirstOrDefault() ?? DeckList.Instance.ActiveDeck;

            if (deck == null)
            {
                return;
            }
            var version = ComboBoxDeckVersion.SelectedItem as SerializableVersion;

            if (version == null || deck.SelectedVersion == version)
            {
                return;
            }
            deck.SelectVersion(version);
            DeckList.Save();
            DeckPickerList.UpdateDecks(forceUpdate: new[] { deck });
            UpdateDeckList(deck);
            ManaCurveMyDecks.UpdateValues();
            OnPropertyChanged(nameof(HsReplayButtonVisibility));
            if (deck.Equals(DeckList.Instance.ActiveDeck))
            {
                UseDeck(deck);
            }
            DeckCharts.SetDeck(deck);
            HsReplayDeckInfo.SetDeck(deck);
        }
		private async void MetroWindow_Loaded(object sender, RoutedEventArgs e)
		{
			var presentationsource = PresentationSource.FromVisual(this);
			if(presentationsource != null) // make sure it's connected
			{
				Helper.DpiScalingX = presentationsource.CompositionTarget.TransformToDevice.M11;
				Helper.DpiScalingY = presentationsource.CompositionTarget.TransformToDevice.M22;
			}
			ManaCurveMyDecks.UpdateValues();
			if(_updatedVersion != null)
				await this.ShowUpdateNotesMessage();

			if(!_foundHsDirectory)
				await this.ShowHsNotInstalledMessage();
			else if(_updatedLogConfig)
			{
				await
					this.ShowMessage("Restart Hearthstone",
					                 "This is either your first time starting the tracker or the log.config file has been updated. Please restart Heartstone once, for the tracker to work properly.");
			}

			if(!Config.Instance.ResolvedDeckStatsIds)
			{
				if(ResolveDeckStatsIds())
					await Restart();
			}
			if(Config.Instance.HearthStatsSyncOnStart && HearthStatsAPI.IsLoggedIn)
				HearthStatsManager.SyncAsync(background: true);
		}
Пример #8
0
 public void LoadAndUpdateDecks()
 {
     UpdateDeckList(DeckList.Instance.ActiveDeck);
     UpdateDbListView();
     SelectDeck(DeckList.Instance.ActiveDeck, true);
     Helper.SortCardCollection(ListViewDeck.Items, Config.Instance.CardSortingClassFirst);
     DeckPickerList.PropertyChanged += DeckPickerList_PropertyChanged;
     DeckPickerList.UpdateDecks();
     DeckPickerList.UpdateArchivedClassVisibility();
     ManaCurveMyDecks.UpdateValues();
 }
Пример #9
0
        private async void MetroWindow_Loaded(object sender, RoutedEventArgs e)
        {
            var presentationsource = PresentationSource.FromVisual(this);

            if (presentationsource != null)            // make sure it's connected
            {
                Helper.DpiScalingX = presentationsource.CompositionTarget.TransformToDevice.M11;
                Helper.DpiScalingY = presentationsource.CompositionTarget.TransformToDevice.M22;
            }
            ManaCurveMyDecks.UpdateValues();
            if (_updatedVersion != null)
            {
                FlyoutUpdateNotes.IsOpen = true;
                UpdateNotesControl.LoadUpdateNotes();
                //await this.ShowUpdateNotesMessage();
            }

            if (!_foundHsDirectory)
            {
                await this.ShowHsNotInstalledMessage();
            }
            else if (_updatedLogConfig && _game.IsRunning)
            {
                await
                this.ShowMessage("Restart Hearthstone",
                                 "This is either your first time starting HDT or the log.config file has been updated. Please restart Hearthstone, for HDT to work properly.");
            }

            if (!Config.Instance.FixedDuplicateMatches)
            {
                RemoveDuplicateMatches(false);
            }

            if (!Config.Instance.ResolvedOpponentNames)
            {
                ResolveOpponentNames();
            }
            if (!Config.Instance.ResolvedDeckStatsIds)
            {
                ResolveDeckStatsIds();
                //Restart();
            }
            if (Config.Instance.HearthStatsSyncOnStart && HearthStatsAPI.IsLoggedIn)
            {
                HearthStatsManager.SyncAsync(background: true);
            }

            //SetupProtocol(); turn on later
        }
        private void RemoveCardFromDeck(Card card)
        {
            if (card == null)
            {
                return;
            }
            if (card.Count > 1)
            {
                card.Count--;
            }
            else
            {
                _newDeck.Cards.Remove(card);
            }

            UpdateTitle();
            Helper.SortCardCollection(ListViewDeck.Items, Config.Instance.CardSortingClassFirst);
            ManaCurveMyDecks.UpdateValues();
        }
Пример #11
0
        internal async void BtnUpdateDeck_Click(object sender, RoutedEventArgs e)
        {
            var selectedDeck = DeckPickerList.SelectedDecks.FirstOrDefault();

            if (selectedDeck == null || string.IsNullOrEmpty(selectedDeck.Url))
            {
                return;
            }
            var deck = await DeckImporter.Import(selectedDeck.Url);

            if (deck == null)
            {
                await this.ShowMessageAsync("Error", "Could not load deck from specified url.");

                return;
            }
            //this could be expanded to check against the last version of the deck that was not modified after downloading
            if (deck.Cards.All(c1 => selectedDeck.GetSelectedDeckVersion().Cards.Any(c2 => c1.Name == c2.Name && c1.Count == c2.Count)))
            {
                await this.ShowMessageAsync("Already up to date.", "No changes found.");

                return;
            }

            SetNewDeck(selectedDeck, true);
            TextBoxDeckName.Text = deck.Name;
            _newDeck.Cards.Clear();
            foreach (var card in deck.Cards)
            {
                _newDeck.Cards.Add(card);
            }
            _newDeck.Edited();

            UpdateCardCount();
            Helper.SortCardCollection(ListViewDeck.Items, Config.Instance.CardSortingClassFirst);
            ManaCurveMyDecks.UpdateValues();

            TagControlEdit.SetSelectedTags(deck.Tags);
        }
Пример #12
0
        private async void BtnUpdateDeck_Click(object sender, RoutedEventArgs e)
        {
            var selectedDeck = DeckPickerList.SelectedDeck;

            if (selectedDeck == null || string.IsNullOrEmpty(selectedDeck.Url))
            {
                return;
            }
            var deck = await DeckImporter.Import(selectedDeck.Url);

            if (deck == null)
            {
                await this.ShowMessageAsync("Error", "Could not load deck from specified url.");

                return;
            }
            if (deck.Cards.All(c1 => selectedDeck.Cards.Any(c2 => c1.Name == c2.Name && c1.Count == c2.Count)))
            {
                await this.ShowMessageAsync("Already up to date.", "No changes found.");

                return;
            }

            SetNewDeck(selectedDeck, true);
            TextBoxDeckName.Text = deck.Name;
            _newDeck.Cards.Clear();
            foreach (var card in deck.Cards)
            {
                _newDeck.Cards.Add(card);
            }

            UpdateTitle();
            Helper.SortCardCollection(ListViewDeck.Items, Config.Instance.CardSortingClassFirst);
            ManaCurveMyDecks.UpdateValues();

            TagControlEdit.SetSelectedTags(deck.Tags);
        }
        internal async void UpdateDeckFromWeb(Deck existingDeck)
        {
            if (existingDeck == null || string.IsNullOrEmpty(existingDeck.Url))
            {
                return;
            }
            var deck = await DeckImporter.Import(existingDeck.Url);

            if (deck == null)
            {
                await this.ShowMessageAsync("Error", "Could not load deck from specified url.");

                return;
            }
            //this could be expanded to check against the last version of the deck that was not modified after downloading
            if (deck.Cards.All(c1 => existingDeck.GetSelectedDeckVersion().Cards.Any(c2 => c1.Name == c2.Name && c1.Count == c2.Count)) && deck.Name == existingDeck.Name)
            {
                await this.ShowMessageAsync("Already up to date.", "No changes found.");

                return;
            }

            var imported = (Deck)existingDeck.Clone();

            imported.Name = deck.Name;
            imported.Cards.Clear();
            foreach (var card in deck.Cards)
            {
                imported.Cards.Add(card);
            }
            ShowDeckEditorFlyout(imported, false);
            Helper.SortCardCollection(ListViewDeck.Items, Config.Instance.CardSortingClassFirst);
            ManaCurveMyDecks.UpdateValues();

            TagControlEdit.SetSelectedTags(deck.Tags);
        }