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)); }
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."); } }
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(); }
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(); }
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); }
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); }
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())); }
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(); }
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(); }
public void LessOrEqualThanZero_ChipsPerPlayer_ReturnsErrorMessage() { var gameSettings = new GameSettings { ChipsPerPlayer = 0 }; (string message, Game game) = GameFactory.CreateGame(gameSettings); Assert.NotNull(message); Assert.Null(game); }
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)); }
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); }
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); }
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); }
/// <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>(); }
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); }
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); } }
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); } }
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); }
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}"); } }
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));; }
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(); }
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); } }