using System.Collections; using System.Collections.Generic; using UnityEngine; using Yarn; using Yarn.Markup; using Yarn.Unity; namespace AibisDream { public static class YarnUtil { private const string CommandAttr = "command"; private const string OptionAttr = "options"; private const string CommandProp = "name"; public static bool HasCommandAttr(this MarkupParseResult text) { return text.TryGetAttributeWithName(CommandAttr, out var attribute1) || text.TryGetAttributeWithName(OptionAttr, out var attribute2); } public static bool TryGetCommandAttr(this MarkupParseResult text, out string commandName) { bool res = text.TryGetAttributeWithName(CommandAttr, out var attribute); commandName = res ? attribute.Properties[CommandProp].StringValue : null; return res; } public static bool IsOptionAttrLine(this MarkupParseResult text) { return text.TryGetAttributeWithName(OptionAttr, out var outStr); } public static void AddCommandListener(this DialogueRunner runner, CommandHandler onCommand) { runner.Dialogue.CommandHandler += onCommand; } } }