Exemple #1
0
        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}"
            });
        }