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); } }
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(); } }); }