public static bool TryParse(ISpellParser parser, Player player, string spellstring, out Spell?spell) { var parsed = parser.Parse(player, spellstring); if (parsed.IsError) { spell = null; } else { spell = parsed.Result; } return(!parsed.IsError); }
public override ResultOrError <(RunePhrase, IEnumerable <Rune>)> Parse(ISpellParser parser, Player player, IEnumerable <Rune> remainder) { var parseResult = parser.ParseRunes(player, remainder); if (parseResult.IsError) { return(parseResult.Error); } var(arg, parseRemainder) = parseResult.Result; var argtype = arg._rune.ResultType(); if (argtype != RuneType.Reference && argtype != RuneType.Effect) { return("target of ZU cannot resolve to an effect"); } return(new RunePhrase(this, new[] { arg }), parseRemainder); }
public CommandParser(ISpellParser spellParser) { _spellParser = spellParser; }
public override ResultOrError <(RunePhrase, IEnumerable <Rune>)> Parse(ISpellParser parser, Player player, IEnumerable <Rune> remainder) { return(new RunePhrase(this), remainder); }
public abstract ResultOrError <(RunePhrase, IEnumerable <Rune>)> Parse(ISpellParser parser, Player player, IEnumerable <Rune> remainder);