Ejemplo n.º 1
0
        public async Task <bool> Save(IGuildUser user, SkillLevel skillLevel)
        {
            var duelPlayer = new DuelPlayer(user.GuildId, user.Id)
            {
                Name = user.Nickname ?? user.Username, Skill = (int)skillLevel
            };

            return(await _client.InsertOrReplace(duelPlayer));
        }
Ejemplo n.º 2
0
        // ReSharper disable once InconsistentNaming
        private static int UpdateMMR(DuelPlayer winner, DuelPlayer looser)
        {
            var mmr = (int)Math.Ceiling(looser.MMR / (decimal)winner.MMR * 0.05m * looser.MMR);

            if (mmr < 10)
            {
                mmr += 10;
            }
            if (mmr > 200)
            {
                mmr = 200;
            }

            looser.MMR -= mmr;
            winner.MMR += mmr;

            return(mmr);
        }
Ejemplo n.º 3
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.º 4
0
 public async Task <bool> Save(DuelPlayer player)
 {
     return(await _client.InsertOrMerge(player));
 }