Пример #1
0
        public static IGame Read(string filePath)
        {
            _rooms   = new Dictionary <int, IRoom>();
            _enemies = new List <IEnemy>();
            IPlayer player;

            try
            {
                var json = JObject.Parse(File.ReadAllText(filePath));

                var connections = new Dictionary <int, List <IConnection> >();

                SetRooms(json, connections);
                SetConnections(json, connections);

                var playerJToken        = json["player"];
                var playerStartLocation = EntityLocationFactory.CreateEntityLocation(_rooms, playerJToken);
                player = PlayerFactory.CreatePlayer(playerJToken, playerStartLocation);
            }
            catch (Exception e)
            {
                throw new JsonException("The provided JSON level file is not valid.", e);
            }

            return(GameFactory.CreateGame(player, _enemies));
        }
Пример #2
0
        private void ButtonCreate_OnClick(object sender, RoutedEventArgs e)
        {
            if (ComboBoxIP.SelectedItem == null || TextBoxGameName.Text == "" || TextBoxPort.Text == "" ||
                TextBoxPseudo.Text == "")
            {
                _mainWindow.ShowMessageAsync("Paramètres incorrects", "Veuillez remplir tout les champs.");
                return;
            }
            Uri uri =
                new Uri("net.tcp://" + ComboBoxIP.SelectedItem + ":" + TextBoxPort.Text + "/" + TextBoxGameName.Text +
                        TextBoxPseudo.Text);
            WaitJoinWindow waitJoinWindow = new WaitJoinWindow(uri, GetComboBoxColor());

            if (waitJoinWindow.ShowDialog() == true)
            {
                GameFactory gameFactory = new GameFactory();
                BoardView   boardView   = new BoardView(_container);
                Core.Game   game        = gameFactory.CreateGame(Mode.Network, _container, boardView, GetComboBoxColor(), null);
                _mainWindow.MainControl.Content = new GameView(_mainWindow, game, boardView);
            }
            else
            {
                // Attention : pratique choquante
                try
                {
                    NetworkServiceHost.Close();
                }
                catch (Exception)
                {
                    ; //Rien à faire (technique de pro)
                }
                _mainWindow.ShowMessageAsync("Erreur réseau", "Il y a eu un problème lors de la connexion avec l'autre joueur... Vueillez réessayer.");
            }
        }
Пример #3
0
        private void GetInputData_Click(object sender, RoutedEventArgs e)
        {
            Game nextGame = GameFactory.CreateGame(nextGameType.Text, 1, Countries.None, DateTime.Now, new Match(null, null));

            Matches.Add(nextGame);
            bool editResult = dataGrid.CommitEdit();
        }
Пример #4
0
        public void LoadGeneralsMaps()
        {
            var rootFolder   = InstalledFilesTestData.GetInstallationDirectory(SageGame.CncGenerals);
            var installation = new GameInstallation(new GeneralsDefinition(), rootFolder);
            var fileSystem   = installation.CreateFileSystem();

            var maps = fileSystem.GetFiles("maps").Where(x => x.FilePath.EndsWith(".map")).ToList();

            Platform.Start();

            using (var window = new GameWindow("OpenSAGE test runner", 100, 100, 800, 600, GraphicsBackend.Direct3D11))
            {
                using (var game = GameFactory.CreateGame(installation, fileSystem, GamePanel.FromGameWindow(window)))
                {
                    foreach (var map in maps)
                    {
                        _testOutputHelper.WriteLine($"Loading {map.FilePath}...");

                        var scene = game.ContentManager.Load <Scene3D>(map.FilePath);
                        Assert.NotNull(scene);

                        game.ContentManager.Unload();
                    }
                }
            }

            Platform.Stop();
        }
Пример #5
0
        private void LocalGameButton_OnClick(object sender, RoutedEventArgs e)
        {
            var gameFactory = new GameFactory();
            var boardView   = new BoardView(_container);
            var game        = gameFactory.CreateGame(Mode.Local, _container, boardView, Color.White, null);

            _mainWindow.MainControl.Content = new GameView(_mainWindow, game, boardView);
        }
Пример #6
0
        private void Engine_Click(object sender, RoutedEventArgs e)
        {
            var gameFactory = new GameFactory();
            var boardView   = new BoardView(new Container());
            var game        = gameFactory.CreateGame(Mode.Engine, new Container(), boardView, Color.White, null);

            _mainWindow.MainControl.Content = new GameView(_mainWindow, game, boardView);
        }
