public async Task GetSecondaryStatModsGuild(string playerUserName, string modType, string resultsRows = "20") { bool rowsIsNumber = int.TryParse(resultsRows, out int rows); if (!rowsIsNumber) { await ReplyAsync($"If you want to specify how many results want, you have to put a number as third parameter! '{rows}' is not a number!"); return; } playerUserName = playerUserName.ToLower().Trim(); modType = modType.ToLower().Trim(); string loadingStr = string.Format("```{1} mods are loading...```", playerUserName, modType); var messageLoading = await ReplyAsync($"{loadingStr}"); ModValueType secondaryStatValueType = ModValueType.None; if (modType.Substring(modType.Length - 1, 1) == "%") { secondaryStatValueType = ModValueType.Percentage; modType = modType.Replace("%", ""); } else { secondaryStatValueType = ModValueType.Flat; } ModStatType secondaryStatType = (ModStatType)EnumExtensions.GetEnumFromDescription(modType, typeof(ModStatType)); if (secondaryStatType == ModStatType.None) { await ReplyAsync($"Something is wrong with your command..."); await messageLoading.DeleteAsync(); return; } //get player //var player = IResolver.Current.MongoDBRepository.GetPlayer(playerUserName).Result; var applicationSettings = new ApplicationSettings(new SettingsConfiguration()); var repoSettings = applicationSettings.GetTripleZeroRepositorySettings(); IMapper mapper = null; var context = new GuildContext(repoSettings, _cacheClient, mapper); var guild = await context.GetGuildData(playerUserName); if (guild == null) { await ReplyAsync($"I couldn't find player : {playerUserName}..."); await messageLoading.DeleteAsync(); return; } var result = await GetSpecificSecondaryModsGuild(guild, secondaryStatType, secondaryStatValueType, rows); SendSecondaryModReplyGuild(guild, secondaryStatType, secondaryStatValueType, result); await messageLoading.DeleteAsync(); }
public async Task GetPrimaryStatMods(string playerUserName, string modType, string resultsRows = "20") { bool rowsIsNumber = int.TryParse(resultsRows, out int rows); if (!rowsIsNumber) { await ReplyAsync($"If you want to specify how many results want, you have to put a number as third parameter! '{rows}' is not a number!"); return; } playerUserName = playerUserName.Trim().ToLower(); modType = modType.Trim().ToLower(); string loadingStr = string.Format("```{1} mods of player {0} are loading...```", playerUserName, modType); var messageLoading = await ReplyAsync($"{loadingStr}"); ModStatType primaryStatType = (ModStatType)EnumExtensions.GetEnumFromDescription(modType, typeof(ModStatType)); if (primaryStatType == ModStatType.None) { await ReplyAsync($"Something is wrong with your command..."); await messageLoading.DeleteAsync(); return; } //get player var applicationSettings = new ApplicationSettings(new SettingsConfiguration()); var repoSettings = applicationSettings.GetTripleZeroRepositorySettings(); IMapper mapper = null; var context = new PlayerContext(repoSettings, _cacheClient, mapper); var player = await context.GetPlayerData(playerUserName); if (player == null) { await ReplyAsync($"I couldn't find player : {playerUserName}..."); await messageLoading.DeleteAsync(); return; } var result = await GetSpecificPrimaryMods(player, primaryStatType, rows); SendPrimaryModReply(player, primaryStatType, result); await messageLoading.DeleteAsync(); }
private async void SendSecondaryModReply(Player player, ModStatType modStatType, ModValueType secondaryStatValueType, List <Tuple <string, Mod> > result) { if (player.LoadedFromCache) { await ReplyAsync($"{cacheClient.GetCachedDataRepositoryMessage()}"); } string retStr = ""; if (result != null) { retStr += $"```css\n{modStatType.GetDescription()} secondary mods for player {player.PlayerName} - {player.PlayerNameInGame} \n```"; retStr += string.Format("```Last update : {0}(UTC)```\n", player.SWGoHUpdateDate.ToString("yyyy-MM-dd HH:mm:ss")); retStr += string.Format("Returned mods : {0}", result.Count()); foreach (var row in result) { var modStats = row.Item2.SecondaryStat.Where(p => p.StatType == modStatType && p.ValueType == secondaryStatValueType).FirstOrDefault(); var newString = string.Format("{3}: **{2}{4}** {1} {0}", row.Item1.PadRight(25), EnumExtensions.GetDescription(row.Item2.Type).ToString().PadRight(10), modStats.Value.ToString().PadRight(2), modStatType.ToString(), secondaryStatValueType == ModValueType.Percentage ? "%" : ""); retStr += "\n"; retStr += newString; if (retStr.Length > 1800) { await ReplyAsync($"{retStr}"); retStr = ""; } } if (retStr.Length > 0) { await ReplyAsync($"{retStr}"); } else { await ReplyAsync($"No mods found!"); } } else { retStr = $"I didn't find any mods for username {player.PlayerName}`"; await ReplyAsync($"{retStr}"); } }
private static string GetModStatTypeName(ModStatType type) { if ((ModStatTypes)type.Id == ModStatTypes.Critical_Chance) { return($"Critical Chance"); } if ((ModStatTypes)type.Id == ModStatTypes.Critical_Damage) { return($"Critical Damage"); } if ((ModStatTypes)type.Id == ModStatTypes.Critical_Avoidence) { return($"Critical Avoidance"); } return(type.Name); }
public async Task GetPrimaryStatMods(string playerUserName, string modType, string resultsRows = "20") { bool rowsIsNumber = int.TryParse(resultsRows, out int rows); if (!rowsIsNumber) { await ReplyAsync($"If you want to specify how many results want, you have to put a number as third parameter! '{rows}' is not a number!"); return; } playerUserName = playerUserName.Trim().ToLower(); modType = modType.Trim().ToLower(); string loadingStr = string.Format("```{1} mods of player {0} are loading...```", playerUserName, modType); var messageLoading = await ReplyAsync($"{loadingStr}"); ModStatType primaryStatType = (ModStatType)EnumExtensions.GetEnumFromDescription(modType, typeof(ModStatType)); if (primaryStatType == ModStatType.None) { await ReplyAsync($"Something is wrong with your command..."); await messageLoading.DeleteAsync(); return; } //get player var player = IResolver.Current.MongoDBRepository.GetPlayer(playerUserName).Result; if (player == null) { await ReplyAsync($"I couldn't find player : {playerUserName}..."); await messageLoading.DeleteAsync(); return; } var result = await GetSpecificPrimaryMods(player, primaryStatType, rows); SendPrimaryModReply(player, primaryStatType, result); await messageLoading.DeleteAsync(); }
private static string GetPrimaryModStatTypeName(ModStatType type) { if ((ModStatTypes)type.Id == ModStatTypes.Critical_Avoidence) { return($"CrAvoid"); } if ((ModStatTypes)type.Id == ModStatTypes.Critical_Chance) { return($"CC"); } if ((ModStatTypes)type.Id == ModStatTypes.Critical_Damage) { return($"CD"); } if ((ModStatTypes)type.Id == ModStatTypes.Protection) { return($"Prot"); } return(type.Name); }
private async Task <List <Tuple <string, Mod> > > GetSpecificSecondaryMods(Player player, ModStatType modStatType, ModValueType modValueType, int rows = 20) { await Task.FromResult(1); var sortedMods = (from Character in player.Characters.Where(p => p.Mods != null) from Mod in Character.Mods.Where(p => p.SecondaryStat != null) from Stats in Mod.SecondaryStat.Where(p => p.StatType == modStatType && p.ValueType == modValueType) select new { Character.Name, Mod } ).OrderByDescending(t => t.Mod.SecondaryStat.Where(p => p.StatType == modStatType && p.ValueType == modValueType).FirstOrDefault().Value).Take(rows).ToList(); return(sortedMods.Select(x => new Tuple <string, Mod>(x.Name, x.Mod)).ToList()); }