Open st-pasha opened 1 year ago
Sounds good! Should we close #1971 then?
Should we close https://github.com/flame-engine/flame/pull/1971 then?
We'll add the new layout classes, and then #1971 could use this new interface to implement the Row
and Column
.
Proposal
LayoutComponent
will be the base class for a family of utility classes which handle the layout of their children. This would be quite similar to Flutter layout widgets such asAlign
,Column
,Center
,Container
,Padding
,SizedBox
, etc.The purpose of these new components is to assist with constructing UIs within a game: dialogue boxes, HUD, informational screens, in-game UIs such as dialogue or trade windows, etc.
PR #1971 already attempts to add two such layout classes:
Row
andColumn
-- this proposal is to have more of them, all under a single umbrella ofLayoutComponent
.For example, suppose you're making a game and you want to display current score in the top right corner. Then, you should be able to declare it like this:
After this, the game would take care to properly position the
ScoreComponent
and move it whenever the game resizes.Implementation
LayoutComponent
would rely on theonParentResize
lifecycle method (#1421).The tree structure can be either normal (the target is added as a child of the LayoutComponent), or flat (the target is added to the parent directly, and layout component is a sibling). I'm not sure which option is better here.