Esempio n. 1
0
        public ISpeedrunEmbedGenerator CreateWorldRecordEmbed(Leaderboard leaderboard)
        {
            ResetEmbedBuilder();

            var run    = leaderboard.RunList[0];
            var runner = leaderboard.Players.FirstOrDefault(x => x.Id == run.Run.Players[0].Id);

            if (run == null || runner == null)
            {
                throw new Exception();
            }

            _embedBuilder.WithTitle(
                $"{leaderboard.Game.Names["international"]} {leaderboard.GetCategoryName} World Record")
            .WithUrl(leaderboard.WebLink)
            .AddField("World Record",
                      $"**{runner.Names["international"]}:** {StringCleanerHelper.SpeedrunTimeConverter(run.Run.Time.Primary)}\n" +
                      $"Check out the run at: {run.Run.WebLink}"
                      );

            if (leaderboard.Game.Assets.ContainsKey("cover-medium"))
            {
                _embedBuilder.WithThumbnailUrl(leaderboard.Game.Assets["cover-medium"].Uri);
            }

            if (leaderboard.Game.Assets.ContainsKey("icon"))
            {
                _embedBuilder.WithImageUrl(leaderboard.Game.Assets["icon"].Uri);
            }

            return(this);
        }
Esempio n. 2
0
        public ISpeedrunEmbedGenerator CreateLeaderboardEmbed(Leaderboard leaderboard)
        {
            ResetEmbedBuilder();

            _embedBuilder.WithTitle(
                $"{leaderboard.Game.Names["international"]} {leaderboard.GetCategoryName} Leaderboard");
            _embedBuilder.WithUrl(leaderboard.WebLink);
            var stringBuilder = new StringBuilder();

            foreach (var run in leaderboard.RunList)
            {
                var player = leaderboard.Players.FirstOrDefault(x => x.Id == run.Run.Players[0]?.Id);
                stringBuilder.AppendLine(
                    $"**{StringCleanerHelper.NumberToRanking(run.Place)}**: {player?.Names["international"]}" +
                    $" {StringCleanerHelper.SpeedrunTimeConverter(run.Run.Time.Primary)}");
            }

            _embedBuilder.AddField("Runs", stringBuilder);

            var icon = leaderboard.Game.Assets["icon"];

            if (icon != null)
            {
                _embedBuilder.WithThumbnailUrl(icon.Uri);
            }

            return(this);
        }
        public ILeagueEmbedGenerator CreatePerformanceEmbed(Performance performance)
        {
            ResetBuilder();

            _embedBuilder.WithTitle($"Performances for patch {performance.Patch}");

            foreach (var roleStatistic in performance.RoleStatistics)
            {
                var statistic     = roleStatistic.Value;
                var stringBuilder = new StringBuilder();

                stringBuilder.AppendLine("**Win-Rate**")
                .AppendLine(
                    $"**Best:** {statistic.WinRate.Best.ChampionId.ToEmoji()} {statistic.WinRate.Best.Score.ToPercentage()}")
                .AppendLine(
                    $"**Worst:** {statistic.WinRate.Worst.ChampionId.ToEmoji()} {statistic.WinRate.Worst.Score.ToPercentage()}")
                .AppendLine("**Over-all Performance**")
                .AppendLine(
                    $"**Best:** {statistic.PerformanceScore.Best.ChampionId.ToEmoji()} {statistic.PerformanceScore.Best.Score.ToChampionGgScore()}")
                .AppendLine(
                    $"**Worst:** {statistic.PerformanceScore.Worst.ChampionId.ToEmoji()} {statistic.PerformanceScore.Worst.Score.ToChampionGgScore()}");

                _embedBuilder.AddField(StringCleanerHelper.ChampionGgRoleName(roleStatistic.Key),
                                       stringBuilder.ToString(), true);
            }

            return(this);
        }
        public ILeagueEmbedGenerator CreateChampionDataEmbed(ChampionData championData)
        {
            ResetBuilder();

            _embedBuilder.WithTitle($"{championData.ChampionId} as of patch {championData.Patch}");

            var stringBuilder = new StringBuilder();

            stringBuilder
            .AppendLine(
                $"**Pick Rate:** {championData.PickRate.ToPercentage()} ({StringCleanerHelper.NumberToRanking(championData.Rankings.PickRates)})")
            .AppendLine(
                $"**Win Rate:** {championData.WinRate.ToPercentage()} ({StringCleanerHelper.NumberToRanking(championData.Rankings.WinRates)})")
            .AppendLine(
                $"**Ban Rate:** {championData.BanRate.ToPercentage()} ({StringCleanerHelper.NumberToRanking(championData.Rankings.BanRates)})");

            _embedBuilder.AddField("Picks/Bans", stringBuilder.ToString());

            stringBuilder.Clear();

            stringBuilder
            .AppendLine(
                $"**Kills:** {championData.Kills.ToChampionGgScore()} ({StringCleanerHelper.NumberToRanking(championData.Rankings.Kills)})")
            .AppendLine(
                $"**Deaths:** {championData.Deaths.ToChampionGgScore()} ({StringCleanerHelper.NumberToRanking(championData.Rankings.Deaths)})")
            .AppendLine(
                $"**Assists:** {championData.Assists.ToChampionGgScore()} ({StringCleanerHelper.NumberToRanking(championData.Rankings.Assists)})")
            .AppendLine($"**KDA:** {championData.Kda.ToChampionGgScore()}");

            _embedBuilder.AddField("KDA", stringBuilder.ToString());

            stringBuilder.Clear();

            stringBuilder
            .AppendLine(
                $"**Damage done:** {championData.Damage.Total.ToChampionGgScore()} ({StringCleanerHelper.NumberToRanking(championData.Rankings.DamageDealt)})")
            .AppendLine(
                $"**True Damage:** {championData.Damage.TotalTrue.ToChampionGgScore()} ({championData.Damage.PercentageTrue.ToPercentage()})")
            .AppendLine(
                $"**Magic Damage:** {championData.Damage.TotalMagic.ToChampionGgScore()} ({championData.Damage.PercentageMagic.ToPercentage()})")
            .AppendLine(
                $"**Physical Damage:** {championData.Damage.TotalPhysical.ToChampionGgScore()} ({championData.Damage.PercentagePhysical.ToPercentage()})");

            _embedBuilder.AddField("Damage", stringBuilder.ToString());

            return(this);
        }