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)); }