Exemplo n.º 1
0
        private void RunGame(int gameNumber, ChosenStartingConfiguration startingConfig)
        {
            var game    = startingConfig.CreateGame(Players.Keys);
            var clients = new List <IGameClient>();

            var host = new LockingGameHost(game);

            foreach (var player in game.Players)
            {
                IGameClient client = new GameClient(player.Id, player.Name);
                clients.Add(client);

                var ai = _aiFactory.Create(Players[player.Name]);
                ai.Attach(client);

                host.RegisterGameClient(client, player);
            }

            host.AcceptMessage(new BeginGameMessage());

            var firstClient = clients.First();

            while (!firstClient.GetGameState().Status.GameIsComplete)
            {
                Thread.Sleep(500);
            }

            var state = firstClient.GetGameState();

            File.WriteAllText(Path.Combine(Name, string.Format("game_{0}.txt", gameNumber)), state.Log);

            _results[gameNumber] = state.Results;
        }
Exemplo n.º 2
0
        public void GivenANewHostedGameWithPlayers(int playerCount)
        {
            var gameBinding = Binding <GameStateBindings>();

            gameBinding.GivenANewGameWithPlayers(playerCount);

            _gameHost = new LockingGameHost(gameBinding.Game);

            _clients       = new List <GameClient>();
            _notifications = new Dictionary <GameClient, int>();

            foreach (var player in gameBinding.Game.Players)
            {
                var client = new GameClient(player.Id, player.Name);
                _gameHost.RegisterGameClient(client, player);
                _clients.Add(client);
                _notifications[client] = 0;
                client.GameStateUpdates.Subscribe(_ =>
                {
                    _notifications[client] += 1;
                });
            }
        }