private Conversation DlgToConversation(Dlg dlg, int conversationID) { Conversation conversation = template.CreateConversation(conversationID, dlg.name); conversation.ActorID = CurrentActorID; conversation.ConversantID = CurrentConversantID; // Add START dialogue entry: DialogueEntry firstDialogueEntry = template.CreateDialogueEntry(FirstDialogueEntryID, conversationID, "START"); firstDialogueEntry.ActorID = CurrentActorID; firstDialogueEntry.ConversantID = CurrentConversantID; firstDialogueEntry.Sequence = "None()"; conversation.dialogueEntries.Add(firstDialogueEntry); // Convert EntryList into dialogue entries: foreach (var entry in dlg.EntryList) { int dialogueEntryID = EntryIDToDialogueEntryID(dlg, entry.ID); DialogueEntry dialogueEntry = template.CreateDialogueEntry(dialogueEntryID, conversationID, entry.Comment); dialogueEntry.ActorID = LookupSpeaker(entry, CurrentConversantID); dialogueEntry.ConversantID = CurrentActorID; AddTextToDialogueEntry(entry.Text, dialogueEntry, EntryType.Entry); if (entry.ShowOnce) dialogueEntry.conditionsString = string.Format("Dialog[{0}] ~= \"WasDisplayed\"", dialogueEntryID); conversation.dialogueEntries.Add(dialogueEntry); MarkEntryScripts(entry, dialogueEntry, dlg.name); } // Convert ReplyList into dialogue entries: foreach (var reply in dlg.ReplyList) { int dialogueEntryID = ReplyIDToDialogueEntryID(dlg, reply.ID); DialogueEntry dialogueEntry = template.CreateDialogueEntry(dialogueEntryID, conversationID, reply.Comment); dialogueEntry.ActorID = CurrentActorID; dialogueEntry.ConversantID = CurrentConversantID; AddTextToDialogueEntry(reply.Text, dialogueEntry, EntryType.Reply); if (reply.ShowOnce) dialogueEntry.conditionsString = string.Format("Dialog[{0}] ~= \"WasDisplayed\"", dialogueEntryID); conversation.dialogueEntries.Add(dialogueEntry); MarkEntryScripts(reply, dialogueEntry, dlg.name); } // Convert StartingList links: foreach (var startingEntry in dlg.StartingList) { Link link = new Link(); link.originConversationID = conversationID; link.destinationConversationID = conversationID; link.originDialogueID = FirstDialogueEntryID; int destinationDialogueID = EntryIDToDialogueEntryID(dlg, startingEntry.Index); link.destinationDialogueID = destinationDialogueID; firstDialogueEntry.outgoingLinks.Add(link); MarkLinkCondition(startingEntry, conversation, destinationDialogueID, dlg.name); } // Convert EntryList[*].RepliesList links: foreach (var entry in dlg.EntryList) { DialogueEntry dialogueEntry = conversation.GetDialogueEntry(EntryIDToDialogueEntryID(dlg, entry.ID)); foreach (var reply in entry.RepliesList) { Link link = new Link(); link.originConversationID = conversation.id; link.destinationConversationID = conversation.id; link.originDialogueID = EntryIDToDialogueEntryID(dlg, entry.ID); int destinationDialogueID = ReplyIDToDialogueEntryID(dlg, reply.Index); link.destinationDialogueID = destinationDialogueID; dialogueEntry.outgoingLinks.Add(link); //---Was: MarkLinkCondition(entry, conversation, destinationDialogueID, dlg.name); MarkLinkCondition(reply, conversation, destinationDialogueID, dlg.name); } } // Convert ReplyList[*].EntriesList links: foreach (var reply in dlg.ReplyList) { DialogueEntry dialogueEntry = conversation.GetDialogueEntry(ReplyIDToDialogueEntryID(dlg, reply.ID)); foreach (var entry in reply.EntriesList) { Link link = new Link(); link.originConversationID = conversation.id; link.destinationConversationID = conversation.id; link.originDialogueID = ReplyIDToDialogueEntryID(dlg, reply.ID); int destinationDialogueID = EntryIDToDialogueEntryID(dlg, entry.Index); link.destinationDialogueID = destinationDialogueID; dialogueEntry.outgoingLinks.Add(link); //---Was: MarkLinkCondition(reply, conversation, destinationDialogueID, dlg.name); MarkLinkCondition(entry, conversation, destinationDialogueID, dlg.name); } } // Return the conversation: return conversation; }
private int EntryIDToDialogueEntryID(Dlg dlg, int entryID) { return (1 + entryID); }
private int ReplyIDToDialogueEntryID(Dlg dlg, int replyID) { return (1 + dlg.EntryList.Count + replyID); }