示例#1
0
        public async Task Generate2CartsForAllUsers(bool sendInfo)
        {
            var places = Websockets.Where(w => w.Value.BlackjackUser != null).Select(w => w.Value.Place);

            foreach (var place in places)
            {
                _blackjackGame.GenerateCartForUser(place);
                _blackjackGame.GenerateCartForUser(place);
                _blackjackGame.MoveNext();
            }
            if (sendInfo)
            {
                await SendGameInfoWithCurrentUser();
            }
        }
示例#2
0
 /// <summary>
 /// reinitialize game to create new one
 /// </summary>
 /// <returns></returns>
 public async Task ReinitGame()
 {
     _blackjackGame  = new BlackjackGame();
     _messageBuilder = new BlackjackMessageBuilder(_blackjackGame);
     foreach (var entry in Websockets.ToList())
     {
         var wrapper = entry.Value;
         var user    = wrapper.BlackjackUser;
         if (user == null)
         {
             continue;
         }
         user = user.Reinit();
         _blackjackGame.AddUser(wrapper.Place, user);
     }
     await CheckStartGame(false);
 }
示例#3
0
        public override async Task OnClosedConnection(HttpContext context)
        {
            if (Websockets.ContainsKey(GenerateKey(context)))
            {
                var wrapper = Websockets[GenerateKey(context)];
                var place   = wrapper.Place;
                wrapper.BlackjackUser = null;
                _blackjackGame.RemoveUser(place);
                await SendGameInfoWithCurrentUser();

                if (_blackjackGame.UsersInQueue.ContainsKey(place))
                {
                    _blackjackGame.UsersInQueue.Remove(place);
                }
                if (_blackjackGame.GameStarted && _blackjackGame.NotNullUsers.Count < 2)
                {
                    _blackjackGame.GameEnded = true;
                    await ProcessEndOfGame(context);
                }
            }
        }
示例#4
0
        public async Task SendGameInfoWithTask(Func <BlackjackUser, int, Dictionary <string, object> > t)
        {
            var socketsToRemove = new List <string>();

            foreach (var websocketWrapper in Websockets.ToList())
            {
                var wrapper = websocketWrapper.Value;
                try
                {
                    await SendMessageJson(wrapper.WebSocket,
                                          t(wrapper.BlackjackUser, wrapper.Place));
                }
                catch (Exception e)
                {
                    socketsToRemove.Add(websocketWrapper.Key);
                }
            }
            foreach (var key in socketsToRemove)
            {
                Websockets.Remove(key);
            }
        }