Example #1
0
 def save_entry(self, voice_set_label: str, entry: PropertyContainer, index: int):
     reader, set_count = self._get_reader_at_voice_set_table(voice_set_label)
     if index < 0 or index >= set_count:
         raise Exception
     reader.seek(reader.tell() + index * 8)
     writer = BinArchiveWriter(self.archive, reader.tell())
     for prop in entry.values():
         prop.write(writer)
Example #2
0
    def append_entry_to_voice_set(self, voice_set_label: str) -> PropertyContainer:
        reader, set_count = self._get_reader_at_voice_set_table(voice_set_label)
        reader.seek(reader.tell() - 8)
        writer = BinArchiveWriter(self.archive, reader.tell())
        writer.write_u32(set_count + 1)
        writer.write_u32(set_count + 1)

        entry = PropertyContainer()
        entry["Name"] = StringProperty("Name", value="Placeholder")
        entry["Tag"] = BufferProperty("Tag", value=[1, 0, 0, 0])
        writer.seek(writer.tell() + set_count * 8)
        self.archive.allocate(writer.tell(), 8, False)
        for prop in entry.values():
            prop.write(writer)
        return entry