Exemplo n.º 1
0
        private void AddInfo(MagickImage image, CachedMember member, ProfileInfo profileInfo)
        {
            var settings = new MagickReadSettings
            {
                BackgroundColor = MagickColors.Transparent,
                FillColor       = profileInfo.Color,
                Font            = _arialFontPath,
                FontPointsize   = 20,
                Width           = 125,
                TextGravity     = Gravity.Center
            };

            var segmentLength = 500 / 6;

            using var currencyImage = new MagickImage($"caption:{profileInfo.Currency}", settings);
            image.Draw(new DrawableComposite(segmentLength - (double)currencyImage.Width / 2, 280, CompositeOperator.Over, currencyImage));

            var waifusCount = profileInfo.Waifus !.Count;

            if (profileInfo.SpecialWaifu != null)
            {
                waifusCount++;
            }

            using var waifusImage = new MagickImage($"caption:{waifusCount}", settings);
            image.Draw(new DrawableComposite(segmentLength * 2 - (double)waifusImage.Width / 2, 280, CompositeOperator.Over, waifusImage));

            using var levelImage = new MagickImage($"caption:{profileInfo.Level}", settings);
            image.Draw(new DrawableComposite(segmentLength * 3 - (double)levelImage.Width / 2, 280, CompositeOperator.Over, levelImage));

            using var totalXpImage = new MagickImage($"caption:{profileInfo.Xp}", settings);
            image.Draw(new DrawableComposite(segmentLength * 4 - (double)totalXpImage.Width / 2, 280, CompositeOperator.Over, totalXpImage));

            using var rankImage = new MagickImage($"caption:{profileInfo.Rank}", settings);
            image.Draw(new DrawableComposite(segmentLength * 5 - (double)rankImage.Width / 2, 280, CompositeOperator.Over, rankImage));

            settings.FillColor     = MagickColors.White;
            settings.FontPointsize = 15;

            var guildId = member.Guild.Id;

            using var currencyTextImage = new MagickImage($"caption:{GetText(guildId, CurrencyLocalization)}", settings);
            image.Draw(new DrawableComposite(segmentLength - (double)currencyTextImage.Width / 2, 315, CompositeOperator.Over, currencyTextImage));

            using var waifusTextImage = new MagickImage($"caption:{GetText(guildId, Localization.WaifuWaifus)}", settings);
            image.Draw(new DrawableComposite(segmentLength * 2 - (double)waifusTextImage.Width / 2, 315, CompositeOperator.Over, waifusTextImage));

            using var levelTextImage = new MagickImage($"caption:{GetText(guildId, Localization.XpLevel)}", settings);
            image.Draw(new DrawableComposite(segmentLength * 3 - (double)levelTextImage.Width / 2, 315, CompositeOperator.Over, levelTextImage));

            using var totalXpTextImage = new MagickImage($"caption:{GetText(guildId, Localization.XpTotalXp)}", settings);
            image.Draw(new DrawableComposite(segmentLength * 4 - (double)totalXpTextImage.Width / 2, 315, CompositeOperator.Over, totalXpTextImage));

            using var rankTextImage = new MagickImage($"caption:{GetText(guildId, Localization.CommonRank)}", settings);
            image.Draw(new DrawableComposite(segmentLength * 5 - (double)rankTextImage.Width / 2, 315, CompositeOperator.Over, rankTextImage));

            image.Draw(new Drawables()
                       .RoundRectangle(50, 360, 450, 370, 5, 5)
                       .FillColor(_darker));

            var currentXp   = RiasUtilities.LevelXp(profileInfo.Level, profileInfo.Xp, XpService.XpThreshold);
            var nextLevelXp = (profileInfo.Level + 1) * 30;

            var xpBarLength = (double)currentXp / nextLevelXp * 400;

            image.Draw(new Drawables()
                       .RoundRectangle(50, 360, 50 + xpBarLength, 370, 5, 5)
                       .FillColor(profileInfo.Color));

            settings.Width    = 0;
            using var xpImage = new MagickImage($"caption:{currentXp}", settings);
            image.Draw(new DrawableComposite(50, 380, CompositeOperator.Over, xpImage));

            using var nextLevelXpImage = new MagickImage($"caption:{nextLevelXp}", settings);
            image.Draw(new DrawableComposite(450 - nextLevelXpImage.Width, 380, CompositeOperator.Over, nextLevelXpImage));

            image.Draw(new Drawables()
                       .RoundRectangle(25, 415, 475, 495, 10, 10)
                       .FillColor(_darker));

            settings.Font          = _meiryoFontPath;
            settings.FontPointsize = 12;
            settings.TextGravity   = Gravity.West;
            settings.Width         = 440;

            using var bioImage = new MagickImage($"caption:{profileInfo.Biography}", settings);
            image.Draw(new DrawableComposite(30, 420, CompositeOperator.Over, bioImage));
        }