public WinLoss(List <GameStats> stats, string text, SerializableVersion version)
 {
     _percent = text == "%";
     _stats   = stats;
     Text     = text;
     Version  = version == null ? "ALL" : version.ToString("v{M}.{m}");
 }
		public bool Equals(SerializableVersion sv)
		{
			// If parameter is null return false:
			if((object)sv == null)
				return false;

			// Return true if the fields match:
			return Major == sv.Major && Minor == sv.Minor && Revision == sv.Revision && Build == sv.Build;
		}
Esempio n. 3
0
        public bool Equals(SerializableVersion sv)
        {
            // If parameter is null return false:
            if ((object)sv == null)
            {
                return(false);
            }

            // Return true if the fields match:
            return(this.Major == sv.Major && this.Minor == sv.Minor && this.Revision == sv.Revision && this.Build == sv.Build);
        }
        private void SaveDeckWithOverwriteCheck(SerializableVersion newVersion, bool saveAsNew = false)
        {
            if (saveAsNew)
            {
                EditingDeck = false;
                _newDeck.ResetVersions();
                _newDeck.ResetHearthstatsIds();
                _newDeck.DeckId   = Guid.NewGuid();
                _newDeck.Archived = false;
            }

            SaveDeck(EditingDeck, newVersion);
            DeckPickerList.UpdateArchivedClassVisibility();

            editedDeckName = string.Empty;
        }
Esempio n. 5
0
        private async Task SaveDeckWithOverwriteCheck(SerializableVersion newVersion, bool saveAsNew = false)
        {
            var deckName = TextBoxDeckName.Text;

            if (saveAsNew)
            {
                EditingDeck = false;
                _newDeck.ResetVersions();
            }
            else if (!EditingDeck && DeckList.DecksList.Any(d => d.Name == deckName))
            {
                var settings = new MetroDialogSettings {
                    AffirmativeButtonText = "Overwrite", NegativeButtonText = "Set new name"
                };

                var keepStatsInfo = Config.Instance.KeepStatsWhenDeletingDeck
                                                            ? "The stats will be moved to the default-deck (can be changed in options)"
                                                            : "The stats will be deleted (can be changed in options)";
                var result =
                    await
                    this.ShowMessageAsync("A deck with that name already exists", "Overwriting the deck can not be undone!\n" + keepStatsInfo,
                                          MessageDialogStyle.AffirmativeAndNegative, settings);

                if (result == MessageDialogResult.Affirmative)
                {
                    Deck oldDeck;
                    while ((oldDeck = DeckList.DecksList.FirstOrDefault(d => d.Name == deckName)) != null)
                    {
                        DeleteDeck(oldDeck);
                    }

                    SaveDeck(true, newVersion);
                }
                else if (result == MessageDialogResult.Negative)
                {
                    SaveDeck(false, newVersion);
                }
            }

            SaveDeck(EditingDeck, newVersion);

            editedDeckName = string.Empty;
        }
Esempio n. 6
0
        private async Task SaveDeckWithOverwriteCheck(SerializableVersion newVersion, bool saveAsNew = false)
        {
            var deckName = TextBoxDeckName.Text;

            if (saveAsNew)
            {
                EditingDeck = false;
                _newDeck.ResetVersions();
                _newDeck.ResetHearthstatsIds();
                _newDeck.DeckId   = Guid.NewGuid();
                _newDeck.Archived = false;
            }

            /*else if(!EditingDeck && DeckList.DecksList.Any(d => d.Name == deckName))
             * {
             *      var settings = new MetroDialogSettings {AffirmativeButtonText = "Overwrite", NegativeButtonText = "Set new name"};
             *
             *      var keepStatsInfo = Config.Instance.KeepStatsWhenDeletingDeck
             *                                  ? "The stats will be moved to the default-deck (can be changed in options)"
             *                                  : "The stats will be deleted (can be changed in options)";
             *      var result =
             *              await
             *              this.ShowMessageAsync("A deck with that name already exists", "Overwriting the deck can not be undone!\n" + keepStatsInfo,
             *                                    MessageDialogStyle.AffirmativeAndNegative, settings);
             *      if(result == MessageDialogResult.Affirmative)
             *      {
             *              Deck oldDeck;
             *              while((oldDeck = DeckList.DecksList.FirstOrDefault(d => d.Name == deckName)) != null)
             *                      DeleteDeck(oldDeck);
             *
             *              SaveDeck(true, newVersion);
             *      }
             *      else if(result == MessageDialogResult.Negative)
             *              SaveDeck(false, newVersion);
             * }*/

            SaveDeck(EditingDeck, newVersion);
            DeckPickerList.UpdateArchivedClassVisibility();

            editedDeckName = string.Empty;
        }
