Exemplo n.º 1
0
        public async Task KickOff(Guid sessionId)
        {
            var session = _matchmakingService.GetSession(sessionId);

            var match = new Models.Match.Match
            {
                Id = sessionId, HomeTeam = new TeamDetails {
                    UserId = session.HostPlayerId
                }
            };

            match.HomeTeam.Squad = BuildSquad(await _bus.RequestAsync <GetSquadRequest, GetSquadResponse>(new GetSquadRequest(match.HomeTeam.UserId)));

            match.AwayTeam = new TeamDetails
            {
                UserId = session.JoinedPlayerId.Value
            };
            match.AwayTeam.Squad = BuildSquad(await _bus.RequestAsync <GetSquadRequest, GetSquadResponse>(new GetSquadRequest(match.AwayTeam.UserId)));

            match.KickOff = DateTime.Now;

            var simulatedMatch = _matchEngine.Simulate(match);

            await _matchRepository.CreateAsync(simulatedMatch);
        }
Exemplo n.º 2
0
        public async Task ValidateAndSubscribe(string sessionId)
        {
            var user    = Context.UserIdentifier; //todo check user is session host
            var session = _matchmakingService.GetSession(new Guid(sessionId));

            if (session != null && !session.Expired && session.Open)
            {
                await Groups.AddToGroupAsync(Context.ConnectionId, session.Id.ToString());

                await Clients.User(user).ReceiveSessionId(session.Id);
            }
            else
            {
                await Clients.User(user).Cancelled();
            }
        }