示例#1
0
        // Logic for dealing with legacy config file semantics
        // Use difference of versions to determine what should be done
        private void ConvertLegacyConfig(Version currentVersion, Version configVersion)
        {
            var converted = false;

            var v0_3_21 = new Version(0, 3, 21, 0);

            if (configVersion == null)            // Config was created prior to version tracking being introduced (v0.3.20)
            {
                Config.Instance.ResetAll();
                Config.Instance.CreatedByVersion = currentVersion.ToString();
                converted = true;
            }
            else
            {
                if (configVersion <= v0_3_21)
                {
                    // Config must be between v0.3.20 and v0.3.21 inclusive
                    // It was still possible in 0.3.21 to see (-32000, -32000) window positions
                    // under certain circumstances (GitHub issue #135).
                    if (Config.Instance.TrackerWindowLeft == -32000)
                    {
                        Config.Instance.Reset("TrackerWindowLeft");
                        converted = true;
                    }
                    if (Config.Instance.TrackerWindowTop == -32000)
                    {
                        Config.Instance.Reset("TrackerWindowTop");
                        converted = true;
                    }

                    if (Config.Instance.PlayerWindowLeft == -32000)
                    {
                        Config.Instance.Reset("PlayerWindowLeft");
                        converted = true;
                    }
                    if (Config.Instance.PlayerWindowTop == -32000)
                    {
                        Config.Instance.Reset("PlayerWindowTop");
                        converted = true;
                    }

                    if (Config.Instance.OpponentWindowLeft == -32000)
                    {
                        Config.Instance.Reset("OpponentWindowLeft");
                        converted = true;
                    }
                    if (Config.Instance.OpponentWindowTop == -32000)
                    {
                        Config.Instance.Reset("OpponentWindowTop");
                        converted = true;
                    }

                    if (Config.Instance.TimerWindowLeft == -32000)
                    {
                        Config.Instance.Reset("TimerWindowLeft");
                        converted = true;
                    }
                    if (Config.Instance.TimerWindowTop == -32000)
                    {
                        Config.Instance.Reset("TimerWindowTop");
                        converted = true;
                    }

                    //player scaling used to be increased by a very minimal about to circumvent some problem,
                    //should no longer be required. not sure is the increment is actually noticeable, but resetting can't hurt
                    if (Config.Instance.OverlayOpponentScaling > 100)
                    {
                        Config.Instance.OverlayOpponentScaling = 100;
                        converted = true;
                    }
                    if (Config.Instance.OverlayPlayerScaling > 100)
                    {
                        Config.Instance.OverlayPlayerScaling = 100;
                        converted = true;
                    }
                }


                if (configVersion <= new Version(0, 5, 1, 0))
                {
#pragma warning disable 612
                    Config.Instance.SaveConfigInAppData = Config.Instance.SaveInAppData;
                    Config.Instance.SaveDataInAppData   = Config.Instance.SaveInAppData;
                    converted = true;
#pragma warning restore 612
                }
            }

            if (converted)
            {
                Config.SaveBackup();
                Config.Save();
            }

            if (configVersion != null && currentVersion > configVersion)
            {
                _updatedVersion = currentVersion;
            }
        }
示例#2
0
		private async Task<string> InputDeckURL()
		{
			var settings = new MetroDialogSettings();
			var clipboard = Clipboard.ContainsText() ? Clipboard.GetText() : "";
			var validUrls = new[]
			{
				"hearthstats",
				"hss.io",
				"hearthpwn",
				"hearthhead",
				"hearthstoneplayers",
				"tempostorm",
				"hearthstonetopdeck",
				"hearthnews.fr",
				"arenavalue",
				"hearthstone-decks",
				"heartharena",
				"hearthstoneheroes",
				"elitedecks",
				"icy-veins",
				"hearthbuilder"
			};
			if(validUrls.Any(clipboard.Contains))
				settings.DefaultText = clipboard;

			if(Config.Instance.DisplayNetDeckAd)
			{
				var result =
					await
					this.ShowMessageAsync("NetDeck",
					                      "For easier (one-click!) web importing check out the NetDeck Chrome Extension!\n\n(This message will not be displayed again, no worries.)",
					                      MessageDialogStyle.AffirmativeAndNegative,
					                      new MetroDialogSettings {AffirmativeButtonText = "Show me!", NegativeButtonText = "No thanks"});

				if(result == MessageDialogResult.Affirmative)
				{
					Process.Start("https://chrome.google.com/webstore/detail/netdeck/lpdbiakcpmcppnpchohihcbdnojlgeel");
					var enableOptionResult =
						await
						this.ShowMessageAsync("Enable one-click importing?",
						                      "Would you like to enable one-click importing via NetDeck?\n(options > other > importing)",
						                      MessageDialogStyle.AffirmativeAndNegative,
						                      new MetroDialogSettings {AffirmativeButtonText = "Yes", NegativeButtonText = "No"});
					if(enableOptionResult == MessageDialogResult.Affirmative)
					{
						Options.OptionsTrackerImporting.CheckboxImportNetDeck.IsChecked = true;
						Config.Instance.NetDeckClipboardCheck = true;
						Config.Save();
					}
				}

				Config.Instance.DisplayNetDeckAd = false;
				Config.Save();
			}


			//import dialog
			var url =
				await this.ShowInputAsync("Import deck", "Supported websites:\n" + validUrls.Aggregate((x, next) => x + ", " + next), settings);
			return url;
		}
