feat(ui): 为 UI 增加部分配置有效性验证

This commit is contained in:
XcantloadX 2025-06-27 14:01:57 +08:00
parent a01c37d0fc
commit 08a7e71881
1 changed files with 34 additions and 1 deletions

View File

@ -2,6 +2,7 @@ import os
import traceback import traceback
import zipfile import zipfile
import logging import logging
import copy
from functools import partial from functools import partial
from itertools import chain from itertools import chain
from datetime import datetime, timedelta from datetime import datetime, timedelta
@ -372,9 +373,41 @@ class KotoneBotUI:
assert key in CONFIG_KEY_VALUE, f"未知的配置项:{key}" assert key in CONFIG_KEY_VALUE, f"未知的配置项:{key}"
key = cast(ConfigKey, key) key = cast(ConfigKey, key)
data[key] = value data[key] = value
# 设置结果
# 先设置options
for (set_func, _) in return_values: for (set_func, _) in return_values:
set_func(options, data) set_func(options, data)
# 验证规则1截图方法验证
screenshot_method = self.current_config.backend.screenshot_impl
backend_type = self.current_config.backend.type
valid_screenshot_methods = {
'mumu12': ['adb', 'adb_raw', 'uiautomator2', 'nemu_ipc'],
'leidian': ['adb', 'adb_raw', 'uiautomator2'],
'custom': ['adb', 'adb_raw', 'uiautomator2'],
'dmm': ['remote_windows', 'windows']
}
if screenshot_method not in valid_screenshot_methods.get(backend_type, []):
gr.Warning(f"截图方法 '{screenshot_method}' 不适用于当前选择的模拟器类型,配置未保存。")
return ""
# 验证规则2若启用培育那么培育偶像不能为空
if options.produce.enabled and not options.produce.idols:
gr.Warning("启用培育时,培育偶像不能为空,配置未保存。")
return ""
# 验证规则3若启用AP/金币购买,对应的商品不能为空
if options.purchase.ap_enabled and not options.purchase.ap_items:
gr.Warning("启用AP购买时AP商店购买物品不能为空配置未保存。")
return ""
if options.purchase.money_enabled and not options.purchase.money_items:
gr.Warning("启用金币购买时,金币商店购买物品不能为空,配置未保存。")
return ""
# 验证通过,保存配置
self.current_config.options = options self.current_config.options = options
try: try:
save_config(self.config, "config.json") save_config(self.config, "config.json")