// 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; } }
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; }
// 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" : "")}", ""); }