"""
Ren'Py Background Generator
生成背景和事件相关命令
"""
from core.base_sentence_generator import BaseSentenceGenerator
[文档]
class BackgroundGenerator(BaseSentenceGenerator):
"""背景生成器"""
param_config = {
"Command": {
"translate_type": "Command",
"default": "show"
},
"Background": {
"translate_type": "Background",
},
"Event": {
"translate_type": "Event",
},
"EventVarient": {},
"At": {
"translate_type": "Transform",
"format": " at {value}"
},
"Onlayer": {
"translate_type": "Layer",
"format": " onlayer {value}"
},
"With": {
"translate_type": "Transition",
"format": " with {value}",
"default": "dissolve",
},
"WithAtr": {
"format": "({value})"
},
"ATLType": {}
}
@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 None
data = self.do_translate(data)
lines = []
if self.exists_param("Background", data) or self.exists_param("Event", data):
background = self.get_value("Background", data)
event = self.get_value("Event", data)
# 构建场景命令
command = self.get_value("Command", data, use_default=True) + " "
image = background or event
# 添加事件属性(差分)
varient = self.get_value("Varient", data)
if varient:
image += f" {varient}"
# 添加位置
at = self.get_sentence("At", data)
# 添加图层
onlayer = self.get_sentence("Onlayer", data)
# 添加过渡效果
transition = self.get_value("With", data)
if transition != "empty":
transition = self.get_sentence("With", data, use_default=True)
with_atr = self.get_sentence("WithAtr", data, use_default=True)
if with_atr:
transition += with_atr
else:
transition = ""
# 构建最终命令
line = f"{command}{image}{at}{onlayer}{transition}"
if self.exists_param("ATLType", data):
line = f"{line}:"
lines.append(line)
return lines