Example #1
0
 def get_character_from_spawn(
         self, spawn: PropertyContainer) -> Optional[PropertyContainer]:
     person = self.chapter_data.person
     result = None
     if person:
         result = person.get_element_by_key(spawn.get_key())
     if not result:
         characters_module = locator.get_scoped("ModuleService").get_module(
             "Characters")
         result = characters_module.get_element_by_key(spawn.get_key())
     return result
Example #2
0
 def _get_display_name_from_spawn(self, spawn: PropertyContainer):
     person = self.chapter_data.person
     result = None
     if person:
         elem = person.get_element_by_key(spawn.get_key())
         if elem:
             result = person.get_display_name_for_entry(elem)
     if not result:
         characters_module = locator.get_scoped("ModuleService").get_module(
             "Characters")
         elem = characters_module.get_element_by_key(spawn.get_key())
         result = characters_module.get_display_name_for_entry(elem)
     return result
Example #3
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
Example #4
0
    def __init__(self,
                 template: PropertyContainer,
                 category=None,
                 sort_editors=False):
        super().__init__()
        self.editors = {}
        editors_temp = []
        for (key, prop) in template.items():
            if category and prop.category != category:
                continue

            # Generate the editor label.
            label = QtWidgets.QLabel(key)
            if prop.tooltip:
                label.setToolTip(prop.tooltip)

            # Generate the actual editor.
            editor = prop.create_editor()
            if prop.is_disabled:
                editor.setEnabled(False)
            editor.form = self

            # Add a row to the form.
            editors_temp.append((key, editor))
            self.editors[key] = editor

        if sort_editors:
            editors_temp.sort(key=lambda k: template[k[0]].sort_value)
        for key, editor in editors_temp:
            self.editors[key] = editor
            self.addRow(key, editor)
Example #5
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 #6
0
 def _create_entry_template() -> PropertyContainer:
     template = PropertyContainer()
     template["Name"] = StringProperty("Name")
     template["Tag"] = BufferProperty("Tag", length=4)
     return template
Example #7
0
def load_spawn_template():
    global SPAWN_TEMPLATE
    SPAWN_TEMPLATE = PropertyContainer.from_file(
        "Modules/ServiceData/FE14Spawn.json")
Example #8
0
 def _add_character_to_list(target_list: QListWidget,
                            character: PropertyContainer):
     item = QListWidgetItem()
     item.setText(character.get_display_name())
     item.setData(QtCore.Qt.UserRole, character)
     target_list.addItem(item)
Example #9
0
 def get_display_name(self, module: Module, entry: PropertyContainer):
     return entry.get_display_name()
Example #10
0
def load_tile_template():
    global TILE_TEMPLATE
    if not TILE_TEMPLATE:
        TILE_TEMPLATE = PropertyContainer.from_file(
            "Modules/ServiceData/FE14Tile.json")
 def get_display_name(self, module: Module, entry: PropertyContainer):
     display_name = super().get_display_name(module, entry)
     if display_name and display_name.startswith("PID_"):
         return display_name
     return "%s [%s]" % (entry.get_display_name(), entry.get_key())