public static async Task <bool> ShowReplay(GameStats game, bool showToast) { if (game == null) { return(false); } if (Config.Instance.ForceLocalReplayViewer) { ReplayReader.LaunchReplayViewer(game.ReplayFile, false); return(true); } Action <ReplayProgress> setToastStatus = null; if (game.HasReplayFile && !game.HsReplay.Uploaded) { if (showToast) { setToastStatus = ToastManager.ShowReplayProgressToast(); } var log = GetLogFromHdtReplay(game.ReplayFile).ToArray(); var validationResult = LogValidator.Validate(log); if (validationResult.IsValid) { await LogUploader.Upload(log, null, game); } else { Log.Error("Invalid log: " + validationResult.Reason); game.HsReplay.Unsupported = true; } if (DefaultDeckStats.Instance.DeckStats.Any(x => x.DeckId == game.DeckId)) { DefaultDeckStats.Save(); } else { DeckStatsList.Save(); } } if (game.HsReplay?.Uploaded ?? false) { setToastStatus?.Invoke(ReplayProgress.Complete); Helper.TryOpenUrl(game.HsReplay?.Url); } else if (game.HasReplayFile) { setToastStatus?.Invoke(ReplayProgress.Error); ReplayReader.LaunchReplayViewer(game.ReplayFile, true); } else { setToastStatus?.Invoke(ReplayProgress.Error); return(false); } return(true); }
private void ButtonShowReplay_OnClick(object sender, RoutedEventArgs e) { if (SelectedGame == null) { return; } if (SelectedGame.HasReplayFile) { ReplayReader.LaunchReplayViewer(SelectedGame.ReplayFile); } }
private void MenuItemReplayLastGame_OnClick(object sender, RoutedEventArgs e) { try { var newest = Directory.GetFiles(Config.Instance.ReplayDir).Select(x => new FileInfo(x)).OrderByDescending(x => x.CreationTime).FirstOrDefault(); if (newest != null) { ReplayReader.LaunchReplayViewer(newest.FullName); } } catch (Exception ex) { Log.Error(ex); } }
public static async Task ShowReplay(string fileName, bool showToast) { if (Config.Instance.ForceLocalReplayViewer) { ReplayReader.LaunchReplayViewer(fileName, false); return; } Action <ReplayProgress> setToastStatus = null; var log = GetLogFromHdtReplay(fileName).ToArray(); var validationResult = LogValidator.Validate(log); if (validationResult.IsValid) { if (showToast) { setToastStatus = ToastManager.ShowReplayProgressToast(); } setToastStatus?.Invoke(ReplayProgress.Uploading); var file = new FileInfo(fileName); var hsBuild = BuildDates.GetByDate(file.LastWriteTime); var metaData = hsBuild != null ? new GameMetaData() { HearthstoneBuild = hsBuild } : null; var gameStats = hsBuild != null ? new GameStats() { StartTime = file.LastWriteTime } : null; var success = await LogUploader.Upload(log.ToArray(), metaData, gameStats); if (success) { Helper.TryOpenUrl(gameStats?.HsReplay?.Url); } else { ReplayReader.LaunchReplayViewer(fileName, true); } } else { Log.Error("Invalid log: " + validationResult.Reason); ReplayReader.LaunchReplayViewer(fileName, true); } setToastStatus?.Invoke(ReplayProgress.Complete); }
private void OpenGameDetails(GameStats selected) { if (selected != null) { if (selected.HasReplayFile && !Keyboard.IsKeyDown(Key.LeftCtrl)) //hold ctrl to open old game viewer { ReplayReader.LaunchReplayViewer(selected.ReplayFile); } else if (Config.Instance.StatsInWindow) { Core.Windows.StatsWindow.GameDetailsFlyout.SetGame(selected); Core.Windows.StatsWindow.FlyoutGameDetails.Header = selected.ToString(); Core.Windows.StatsWindow.FlyoutGameDetails.IsOpen = true; } else { Core.MainWindow.GameDetailsFlyout.SetGame(selected); Core.MainWindow.FlyoutGameDetails.Header = selected.ToString(); Core.MainWindow.FlyoutGameDetails.IsOpen = true; } } }
private void MenuItemReplayFromFile_OnClick(object sender, RoutedEventArgs e) { try { var dialog = new OpenFileDialog { Title = "Select Replay File", DefaultExt = "*.hdtreplay", Filter = "HDT Replay|*.hdtreplay", InitialDirectory = Config.Instance.ReplayDir }; var dialogResult = dialog.ShowDialog(); if (dialogResult == System.Windows.Forms.DialogResult.OK) { ReplayReader.LaunchReplayViewer(dialog.FileName); } } catch (Exception ex) { Log.Error(ex); } }