Пример #1
0
        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);
        }
Пример #2
0
        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);
            }
        }
Пример #3
0
        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();
        }