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; }
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; }); } }