Beispiel #1
0
 def dump(self, out):
     """Dumps group header and then records."""
     if not self.changed:
         out.write(
             ModReader.recHeader('GRUP', self.size, self.label, 0,
                                 self.stamp).pack())
         out.write(self.data)
     else:
         size = self.getSize()
         if size == ModReader.recHeader.rec_header_size: return
         out.write(
             ModReader.recHeader('GRUP', size, self.label, 0,
                                 self.stamp).pack())
         for record in self.records:
             record.dump(out)
Beispiel #2
0
 def dump(self,out):
     """Dumps group header and then records."""
     if not self.changed:
         # noinspection PyArgumentList
         out.write(ModReader.recHeader('GRUP',self.size,self.label,0,
                                       self.stamp).pack())
         out.write(self.data)
     else:
         size = self.getSize()
         if size == ModReader.recHeader.size: return #@UndefinedVariable
         # noinspection PyArgumentList
         out.write(ModReader.recHeader('GRUP',size,self.label,0,
                                       self.stamp).pack())
         for record in self.records:
             record.dump(out)
Beispiel #3
0
 def dump(self, out):
     """Dumps group header and then records."""
     if not self.changed:
         # noinspection PyArgumentList
         out.write(
             ModReader.recHeader('GRUP', self.size, self.label, 0,
                                 self.stamp).pack())
         out.write(self.data)
     else:
         size = self.getSize()
         if size == ModReader.recHeader.size: return  #@UndefinedVariable
         # noinspection PyArgumentList
         out.write(
             ModReader.recHeader('GRUP', size, self.label, 0,
                                 self.stamp).pack())
         for record in self.records:
             record.dump(out)
Beispiel #4
0
 def dumpBlocks(self, out, bsbCellBlocks, bsb_size, blockGroupType,
                subBlockGroupType):
     """Dumps the cell blocks and their block and sub-block groups to
     out."""
     curBlock = None
     curSubblock = None
     stamp = self.stamp
     outWrite = out.write
     for bsb, cellBlock in bsbCellBlocks:
         (block, subblock) = bsb
         bsb0 = (block, None)
         if block != curBlock:
             curBlock, curSubblock = bsb0
             outWrite(
                 ModReader.recHeader('GRUP', bsb_size[bsb0], block,
                                     blockGroupType, stamp).pack())
         if subblock != curSubblock:
             curSubblock = subblock
             outWrite(
                 ModReader.recHeader('GRUP', bsb_size[bsb], subblock,
                                     subBlockGroupType, stamp).pack())
         cellBlock.dump(out)
Beispiel #5
0
 def dumpBlocks(self,out,bsbCellBlocks,bsb_size,blockGroupType,
                subBlockGroupType):
     """Dumps the cell blocks and their block and sub-block groups to
     out."""
     curBlock = None
     curSubblock = None
     stamp = self.stamp
     outWrite = out.write
     for bsb,cellBlock in bsbCellBlocks:
         (block,subblock) = bsb
         bsb0 = (block,None)
         if block != curBlock:
             curBlock,curSubblock = bsb0
             # noinspection PyArgumentList
             outWrite(ModReader.recHeader('GRUP',bsb_size[bsb0],block,
                                          blockGroupType,stamp).pack())
         if subblock != curSubblock:
             curSubblock = subblock
             # noinspection PyArgumentList
             outWrite(ModReader.recHeader('GRUP',bsb_size[bsb],subblock,
                                          subBlockGroupType,stamp).pack())
         cellBlock.dump(out)
Beispiel #6
0
 def setCell(self, cell):
     """Adds record to record list and indexed."""
     if self.cellBlocks and not self.id_cellBlock:
         self.indexRecords()
     fid = cell.fid
     if fid in self.id_cellBlock:
         self.id_cellBlock[fid].cell = cell
     else:
         cellBlock = MobCell(
             ModReader.recHeader('GRUP', 0, 0, 6, self.stamp),
             self.loadFactory, cell)
         cellBlock.setChanged()
         self.cellBlocks.append(cellBlock)
         self.id_cellBlock[fid] = cellBlock
