Files
Learning-UnityNGO/Assets/Plugins/QFSW/Quantum Console/Source/Scripts/Actions/ReadValue.cs
T
2026-06-17 20:44:53 +03:00

35 lines
1.2 KiB
C#

using System;
using System.Collections.Generic;
namespace QFSW.QC.Actions
{
/// <summary>
/// Gets the next line of text entered into the console as a user response
/// and parses it to a value of the specified type.
/// </summary>
public class ReadValue<T> : Composite
{
private static readonly QuantumParser Parser = new QuantumParser();
/// <param name="getValue">A delegate which returns the parsed value entered by the user.</param>
/// <param name="config">The config to provide the response flow with.</param>
public ReadValue(Action<T> getValue, ResponseConfig config)
: base(Generate(getValue, config))
{ }
/// <param name="getValue">A delegate which returns the parsed value entered by the user.</param>
public ReadValue(Action<T> getValue)
: this(getValue, ResponseConfig.Default)
{ }
private static IEnumerator<ICommandAction> Generate(Action<T> getValue, ResponseConfig config)
{
string line = default;
yield return new ReadLine(t => line = t, config);
T value = Parser.Parse<T>(line);
getValue(value);
}
}
}