예제 #1
0
        public async Task ConnectToGame(string gameId, string jsPlayer)
        {
            var settings = new JsonSerializerSettings()
            {
                TypeNameHandling = TypeNameHandling.All
            };
            var player = JsonConvert.DeserializeObject <HumanPlayer>(jsPlayer, settings);

            var response = GameHandler.AddPlayerToGame(gameId, player);

            if (response.Item2)
            {
                var jsGame = JsonConvert.SerializeObject(response.Item1, Formatting.Indented, settings);
                await Groups.AddToGroupAsync(Context.ConnectionId, gameId);

                await Groups.AddToGroupAsync(Context.ConnectionId,
                                             Game.UniquePlayerGroup(new Base64(gameId),
                                                                    Server.Instance.ClientGames[gameId].players.FindIndex(p => p.InGameName == player?.InGameName)));

                //await Clients.Group(gameId).SendAsync("ReceiveGameInformation", jsGame);
                await Clients.Caller.SendAsync("ReceiveGameInformation", jsGame, (byte)response.Item3);
            }
            else
            {
                await Clients.Caller.SendAsync("ConnectToGameFailed", "game_has_started");
            }
        }