public static DialogueSequence BuildDialogue(string key, bool isTest, params Element[] elements) { var b = new DialogueSequenceBuilder(key); b.IsTest = isTest; AddElements(b, elements); return b.Build(); }
static void AddActors(DialogueSequenceBuilder builder, Element element) { while (builder.dialogue.Actors.Count < element.actor) { builder.AddActor("Actor" + (builder.dialogue.Actors.Count + 1)); } }
static void AddElements(DialogueSequenceBuilder builder, IEnumerable<Element> elements) { foreach (var e in elements) { AddActors(builder, e); if (e is LineElement) { var le = (LineElement)e; builder.AddLine(le.phraseKey, le.actor); } else if (e is EnglishLineElement) { var ele = (EnglishLineElement)e; builder.AddEnglishLine(ele.line); } //else if (e is AnimationElement) { // var ae = (AnimationElement)e; // builder.AddAnimation(ae.animation, ae.actor); //} else if (e is EventElement) { var ee = (EventElement)e; builder.AddEvent(ee.Event); } //else if (e is MessageElement) { // var me = (MessageElement)e; // builder.AddMessage(me.message); //} else if (e is ExitDialogueElement) { builder.Break(); } else if (e is BranchElement) { var be = (BranchElement)e; int index = 0; BranchRef[] branchRefs = new BranchRef[0]; if (be.isEnglish) { branchRefs = be.branches.Select(b => new BranchRef(new PhraseSequence(b.promptKey))).ToArray(); builder.AddEnglishBranch(branchRefs); } else { branchRefs = be.branches.Select( b => b.isEnglish ? new BranchRef(new PhraseSequence(b.promptKey)) : new BranchRef(builder.GetPhrase(b.promptKey)) ).ToArray(); builder.AddJapaneseBranch(branchRefs); } foreach (var b in be.branches) { builder.SetOpenLink(branchRefs[index]); index++; AddElements(builder, b.responseElements); builder.OpenBranch(); } builder.CloseBranches(); } } }
public DialogueSequenceBuilder GetDialogueBuilder() { var builder = new DialogueSequenceBuilder(SetKey); builder.IsTest = IsTest; return builder; }