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; }
private void MoveNext(DialogGraphNodeBase node) { var next = GetNextNodes(node).Select(n => n.Node).FirstOrDefault(); _path.Push(next); LoadControls(); }