ChitChat/Data/ChoiceAction.cs
using Sandbox;
using System.Collections.Generic;

namespace ChitChat;

public sealed class ChoiceAction : DialogueActionBase
{
	public List<Choice> Choices { get; set; } = new();

	public ChoiceAction() { }

	public ChoiceAction(ChoiceAction action)
	{
		foreach (Choice choice in action.Choices)
		{
			Choices.Add(new Choice(choice));
		}
	}

	public override bool OnEnter(DialogueSystemComponent system, DialoguePanelComponent ui, DialogueWriterComponent writer, DialogueAudioComponent audio)
	{
		if(Choices.Count <= 0)
			return false;

		system.SetChoices(Choices);

		return true;
	}

	public override void OnExit() { }
}

public struct Choice
{
	public string Text { get; set; } = "Some Text...";
	public DialogueData Data
	{
		get; set;
	}

	public Choice()
	{
	}

	public Choice(Choice choice)
	{
		Text = choice.Text;
		Data = choice.Data;
	}
}