Box-Modell vervollständigen (padding, alle margin-Seiten, gap) #9

Closed
opened 2026-04-16 19:48:29 +00:00 by sebastian · 0 comments
Owner

Problem: LayoutStyle hat nur margin.left und margin.top. Kein padding, kein gap, kein margin.right/bottom. Zusammengesetzte Komponenten wie UiBuildingMenuCostContainer müssen Abstände mit hartcodierten Offsets simulieren.
Lösung:

struct EdgeInsets {
    SizeValue top    = {0, Pixels};
    SizeValue right  = {0, Pixels};
    SizeValue bottom = {0, Pixels};
    SizeValue left   = {0, Pixels};
};

struct LayoutStyle {
    // ...
    EdgeInsets margin;
    EdgeInsets padding;
    float gap = 0.f;   // Abstand zwischen Flex-Kindern
};

UiPositioner::compute() muss padding in die Kind-Platzierung einrechnen und gap beim SpaceBetween berücksichtigen.
Acceptance Criteria:

  • Alle 4 margin-Seiten funktionieren im Flex-Layout
  • padding verkleinert den verfügbaren Raum für Kinder
  • gap ersetzt manuelle margin.left-Hacks in UiInventoryContainer
Problem: LayoutStyle hat nur margin.left und margin.top. Kein padding, kein gap, kein margin.right/bottom. Zusammengesetzte Komponenten wie UiBuildingMenuCostContainer müssen Abstände mit hartcodierten Offsets simulieren. Lösung: ``` struct EdgeInsets { SizeValue top = {0, Pixels}; SizeValue right = {0, Pixels}; SizeValue bottom = {0, Pixels}; SizeValue left = {0, Pixels}; }; struct LayoutStyle { // ... EdgeInsets margin; EdgeInsets padding; float gap = 0.f; // Abstand zwischen Flex-Kindern }; ``` UiPositioner::compute() muss padding in die Kind-Platzierung einrechnen und gap beim SpaceBetween berücksichtigen. Acceptance Criteria: - Alle 4 margin-Seiten funktionieren im Flex-Layout - padding verkleinert den verfügbaren Raum für Kinder - gap ersetzt manuelle margin.left-Hacks in UiInventoryContainer
sebastian added the
engine
label 2026-04-16 19:48:29 +00:00
sebastian added this to the Quick Wins milestone 2026-04-16 19:50:49 +00:00
sebastian added the
enhancement
label 2026-04-16 20:27:24 +00:00
sebastian added this to the Dicewars project 2026-04-16 21:00:31 +00:00
sebastian added a new dependency 2026-04-16 21:01:43 +00:00
sebastian started working 2026-04-17 10:10:52 +00:00
sebastian self-assigned this 2026-04-17 10:10:52 +00:00
sebastian stopped working 2026-04-17 11:40:28 +00:00
1 hour 29 minutes
Sign in to join this conversation.
No Milestone
No project
No Assignees
1 Participants
Notifications
Total Time Spent: 1 hour 29 minutes
sebastian
1 hour 29 minutes
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Depends on
#15 LayoutEngine
sebastian/Dicewars-Siedler
Reference: sebastian/Dicewars-Siedler#9
No description provided.