Editor/ChitChat/ActionWidgets/ChoiceActionInspectorWidget.cs
using Sandbox;
using Editor;

namespace ChitChat.Editor;

public class ChoiceActionInspectorWidget : Widget
{
	private SerializedObject _serializedObject;

	private readonly Layout _content;

	public ChoiceActionInspectorWidget(SerializedObject speakActionSO, Widget parent) : base(parent)
	{
		Name = "ChoiceAction";

		SetSerializedObject(speakActionSO);

		Layout = Layout.Column();

		_content = Layout;

		Rebuild();
	}

	public void SetSerializedObject(SerializedObject speakActionSO)
	{
		if (!speakActionSO.TypeName.Equals(nameof(ChoiceAction)))
		{
			Log.Error("SerializedObject is not a " + nameof(ChoiceAction) + "!");
			return;
		}

		_serializedObject = speakActionSO;
	}

	public void Rebuild()
	{
		_content.Clear(true);

		_content.Add(new TextSeperatorWidget("Choices", 50, this));

		SerializedProperty prop = _serializedObject.GetProperty(nameof(ChoiceAction.Choices));
		if (prop.TryGetAsObject(out var obj))
		{
			ListControlView list = new ListControlView(prop, (SerializedCollection)obj);

			_content.Add(list);
		}
		else
		{
			Log.Error("Could not convert SerializedProperty to SerializedObject!");
			return;
		}
	}
}