Пример #7
0
        public GameView Generate([FromServices] GameFactory gameFactory, int complexity, int seed)
        {
            var definitionFactory = new GameDefinitionFactory();
            var gameDef           = definitionFactory.GenerateGame(complexity, seed);
            var game = gameFactory.CreateGame(gameDef);

            return(new GameView(game, game.Players.First()));
        }
Пример #8
0
        public static void Main(string[] args)
        {
            var    noShellMap = false;
            var    definition = GameDefinition.FromGame(SageGame.CncGenerals);
            string mapName    = null;

            ArgumentSyntax.Parse(args, syntax =>
            {
                syntax.DefineOption("noshellmap", ref noShellMap, false, "Disables loading the shell map, speeding up startup time.");

                string gameName    = null;
                var availableGames = string.Join(", ", GameDefinition.All.Select(def => def.Game.ToString()));

                syntax.DefineOption("game", ref gameName, false, $"Chooses which game to start. Valid options: {availableGames}");

                // If a game has been specified, make sure it's valid.
                if (gameName != null && !GameDefinition.TryGetByName(gameName, out definition))
                {
                    syntax.ReportError($"Unknown game: {gameName}");
                }

                syntax.DefineOption("map", ref mapName, false,
                                    "Immediately starts a new skirmish with default settings in the specified map. The map file must be specified with the full path.");
            });

            Platform.CurrentPlatform = new Sdl2Platform();
            Platform.CurrentPlatform.Start();

            // TODO: Support other locators.
            var locator = new RegistryInstallationLocator();

            var game = GameFactory.CreateGame(
                definition,
                locator,
                // TODO: Read game version from assembly metadata or .git folder
                // TODO: Set window icon.
                () => Platform.CurrentPlatform.CreateWindow("OpenSAGE (master)", 100, 100, 1024, 768));

            game.Configuration.LoadShellMap = !noShellMap;

            if (mapName == null)
            {
                game.ShowMainMenu();
            }
            else
            {
                game.StartGame(mapName, new EchoConnection(), new[] { "America", "GLA" }, 0);
            }

            while (game.IsRunning)
            {
                game.Tick();
            }

            Platform.CurrentPlatform.Stop();
        }
Пример #9
0
        public void LessThanThree_PlayerCount_ReturnsErrorMessage()
        {
            var gameSettings = new GameSettings {
                PlayerCount = 2
            };

            (string message, Game game) = GameFactory.CreateGame(gameSettings);
            Assert.NotNull(message);
            Assert.Null(game);
        }
        private static void Main()
        {
            Log.Initialize();

            var game = GameFactory.CreateGame();

            game.Play();

            Log.Close();
        }
Пример #11
0
        public void LessOrEqualThanZero_ChipsPerPlayer_ReturnsErrorMessage()
        {
            var gameSettings = new GameSettings {
                ChipsPerPlayer = 0
            };

            (string message, Game game) = GameFactory.CreateGame(gameSettings);
            Assert.NotNull(message);
            Assert.Null(game);
        }
Пример #12
0
        private void ChangeInstallation(GameInstallation installation)
        {
            _selectedInstallation = installation;

            _imGuiRenderer.ClearCachedImageResources();

            RemoveAndDispose(ref _contentView);
            _files = null;
            RemoveAndDispose(ref _game);
            RemoveAndDispose(ref _gamePanel);
            RemoveAndDispose(ref _fileSystem);
            RemoveAndDispose(ref _launcherImage);

            if (installation == null)
            {
                _files = new List <FileSystemEntry>();
                return;
            }

            _fileSystem = AddDisposable(installation.CreateFileSystem());

            var launcherImagePath = installation.Game.LauncherImagePath;

            if (launcherImagePath != null)
            {
                var prefixLang = installation.Game.LauncherImagePrefixLang;
                if (prefixLang)
                {
                    var lang = LanguageUtility.ReadCurrentLanguage(installation.Game, _fileSystem.RootDirectory);
                    launcherImagePath = lang + launcherImagePath;
                }

                var launcherImageEntry = _fileSystem.GetFile(launcherImagePath);

                if (launcherImageEntry != null)
                {
                    _launcherImage = AddDisposable(new ImageSharpTexture(launcherImageEntry.Open()).CreateDeviceTexture(
                                                       _gameWindow.GraphicsDevice, _gameWindow.GraphicsDevice.ResourceFactory));
                }
            }

            _files = _fileSystem.Files.OrderBy(x => x.FilePath).ToList();

            _currentFile = -1;

            _gamePanel = AddDisposable(new ImGuiGamePanel(_gameWindow));
            _gamePanel.EnsureFrame(new Mathematics.Rectangle(0, 0, 100, 100));

            _game = AddDisposable(GameFactory.CreateGame(
                                      installation,
                                      _fileSystem,
                                      _gamePanel));

            //InstallationChanged?.Invoke(this, new InstallationChangedEventArgs(installation, _fileSystem));
        }
