summaryrefslogtreecommitdiff
path: root/engine/Dynamic
diff options
context:
space:
mode:
authorphyscik <mynameisgennadiy@vk.com>2026-03-23 18:43:07 +0500
committerphyscik <mynameisgennadiy@vk.com>2026-03-23 18:43:07 +0500
commit3e3e1f480f87192cf1042bec0ee0d4bb7c356e62 (patch)
tree7998bacf5657c83cbee0cb97f5b0a65c66cabe3d /engine/Dynamic
parenta4d30665a9aeddc9777761a322a48d56d9f44378 (diff)
Recursive UI elements support
Diffstat (limited to 'engine/Dynamic')
-rw-r--r--engine/Dynamic/Descriptors/UIElement.go16
1 files changed, 15 insertions, 1 deletions
diff --git a/engine/Dynamic/Descriptors/UIElement.go b/engine/Dynamic/Descriptors/UIElement.go
index da523e9..0e59c9a 100644
--- a/engine/Dynamic/Descriptors/UIElement.go
+++ b/engine/Dynamic/Descriptors/UIElement.go
@@ -14,6 +14,9 @@ type UIElementDescriptor struct {
Weight float32
Style StyleDescriptor
+ // For recursive elements
+ BackgroundElement *UIElementDescriptor
+
// For labels
Text string
Alignment string
@@ -64,11 +67,22 @@ func parseAsLabel(base *UIElementDescriptor) ui.UIElement {
alignment = ui.Start
}
+ var child ui.UIElement = nil
+ if base.BackgroundElement != nil {
+ var parsed, err = base.BackgroundElement.Parse()
+ if err == nil {
+ child = parsed
+ } else {
+ rl.TraceLog(rl.LogWarning, "Failed to parse a background element of a label: %v", err.Error())
+ }
+ }
+
return &ui.Label {
Weight: base.Weight,
Text: base.Text,
Alignment: alignment,
Style: base.Style.Parse(),
+ BackgroundElement: child,
}
}
@@ -111,7 +125,7 @@ func parseAsGridColumn(base *UIElementDescriptor) ui.UIElement {
func parseAsImage(base *UIElementDescriptor) ui.UIElement {
var texture, err = components.Resources.Textures.GetTextureByName(base.TextureName)
if err != nil {
- rl.TraceLog(rl.LogWarning, "Failed to parse a texture %s requested by an inage UI element: %v", base.TextureName, err.Error())
+ rl.TraceLog(rl.LogWarning, "Failed to parse a texture %s requested by an image UI element: %v", base.TextureName, err.Error())
return nil
}
var outp = ui.Image {