engines.naninovel.sentence_generators.text_generator 源代码

"""
Naninovel Text Generator
生成文本和对话命令
"""
from core.base_sentence_generator import BaseSentenceGenerator
from core.constants import WindowMode, SpecialSpeaker


[文档] class TextGenerator(BaseSentenceGenerator): """文本生成器""" param_config = { "Speaker": { "translate_type": "Speaker" }, "Text": {}, "Printer": { "translate_type": "Printer" }, "PrinterPos": {} } @property def category(self): return "Text" @property def priority(self) -> int: return 900
[文档] def process(self, data): """ 处理文本参数 Args: data: 参数字典 Returns: List[str]: 生成的文本命令 """ if not self.can_process(data): return None speaker = self.get_value("Speaker", data) text = self.get_value("Text", data) printer = self.get_value("Printer", data) lines = [] # 处理打印机设置 if printer != WindowMode.HIDE.value and printer: if printer in [WindowMode.SHOW.value, WindowMode.SHOW_AND_HIDE.value]: line = f"@printer" else: printer = self.translator.translate('Printer', printer) printer_pos = self.get_sentence("PrinterPos", data) line = f"@printer {printer}" if printer_pos: line += printer_pos lines.append(line) # 处理对话文本 if speaker: if speaker == SpecialSpeaker.NANINOVEL_COMMAND.value: # 直接输入 Naninovel 命令 lines.append(text) else: speaker = self.translator.translate("Speaker", speaker) lines.append(f'{speaker}: {text}') else: if text: lines.append(text) if printer in [WindowMode.HIDE.value, WindowMode.SHOW_AND_HIDE.value]: lines.append("@hidePrinter wait:true") return lines