예제 #1
0
        private void RegisterNewGame(IGameProvider gameProvider)
        {
            var hubContext = GetHubContext();

            gameProvider.DidMove.Subscribe(moveRes =>
            {
                var client = hubContext.Clients.Client(moveRes.Item1.NextMoveUserId);
                if (client != null)
                {
                    client.didMove(Mapper.Map <MoveResultModel>(moveRes.Item1));
                }
            });

            gameProvider.GameFinishes.Subscribe(gameRes =>
            {
                foreach (var user in gameRes.Users)
                {
                    userGroupsCollector.RemoveUser(user.UserId);
                }
            });

            gameProvider.DidMove
            .SubscribeOn(Scheduler.Default)
            .Subscribe(moveRes =>
            {
                userVocabularyStorage.SaveMoveResultToDatabase(moveRes.Item1);
            });

            gameProvider.TimerTick.Subscribe(tick =>
            {
                var hubGroup = hubContext.Clients.Group(gameProvider.AssociatedGroupId);
                if (hubGroup != null)
                {
                    hubGroup.timerTick(tick);
                }
            });

            gameProvider.MissedMove
            .Subscribe(moveRes =>
            {
                var hubGroup = hubContext.Clients.Group(gameProvider.AssociatedGroupId);
                if (hubGroup != null)
                {
                    hubGroup.missedMove(Mapper.Map <MoveResultModel>(moveRes));
                }
            });
        }
예제 #2
0
 public void Quit()
 {
     collector.RemoveUser(Context.ConnectionId);
 }