using YamlDotNet.Core; using YamlDotNet.Core.Events; using YamlDotNet.Serialization.BufferedDeserialization.TypeDiscriminators; namespace TimePasses.Model; public interface IWhen { string Text { get; } bool Slowly { get; } bool IsValid(Plugin plugin); } public class WhenDiscriminator : ITypeDiscriminator { public Type BaseType => typeof(IWhen); public bool TryDiscriminate(IParser buffer, out Type? suggestedType) { buffer.Consume(); var name = buffer.Consume(); if (!name.IsKey) { suggestedType = null; return false; } switch (name.Value) { case "quest": { suggestedType = typeof(WhenQuest); break; } default: { suggestedType = null; return false; } } return true; } }