private WzVirtualNode RebuildWzFile(Wz_File wzFile)
        {
            //分组
            List <Wz_File> subFiles = new List <Wz_File>();
            WzVirtualNode  topNode  = new WzVirtualNode(wzFile.Node);

            foreach (var childNode in wzFile.Node.Nodes)
            {
                var subFile = childNode.GetValue <Wz_File>();
                if (subFile != null) //wz子文件
                {
                    subFiles.Add(subFile);
                }
                else //其他
                {
                    topNode.AddChild(childNode, true);
                }
            }

            if (wzFile.Type == Wz_Type.Base)
            {
                foreach (var grp in subFiles.GroupBy(f => f.Type))
                {
                    WzVirtualNode fileNode = new WzVirtualNode();
                    fileNode.Name = grp.Key.ToString();
                    foreach (var file in grp)
                    {
                        fileNode.Combine(file.Node);
                    }
                    topNode.AddChild(fileNode);
                }
            }
            return(topNode);
        }
Exemple #2
0
        public void AddChild(Wz_Node wzNode, bool addAllChildren)
        {
            var childNode = new WzVirtualNode(wzNode);

            this.AddChild(childNode);

            if (addAllChildren && wzNode.Nodes.Count > 0)
            {
                foreach (var node in wzNode.Nodes)
                {
                    childNode.AddChild(node, addAllChildren);
                }
            }
        }