Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 15 additions & 11 deletions game/Submods/MAICA_MTTSubmod/main.rpy
Original file line number Diff line number Diff line change
Expand Up @@ -85,19 +85,22 @@ init -100 python:
return "微笑" # 无匹配时返回 None
init python:
persistent.mtts["_chat_installed"] = store.mas_submod_utils.isSubmodInstalled("MAICA Blessland")
init python:
init -1 python:

import MTTS
old_renpysay = renpy.say
store.mtts = mtts
PY2, PY3 = MTTS.PY2, MTTS.PY3
def mtts_say(who, what, interact=True, *args, **kwargs):
import time
def mtts_available():
if not renpy.seen_label("mtts_greeting"):
store.mtts_status = renpy.substitute(_("未解锁"))
return old_renpysay(who, what, interact, *args, **kwargs)
return False# old_renpysay(who, what, interact, *args, **kwargs)
if not persistent.mtts["enabled"] and persistent.mtts["_outdated"] and not store.mtts.mtts.is_accessable:
store.mtts_status = renpy.substitute(_("未启用/未更新/服务不可用"))
return old_renpysay(who, what, interact, *args, **kwargs)
return False# old_renpysay(who, what, interact, *args, **kwargs)
return True
def mtts_generate_sound(what):
def process_str(srt):
import re
# \{fast\}.*?\{fast\} , \{.*?\} 将匹配的str替换为空字符串
Expand All @@ -110,7 +113,7 @@ init python:
store.mtts_match_rule = rule.get('name', 'Default')
if not rule['action']:
store.mtts_status = renpy.substitute(_("未匹配任何规则/规则为空action"))
return old_renpysay(who, what, interact, *args, **kwargs)
return# old_renpysay(who, what, interact, *args, **kwargs)
if rule['name'] == 'MAICA_Chat':
target_lang = store.maica.maica.target_lang
else:
Expand All @@ -122,15 +125,16 @@ init python:
res = mtts.AsyncTask(mtts.mtts.generate, text=text, label_name=store.mas_submod_utils.current_label, emotion=exp, target_lang=target_lang)
name = mtts.mtts.cache.get_cachename(text = text, label_name=store.mas_submod_utils.current_label)
while not res.is_finished:
old_renpysay(who, "...{w=0.3}{nw}", interact, *args, **kwargs)
_history_list.pop()
time.sleep(0.1)
#old_renpysay(who, "...{w=0.3}{nw}", interact, *args, **kwargs)
#_history_list.pop()
if res.is_success:
res = res.result
if res.is_success():
store.mtts_status = renpy.substitute(_("播放中"))
renpy.music.set_volume(persistent.mtts["volume"], channel="voice")
renpy.music.play(
store.AudioData(res.data, name),#os.path.join(mtts.mtts.cache_path, "test.ogg"),
renpy.music.queue(
store.MASAudioData(res.data, name),#os.path.join(mtts.mtts.cache_path, "test.ogg"),
channel="voice",
)
else:
Expand All @@ -140,6 +144,6 @@ init python:

store.mtts_status = renpy.substitute(_("待机"))

old_renpysay(who, what, interact, *args, **kwargs)
#old_renpysay(who, what, interact, *args, **kwargs)

renpy.say = mtts_say
#renpy.say = mtts_say
5 changes: 0 additions & 5 deletions game/Submods/MAICA_MTTSubmod/override_mcharacter.rpy

This file was deleted.

52 changes: 52 additions & 0 deletions game/Submods/MAICA_MTTSubmod/override_mcharacter_callback.rpy
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
init python:
# 条件显示的角色回调
# 这个回调会在显示对话前检查条件,如果条件不满足则暂停直到条件满足
import MTTS
def cb_mtts_monika(event, interact=True, what=None, **kwargs):
"""
条件显示回调函数

参数:
- event: 回调事件类型
- interact: 是否发生交互
- condition_check: 一个返回布尔值的可调用对象,检查是否应该显示对话
- **kwargs: 其他回调参数
"""
if not interact:
return
#log所有入参:
store.mas_submod_utils.submod_log.debug("event: {}, interact: {}, what: {}, kwargs: {}".format(event, interact, what, kwargs))
# 在"show"事件时检查条件
if event == "show":
if what == None:
what = renpy.last_say().what
# 如果条件不满足,暂停直到条件满足
if what and mtts_available():
store.mtts_saying_what = what
sound_thread = mtts.AsyncTask(mtts_generate_sound, what)
while not sound_thread.is_finished:
renpy.pause(0.1)
if sound_thread.exception:
raise sound_thread.exception


monika_callbacks_list = []
monika_callbacks_list.append(cb_mtts_monika)

def cb_monika(*args, **kwargs):
for cb in monika_callbacks_list:
cb(*args, **kwargs)


init 1 python:
monika_callbacks_list.append(slow_nodismiss)

@store.mas_submod_utils.functionplugin("ch30_preloop", priority=900)
def override_mcb():
m.display_args['callback'] = cb_monika

#m2 = DynamicCharacter('m_name', image='monika', what_prefix='', what_suffix='', ctc="ctc", ctc_position="fixed", show_function=store.mas_core.show_display_say, callback=cb_mtts_monika)
#config.all_character_callbacks.append(cb_mtts_monika)
#m.display_args['callback'] = cb_mtts_monika
#init 1 python:
# m = m2
7 changes: 6 additions & 1 deletion game/Submods/MAICA_MTTSubmod/status.rpy
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ init -1 python:
store.mtts_status = renpy.substitute(_("待机"))
if not hasattr(store, "mtts_match_rule"):
store.mtts_match_rule = renpy.substitute(_("未知"))
if not hasattr(store, "mtts_saying_what"):
store.mtts_saying_what = renpy.substitute(_("未知"))
# default store.mtts_status = renpy.substitute(_("待机"))
# quick functions to enable disable the mouse tracker
def maicatts_enableWorkLoadScreen():
Expand All @@ -31,7 +33,7 @@ screen maicatts_stat_lite():
fixed:
frame:
xsize 619
xoffset 5 yoffset 450
xoffset 5 yoffset 250
background "mod_assets/console/cn_frame_stats.png"
has vbox
hbox:
Expand All @@ -44,5 +46,8 @@ screen maicatts_stat_lite():
hbox:
text _("匹配规则: [store.mtts_match_rule]"):
size 15
hbox:
text _("输出文本([store.mtts.matcher._count_content_chars(store.mtts_saying_what)]): [store.mtts_saying_what]"):
size 15