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)); } }); }
public void Quit() { collector.RemoveUser(Context.ConnectionId); }