예제 #1
0
        public void RemoveNode(NodeType type, int index)
        {
            Debug.Assert(Enum.IsDefined(typeof(NodeType), type));
            Debug.Assert(index >= 0);

            switch (type)
            {
            case NodeType.GuideNode:
            {
                GuideNodes.RemoveAt(index);
                break;
            }

            case NodeType.WallNode:
            {
                WallNodes.RemoveAt(index);
                break;
            }
            }
            Links.ForEach(link =>
            {
                if (link.Type == type && link.StartIndex > index)
                {
                    link.StartIndex--;
                }
                if (link.Type == type && link.EndIndex > index)
                {
                    link.EndIndex--;
                }
            });
        }
예제 #2
0
 public IEnumerable <GuideNode> FindEntryNodes(string pattern)
 {
     if (string.IsNullOrEmpty(pattern))
     {
         return(new List <GuideNode>());
     }
     return
         (GuideNodes.Where(entryNode => entryNode.Name != null)
          .Where(entryNode => Regex.IsMatch(entryNode.Name, pattern)));
 }
예제 #3
0
 public void ResetEntryNodes(bool prev = false, bool next = false)
 {
     GuideNodes.ForEach(entryNode =>
     {
         if (prev)
         {
             entryNode.Prev = null;
         }
         if (next)
         {
             entryNode.Next = null;
         }
     });
 }
예제 #4
0
        public void AddNode(NodeBase node)
        {
            Debug.Assert(node != null);

            switch (node)
            {
            case GuideNode entryNode:
            {
                GuideNodes.Add(entryNode);
                return;
            }

            case WallNode wallNode:
            {
                WallNodes.Add(wallNode);
                return;
            }

            default:
            {
                throw new ArgumentException(Resources.UnexpectedTypeError, nameof(node));
            }
            }
        }
예제 #5
0
        public int GetEntryNodeIndex(GuideNode guide)
        {
            Debug.Assert(guide != null);

            return(GuideNodes.IndexOf(guide));
        }