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