private async void Window_Loaded(object sender, RoutedEventArgs e) { try { await GameScanner.InitializeFromCelesteManifest(); var progress = new Progress <ScanProgress>(); var subProgress = new Progress <ScanSubProgress>(); progress.ProgressChanged += ProgressChanged; subProgress.ProgressChanged += SubProgressChanged; if (await Task.Run(async() => await GameScanner.ScanAndRepair(progress, subProgress, _useParallelDownloader ? 4 : 1))) { CurrentFileLabel.Content = string.Empty; MainProgressLabel.Content = Properties.Resources.GameScannerDoneLabel; FileProgress.ProgressBar.IsIndeterminate = false; GenericMessageDialog.Show(Properties.Resources.GameScannerDoneMessage, DialogIcon.None, DialogOptions.Ok); DialogResult = true; } else { FailGameScan(Properties.Resources.GameScannerDidNotPass); } } catch (Exception ex) { Logger.Error(ex, ex.Message); FailGameScan(Properties.Resources.GameScannerFailed); } }
static async Task <int> Main(string[] args) { var rootCommand = new RootCommand { new Option <string>( "--game-dir", description: "Path to the directory where Spartan.exe is located") { IsRequired = true }, new Option <bool>( "--is-steam", description: "Enabled for installations that are launchable through Steam"), new Option <bool>( "--verbose-mode", getDefaultValue: () => false, description: "Write more detailed log about progress"), }; rootCommand.Handler = CommandHandler.Create <string, bool, bool>(async(gameDir, isSteam, verboseMode) => { Console.WriteLine($"Starting game scan towards {gameDir}"); var gameScannner = new GameScannerManager(gameDir, isSteam); Console.WriteLine("Fetching manifest data"); await gameScannner.InitializeFromCelesteManifest(); Console.WriteLine("Scanning game files"); var progress = new Progress <ScanProgress>(); var subProgress = new Progress <ScanSubProgress>(); if (verboseMode) { subProgress.ProgressChanged += SubProgress_ProgressChanged; progress.ProgressChanged += Progress_ProgressChanged; } if (!await gameScannner.ScanAndRepair(progress, subProgress)) { Console.WriteLine("Scan completed: No game files were updated, everything up to date"); return(0); } else { Console.WriteLine("Gamescan has completed and updated game files"); return(0); } }); return(await rootCommand.InvokeAsync(args)); }
private async void GameScanProgressForm_Shown(object sender, EventArgs e) { var progress = new Progress <ScanProgress>(); progress.ProgressChanged += ProgressChanged; var subProgress = new Progress <ScanSubProgress>(); subProgress.ProgressChanged += SubProgressChanged; try { await _gameScanner.InitializeFromCelesteManifest(); if (await _gameScanner.ScanAndRepair(progress, subProgress, _concurrentDownload)) { MsgBox.ShowMessage(@"Game scan completed with success.", @"Celeste Fan Project", MessageBoxButtons.OK, MessageBoxIcon.Information); DialogResult = DialogResult.OK; } else { throw new Exception("Game scan failed"); } } catch (Exception ex) { _gameScanner?.Abort(); _gameScanner?.Dispose(); _gameScanner = null; MsgBox.ShowMessage("Exception:\r\n" + ex.Message, @"Celeste Fan Project", MessageBoxButtons.OK, MessageBoxIcon.Error); DialogResult = DialogResult.Cancel; } }