예제 #1
0
 def generateRoot(self, subfiles):
     """ Generates the root folders
         Does not hook up data pointers except the head group,
         returns (rootFolders, bytesize)
     """
     rootFolders = []  # for storing Index Groups
     byteSize = 0
     # Create folder indexing folders
     rootFolder = Folder(self.binfile, 'root')
     rootFolders.append(rootFolder)
     offsets = []  # for tracking offsets from first group to others
     # Create folder for each section the brres has
     for i in range(len(subfiles)):
         folder_name, folder = subfiles[i]
         size = len(folder)
         if size:
             f = Folder(self.binfile, folder_name)
             for j in range(size):
                 f.addEntry(folder[j].name)  # might not have name?
             rootFolder.addEntry(f.name)
             rootFolders.append(f)
             offsets.append(byteSize)
             byteSize += f.byteSize()
     # now update the dataptrs
     rtsize = rootFolder.byteSize()
     entries = rootFolder.entries
     for i in range(len(offsets)):
         entries[i].dataPtr = offsets[i] + rtsize
     return rootFolders
예제 #2
0
 def recursive_add_unknown(self, parent_dir, node):
     parent_dir.addEntry(node.name)
     if type(node) == UnknownFolder:
         f = Folder(self.binfile, node.name)
         node.folder = f
         for x in node.subfiles:
             self.recursive_add_unknown(f, x)
         return f.byteSize()
     return 0