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
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
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
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)
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)
def _create_entry_template() -> PropertyContainer: template = PropertyContainer() template["Name"] = StringProperty("Name") template["Tag"] = BufferProperty("Tag", length=4) return template
def load_spawn_template(): global SPAWN_TEMPLATE SPAWN_TEMPLATE = PropertyContainer.from_file( "Modules/ServiceData/FE14Spawn.json")
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)
def get_display_name(self, module: Module, entry: PropertyContainer): return entry.get_display_name()
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())