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);
        }
Ejemplo n.º 2
0
 private void ButtonShowReplay_OnClick(object sender, RoutedEventArgs e)
 {
     if (SelectedGame == null)
     {
         return;
     }
     if (SelectedGame.HasReplayFile)
     {
         ReplayReader.LaunchReplayViewer(SelectedGame.ReplayFile);
     }
 }
Ejemplo n.º 3
0
 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);
        }
Ejemplo n.º 5
0
 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;
         }
     }
 }
Ejemplo n.º 6
0
 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);
     }
 }