Пример #13
0
        public Game ConvertGameResultToGame(GameResult result, string tournamentName = "")
        {
            Game game = _factory.CreateGame(result, tournamentName);

            game.Contestants[0].Score = result.Player1Set1Score + result.Player1Set2Score + result.Player1Set3Score;
            game.Contestants[1].Score = result.Player2Set1Score + result.Player2Set1Score + result.Player2Set3Score;
            game.Winner = game.Contestants[0].Score > game.Contestants[1].Score
                ? game.Contestants[0]
                : game.Contestants[1];
            return(game);
        }
Пример #14
0
        public void Correct_GameSettings_ReturnsNoErrorMessage()
        {
            var gameSettings = new GameSettings
            {
                PlayerCount    = 3,
                ChipsPerPlayer = 1
            };

            (string message, Game game) = GameFactory.CreateGame(gameSettings);
            Assert.Empty(message);
            Assert.NotNull(game);
        }
        private void Start(object sender, EventArgs e)
        {
            Map map = mapSettingsControl.GetMap();

            IList <AiPlayer> aiPlayers = aiPlayerSettingsControl.GetPlayers();

            IList <Player> players = new List <Player>();

            foreach (AiPlayer aiPlayer in aiPlayers)
            {
                players.Add(aiPlayer);
            }

            players.Add(myHumanPlayerControl.GetPlayer());

            foreach (Player player in humanPlayerSettingsControl.GetPlayers())
            {
                players.Add(player);
            }

            Game game = null;

            using (UtilsDbContext db = new UtilsDbContext())
            {
                IEnumerable <HotseatSavedGameInfo> savedGamesEnum = db.HotseatSavedGameInfos.ToList();
                HotseatSavedGameInfo lastGame = savedGamesEnum.LastOrDefault();
                int gameId = 1;
                if (lastGame != null)
                {
                    gameId = lastGame.Id + 1;
                }

                var factory = new GameFactory();
                game = factory.CreateGame(gameId, GameType.MultiplayerHotseat, map, players, fogOfWar: fogOfWarCheckBox.Checked);


                // TEST

                /*NetworkObjectWrapper wrapper = new NetworkObjectWrapper<Game>() {TypedValue = game};
                 * using (var ms = new MemoryStream())
                 * {
                 *  wrapper.Serialize(ms);
                 *
                 *  ms.Position = 0;
                 *
                 *  var obj = NetworkObjectWrapper.Deserialize(ms).Value;
                 * }*/
                // END TEST
            }

            OnGameStarted?.Invoke(game);
        }
Пример #16
0
        public async Task CreateRoom()
        {
            int gameCode;

            do
            {
                gameCode = new Random().Next(1000, 9999);
            } while (games.ContainsKey(gameCode));

            games.Add(gameCode, GameFactory.CreateGame(gameCode, Context.ConnectionId));
            Console.WriteLine("connId: " + Context.ConnectionId);
            await Clients.Client(Context.ConnectionId).SendAsync("OnRoomCreated", gameCode);
        }
Пример #17
0
        /// <summary>
        /// Teacher Session Game - GameSession don't need to keep track, so that GarbageCollector can be activated once no client is pointing a reference
        /// to the Game object.
        /// </summary>
        /// <param name="r"></param>
        /// <param name="game"></param>
        /// <returns></returns>
        public bool Create(WaitingRoom r, out Game[] game)
        {
            game = GameFactory.CreateGame(r);
            string prefix  = r.GetIdentifier();
            int    i       = 1;
            var    success = game.Where(x => x == null).Count() == 0;

            if (!success)
            {
                return(false);
            }
            return(success);
        }
 /// <summary>
 /// Handles room creation once the ready timer has ended
 /// </summary>
 /// <param name="id">the id of the room</param>
 public void HandleReadyTimerEnded(string id)
 {
     //make sure room exists
     if (RoomManager.Rooms.ContainsKey(id))
     {
         //create a game room to replace the existing room
         var game = GameFactory.CreateGame(RoomManager.Rooms[id]);
         if (game != null)
         {
             //replace the room
             RoomManager.RemoveRoom(game.RoomID);
             RoomManager.AddRoom(game);
         }
     }
 }
        public void It_creates_game_object_with_2_players()
        {
            // Arrange
            var humanPlayer    = new HumanPlayer("humanPlayerTest");
            var computerPlayer = new ComputerPlayer();

            _sut = new GameFactory();

            // Act
            var result = _sut.CreateGame(humanPlayer, computerPlayer);

            // Assert
            result.Should().NotBeNull();
            result.Should().BeOfType <Game>();
        }
