using Godot; using Newlon.Components; using Newlon.Components.GUI.Seedpackets; public partial class Previewport : SubViewport { private Node current_display; private Texture2D start_Field; [Export] private Label title; [Export] private RichTextLabel description; [Export] private Sprite2D _frameField; public override void _Ready() { GetParent().GetViewport().GuiFocusChanged += OnFocusChanged; start_Field = _frameField.Texture; } public void OnFocusChanged(Control node) { if (GetParent().IsVisibleInTree() == false) return; if (node is Seedpacket packet) { ChangeDisplay(packet.GetResource()); } } private void ChangeDisplay(DisplayResource resource) { // Expand with updates if (current_display != null) { current_display.QueueFree(); } if (resource.customFrame != null && resource.customFrame.almanachField != null) { _frameField.Texture = resource.customFrame.almanachField; } else _frameField.Texture = start_Field; current_display = resource.Scene.Instantiate(); title.Text = Tr(resource.name_key); description.Text = Tr("rwd_"+resource.name_key)+"\n"+ Tr(resource.description_key); AddChild(current_display); if (current_display is Entity entity) entity.DisableBrain(); } }