public async Task <Unit> Handle(CancelSearchPublicLobbyCommand request, CancellationToken cancellationToken)
        {
            request.PlayerId = _currentUser.Id;
            _publicSearchContainer.RemovePlayer(request.PlayerId);

            return(Unit.Value);
        }
Esempio n. 2
0
        public async Task TryFindOpponent(User forPlayer)
        {
            if (_publicSearchContainer.Count <= 1)
            {
                return;
            }

            var opponent = _publicSearchContainer
                           .GetList()
                           .FirstOrDefault(p => (p.Id != forPlayer.Id) && Math.Abs(p.ELO - forPlayer.ELO) <= MAX_ELO_DIFFERENCE);

            // opponent will be the player which has +-  MAX_ELO_DIFFERENCE

            if (opponent == null)
            {
                return;
            }

            await InitiateGame(new Guid[] { forPlayer.Id, opponent.Id });

            _publicSearchContainer.RemovePlayer(forPlayer.Id);
            _publicSearchContainer.RemovePlayer(opponent.Id);
        }