From 267cbc8d9c0e3b40ddf6a5364a06a8832dd9a47c Mon Sep 17 00:00:00 2001 From: Ellpeck Date: Tue, 29 Dec 2020 12:41:29 +0100 Subject: [PATCH] allow image codes to copy the text's color --- MLEM/Formatting/Codes/ImageCode.cs | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/MLEM/Formatting/Codes/ImageCode.cs b/MLEM/Formatting/Codes/ImageCode.cs index dbbfbbc..5a7fe34 100644 --- a/MLEM/Formatting/Codes/ImageCode.cs +++ b/MLEM/Formatting/Codes/ImageCode.cs @@ -12,10 +12,12 @@ namespace MLEM.Formatting.Codes { public class ImageCode : Code { private readonly SpriteAnimation image; + private readonly bool copyTextColor; /// - public ImageCode(Match match, Regex regex, SpriteAnimation image) : base(match, regex) { + public ImageCode(Match match, Regex regex, SpriteAnimation image, bool copyTextColor) : base(match, regex) { this.image = image; + this.copyTextColor = copyTextColor; } /// @@ -35,7 +37,8 @@ namespace MLEM.Formatting.Codes { /// public override void DrawSelf(GameTime time, SpriteBatch batch, Vector2 pos, GenericFont font, Color color, float scale, float depth) { - batch.Draw(this.image.CurrentRegion, new RectangleF(pos, new Vector2(font.LineHeight * scale)), Color.White.CopyAlpha(color)); + var actualColor = this.copyTextColor ? color : Color.White.CopyAlpha(color); + batch.Draw(this.image.CurrentRegion, new RectangleF(pos, new Vector2(font.LineHeight * scale)), actualColor); } } @@ -51,13 +54,14 @@ namespace MLEM.Formatting.Codes { /// The formatter to add the code to /// The name of the formatting code. The regex for this code will be between angle brackets. /// The image to render at the code's position - public static void AddImage(this TextFormatter formatter, string name, TextureRegion image) { - formatter.AddImage(name, new SpriteAnimation(1, image)); + /// Whether or not the image code should use the text's color instead of White + public static void AddImage(this TextFormatter formatter, string name, TextureRegion image, bool copyTextColor = false) { + formatter.AddImage(name, new SpriteAnimation(1, image), copyTextColor); } - /// - public static void AddImage(this TextFormatter formatter, string name, SpriteAnimation image) { - formatter.Codes.Add(new Regex($""), (f, m, r) => new ImageCode(m, r, image)); + /// + public static void AddImage(this TextFormatter formatter, string name, SpriteAnimation image, bool copyTextColor = false) { + formatter.Codes.Add(new Regex($""), (f, m, r) => new ImageCode(m, r, image, copyTextColor)); } }