using System.Numerics; using DaggerFramework; using DaggerFramework.Rendering; using DaggerFramework.SceneGraph; using DaggerFramework.UI; using DaggerFramework.Utils; public class UiLayer : Layer { protected override void OnStart() { base.OnStart(); GetResources(); CreateUiElements(); } protected override void OnUpdate(double dt) { base.OnUpdate(dt); // _textLabel.Text = $"{MathF.Round(1 / (float)dt)} FPS"; _screenContainer.UpdateRect(Vector2.Zero, Scene.Renderer.WindowSize); } protected override void OnBeginDraw(Renderer renderer) { } protected override void OnDraw(Renderer renderer) { _screenContainer.Render(renderer); } protected override void OnEndDraw(Renderer renderer) { } private void CreateUiElements() { _screenContainer = new Container(); _screenContainer.UpdateRect(Vector2.Zero, Scene.Renderer.WindowSize); var style = new PanelStyle() { BackgroundColor = new Color(0.25f, 0.25f, 0.25f, 1.0f) }; _panel = new MarginPanel(style) { ExpandRatio = new Vector2(0.5f, 1.0f), RelativeMargin = Vector2.One * 0.01f }; _screenContainer.AddChild(_panel); var exampleText = new TextLabel() { Font = _defaultFont, FontSize = 30, Text = "This Panel will occupy 50% of the screen.\nHow cool is that?" }; _panel.AddChild(exampleText); // var verticalPanel = new VerticalPanel(new PanelStyle() // { // BackgroundColor = Color.White, // }); // verticalPanel.ExpandRatio = new Vector2(1f, 0.5f); // _panel.AddChild(verticalPanel); // verticalPanel.AddChild(new Panel(new PanelStyle() { BackgroundColor = Color.Red })); // verticalPanel.AddChild(new Panel(new PanelStyle() { BackgroundColor = Color.Green })); // verticalPanel.AddChild(new Panel(new PanelStyle() { BackgroundColor = Color.Blue })); } private void GetResources() { ResourceManager.TryGetResource("inter_regular", out _defaultFont); } private Font _defaultFont; private Container _screenContainer; private Panel _panel, _contentPanel; private TextLabel _textLabel; private Logger _logger = new(nameof(UiLayer)); }