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)); }
// 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); }
// 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); }
public async Task <bool> Save(DuelPlayer player) { return(await _client.InsertOrMerge(player)); }