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<Control>().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(resource.description_key);
		AddChild(current_display);
		if (current_display is Entity entity)
			entity.DisableBrain();
	}

}
