Exemple #1
0
 def generate_character(cls, img_str):
     last_word = img_str.split(" ")[-1]
     position = PositionMapping.get(last_word)
     if position:
         return Image(img_str.replace(last_word, "").strip(), "show", position)
     else:
         return Image(img_str.replace(last_word, "").strip(), ImageCmdMapping.get(last_word, "hide"))
Exemple #2
0
    def parse_by_row(self, last_role, last_mode, row_data):
        # 当前角色、对话文本
        current_role_name, text = row_data[0], row_data[1]
        # 音乐、立绘、换页、背景、备注、模式、音效、转场、特殊效果
        music, character, change_page, background, remark, mode, sound, transition, _ = row_data[
            18:]
        # nvl模式
        if mode == 'nvl':
            current_mode = 'nvl'
        elif mode == 'adv':
            current_mode = 'adv'
        else:
            current_mode = last_mode
        # 角色信息
        if last_role and current_role_name == "":
            current_role = last_role
        elif current_role_name not in ["", "旁白"]:
            current_role = self.add_role(current_role_name)
        elif current_mode == 'adv':
            current_role = Role("narrator_adv", "None")
        elif current_mode == 'nvl':
            current_role = Role("narrator_nvl", "None")
        else:
            current_role = None

        text = Text(text, current_role)
        text.add_triggers(Mode(current_mode))
        # 音乐信息
        if music:
            cmd = "stop" if music == "none" else "play"
            text.add_triggers(Audio(music, cmd))
        # 背景信息
        if background:
            text.add_triggers(Image(background, "scene"))
        # 立绘信息
        if character:
            characters = [
                Converter.generate_character(ch) for ch in character.split(";")
            ]
            text.add_triggers(*characters)
        # 音效
        if sound:
            if sound.startswith('循环'):
                text.add_triggers(Audio(sound.replace('循环', ''), 'loop'))
            else:
                cmd = "stop" if sound == "stop" else "sound"
                text.add_triggers(Audio(sound, cmd))
        # 转场
        if transition:
            t_style = TransitionMapping.get(transition, "")
            text.add_triggers(Transition(t_style))
        # 换页
        if change_page:
            text.add_triggers(Command("nvl clear"))
        return current_mode, current_role, text
Exemple #3
0
 def _converter_character(self):
     # 立绘
     character_str = self.row[ElementColNumMapping.get('character')].strip()
     if not character_str:
         return []
     characters = []
     # 新立绘出现时回收旧立绘
     for character in self.converter.characters:
         characters.append(Image(character.name, 'hide'))
     new_characters = [Converter.generate_character(ch) for ch in character_str.split(";")]
     self.converter.characters = new_characters
     characters.extend(new_characters)
     return characters
Exemple #4
0
 def _converter_background(self):
     # 背景
     background = self.row[ElementColNumMapping.get('background')]
     if not background:
         return None
     return Image(background, "scene")