Пример #1
0
        /// <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);
        }
Пример #2
0
        public static DialogueExpression CreateDialogueExpression(DialogueTextExpression text, List <IExpression> choiceList, Token token)
        {
            DialogueExpression expr = CreateNode <DialogueExpression>(token);

            expr.AddChoiceExpression(choiceList);
            expr.SetTextExpression(text);

            return(expr);
        }