98 lines
2.4 KiB
C#
98 lines
2.4 KiB
C#
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.2f, 0.2f, 0.2f, 1.0f)
|
|
};
|
|
|
|
_panel = new MarginPanel(style)
|
|
{
|
|
ExpandRatio = new Vector2(0.5f, 1f),
|
|
AbsoluteMargin = Vector2.One * 16f
|
|
};
|
|
_screenContainer.AddChild(_panel);
|
|
|
|
var exampleText = new TextLabel()
|
|
{
|
|
Font = _defaultFont,
|
|
FontSize = 20,
|
|
Text = "This Panel will occupy 50% of the screen.\nThis text in particular is inside a panel with an absolute margin of 16px.\nHow cool is that?"
|
|
};
|
|
|
|
var contentPanel = new MarginPanel(new PanelStyle()
|
|
{
|
|
BackgroundColor = new Color(0.25f, 0.25f, 0.25f, 1.0f)
|
|
})
|
|
{
|
|
AbsoluteMargin = Vector2.One * 32f
|
|
};
|
|
|
|
_panel.AddChild(contentPanel);
|
|
|
|
var verticalPanel = new MarginPanel(new PanelStyle()
|
|
{
|
|
BackgroundColor = new Color(0.1f, 0.1f, 0.1f, 1.0f),
|
|
})
|
|
{
|
|
AbsoluteMargin = Vector2.One * 8f,
|
|
};
|
|
|
|
contentPanel.AddChild(verticalPanel);
|
|
verticalPanel.AddChild(exampleText);
|
|
}
|
|
|
|
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));
|
|
} |