示例#3
0
        // Logic for dealing with legacy config file semantics
        // Use difference of versions to determine what should be done
        private void ConvertLegacyConfig(Version currentVersion, Version configVersion)
        {
            var converted = false;

            var v0_3_21 = new Version(0, 3, 21, 0);

            if (configVersion == null)            // Config was created prior to version tracking being introduced (v0.3.20)
            {
                Config.Instance.ResetAll();
                Config.Instance.CreatedByVersion = currentVersion.ToString();
                converted = true;
            }
            else
            {
                if (configVersion <= v0_3_21)
                {
                    // Config must be between v0.3.20 and v0.3.21 inclusive
                    // It was still possible in 0.3.21 to see (-32000, -32000) window positions
                    // under certain circumstances (GitHub issue #135).
                    if (Config.Instance.TrackerWindowLeft == -32000)
                    {
                        Config.Instance.Reset("TrackerWindowLeft");
                        converted = true;
                    }
                    if (Config.Instance.TrackerWindowTop == -32000)
                    {
                        Config.Instance.Reset("TrackerWindowTop");
                        converted = true;
                    }

                    if (Config.Instance.PlayerWindowLeft == -32000)
                    {
                        Config.Instance.Reset("PlayerWindowLeft");
                        converted = true;
                    }
                    if (Config.Instance.PlayerWindowTop == -32000)
                    {
                        Config.Instance.Reset("PlayerWindowTop");
                        converted = true;
                    }

                    if (Config.Instance.OpponentWindowLeft == -32000)
                    {
                        Config.Instance.Reset("OpponentWindowLeft");
                        converted = true;
                    }
                    if (Config.Instance.OpponentWindowTop == -32000)
                    {
                        Config.Instance.Reset("OpponentWindowTop");
                        converted = true;
                    }

                    if (Config.Instance.TimerWindowLeft == -32000)
                    {
                        Config.Instance.Reset("TimerWindowLeft");
                        converted = true;
                    }
                    if (Config.Instance.TimerWindowTop == -32000)
                    {
                        Config.Instance.Reset("TimerWindowTop");
                        converted = true;
                    }

                    //player scaling used to be increased by a very minimal about to circumvent some problem,
                    //should no longer be required. not sure is the increment is actually noticeable, but resetting can't hurt
                    if (Config.Instance.OverlayOpponentScaling > 100)
                    {
                        Config.Instance.OverlayOpponentScaling = 100;
                        converted = true;
                    }
                    if (Config.Instance.OverlayPlayerScaling > 100)
                    {
                        Config.Instance.OverlayPlayerScaling = 100;
                        converted = true;
                    }
                }


                if (configVersion <= new Version(0, 5, 1, 0))
                {
#pragma warning disable 612
                    Config.Instance.SaveConfigInAppData = Config.Instance.SaveInAppData;
                    Config.Instance.SaveDataInAppData   = Config.Instance.SaveInAppData;
                    converted = true;
#pragma warning restore 612
                }
                if (configVersion <= new Version(0, 6, 6, 0))
                {
                    if (Config.Instance.ExportClearX == 0.86)
                    {
                        Config.Instance.Reset("ExportClearX");
                        converted = true;
                    }
                    if (Config.Instance.ExportClearY == 0.16)
                    {
                        Config.Instance.Reset("ExportClearY");
                        converted = true;
                    }
                    if (Config.Instance.ExportClearCheckYFixed == 0.2)
                    {
                        Config.Instance.Reset("ExportClearCheckYFixed");
                        converted = true;
                    }
                }
                if (configVersion <= new Version(0, 7, 6, 0))
                {
                    if (Config.Instance.ExportCard1X != 0.04)
                    {
                        Config.Instance.Reset("ExportCard1X");
                        converted = true;
                    }
                    if (Config.Instance.ExportCard2X != 0.2)
                    {
                        Config.Instance.Reset("ExportCard2X");
                        converted = true;
                    }
                    if (Config.Instance.ExportCardsY != 0.168)
                    {
                        Config.Instance.Reset("ExportCardsY");
                        converted = true;
                    }
                }
                if (configVersion <= new Version(0, 9, 6, 0))
                {
                    if (!Config.Instance.PanelOrderPlayer.Contains("Fatigue Counter"))
                    {
                        Config.Instance.Reset("PanelOrderPlayer");
                        converted = true;
                    }
                    if (!Config.Instance.PanelOrderOpponent.Contains("Fatigue Counter"))
                    {
                        Config.Instance.Reset("PanelOrderOpponent");
                        converted = true;
                    }
                }
                if (configVersion <= new Version(0, 10, 10, 0))                //button moved up with new expansion added to the list
                {
                    Config.Instance.Reset("ExportAllSetsButtonY");
                    converted = true;
                }
                if (configVersion <= new Version(0, 11, 1, 0))
                {
                    if (Config.Instance.GoldProgressLastReset.Length < 5)
                    {
                        Config.Instance.GoldProgressLastReset = new[] { DateTime.MinValue, DateTime.MinValue, DateTime.MinValue, DateTime.MinValue, DateTime.MinValue };
                        converted = true;
                    }
                    if (Config.Instance.GoldProgress.Length < 5)
                    {
                        Config.Instance.Reset("GoldProgress");
                        converted = true;
                    }
                    if (Config.Instance.GoldProgressTotal.Length < 5)
                    {
                        Config.Instance.Reset("GoldProgressTotal");
                        converted = true;
                    }
                }
            }

            if (converted)
            {
                Logger.WriteLine("changed config values", "ConvertLegacyConfig");
                //Config.SaveBackup();
                Config.Save();
            }

            if (configVersion != null && currentVersion > configVersion)
            {
                _updatedVersion = currentVersion;
            }
        }
        public static void Initialize()
        {
            Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory);
            var newUser = !Directory.Exists(Config.AppDataPath);

            Config.Load();
            Log.Initialize();
            ConfigManager.Run();
            LogConfigUpdater.Run().Forget();
            LogConfigWatcher.Start();
            Helper.UpdateAppTheme();
            ThemeManager.Run();
            var splashScreenWindow = new SplashScreenWindow();

            splashScreenWindow.ShowConditional();
            Game = new GameV2();
            LoginType loginType;
            var       loggedIn = HearthStatsAPI.LoadCredentials();

            if (!loggedIn && Config.Instance.ShowLoginDialog)
            {
                var loginWindow = new LoginWindow();
                splashScreenWindow.Close();
                loginWindow.ShowDialog();
                if (loginWindow.LoginResult == LoginType.None)
                {
                    Application.Current.Shutdown();
                    return;
                }
                loginType          = loginWindow.LoginResult;
                splashScreenWindow = new SplashScreenWindow();
                splashScreenWindow.ShowConditional();
            }
            else
            {
                loginType = loggedIn ? LoginType.AutoLogin : LoginType.AutoGuest;
            }
            MainWindow = new MainWindow();
            MainWindow.LoadConfigSettings();
            if (Config.Instance.ReselectLastDeckUsed)
            {
                MainWindow.SelectLastUsedDeck();
                Config.Instance.ReselectLastDeckUsed = false;
                Config.Save();
            }
            MainWindow.Show();
            splashScreenWindow.Close();

            if (ConfigManager.UpdatedVersion != null)
            {
                Updater.Cleanup();
                MainWindow.FlyoutUpdateNotes.IsOpen = true;
                MainWindow.UpdateNotesControl.SetHighlight(ConfigManager.PreviousVersion);
                MainWindow.UpdateNotesControl.LoadUpdateNotes();
            }
            NetDeck.CheckForChromeExtention();
            DataIssueResolver.Run();

            Helper.CopyReplayFiles();
            BackupManager.Run();

            if (Config.Instance.PlayerWindowOnStart)
            {
                Windows.PlayerWindow.Show();
            }
            if (Config.Instance.OpponentWindowOnStart)
            {
                Windows.OpponentWindow.Show();
            }
            if (Config.Instance.TimerWindowOnStartup)
            {
                Windows.TimerWindow.Show();
            }

            if (Config.Instance.HearthStatsSyncOnStart && HearthStatsAPI.IsLoggedIn)
            {
                HearthStatsManager.SyncAsync(background: true);
            }

            PluginManager.Instance.LoadPlugins();
            MainWindow.Options.OptionsTrackerPlugins.Load();
            PluginManager.Instance.StartUpdateAsync();

            UpdateOverlayAsync();

            if (Helper.HearthstoneDirExists)
            {
                if (LogConfigUpdater.LogConfigUpdateFailed)
                {
                    MainWindow.ShowLogConfigUpdateFailedMessage().Forget();
                }
                else if (LogConfigUpdater.LogConfigUpdated && Game.IsRunning)
                {
                    MainWindow.ShowMessageAsync("Hearthstone restart required", "The log.config file has been updated. HDT may not work properly until Hearthstone has been restarted.");
                    Overlay.ShowRestartRequiredWarning();
                }
                LogReaderManager.Start(Game);
            }
            else
            {
                MainWindow.ShowHsNotInstalledMessage().Forget();
            }

            NewsUpdater.UpdateAsync();
            HotKeyManager.Load();

            if (Helper.HearthstoneDirExists && Config.Instance.StartHearthstoneWithHDT && !Game.IsRunning)
            {
                Helper.StartHearthstoneAsync();
            }

            Initialized = true;

            Analytics.Analytics.TrackPageView($"/app/v{Helper.GetCurrentVersion().ToVersionString()}/{loginType.ToString().ToLower()}{(newUser ? "/new" : "")}", "");
        }