/// <summary> /// Hnadle new user connected to game /// </summary> /// <param name="message"></param> /// <param name="context"></param> /// <returns></returns> public async Task HandleNewUserInGame(Dictionary <string, object> message, HttpContext context) { var place = Convert.ToInt32(message[BlackjackConstants.Message.PlaceNumber]); var name = context.GetUserName(); var id = context.GetUserId(); var curentUser = _blackjackGame.Users .FirstOrDefault(entry => entry.Value?.Name == name); if (curentUser.Value == null) { var user = new BlackjackUser(name, id); if (_blackjackGame.GameStarted) { _blackjackGame.UsersInQueue.Add(place, user); } else { _blackjackGame.AddUser(place, user); } Websockets[GenerateKey(context)].BlackjackUser = user; Websockets[GenerateKey(context)].Place = place; } else { Websockets[GenerateKey(context)].BlackjackUser = curentUser.Value; Websockets[GenerateKey(context)].Place = curentUser.Key; } await SendGameInfoWithCurrentUser(); }
public Dictionary <string, object> BuildMessageWithWinner(BlackjackUser user, int place, BlackjackGameResult result) { var message = BuildGameStateMessageWithCurrentUser(user, place); message["winner"] = result; return(message); }
public Dictionary <string, object> BuildGameStateMessageWithCurrentUser(BlackjackUser user, int place) { var messageToSend = Dictionary(); messageToSend[BlackjackConstants.Message.MessageType] = BlackjackConstants.Message.GameState; messageToSend[BlackjackConstants.Message.GameState] = BlackjackGame; if (user != null) { var currentUser = Dictionary(); currentUser["carts"] = user.Carts; currentUser["place"] = place; currentUser["name"] = user.Name; messageToSend["currentUser"] = currentUser; } return(messageToSend); }
public void AddUser(int place, BlackjackUser user) { Users[place] = user; }