engines.naninovel.sentence_generators.background_generator 源代码

"""
Naninovel Background Generator
生成背景相关命令
"""
from core.base_sentence_generator import BaseSentenceGenerator


[文档] class BackgroundGenerator(BaseSentenceGenerator): """背景生成器""" param_config ={ "TransBack": { "translate_type": "TransitionType", }, "Back": { "translate_type": "Background", }, "Event": { "translate_type": "Event", }, "BackID": { "translate_type": "Id", "format": " id:{value}", "default": "MainBackground" }, "BackScale": { "format":" sacle:{value}" }, "BackPos": { "format":" pos:{value}" }, "BackVisible": { "format":" visible:{value}" }, "BackWait": { "format":" wait:{value}" }, "Dissolve": { "translate_type": "Dissolve", "format": " dissolve:{value}" }, "DissolveParam": { "format": " params:{value}", "default": "90" }, "BackTint": { "format":" tint:{value}", }, "BackTime": { "format":" time:{value}", "default": "1.0" }, "BackAnim": { "translate_type": "Background", }, "BackAnimParam": { "translate_type": "Animation", }, } def __init__(self, translator, engine_config): super().__init__(translator, engine_config) @property def category(self): return "Background" @property def priority(self) -> int: return 200
[文档] def process(self, data): """ 处理背景参数 Args: data: 参数字典 Returns: List[str]: 生成的背景命令 """ # 检查是否有足够的上下文生成场景命令 if not self.can_process(data): return # data = self.do_translate(data) """构建场景命令""" # 检查是否有足够的上下文生成场景命令 data = self.do_translate(data) background = self.get_value("Back", data) event = self.get_value("Event", data) if not background and not event: return None lines = [] trans = self.get_value("TransBack", data) # 添加渐变遮罩 dissolve = self.get_sentence("Dissolve", data) if dissolve: dissolve += self.get_sentence("DissolveParam", data, use_default=True) # 是否等待 wait = self.get_sentence("BackWait", data) # 等待时间 time = self.get_sentence("BackTime", data, use_default=True) if trans == "block": command = " " else: command = "" if "hide" in [background,event] or trans == "hide": command += "@hide " image = "" if background: # 添加图层 id = self.get_sentence("BackID", data, use_default=True) else: id = "CG" if dissolve: image = f"{image}.Custom" line = f"{command}{image}{id}{dissolve}{wait}" else: command += "@back " # 构建场景命令 if background: image = background id = self.get_sentence("BackID", data) else: image = event id = " id:CG" if dissolve: image = f"{image}.Custom" # 添加位置和缩放变换 pos = self.get_sentence("BackPos", data) scale = self.get_sentence("BackScale", data) # 是否可见 visible = self.get_sentence("BackVisible", data) tint = self.get_sentence("BackTint", data) line = f"{command}{image}{id}{pos}{scale}{visible}{tint}{dissolve}{wait}" # 构建最终命令 if trans == "trans": lines.append(f"@trans{time}") lines.append(line) else: lines.append(f"{line}{time}") return lines