private static void ShowLoadGame(LoadGameMessage message) { GameRecording gr = null; try { OpenFileDialog dialog = new OpenFileDialog { Title = "Open Game", DefaultExt = ".pgn", Filter = "All Supported Files|*.pgn;*.sgf|Portable Game Notation|*.pgn|BoardSpace Smart Game Format|*.sgf", AddExtension = true }; if (dialog.ShowDialog(Application.Current.MainWindow).GetValueOrDefault()) { using (Stream inputStream = dialog.OpenFile()) { string fileName = dialog.SafeFileName; gr = Path.GetExtension(fileName).ToLower() == ".sgf" ? GameRecording.LoadSGF(inputStream, fileName) : GameRecording.LoadPGN(inputStream, fileName); } } } catch (Exception ex) { ExceptionUtils.HandleException(ex); } finally { message.Process(gr); } }
/// <summary> /// Load a game directory and build the directory tree. /// </summary> /// <param name="message"></param> private void LoadGame(LoadGameMessage message) { // Reset data _resourceService.PurgeResources(); Groups.Clear(); if (!Directory.Exists(message.Directory)) { throw new FileNotFoundException($"Invalid directory: {message.Directory}"); } foreach (var directory in Directory.EnumerateDirectories(message.Directory)) { Groups.Add(CreateTreeGroup(directory, message.Directory)); } foreach (var file in Directory.EnumerateFiles(message.Directory).OrderBy(k => k)) { var gameFile = new GameFile { Name = file.Replace($"{message.Directory}\\", ""), Extension = Path.GetExtension(file).Replace(".", ""), Resources = new ObservableCollection <GameResource>(), SubGroups = new ObservableCollection <ResourceGroup>(), FullPath = file }; gameFile.Actions = BuildActionList(gameFile); Groups.Add(gameFile); } _currentGame = message.Game; Messenger.Default.Send(new WindowTitleMessage { Title = $"OpenNFS | {message.Directory}" }); Messenger.Default.Send(new ConsoleLogMessage { Level = MessageLevel.Info, Message = $"Loaded game. Detected: {message.Game}" }); }