Beispiel #7
0
 def setCell(self,cell):
     """Adds record to record list and indexed."""
     if self.cellBlocks and not self.id_cellBlock:
         self.indexRecords()
     fid = cell.fid
     if fid in self.id_cellBlock:
         self.id_cellBlock[fid].cell = cell
     else:
         # noinspection PyArgumentList
         cellBlock = MobCell(ModReader.recHeader('GRUP',0,0,6,self.stamp),
                             self.loadFactory,cell)
         cellBlock.setChanged()
         self.cellBlocks.append(cellBlock)
         self.id_cellBlock[fid] = cellBlock
Beispiel #8
0
 def setWorld(self,world):
     """Adds record to record list and indexed."""
     if self.worldBlocks and not self.id_worldBlocks:
         self.indexRecords()
     fid = world.fid
     if fid in self.id_worldBlocks:
         self.id_worldBlocks[fid].world = world
     else:
         # noinspection PyArgumentList
         worldBlock = MobWorld(ModReader.recHeader('GRUP',0,0,1,self.stamp),
                               self.loadFactory,world)
         worldBlock.setChanged()
         self.worldBlocks.append(worldBlock)
         self.id_worldBlocks[fid] = worldBlock
Beispiel #9
0
 def setWorld(self, world):
     """Adds record to record list and indexed."""
     if self.worldBlocks and not self.id_worldBlocks:
         self.indexRecords()
     fid = world.fid
     if fid in self.id_worldBlocks:
         self.id_worldBlocks[fid].world = world
     else:
         # noinspection PyArgumentList
         worldBlock = MobWorld(
             ModReader.recHeader('GRUP', 0, 0, 1, self.stamp),
             self.loadFactory, world)
         worldBlock.setChanged()
         self.worldBlocks.append(worldBlock)
         self.id_worldBlocks[fid] = worldBlock
Beispiel #10
0
 def setWorld(self, world, worldcellblock=None):
     """Adds record to record list and indexed."""
     if self.worldBlocks and not self.id_worldBlocks:
         self.indexRecords()
     fid = world.fid
     if fid in self.id_worldBlocks:
         self.id_worldBlocks[fid].world = world
         self.id_worldBlocks[fid].worldCellBlock = worldcellblock
     else:
         worldBlock = MobWorld(
             ModReader.recHeader('GRUP', 0, 0, 1, self.stamp),
             self.loadFactory, world)
         worldBlock.setChanged()
         self.worldBlocks.append(worldBlock)
         self.id_worldBlocks[fid] = worldBlock
Beispiel #11
0
 def dump(self, out):
     """Dumps group header and then records."""
     if not self.changed:
         out.write(self.header.pack())
         out.write(self.data)
     else:
         if not self.worldBlocks: return
         worldHeaderPos = out.tell()
         header = ModReader.recHeader('GRUP', 0, self.label, 0, self.stamp)
         out.write(header.pack())
         totalSize = header.__class__.rec_header_size + sum(
             x.dump(out) for x in self.worldBlocks)
         out.seek(worldHeaderPos + 4)
         out.pack('I', totalSize)
         out.seek(worldHeaderPos + totalSize)
Beispiel #12
0
 def dump(self,out):
     """Dumps group header and then records."""
     if not self.changed:
         out.write(self.header.pack())
         out.write(self.data)
     else:
         if not self.worldBlocks: return
         worldHeaderPos = out.tell()
         # noinspection PyArgumentList
         header = ModReader.recHeader('GRUP',0,self.label,0,self.stamp)
         out.write(header.pack())
         totalSize = header.__class__.size + sum(
             x.dump(out) for x in self.worldBlocks)
         out.seek(worldHeaderPos + 4)
         out.pack('I', totalSize)
         out.seek(worldHeaderPos + totalSize)
Beispiel #13
0
 def getReader(self):
     """Returns a ModReader wrapped around self.data."""
     return ModReader(self.inName, sio(self.data))