public T Create <T>(string pConversation, Language pLanguage, string pName) where T : DialogueNode { T newDialogueNode = Activator.CreateInstance <T>(); newDialogueNode.CreateNewRelayEntry(_dialogueTable, newDialogueNode.GetType().Name); newDialogueNode.conversation = pConversation; newDialogueNode.language = pLanguage; newDialogueNode.name = pName; newDialogueNode.SetRunner(this); _dialogueNodes.Add(newDialogueNode); AddNodeToNodeForConversationDictionary(pConversation, newDialogueNode); if (newDialogueNode is IRegisteredDialogueNode) { IRegisteredDialogueNode ir = newDialogueNode as IRegisteredDialogueNode; _registeredDialogueNodes.Add(ir); } return(newDialogueNode); }
public void RemoveConversation(string pConversation) { var nodes = GetNodesForConversation(pConversation); foreach (DialogueNode d in nodes) { _nodesToTurnOff.Add(d); _dialogueNodes.Remove(d); if (d is IRegisteredDialogueNode) { IRegisteredDialogueNode ir = d as IRegisteredDialogueNode; _registeredDialogueNodes.Remove(ir); } _dialogueTable.RemoveRowAt(d.objectId); } if (_nodesForConversation.ContainsKey(pConversation)) { _nodesForConversation.Remove(pConversation); } }
public DialogueRunner(RelayTwo pRelay, Language pLanguage) { D.isNull(pRelay); _dialogueTable = pRelay.GetTable(DialogueNode.TABLE_NAME); _language = pLanguage; _dialogueNodes = InstantiatorTwo.Process <DialogueNode>(_dialogueTable); foreach (DialogueNode n in _dialogueNodes) { n.SetRunner(this); if (n is IRegisteredDialogueNode) { IRegisteredDialogueNode ir = n as IRegisteredDialogueNode; _registeredDialogueNodes.Add(ir); } if (n.isOn) { _nodesThatAreOn.Add(n); } AddNodeToNodeForConversationDictionary(n.conversation, n); } RegisterBuiltInAPIExpressions(); }