Inheritance: WebSocketService
Example #1
0
 internal GameConnection(GameService client, Player player, HostedGame hostedGame)
 {
     this.Client = client;
     this.Player = player;
     this.hostedGame = hostedGame;
 }
Example #2
0
        public GameConnection JoinGame(GameService gameService, string nickname, int gameSize)
        {
            GameConfiguration config = GameConfiguration.FromNumberOfPlayers(gameSize);
            GameConnection connection = null;

            while (connection == null)
            {
                HostedGame game = games.GetOrAdd(config, c => new HostedGame(c));

                if (game.Started)
                {
                    games.TryUpdate(config, new HostedGame(config), game);
                }
                else
                {
                    connection = game.TryAddPlayer(gameService, nickname);
                }
            }

            return connection;
        }
Example #3
0
        public GameConnection TryAddPlayer(GameService client, string name)
        {
            lock (gameLock)
            {
                if (Started)
                    return null;

                clients.Add(client);
                var player = new Player(name);
                game.AddPlayer(player);

                if (clients.Count == config.NumberOfPlayers)
                    StartGame();

                return new GameConnection(client, player, this);
            }
        }