Esempio n. 7
0
        private async void SaveDeck(bool overwrite, SerializableVersion newVersion)
        {
            var deckName = TextBoxDeckName.Text;

            if (string.IsNullOrEmpty(deckName))
            {
                var settings = new MetroDialogSettings {
                    AffirmativeButtonText = "Set", DefaultText = deckName
                };

                var name = await this.ShowInputAsync("No name set", "Please set a name for the deck", settings);

                if (String.IsNullOrEmpty(name))
                {
                    return;
                }

                deckName             = name;
                TextBoxDeckName.Text = name;
            }

            /*while(DeckList.DecksList.Any(d => d.Name == deckName) && (!EditingDeck || !overwrite))
             * {
             *      var settings = new MetroDialogSettings {AffirmativeButtonText = "Set", DefaultText = deckName};
             *      var name =
             *              await
             *              this.ShowInputAsync("Name already exists", "You already have a deck with that name, please select a different one.", settings);
             *
             *      if(String.IsNullOrEmpty(name))
             *              return;
             *
             *      deckName = name;
             *      TextBoxDeckName.Text = name;
             * }*/

            if (_newDeck.Cards.Sum(c => c.Count) != 30)
            {
                var settings = new MetroDialogSettings {
                    AffirmativeButtonText = "Yes", NegativeButtonText = "No"
                };

                var result =
                    await
                    this.ShowMessageAsync("Not 30 cards",
                                          string.Format("Deck contains {0} cards. Is this what you want to save anyway?",
                                                        _newDeck.Cards.Sum(c => c.Count)), MessageDialogStyle.AffirmativeAndNegative, settings);

                if (result != MessageDialogResult.Affirmative)
                {
                    return;
                }
            }

            var previousVersion = _newDeck.Version;

            if (overwrite && (_newDeck.Version != newVersion))
            {
                AddDeckHistory();
                _newDeck.Version                  = newVersion;
                _newDeck.SelectedVersion          = newVersion;
                _newDeck.HearthStatsDeckVersionId = "";
                //UpdateDeckHistoryPanel(_newDeck, false);
            }

            if (EditingDeck && overwrite)
            {
                DeckList.Instance.Decks.Remove(_newDeck);
                //DeckPickerList.RemoveDeck(_newDeck);
            }

            var oldDeckName = _newDeck.Name;

            _newDeck.Name = deckName;

            var newDeckClone = (Deck)_newDeck.Clone();

            newDeckClone.Archived = false;

            DeckList.Instance.Decks.Add(newDeckClone);

            newDeckClone.LastEdited = DateTime.Now;

            DeckList.Save();

            Logger.WriteLine("Saved Decks", "SaveDeck");

            if (EditingDeck)
            {
                TagControlEdit.SetSelectedTags(new List <string>());
                if (deckName != oldDeckName)
                {
                    var statsEntry = DeckStatsList.Instance.DeckStats.FirstOrDefault(ds => ds.BelongsToDeck(_newDeck));
                    if (statsEntry != null)
                    {
                        if (overwrite)
                        {
                            statsEntry.Name = deckName;
                            Logger.WriteLine("Deck has new name, updated deckstats", "SaveDeck");
                        }
                        else
                        {
                            var newStatsEntry = DeckStatsList.Instance.DeckStats.FirstOrDefault(ds => ds.BelongsToDeck(_newDeck));
                            if (newStatsEntry == null)
                            {
                                newStatsEntry = new DeckStats(_newDeck);
                                DeckStatsList.Instance.DeckStats.Add(newStatsEntry);
                            }
                            foreach (var game in statsEntry.Games)
                            {
                                newStatsEntry.AddGameResult(game.CloneWithNewId());
                            }
                            Logger.WriteLine("cloned gamestats for \"Set as new\"", "SaveDeck");
                        }
                        DeckStatsList.Save();
                    }
                }
            }


            if (Config.Instance.HearthStatsAutoUploadNewDecks && HearthStatsAPI.IsLoggedIn)
            {
                Logger.WriteLine("auto uploading new/edited deck", "SaveDeck");
                if (EditingDeck)
                {
                    if (previousVersion != newVersion)
                    {
                        HearthStatsManager.UploadVersionAsync(newDeckClone, _originalDeck.HearthStatsIdForUploading, background: true);
                    }
                    else
                    {
                        HearthStatsManager.UpdateDeckAsync(newDeckClone, background: true);
                    }
                }
                else
                {
                    HearthStatsManager.UploadDeckAsync(newDeckClone, background: true);
                }
            }

            //after cloning the stats, otherwise new stats will be generated
            //DeckPickerList.AddAndSelectDeck(newDeckClone);

            EditingDeck = false;

            foreach (var tag in _newDeck.Tags)
            {
                SortFilterDecksFlyout.AddSelectedTag(tag);
            }

            DeckPickerList.SelectDeckAndAppropriateView(newDeckClone);
            CloseNewDeck();
            ClearNewDeckSection();
        }
			public WinLoss(List<GameStats> stats, string text, SerializableVersion version)
			{
				_percent = text == "%";
				_stats = stats;
				Text = text;
				Version = version == null ? "ALL" : version.ToString("v{M}.{m}");
			}
		private void SaveDeckWithOverwriteCheck(SerializableVersion newVersion, bool saveAsNew = false)
		{
			if(saveAsNew)
			{
				EditingDeck = false;
				_newDeck.ResetVersions();
				_newDeck.ResetHearthstatsIds();
				_newDeck.DeckId = Guid.NewGuid();
				_newDeck.Archived = false;
			}

			SaveDeck(EditingDeck, newVersion);
			DeckPickerList.UpdateArchivedClassVisibility();

			editedDeckName = string.Empty;
		}
		public async void SaveDeck(bool overwrite, SerializableVersion newVersion, bool workInProgressDeck = false)
		{
			var deckName = TextBoxDeckName.Text;

			if(string.IsNullOrEmpty(deckName))
			{
				var settings = new MetroDialogSettings {AffirmativeButtonText = "Set", DefaultText = deckName};

				var name = await this.ShowInputAsync("No name set", "Please set a name for the deck", settings);

				if(string.IsNullOrEmpty(name))
					return;

				deckName = name;
				TextBoxDeckName.Text = name;
			}

			if(_newDeck.Cards.Sum(c => c.Count) != 30 && workInProgressDeck == false)
			{
				var settings = new MetroDialogSettings {AffirmativeButtonText = "Yes", NegativeButtonText = "No"};

				var result =
					await
					this.ShowMessageAsync("Not 30 cards",
					                      string.Format("Deck contains {0} cards. Is this what you want to save anyway?",
					                                    _newDeck.Cards.Sum(c => c.Count)), MessageDialogStyle.AffirmativeAndNegative, settings);
				if(result != MessageDialogResult.Affirmative)
					return;
			}

			var previousVersion = _newDeck.Version;
			if(overwrite && (_newDeck.Version != newVersion))
			{
				AddDeckHistory();
				_newDeck.Version = newVersion;
				_newDeck.SelectedVersion = newVersion;
				_newDeck.HearthStatsDeckVersionId = "";
			}

			if(EditingDeck && overwrite)
				DeckList.Instance.Decks.Remove(_newDeck);

			var oldDeckName = _newDeck.Name;

			_newDeck.Name = deckName;

			var newDeckClone = (Deck)_newDeck.Clone();
			newDeckClone.Archived = false;

			DeckList.Instance.Decks.Add(newDeckClone);

			newDeckClone.LastEdited = DateTime.Now;

			DeckList.Save();

			Logger.WriteLine("Saved Decks", "SaveDeck");

			if(EditingDeck)
			{
				TagControlEdit.SetSelectedTags(new List<string>());
				if(deckName != oldDeckName)
				{
					var statsEntry = DeckStatsList.Instance.DeckStats.FirstOrDefault(ds => ds.BelongsToDeck(_newDeck));
					if(statsEntry != null)
					{
						if(overwrite)
						{
							statsEntry.Name = deckName;
							Logger.WriteLine("Deck has new name, updated deckstats", "SaveDeck");
							foreach(var game in statsEntry.Games)
								game.DeckName = deckName;
						}
						else
						{
							var newStatsEntry = DeckStatsList.Instance.DeckStats.FirstOrDefault(ds => ds.BelongsToDeck(_newDeck));
							if(newStatsEntry == null)
							{
								newStatsEntry = new DeckStats(_newDeck);
								DeckStatsList.Instance.DeckStats.Add(newStatsEntry);
							}
							foreach(var game in statsEntry.Games)
								newStatsEntry.AddGameResult(game.CloneWithNewId());
							Logger.WriteLine("cloned gamestats for \"Set as new\"", "SaveDeck");
						}
						DeckStatsList.Save();
					}
				}
			}


			if(Config.Instance.HearthStatsAutoUploadNewDecks && HearthStatsAPI.IsLoggedIn)
			{
				Logger.WriteLine("auto uploading new/edited deck", "SaveDeck");
				if(EditingDeck)
				{
					if(previousVersion != newVersion)
						HearthStatsManager.UploadVersionAsync(newDeckClone, _originalDeck.HearthStatsIdForUploading, background: true);
					else
						HearthStatsManager.UpdateDeckAsync(newDeckClone, background: true);
				}
				else
					HearthStatsManager.UploadDeckAsync(newDeckClone, background: true);
			}

			//after cloning the stats, otherwise new stats will be generated
			//DeckPickerList.AddAndSelectDeck(newDeckClone);
			if(EditingDeck)
				DeckManagerEvents.OnDeckUpdated.Execute(newDeckClone);
			else
				DeckManagerEvents.OnDeckCreated.Execute(newDeckClone);


			EditingDeck = false;

			foreach(var tag in _newDeck.Tags)
				SortFilterDecksFlyout.AddSelectedTag(tag);

			DeckPickerList.SelectDeckAndAppropriateView(newDeckClone);
			DeckPickerList.UpdateDecks(forceUpdate: new[] {newDeckClone});
			CloseNewDeck();
			ClearNewDeckSection();
		}
Esempio n. 11
0
 public static SerializableVersion IncreaseMinor(SerializableVersion sv)
 {
     return(new SerializableVersion(sv.Major, sv.Minor + 1));
 }
 public static SerializableVersion IncreaseMinor(SerializableVersion sv) => new SerializableVersion(sv.Major, sv.Minor + 1);
 private void ComboBoxVersions_OnSelectionChanged(object sender, SelectionChangedEventArgs e) => SelectedVersion = ComboBoxVersions.SelectedItem as SerializableVersion;
		public static SerializableVersion IncreaseMinor(SerializableVersion sv) => new SerializableVersion(sv.Major, sv.Minor + 1);
		private void ComboBoxVersions_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
		{
			SelectedVersion = ComboBoxVersions.SelectedItem as SerializableVersion;
		}
		public static SerializableVersion IncreaseMajor(SerializableVersion sv)
		{
			return new SerializableVersion(sv.Major + 1, 0);
		}