Пример #1
0
        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));
        }
Пример #2
0
        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;
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
        }