Пример #20
0
        private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
        {
            //TODO le controle pour l'antoine
            var gameFactory = new GameFactory();
            var boardView   = new BoardView(_container);
            var skillLevel  = ComboBoxLevel.SelectedValue as int? ?? 0;
            var searchValue = ComboBoxValue.SelectedValue as int? ?? 0;
            var game        = gameFactory.CreateGame(Mode.Ai, _container, boardView, Color.White, new GameCreatorParameters()
            {
                AiSearchType  = ComboBoxSearchMode.SelectedIndex == 0 ? "depth" : "movetime",
                AiSearchValue = searchValue,
                AiSkillLevel  = skillLevel
            });

            _mainWindow.MainControl.Content = new GameView(_mainWindow, game, boardView);
        }
Пример #21
0
        public void TestGameFactory()
        {
            Action a = () => GameFactory.CreateGame("", new string[0], new string[0]);

            Assert.Throws <System.ArgumentOutOfRangeException>(a);

            Dictionary <string, string> validgames = new Dictionary <string, string>()
            {
                { "ithaka", "Ithaka" }
            };

            foreach (var pair in validgames)
            {
                Assert.Equal(pair.Value, GameFactory.CreateGame(pair.Key, new string[] { "10", "20" }, new string[0]).Meta_name);
            }
        }
