public override Task OnDisconnected(bool stopCalled) { var userConnection = m_connections.FirstOrDefault(g => g.ConnectionId == Context.ConnectionId); if (userConnection == null) { return(Task.FromResult(true)); } m_connections.Remove(userConnection); // Remove user from all tables LobbyInstance lobbyInstance = GetLobbyInstance(userConnection); lobbyInstance.RemoveUserFromAllSeats(userConnection, r => { // Fire events Clients.Group(userConnection.GroupId).SeatUpdated(r.TableIndex, r.SeatIndex, null, false); }); // New user list var users = m_connections.Where(c => c.GroupId == userConnection.GroupId).Select(c => c.Name); Clients.Group(userConnection.GroupId).UserLeft(userConnection.Name, users); return(base.OnDisconnected(stopCalled)); }
private static LobbyInstance GetLobbyInstance(UserConnection userConnection) { var lobbyInstance = m_lobbyTables.FirstOrDefault(lt => lt.LobbyId == userConnection.GroupId); if (lobbyInstance == null) { lobbyInstance = new LobbyInstance(userConnection.GroupId, 250, 2); m_lobbyTables.Add(lobbyInstance); } return lobbyInstance; }
private static LobbyInstance GetLobbyInstance(UserConnection userConnection) { var lobbyInstance = m_lobbyTables.FirstOrDefault(lt => lt.LobbyId == userConnection.GroupId); if (lobbyInstance == null) { lobbyInstance = new LobbyInstance(userConnection.GroupId, 250, 2); m_lobbyTables.Add(lobbyInstance); } return(lobbyInstance); }
public void ExitSeat(int tableIndex, int seatIndex) { var userConnection = m_connections.FirstOrDefault(g => g.ConnectionId == Context.ConnectionId); if (userConnection == null) { return; } LobbyInstance lobbyInstance = GetLobbyInstance(userConnection); var userStood = lobbyInstance.RemoveUserFromSeat(userConnection, tableIndex, seatIndex); // Check if they were able to stand if (!userStood) { return; } Clients.Group(userConnection.GroupId).SeatUpdated(tableIndex, seatIndex, null, false); }
public void SelectSeat(int tableIndex, int seatIndex) { var userConnection = m_connections.FirstOrDefault(g => g.ConnectionId == Context.ConnectionId); if (userConnection == null) { return; } LobbyInstance lobbyInstance = GetLobbyInstance(userConnection); var userSat = lobbyInstance.AddUserToSeat(userConnection, tableIndex, seatIndex); // Check if they were able to sit if (!userSat) { return; } Clients.Group(userConnection.GroupId).SeatUpdated(tableIndex, seatIndex, userConnection.Name, false); }