public void Apply(StartNewGameCommand command) { if (ActiveMatch) { ApplyDomainEvent(new MatchEndedEvent(Id, String.Empty)); } ApplyDomainEvent(new MatchStartedEvent(Id)); //init player unit counts InitPlayerUnits("player1"); InitPlayerUnits("player2"); }
public void StartNewGame([FromBody] StartNewGameCommand startNewGameCommand) { var game = new Game { //Id = Guid.NewGuid(), Name = startNewGameCommand.Name }; _gameRepository.Save(game); _gameHub.Clients.All.NewGameStartedEvent(new NewGameStartedEvent { GameId = game.Id }); }
public void StartGame(StartNewGameCommand command) { Clients.All.SendAsync("StartGameMsgReceived"); var game = _gameFactory.CreateGame(this, command.RowCount, command.ColumnCount); game.StartGame(); for (var i = 0; i < command.GenCount; i++) { Thread.Sleep(500); game.NextGen(); } Clients.All.SendAsync("GameOver"); }
public IActionResult StartGame(StartNewGameRequestDto startNewGameRequest) { var startNewGameCommandHandler = new StartNewGameCommandHandler(gameRepository); var startNewGameCommand = new StartNewGameCommand() { BlackPlayerId = startNewGameRequest.BlackPlayerId, WhitePlayerId = startNewGameRequest.WhitePlayerId }; var newGameId = startNewGameCommandHandler.ExecuteCommand(startNewGameCommand); return(CreatedAtAction( nameof(GetGame), new { gameId = newGameId }, FindGame(newGameId))); }
static void Main(string[] args) { var container = BuildContainer(); var commandBus = container.GetService <CommandDelegator>(); var queryBus = container.GetService <IQueryAsyncDispatcher>(); System.Console.WriteLine("Game initialized..."); var matchId = Guid.NewGuid(); var newGame = new StartNewGameCommand(matchId); commandBus.SendAsync(newGame).Wait(); System.Console.WriteLine("New game started..."); var activeMatch = queryBus.DispatchAsync <QueryActiveMatch, MatchReadModel>(new QueryActiveMatch()).Result; System.Console.WriteLine($"The active match is: {activeMatch.Id}"); var p1move = new SubmitMovesCommand() { Player = "player1", Match = matchId, Attacks = new List <Attack>() { new Attack() { Source = UnitType.PlaneBomber, Target = UnitType.TankHeavy }, new Attack() { Source = UnitType.PlaneFighter, Target = UnitType.PlaneFighter }, new Attack() { Source = UnitType.TankLight, Target = UnitType.Infantry }, new Attack() { Source = UnitType.TankHeavy, Target = UnitType.TankHeavy }, new Attack() { Source = UnitType.Infantry, Target = UnitType.TankHeavy } }, Deployments = new List <Deploy> { new Deploy() { Type = UnitType.TankHeavy }, new Deploy() { Type = UnitType.PlaneBomber } } }; var p2move = new SubmitMovesCommand() { Player = "player2", Match = matchId, Attacks = new List <Attack>() { new Attack() { Source = UnitType.PlaneBomber, Target = UnitType.PlaneBomber }, new Attack() { Source = UnitType.PlaneFighter, Target = UnitType.PlaneBomber }, new Attack() { Source = UnitType.TankLight, Target = UnitType.TankLight }, new Attack() { Source = UnitType.TankHeavy, Target = UnitType.TankLight }, new Attack() { Source = UnitType.Infantry, Target = UnitType.TankHeavy } }, Deployments = new List <Deploy> { new Deploy() { Type = UnitType.TankLight }, new Deploy() { Type = UnitType.Infantry }, new Deploy() { Type = UnitType.Infantry } } }; commandBus.SendAsync(p1move).Wait(); commandBus.SendAsync(p2move).Wait(); activeMatch = queryBus.DispatchAsync <QueryActiveMatch, MatchReadModel>(new QueryActiveMatch()).Result; System.Console.WriteLine($"The active match is: {activeMatch.Id}"); System.Console.WriteLine("Game Finished. Press any key to exit.."); System.Console.Read(); }