TimePasses/Model/IWhen.cs

39 lines
917 B
C#

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<MappingStart>();
var name = buffer.Consume<Scalar>();
if (!name.IsKey) {
suggestedType = null;
return false;
}
switch (name.Value) {
case "quest": {
suggestedType = typeof(WhenQuest);
break;
}
default: {
suggestedType = null;
return false;
}
}
return true;
}
}