コード例 #1
0
ファイル: GGPKFile.cs プロジェクト: XnIcRaM/LibPathOfExile
 public TreeNode NodeToTreeNode(GGPKNode node)
 {
     return NodeToTreeNode(node, this.OffsetsToNodes);
 }
コード例 #2
0
ファイル: GGPKFile.cs プロジェクト: XnIcRaM/LibPathOfExile
        public static TreeNode NodeToTreeNode(GGPKNode node, IDictionary<ulong, GGPKNode> offsets)
        {
            if (node is FileNode) {
              return new TreeNode {
            Element = (node as FileNode).ToLeft<FileNode, DirectoryTreeNode>()
              };
            }
            else if (node is DirectoryNode) {
              var dnode = node as DirectoryNode;

              var children = dnode.FileNodeEntries.Select(nodeEntry => {
            var offset = offsets[nodeEntry.Offset];
            var newNode = NodeToTreeNode(offset, offsets);
            return newNode;
              }).Where(tn => tn != null);

              return new TreeNode {
            Element = new DirectoryTreeNode {
              Node = dnode,
              Children = children
            }.ToRight<FileNode, DirectoryTreeNode>()
              };
            }

            return null;
        }