/// <summary> /// 处理对话 /// </summary> /// <returns></returns> private DialogueExpression ParseDialogue() { DialogueExpression dialogue; if (!(Tokens.Current is StringToken speakerToken)) { throw new CompileException(Identifier, Tokens.Current.Position, "Unexpected token type when parsing dialogue (should be StringToken)"); } if (speakerToken.Type == TokenType.DialogueSpeaker) { Tokens.MoveToNext(); if (!(Tokens.Current is StringToken contentToken)) { throw new CompileException(Identifier, Tokens.Current.Position, "Unexpected token type when parsing dialogue content (should be StringToken)"); } dialogue = new DialogueExpression(speakerToken.Position) { Character = speakerToken.Content, Content = contentToken.Content }; } else { dialogue = new DialogueExpression(Tokens.Current.Position) { Character = null, Content = speakerToken.Content }; } Tokens.MoveToNext(); return(dialogue); }
public static DialogueExpression CreateDialogueExpression(DialogueTextExpression text, List <IExpression> choiceList, Token token) { DialogueExpression expr = CreateNode <DialogueExpression>(token); expr.AddChoiceExpression(choiceList); expr.SetTextExpression(text); return(expr); }