Code/UI/SubPanels/TextInput.razor.cs
using System;
using Sandbox;
using Sandbox.UI;
using VNScript;

namespace VNBase.UI;

public partial class TextInput
{
	public TextEntry? Entry { get; private set; }
	
	public bool CanContinue => !string.IsNullOrWhiteSpace( Entry?.Text );
	
	private Script.Input? Input => Player?.ActiveLabel?.ActiveInput;
	
	private void Submit()
	{
		if ( Input is null || !Entry.IsValid() )
		{
			return;
		}
		
		var environment = Player?.ActiveScript?.GetEnvironment();
		
		if ( environment is null )
		{
			Log.Warning( "Unable to submit value; no active environment found!" );
			return;
		}
		
		var value = new Value.StringValue( Entry.Text );
		Input.SetValue( environment, value );
	}
	
	protected override int BuildHash()
	{
		return HashCode.Combine( Player?.State.IsDialogueFinished, Player?.ActiveScript, Player?.ActiveLabel );
	}
}