示例#1
0
        private List<DialogNodeColor> GetNextNodes(DialogGraphNodeBase node)
        {
            var links = _graph.GetNodeLinks(node.Id);
            var result = new List<DialogNodeColor>();
            foreach(var link in links)
            {
                var dlgColor = new DialogNodeColor();
                if(link.Direction.ToNode==null)
                    continue;

                var nextNode = _graph.GetNode(link.Direction.ToNode.Value);
                if(nextNode is EmptyDialogGraphNode)
                {
                    result.AddRange(GetNextNodes(nextNode));
                    continue;
                }
                dlgColor.Node = (DialogGraphPhraseNodeBase) nextNode;
                if(nextNode is PhraseDialogGraphNode)
                {
                    if(node is PhraseDialogGraphNode || node is EmptyDialogGraphNode)
                        dlgColor.Color = DialogNodeColor.NodeColor.Phrase;
                    else if(node is AnswerCollectionDialogGraphNode)
                        dlgColor.Color = DialogNodeColor.NodeColor.Answer;
                }
                else if(nextNode is AnswerCollectionDialogGraphNode)
                    dlgColor.Color = DialogNodeColor.NodeColor.Question;
                result.Add(dlgColor);
            }
            return result;
        }
示例#2
0
 private void MoveNext(DialogGraphNodeBase node)
 {
     var next = GetNextNodes(node).Select(n => n.Node).FirstOrDefault();
     _path.Push(next);
     LoadControls();
 }