public void TableChanged(int tableId, IPlayTableService playTableService)
        {
            var tablePlayers = playTableService.GetPlayersOfTable(tableId);
            var tableViewers = playTableService.GetTableViewer(tableId);
            var tableState   = TableHubUtils.GetTableState(tableId, playTableService, _mapper);

            Parallel.ForEach(tablePlayers, (tablePlayer) =>
            {
                var clientUser = getClientUser(tablePlayer.PlayerId);
                if (clientUser != null)
                {
                    clientUser.PlayerTableState(tableState);
                }
            });

            // for all viewers of the table
            Parallel.ForEach(tableViewers, (tableViewer) =>
            {
                var clientUser = getClientUser(tableViewer.userId);
                if (clientUser != null)
                {
                    clientUser.SpectatorTable(tableState);
                }
            });
        }
Beispiel #2
0
 public SpectatorController(
     IPlayTableService tableService,
     IMapper mapper)
 {
     _tableService = tableService;
     _mapper       = mapper;
 }
        public static Card[] GetPlayerCards(int userId, IPlayTableService tableService)
        {
            var player = tableService.GettablePlayerOfId(userId);
            var cards  = player?.GetHandCards();

            return(cards);
        }
        public void OnSpectatorStateChanged(int userId, IPlayTableService playTableService)
        {
            var clientUser = getClientUser(userId);

            if (clientUser != null)
            {
                clientUser.SpectatorState(TableHubUtils.GetViewWerModel(userId, playTableService, _mapper));
            }
        }
        public static PlayTableStaeModel GetTablePLayerState(int playerId, IPlayTableService playTableService, IMapper mapper)
        {
            var tablePlayer = playTableService.GettablePlayerOfId(playerId);

            if (tablePlayer != null)
            {
                var tableState = GetTableState(tablePlayer.TableId, playTableService, mapper);
                return(tableState);
            }
            return(null);
        }
        public static IList <PlayTableCountModel> GetTablesWithUserCount(IPlayTableService playTableService, IMapper mapper)
        {
            var tables = playTableService.GetAllTables();
            var model  = mapper.Map <IList <PlayTableCountModel> >(tables);

            foreach (var table in model)
            {
                table.UserCount = playTableService.TableUserCount(table.Id);
            }
            return(model);
        }
        public static PlayTableStaeModel GetTableState(int tableId, IPlayTableService playTableService, IMapper mapper)
        {
            var table = playTableService.GetTableById(tableId);

            if (table != null)
            {
                var tablePlayers = playTableService.GetPlayersOfTable(tableId);
                var tableState   = mapper.Map <PlayTableStaeModel>(table);
                tableState.UserCount     = tablePlayers.Length;
                tableState.TableId       = table.Id;
                tableState.Players       = tablePlayers.Select((p) => new AdditionPlayerInfoModel(p)).ToArray();
                tableState.ShuffleCount  = tablePlayers.Count(p => p.ShuffleRound);
                tableState.NextTurnCount = tablePlayers.Count(p => p.NextTurn);
                return(tableState);
            }
            return(null);
        }
        public void OnPlayerCardsChanged(int userId, Card[] userCards, IPlayTableService playTableService)
        {
            _hub.Clients.User(userId.ToString()).PlayerCards(userCards);

            //for viewers
            var viewers = playTableService.GetTableViewerOfCardPlayers(userId);

            if (viewers.Length > 0)
            {
                foreach (var viewer in viewers)
                {
                    var clientUser = getClientUser(viewer.userId);
                    if (clientUser != null)
                    {
                        clientUser.PlayerCardsForSpectator(userCards);
                    }
                }
            }
        }
 public async void TableListChanged(IPlayTableService playTableService)
 {
     await _hub.Clients.All.Tables(TableHubUtils.GetTablesWithUserCount(playTableService, _mapper));
 }
 public PlayTableController(IPlayTableService playTableService, IMapper mapper, IHubContext <TableHub, ITableClient> hub)
 {
     _playTableService = playTableService;
     _mapper           = mapper;
     _hub = hub;
 }
        public static ViewWerModel GetViewWerModel(int userId, IPlayTableService playTableService, IMapper mapper)
        {
            var viewer = playTableService.GetTableViewerByUserId(userId);

            return(viewer == null ? null : mapper.Map <ViewWerModel>(viewer));
        }
Beispiel #12
0
 public TableHub(IPlayTableService tableService, IMapper mapper)
 {
     _tablesService = tableService;
     _mapper        = mapper;
 }