diff --git a/UI/GUI/Rendering/CanvasRenderSource.cs b/UI/GUI/Rendering/CanvasRenderSource.cs index 723f10e..f6c9990 100644 --- a/UI/GUI/Rendering/CanvasRenderSource.cs +++ b/UI/GUI/Rendering/CanvasRenderSource.cs @@ -304,10 +304,11 @@ public sealed class CanvasRenderSource : IRenderSource Color color = Get(cmd.Properties, "Color", Color.White); string content = Get(cmd.Properties, "Content", string.Empty); int fontSize = Get(cmd.Properties, "FontSize", 12); + int maxWidth = Get(cmd.Properties, "MaxWidth", int.MaxValue); if (!string.IsNullOrEmpty(content)) { - canvas.DrawStringHeight(content, PCScreenFont.DefaultFont, color, cmd.Position.X, cmd.Position.Y, fontSize); + canvas.DrawStringHeight(content, PCScreenFont.DefaultFont, color, cmd.Position.X, cmd.Position.Y, fontSize, maxWidth); } } diff --git a/UI/GUI/Rendering/RenderCommand.cs b/UI/GUI/Rendering/RenderCommand.cs index d0aabd3..b8f09e4 100644 --- a/UI/GUI/Rendering/RenderCommand.cs +++ b/UI/GUI/Rendering/RenderCommand.cs @@ -76,6 +76,7 @@ public class RenderCommand byte[] utf8 = Encoding.UTF8.GetBytes(text); WriteVarint(s, utf8.Length); s.Write(utf8, 0, utf8.Length); + WriteVarint(s, GetProp("MaxWidth", int.MaxValue)); break; case RenderCommandType.DrawLine: @@ -142,6 +143,7 @@ public class RenderCommand int textLen = ReadVarint(data, ref offset); props["Content"] = Encoding.UTF8.GetString(data, offset, textLen); offset += textLen; + props["MaxWidth"] = ReadVarint(data, ref offset); break; case RenderCommandType.DrawLine: diff --git a/UI/GUI/UIEelements/Controls/Button.cs b/UI/GUI/UIEelements/Controls/Button.cs index 28de063..f2780d9 100644 --- a/UI/GUI/UIEelements/Controls/Button.cs +++ b/UI/GUI/UIEelements/Controls/Button.cs @@ -67,6 +67,7 @@ public class Button() : Control("Button") ["Color"] = TextColor, ["Content"] = Text, ["FontSize"] = Size.Height - 8, + ["MaxWidth"] = Size.Width, } }; } diff --git a/UI/GUI/UIEelements/Controls/CheckBox.cs b/UI/GUI/UIEelements/Controls/CheckBox.cs index 28cbfd8..27145e5 100644 --- a/UI/GUI/UIEelements/Controls/CheckBox.cs +++ b/UI/GUI/UIEelements/Controls/CheckBox.cs @@ -93,6 +93,7 @@ public class CheckBox() : Control("CheckBox") ["Color"] = TextColor, ["Content"] = Text, ["FontSize"] = boxSize, + ["MaxWidth"] = Size.Width - boxSize - 5, } }; } diff --git a/UI/GUI/UIEelements/Controls/RadioButton.cs b/UI/GUI/UIEelements/Controls/RadioButton.cs index 8719e2e..74aa1c8 100644 --- a/UI/GUI/UIEelements/Controls/RadioButton.cs +++ b/UI/GUI/UIEelements/Controls/RadioButton.cs @@ -88,6 +88,7 @@ public class RadioButton() : Control("RadioButton") ["Color"] = TextColor, ["Content"] = Text, ["FontSize"] = Size.Height, + ["MaxWidth"] = Size.Width - Size.Height - 5, } }; } diff --git a/Utils/CanvasExtensions.cs b/Utils/CanvasExtensions.cs index b6500a2..5a2b23e 100644 --- a/Utils/CanvasExtensions.cs +++ b/Utils/CanvasExtensions.cs @@ -70,10 +70,11 @@ public static class CanvasExtensions byte height = font.Height; int targetWidth = width * targetHeight / height; + int endX = maxWidth == int.MaxValue ? int.MaxValue : x + maxWidth; for (int i = 0; i < str.Length; i++) { - if (x + targetWidth > maxWidth) + if (x + targetWidth > endX) { break; }