Exemple #1
0
        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
            });
        }
Exemple #3
0
        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)));
        }
Exemple #5
0
        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();
        }