Ejemplo n.º 1
0
        public async Task Accept(IGuildUser challenger)
        {
            if (!PickupHelpers.IsInDuelChannel(Context.Channel))
            {
                return;
            }
            _logger.LogInformation($"{nameof(Accept)} called for user '{challenger.Username}'");

            var challenge = await _duelChallengeRepository.Find(challenger, (IGuildUser)Context.User);

            if (challenge != null)
            {
                //On accept start match
                await _duelChallengeRepository.Delete(challenge);

                var match = new DuelMatch(Context.Guild.Id, challenger.Id, Context.User.Id)
                {
                    Started       = true,
                    ChallengeDate = challenge.ChallengeDate,
                    MatchDate     = DateTime.UtcNow
                };
                await _duelMatchRepository.Save(match);
                await ReplyAsync($"{Context.User.Mention} has accepted the challenge from {challenger.Mention}!");
            }
        }
Ejemplo n.º 2
0
        // ReSharper disable once InconsistentNaming
        private async Task UpdateMatchAndMMR(DuelPlayer winner, DuelPlayer looser, DuelMatch match)
        {
            var mmrDiff = UpdateMMR(winner, looser);

            match.WinnerId   = winner.Id.ToString();
            match.WinnerName = winner.Name;
            match.LooserId   = looser.Id.ToString();
            match.LooserName = looser.Name;
            match.MMR        = mmrDiff;

            await _duelMatchRepository.Save(match);

            await ReplyAsync($"{match.WinnerName} has won against {match.LooserName}").AutoRemoveMessage(10);

            winner.MatchHistory.Insert(0, match);
            winner.MatchHistory = winner.MatchHistory.Take(10).ToList();
            await _duelPlayerRepository.Save(winner);

            looser.MatchHistory.Insert(0, match);
            looser.MatchHistory = looser.MatchHistory.Take(10).ToList();
            await _duelPlayerRepository.Save(looser);
        }
Ejemplo n.º 3
0
 private static bool IsValidMatch(DuelMatch match, IGuildUser opponent)
 {
     return((match.ChallengerId == opponent.Id.ToString() || match.ChallengeeId == opponent.Id.ToString()) &&
            string.IsNullOrEmpty(match.WinnerId));
 }
Ejemplo n.º 4
0
 public async Task <bool> Save(DuelMatch duelMatch)
 {
     return(await _client.InsertOrMerge(duelMatch));
 }