Пример #22
0
        private void ChangeInstallation(GameInstallation installation)
        {
            _selectedInstallation = installation;

            _imGuiRenderer.ClearCachedImageResources();

            RemoveAndDispose(ref _contentView);
            _files = null;
            RemoveAndDispose(ref _game);
            RemoveAndDispose(ref _gamePanel);
            RemoveAndDispose(ref _fileSystem);
            RemoveAndDispose(ref _launcherImage);

            if (installation == null)
            {
                _files = new List <FileSystemEntry>();
                return;
            }

            var launcherImagePath = installation.Game.LauncherImagePath;

            if (launcherImagePath != null)
            {
                var fullImagePath = Path.Combine(installation.Path, launcherImagePath);
                if (File.Exists(fullImagePath))
                {
                    _launcherImage = AddDisposable(new ImageSharpTexture(fullImagePath).CreateDeviceTexture(
                                                       _gameWindow.GraphicsDevice, _gameWindow.GraphicsDevice.ResourceFactory));
                }
            }

            _fileSystem = AddDisposable(installation.CreateFileSystem());

            _files = _fileSystem.Files.OrderBy(x => x.FilePath).ToList();

            _currentFile = -1;

            _gamePanel = AddDisposable(new ImGuiGamePanel(_gameWindow));
            _gamePanel.EnsureFrame(new Mathematics.Rectangle(0, 0, 100, 100));

            _game = AddDisposable(GameFactory.CreateGame(
                                      installation,
                                      _fileSystem,
                                      _gamePanel));

            //InstallationChanged?.Invoke(this, new InstallationChangedEventArgs(installation, _fileSystem));
        }
        private void Start(object sender, EventArgs e)
        {
            try
            {
                Map map = mapSettingsControl.GetMap();

                IList <AiPlayer> aiPlayers = aiPlayerSettingsControl.GetPlayers();

                IList <Player> players = new List <Player>();
                foreach (AiPlayer aiPlayer in aiPlayers)
                {
                    players.Add(aiPlayer);
                }

                players.Add(myHumanPlayerControl.GetPlayer());

                Game game = null;
                // generate id for the game
                using (UtilsDbContext db = new UtilsDbContext())
                {
                    IEnumerable <SingleplayerSavedGameInfo> savedGamesEnum =
                        db.SingleplayerSavedGameInfos.AsEnumerable();
                    SingleplayerSavedGameInfo lastGame = savedGamesEnum.LastOrDefault();
                    int gameId = 1;
                    if (lastGame != null)
                    {
                        gameId = lastGame.Id + 1;
                    }

                    var factory = new GameFactory();
                    game = factory.CreateGame(gameId, GameType.SinglePlayer, map, players, fogOfWar: fogOfWarCheckBox.Checked);
                }


                OnGameStarted?.Invoke(game);
            }
            catch (UnauthorizedAccessException)
            {
                MessageBox.Show(
                    "One or more components required to start the game are missing! Please, reinstall the game!",
                    "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Пример #24
0
        static void Main(string[] args)
        {
            var game = GameFactory.CreateGame();
            var quit = false;

            while (!quit)
            {
                Console.WriteLine($"Enter move for player {game.ActivePlayerId}");
                var command = Console.ReadLine();
                if (string.Compare(command, "quit", true) == 0)
                {
                    quit = true;
                }
                else
                {
                    game = game.ApplyMove(new Move {
                        PlayerID = game.ActivePlayerId, CheckerID = 15, MoveType = MoveType.Slide, MoveDirection = MoveDirection.SouthEast
                    });
                }
            }
        }
        public static List <Game> ReadFile(string filePath)
        {
            // TODO: Replace this with List<Game> when we're done editing Game class
            List <Game> result = new List <Game>();

            CurrentFile = filePath;

            using (StreamReader reader = new StreamReader(filePath))
            {
                while (!reader.EndOfStream)
                {
                    string nextLine = reader.ReadLine();

                    #region Report Progress

                    CurentOperationProgress = Math.Round(100d * reader.BaseStream.Position / reader.BaseStream.Length, 5);
                    if (CurentOperationProgress > 1 && CurentOperationProgress % 1 == 0)
                    {
                        OnRaiseCustomEvent(new ProgressReportEventArgs((byte)CurentOperationProgress));
                    }

                    #endregion

                    string[] arguments = nextLine.Split(new string[] { "; " }, StringSplitOptions.RemoveEmptyEntries);

                    Game nextGame = GameFactory.CreateGame
                                    (
                        type: arguments[0],
                        coef: decimal.Parse(arguments[1]),
                        country: (Countries)Enum.Parse(typeof(Countries), arguments[2]),
                        dateAndTime: Convert.ToDateTime(arguments[3]),
                        match: new Match(arguments[4], arguments[5])
                                    );

                    result.Add(nextGame);
                }
            }

            return(result);
        }
Пример #26
0
        public static void ReadFiles(string fileExtension, ITestOutputHelper output, IEnumerable <IGameDefinition> gameDefinitions, Action <Game, FileSystemEntry> processFileCallback)
        {
            var foundAtLeastOneFile = false;

            var installations = gameDefinitions
                                .SelectMany(InstallationLocators.FindAllInstallations)
                                .ToList();

            using (var window = new GameWindow("Test", 10, 10, 100, 100, null))
                using (var panel = GamePanel.FromGameWindow(window))
                {
                    foreach (var installation in installations)
                    {
                        using (var fileSystem = installation.CreateFileSystem())
                            using (var game = GameFactory.CreateGame(installation, fileSystem, panel))
                            {
                                foreach (var file in fileSystem.Files)
                                {
                                    if (Path.GetExtension(file.FilePath).ToLowerInvariant() != fileExtension)
                                    {
                                        continue;
                                    }

                                    output.WriteLine($"Reading file {file.FilePath}.");

                                    processFileCallback(game, file);

                                    foundAtLeastOneFile = true;
                                }
                            }
                    }
                }

            if (installations.Count > 0 && !foundAtLeastOneFile)
            {
                throw new Exception($"No files were found matching file extension {fileExtension}");
            }
        }
Пример #27
0
        static void Main(string[] args)
        {
            Console.WriteLine("Game Starting");

            _game = GameFactory.CreateGame(8, 8, "player 1", "player 2");


            handlePlayerShipInput();
            PrintBoard(true);

            handlePlayerShipInput();
            PrintBoard(false);

            while (!_game.IsGameOver)
            {
                handlePlayerHitInput();
                PrintBoard(true);
                PrintBoard(false);
            }

            Console.WriteLine("Game over");
            Console.WriteLine("Congratulation {0} , you are the winner", _game.CurrentPlayerName);
        }
        public JsonResult Play(Game game, int playCount = 1)
        {
            var serviceProvider     = ServiceProviderFactory.GetServiceProvider(_messageSenderconfiguration);
            var playerConfiguration = new PlayerConfiguration {
                PlayerCount = 2
            };
            IGameState gameState = null;

            for (var gamesPlayed = 0; gamesPlayed < playCount; gamesPlayed++)
            {
                switch (game)
                {
                case Game.Pandemic:
                    gameState = GameFactory.CreateGame <IPandemicState, IPandemicTurn>(serviceProvider, playerConfiguration).Play();
                    break;

                case Game.ForSale:
                    gameState = GameFactory.CreateGame <IForSaleGameState, IForSaleGameTurn>(serviceProvider, playerConfiguration).Play();
                    break;
                }
            }

            return(new JsonResult(gameState));;
        }
Пример #29
0
        public static void Run(Options opts)
        {
            var             definition       = GameDefinition.FromGame(opts.Game);
            GraphicsBackend?preferredBackend = null;

            var installation = GameInstallation
                               .FindAll(new[] { definition })
                               .FirstOrDefault();

            if (installation == null)
            {
                Console.WriteLine($"OpenSAGE was unable to find any installations of {definition.DisplayName}.\n");

                Console.WriteLine("You can manually specify the installation path by setting the following environment variable:");
                Console.WriteLine($"\t{definition.Identifier.ToUpper()}_PATH=<installation path>\n");

                Console.WriteLine("OpenSAGE doesn't yet detect every released version of every game. Please report undetected versions to our GitHub page:");
                Console.WriteLine("\thttps://github.com/OpenSAGE/OpenSAGE/issues");

                Console.WriteLine("\n\n Press any key to exit.");

                Console.ReadLine();

                Environment.Exit(1);
            }

            if (opts.Renderer != Renderer.Default)
            {
                preferredBackend = (GraphicsBackend)opts.Renderer;
            }

            Platform.Start();

            // TODO: Read game version from assembly metadata or .git folder
            // TODO: Set window icon.
            using (var window = new GameWindow("OpenSAGE (master)", 100, 100, 1024, 768, preferredBackend))
                using (var gamePanel = GamePanel.FromGameWindow(window))
                    using (var game = GameFactory.CreateGame(installation, installation.CreateFileSystem(), gamePanel))
                    {
                        window.GraphicsDevice.SyncToVerticalBlank = !opts.DisableVsync;

                        game.Configuration.LoadShellMap = !opts.NoShellmap;

                        if (opts.Map == null)
                        {
                            game.ShowMainMenu();
                        }
                        else
                        {
                            game.StartGame(opts.Map, new EchoConnection(), new[] { "America", "GLA" }, 0);
                        }

                        while (game.IsRunning)
                        {
                            if (!window.PumpEvents())
                            {
                                break;
                            }

                            game.Tick();
                        }
                    }

            Platform.Stop();
        }
Пример #30
0
        private Control CreateControlForFileSystemEntry(FileSystemEntry entry)
        {
            Game getGame(IntPtr windowHandle)
            {
                _game = GameFactory.CreateGame(
                    _getInstallation(),
                    _getFileSystem(),
                    () => OpenSage.Platform.CurrentPlatform.CreateWindow(windowHandle));

                return(_game);
            }

            switch (Path.GetExtension(entry.FilePath).ToLower())
            {
            case ".ani":
            case ".cur":
                return(new AniView(entry, getGame));

            case ".apt":
                return(new AptView(entry, getGame));

            case ".bmp":
                return(new BmpView(entry));

            case ".dds":
                if (!DdsFile.IsDdsFile(entry))
                {
                    goto case ".tga";
                }
                return(new DdsView(DdsFile.FromFileSystemEntry(entry)));

            case ".const":
                return(new ConstView(entry));

            case ".csf":
                return(new CsfView(entry));

            case ".ini":
                return(new IniView(entry, getGame));

            case ".manifest":
                return(new ManifestView(entry, _getInstallation, _getFileSystem));

            case ".map":
                return(new MapView(entry, getGame));

            case ".ru":
                return(new RuView(entry, getGame));

            case ".tga":
                return(new TgaView(entry));

            case ".txt":
                return(new TxtView(entry));

            case ".wav":
                return(new WavView(entry, getGame));

            case ".w3d":
                return(new W3dView(entry, getGame));

            case ".wnd":
                return(new WndView(entry, getGame));

            default:
                return(null);
            }
        }