Пример #1
0
        private void ExecuteAction(Entities.Game game, Entities.Enums.Hubs.Actions action, IEnumerable <Entities.ActiveConnection> connections,
                                   List <Entities.GamePlayer> users)
        {
            Entities.GamePlayer sendToPlayer = null;

            foreach (Entities.ActiveConnection connection in connections)
            {
                sendToPlayer = users.FirstOrDefault(player => player.User.UserId == connection.User_UserId);

                if (sendToPlayer != null)
                {
                    if (action == Entities.Enums.Hubs.Actions.UpdateWaiting)
                    {
                        _hub.Clients.Client(connection.ActiveConnectionID)
                        .UpdateWaiting(Entities.Models.Helpers.WaitingHeader.Build(game, connection.User_UserId, GetPlayerType(connection)),
                                       GetGameLobbyViewModel(connection, game));
                    }
                    else if (action == Entities.Enums.Hubs.Actions.UpdateGameView)
                    {
                        Entities.Models.Game.Board.GameBoard model = GetGameBoardModal(connection, game);

                        _hub.Clients.Client(connection.ActiveConnectionID)
                        .UpdateGameView(model, GetGameLobbyViewModel(connection, game));
                    }
                    else if (action == Entities.Enums.Hubs.Actions.UpdateLobby)
                    {
                        _hub.Clients.Client(connection.ActiveConnectionID)
                        .UpdateLobbyView(GetGameLobbyViewModel(connection, game));
                    }
                    else if (action == Entities.Enums.Hubs.Actions.CardPlayed)
                    {
                        Entities.Models.Game.Board.GameBoard model = new Entities.Models.Game.Board.GameBoard(game, connection.User_UserId, GetPlayerType(connection));

                        _hub.Clients.Client(connection.ActiveConnectionID)
                        .UpdateAnswers(model.AnswersViewModel, !model.ShowHand);
                    }
                }
            }
        }
Пример #2
0
        private Entities.ActiveConnection Execute(Entities.Game game, Entities.Enums.Hubs.Actions action, Boolean sendToSpectators,
                                                  Int32?excludedPlayerId = null)
        {
            Entities.Filters.ActiveConnection.SelectAll filter = new Entities.Filters.ActiveConnection.SelectAll();
            filter.GroupName = String.Format("Game_{0}", game.GameID);

            List <Entities.ActiveConnection> connections = _selectActiveConnection.Execute(filter);

            Entities.ActiveConnection excludedConnection = null;

            if (excludedPlayerId.HasValue)
            {
                excludedConnection = connections.DefaultIfEmpty(null).FirstOrDefault(x => x.User_UserId == excludedPlayerId);
            }

            ExecuteAction(game, action, connections.Where(x => x.ConnectionType == Entities.Enums.ConnectionType.GamePlayer), game.Players);

            if (sendToSpectators)
            {
                ExecuteAction(game, action, connections.Where(x => x.ConnectionType == Entities.Enums.ConnectionType.GameSpectator), game.Spectators);
            }

            return(excludedConnection);
        }