Exemple #1
0
    def traverseChildren(self, verbose=False):
        packer = DNAPacker(verbose=verbose)
        for child in self.children:
            packer += child.traverse(recursive=True, verbose=verbose)

        packer.pack('increment parent', 255, UINT8)
        return packer
Exemple #2
0
    def traverseChildren(self, verbose=False):
        packer = DNAPacker(verbose=verbose)
        for child in self.children:
            packer += child.traverse(recursive=True, verbose=verbose)

        packer.pack('increment parent', 255, UINT8)
        return packer
Exemple #3
0
    def traverse(self, recursive=True, verbose=False):
        packer = DNAPacker(name='DNAGroup', verbose=verbose)

        packer.pack('component code', self.COMPONENT_CODE, UINT8)
        packer.pack('name', self.name, STRING)

        if recursive:
            packer += self.traverseChildren(verbose=verbose)
        return packer
Exemple #4
0
    def traverse(self, recursive=True, verbose=False):
        packer = DNAPacker(name='DNAGroup', verbose=verbose)

        packer.pack('component code', self.COMPONENT_CODE, UINT8)
        packer.pack('name', self.name, STRING)

        parentName = ''
        if self.parent:
            parentName = self.parent.name
        packer.pack('parent name', parentName, STRING)

        visGroupName = ''
        if self.visGroup:
            visGroupName = self.visGroup.name
        packer.pack('vis group name', visGroupName, STRING)

        if recursive:
            packer += self.traverseChildren(verbose=verbose)
        return packer
Exemple #5
0
    def dump(self, verbose=False):
        packer = DNAPacker(name='DNAStorage', verbose=verbose)

        # Catalog codes...
        packer.pack('catalog code root count', len(self.catalogCodes), UINT16)
        for root, codes in self.catalogCodes.items():
            packer.pack('root', root, STRING)
            packer.pack('root code count', len(codes), UINT8)
            for code in codes:
                packer.pack('code', code, STRING)

        # Textures...
        packer.pack('texture count', len(self.textures), UINT16)
        for code, filename in self.textures.items():
            packer.pack('code', code, STRING)
            packer.pack('filename', filename, STRING)

        # Fonts are packed again now we have C++ signs
        packer.pack('font count', len(self.fonts), UINT16)
        for code, filename in self.fonts.items():
            packer.pack('code', code, STRING)
            packer.pack('filename', filename, STRING)

        # Nodes...
        packer.pack('node count', len(self.nodes), UINT16)
        for code, (filename, search) in self.nodes.items():
            packer.pack('code', code, STRING)
            packer.pack('filename', filename, STRING)
            packer.pack('search', search, STRING)

        # Hood nodes...
        packer.pack('hood node count', len(self.hoodNodes), UINT16)
        for code, (filename, search) in self.hoodNodes.items():
            packer.pack('code', code, STRING)
            packer.pack('filename', filename, STRING)
            packer.pack('search', search, STRING)

        # Place nodes...
        packer.pack('place node count', len(self.placeNodes), UINT16)
        for code, (filename, search) in self.placeNodes.items():
            packer.pack('code', code, STRING)
            packer.pack('filename', filename, STRING)
            packer.pack('search', search, STRING)

        # Blocks...
        packer.pack('block number count', len(self.blockNumbers), UINT16)
        for blockNumber in self.blockNumbers:
            packer.pack('number', blockNumber, UINT8)
            packer.pack('zone ID', self.blockZones[blockNumber], UINT16)
            title = self.blockTitles.get(blockNumber, '')
            packer.pack('title', title, STRING)
            article = self.blockArticles.get(blockNumber, '')
            packer.pack('article', article, STRING)
            buildingType = self.blockBuildingTypes.get(blockNumber, '')
            packer.pack('building type', buildingType, STRING)

        # Suit points...
        packer.pack('suit point count', len(self.suitPoints), UINT16)
        for point in self.suitPoints:
            packer.pack('index', point.index, UINT16)
            packer.pack('type', point.pointType, UINT8)
            for component in point.pos:
                packer.pack('position', int(component * 100), INT32)
            packer.pack('landmark building index',
                        point.landmarkBuildingIndex, INT16)

        # Suit edges...
        packer.pack('suit edge count', len(self.suitEdges), UINT16)
        for startPointIndex, edges in self.suitEdges.items():
            packer.pack('start point index', startPointIndex, UINT16)
            packer.pack('edge count', len(edges), UINT16)
            for edge in edges:
                packer.pack('end point', edge.endPoint.index, UINT16)
                packer.pack('zone ID', edge.zoneId, UINT16)

        return packer
    def dump(self, verbose=False):
        packer = DNAPacker(name='DNAStorage', verbose=verbose)

        # Catalog codes...
        packer.pack('catalog code root count', len(self.catalogCodes), UINT16)
        for root, codes in self.catalogCodes.items():
            packer.pack('root', root, STRING)
            packer.pack('root code count', len(codes), UINT8)
            for code in codes:
                packer.pack('code', code, STRING)

        # Textures...
        packer.pack('texture count', len(self.textures), UINT16)
        for code, filename in self.textures.items():
            packer.pack('code', code, STRING)
            packer.pack('filename', filename, STRING)

        # Fonts are packed again now we have C++ signs
        packer.pack('font count', len(self.fonts), UINT16)
        for code, filename in self.fonts.items():
            packer.pack('code', code, STRING)
            packer.pack('filename', filename, STRING)

        # Nodes...
        packer.pack('node count', len(self.nodes), UINT16)
        for code, (filename, search) in self.nodes.items():
            packer.pack('code', code, STRING)
            packer.pack('filename', filename, STRING)
            packer.pack('search', search, STRING)

        # Hood nodes...
        packer.pack('hood node count', len(self.hoodNodes), UINT16)
        for code, (filename, search) in self.hoodNodes.items():
            packer.pack('code', code, STRING)
            packer.pack('filename', filename, STRING)
            packer.pack('search', search, STRING)

        # Place nodes...
        packer.pack('place node count', len(self.placeNodes), UINT16)
        for code, (filename, search) in self.placeNodes.items():
            packer.pack('code', code, STRING)
            packer.pack('filename', filename, STRING)
            packer.pack('search', search, STRING)

        # Blocks...
        packer.pack('block number count', len(self.blockNumbers), UINT16)
        for blockNumber in self.blockNumbers:
            packer.pack('number', blockNumber, UINT8)
            packer.pack('zone ID', self.blockZones[blockNumber], UINT16)
            title = self.blockTitles.get(blockNumber, '')
            packer.pack('title', title, STRING)
            article = self.blockArticles.get(blockNumber, '')
            packer.pack('article', article, STRING)
            buildingType = self.blockBuildingTypes.get(blockNumber, '')
            packer.pack('building type', buildingType, STRING)

        # Suit points...
        packer.pack('suit point count', len(self.suitPoints), UINT16)
        for point in self.suitPoints:
            packer.pack('index', point.index, UINT16)
            packer.pack('type', point.pointType, UINT8)
            for component in point.pos:
                packer.pack('position', int(component * 100), INT32)
            packer.pack('landmark building index', point.landmarkBuildingIndex,
                        INT16)

        # Suit edges...
        packer.pack('suit edge count', len(self.suitEdges), UINT16)
        for startPointIndex, edges in self.suitEdges.items():
            packer.pack('start point index', startPointIndex, UINT16)
            packer.pack('edge count', len(edges), UINT16)
            for edge in edges:
                packer.pack('end point', edge.endPoint.index, UINT16)
                packer.pack('zone ID', edge.zoneId, UINT16)

        return packer