From 85666467056ccae2011128e0d38ea2dbd1efee8a Mon Sep 17 00:00:00 2001 From: Physcik Date: Fri, 6 Feb 2026 01:55:27 +0500 Subject: Menu description pt. 1 --- engine/UI/FlexElement.go | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) (limited to 'engine/UI/FlexElement.go') diff --git a/engine/UI/FlexElement.go b/engine/UI/FlexElement.go index b8d1b38..4ec0f35 100644 --- a/engine/UI/FlexElement.go +++ b/engine/UI/FlexElement.go @@ -1,6 +1,8 @@ package ui import ( + "encoding/json" + "fmt" "image/color" rl "github.com/gen2brain/raylib-go/raylib" @@ -32,13 +34,14 @@ func getWeightToPixelsRatio(base flexElement, totalSpace float32) float32 { } var spacingPx = totalSpace * base.GetSpacing() var totalSpacing = float32(len(elements) - 1) * spacingPx - if totalSpace < 0 { - totalSpace = 0 + if totalSpacing < 0 { + totalSpacing = 0 } + rl.TraceLog(rl.LogInfo, "SpacingPx %v \t Total spacing: %v", spacingPx, totalSpacing) return (totalSpace - totalSpacing) / totalWeights } - +// A list of values that are used in the span calculations type layoutCache struct { // The screen resolution the cache was calculated for ScreenResolution rl.Vector2 @@ -62,6 +65,7 @@ func (base layoutCache) IsValid() bool { base.ScreenResolution.Y == float32(rl.GetScreenHeight()) } +// Fills in the offsets and width/height of a layout func (base *layoutCache) CalculateOffsets(X float32, Y float32, paddingX float32, paddingY float32) { base.OffsetX = (X * paddingX) base.OffsetY = (Y * paddingY) @@ -69,6 +73,8 @@ func (base *layoutCache) CalculateOffsets(X float32, Y float32, paddingX float32 base.Height = Y - base.OffsetY * 2 } +// Fills in the RowLocations field of the cache. +// Requires rows, WeightToPixels multiplyer, spacing (in px) and base offset (in px) that will be used as a start of a span. func (base *layoutCache) CalculateRowsLocations (rows []UIElement, WeightToPixels float32, spacing float32, baseOffset float32) { base.RowLocations = make([]rl.Vector2, len(rows)) var ptr float32 = baseOffset @@ -82,3 +88,11 @@ func (base *layoutCache) CalculateRowsLocations (rows []UIElement, WeightToPixel ptr += elemSpace + spacing } } + +func (base layoutCache) String() string { + var outp, jsonErr = json.Marshal(base) + if jsonErr != nil { + return fmt.Sprintf("Failed to parse settings: %s", jsonErr.Error()) + } + return string(outp) +} -- cgit v1.3