示例#1
0
文件: ModsModule.cs 项目: gittsi/000
        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();
        }
示例#2
0
文件: ModsModule.cs 项目: gittsi/000
        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();
        }
示例#3
0
        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}");
            }
        }
示例#4
0
        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);
        }
示例#5
0
        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();
        }
示例#6
0
        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);
        }
示例#7
0
        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());
        }