Example #1
0
        public MoveResultModel DoMove(Move move, string word, string variant)
        {
            var group = collector.GetUserGroup(Context.ConnectionId);

            if (group != null)
            {
                var res = group.GameProvider.DoMove(move, word, variant);
                return(Mapper.Map <MoveResultModel>(res));
            }
            else
            {
                return(null);
            }
        }
Example #2
0
        public void EstablishInteractionWithClients()
        {
            var hubContext = GetHubContext();

            userGroupsCollector.GroupFulledObservable.Subscribe(g =>
            {
                var group = hubContext.Clients.Group(g.GetGroupId());
                if (group != null)
                {
                    group.groupFulled(Mapper.Map <GroupModel>(g));
                }
            });

            userGroupsCollector.UserAddedToGroup.Subscribe(userId =>
            {
                var client = hubContext.Clients.Client(userId);
                if (client != null)
                {
                    client.userAdded(userId);
                }
            });

            userGroupsCollector.UserLeftGroupObservable.Subscribe(g =>
            {
                GameResult gameRes;
                var gameProvider = g.GameProvider;
                if (gameProvider != null &&
                    gameProvider.GetGame() != null &&
                    gameProvider.GetGame().IsFinished(out gameRes))
                {
                    return;
                }

                foreach (var user in g.GetUsers())
                {
                    var client = hubContext.Clients.Client(user.UserId);
                    if (client != null)
                    {
                        client.userLeft(Mapper.Map <GroupModel>(g));
                    }
                }
            });

            userGroupsCollector.GameStarted.Subscribe(gameProvider =>
            {
                RegisterNewGame(gameProvider);
                var game = gameProvider.GetGame();

                var group = userGroupsCollector.GetUserGroup(game.GroupId);
                if (group != null && group.IsWaiting())
                {
                    return;
                }

                var hubGroup = hubContext.Clients.Group(game.GroupId);
                if (hubGroup != null)
                {
                    hubGroup.gameStarted(Mapper.Map <GameModel>(game));
                }
            });

            userGroupsCollector.FailedToLoadGameObservable.Subscribe(g =>
            {
                var group = hubContext.Clients.Group(g.GetGroupId());
                if (group != null)
                {
                    group.failedToLoadGame();
                }
            });
        }