Controller 模块
控制器模块作为GUI与Core功能模块交互的桥梁,提供异步的业务逻辑控制接口。
基础控制器
- class Controller.base_controller.BaseController(parent: QObject | None = None)[源代码]
基类:
QObject
控制器基类,作为GUI与Core功能模块交互的桥梁。
所有控制器应继承此类,并实现相应的抽象方法。 控制器遵循单线程异步模式,对于IO密集型任务使用信号槽机制。
备注
这是一个抽象基类,子类必须实现
initialize()
方法。- error_occurred
错误信号,携带错误消息字符串
- Type:
Signal
- task_progress
任务进度信号,携带任务名和进度百分比
- Type:
Signal
- task_completed
任务完成信号,携带任务名
- Type:
Signal
示例
创建一个自定义控制器:
class MyController(BaseController): def initialize(self) -> bool: # 初始化逻辑 return True
- abstract initialize() bool [源代码]
初始化控制器。
子类必须实现此方法来执行具体的初始化逻辑。
- 返回:
初始化是否成功
- 抛出:
NotImplementedError -- 如果子类未实现此方法
- run_async_task(task_name: str, task_func: Callable[[...], Any], *args, **kwargs) None [源代码]
在单独的线程中运行异步任务。
这个方法创建一个新的工作线程来执行任务函数,避免阻塞主线程。 如果已经有同名任务在运行,会先停止旧任务再启动新任务。
- 参数:
task_name -- 任务的唯一标识符
task_func -- 要执行的任务函数
*args -- 传递给任务函数的位置参数
**kwargs -- 传递给任务函数的关键字参数
备注
任务执行过程中的进度通过
task_progress
信号报告。 任务完成时通过task_completed
信号通知。 任务出错时通过error_occurred
信号报告。示例
运行一个下载任务:
controller.run_async_task( "download_file", self.download_function, "http://example.com/file.zip", "/path/to/save" )
- staticMetaObject = PySide6.QtCore.QMetaObject("BaseController" inherits "QObject": Methods: #4 type=Signal, signature=error_occurred(QString), parameters=QString #5 type=Signal, signature=task_progress(QString,int), parameters=QString, int #6 type=Signal, signature=task_completed(QString), parameters=QString )
- class Controller.base_controller.AsyncTaskWorker(func: Callable[[...], Any], *args, **kwargs)[源代码]
基类:
QObject
异步任务工作器。
在独立线程中执行任务函数,并通过信号报告结果。
- finished
任务完成信号
- Type:
Signal
- error
错误信号,携带错误消息
- Type:
Signal
- progress
进度信号,携带进度值
- Type:
Signal
- result
结果信号,携带任务返回值
- Type:
Signal
- finished
任务完成时发出。
- Type:
Signal
- staticMetaObject = PySide6.QtCore.QMetaObject("AsyncTaskWorker" inherits "QObject": Methods: #4 type=Signal, signature=finished() #5 type=Signal, signature=error(QString), parameters=QString #6 type=Signal, signature=progress(int), parameters=int #7 type=Signal, signature=result(PyObject), parameters=PyObject #8 type=Slot, signature=run() )
游戏控制器
游戏控制器模块。
该模块提供游戏安装、启动、版本管理等核心功能的控制器接口。
- class Controller.game_controller.GameController(parent: QObject | None = None)[源代码]
-
游戏控制器。
负责游戏的安装、启动、版本管理等功能。提供异步的游戏操作接口, 确保长时间运行的操作不会阻塞用户界面。
- game_launch_started
游戏启动开始信号
- Type:
Signal
- game_launched
游戏启动完成信号
- Type:
Signal
- game_terminated
游戏结束信号,携带退出码
- Type:
Signal
- version_list_updated
版本列表更新信号,携带版本列表
- Type:
Signal
- download_progress
下载进度信号,携带文件名、当前大小、总大小
- Type:
Signal
示例
使用游戏控制器启动游戏:
controller = GameController() controller.initialize() controller.launch_game("1.21", "player_name")
- game_launch_started
游戏启动开始时发出。
- Type:
Signal
- game_launched
游戏成功启动时发出。
- Type:
Signal
- initialize() bool [源代码]
初始化控制器。
连接Core层相关功能,设置游戏控制器的初始状态。
- 返回:
初始化是否成功
待处理
连接Core层游戏管理模块
加载已安装游戏列表
设置默认配置
- get_game_versions() List[Dict[str, Any]] [源代码]
获取可用的游戏版本。
- 返回:
id (str): 版本标识符
type (str): 版本类型 (release, snapshot, old_beta等)
releaseTime (str): 发布时间
- 返回类型:
版本信息列表,每个版本包含以下字段
示例
获取版本列表:
versions = controller.get_game_versions() for version in versions: print(f"版本: {version['id']}, 类型: {version['type']}")
待处理
从Core层获取真实的游戏版本列表
- refresh_version_list() None [源代码]
异步刷新版本列表。
从官方服务器获取最新的游戏版本信息。操作完成后会发出
version_list_updated
信号。- Note:
这是一个异步操作,不会阻塞调用线程。
- See Also:
get_game_versions()
: 同步获取版本列表
- launch_game(version_id: str, username: str) None [源代码]
启动指定版本的游戏。
- 参数:
version_id -- 要启动的游戏版本ID,如 "1.21" 或 "1.20.4"
username -- 玩家用户名
- 抛出:
ValueError -- 当版本ID无效时
RuntimeError -- 当游戏启动失败时
示例
启动最新版本游戏:
controller.launch_game("1.21", "Steve")
- staticMetaObject = PySide6.QtCore.QMetaObject("GameController" inherits "BaseController": Methods: #7 type=Signal, signature=game_launch_started() #8 type=Signal, signature=game_launched() #9 type=Signal, signature=game_terminated(int), parameters=int #10 type=Signal, signature=version_list_updated(QVariantList), parameters=QVariantList #11 type=Signal, signature=download_progress(QString,int,int), parameters=QString, int, int )
- install_game(version_id: str) None [源代码]
安装指定版本的游戏。
- 参数:
version_id -- 要安装的游戏版本ID
备注
这是一个异步操作,安装过程中会通过
task_progress
信号报告进度,完成时发出task_completed
信号。示例
安装特定版本:
controller.install_game("1.21")
参见
launch_game()
: 启动已安装的游戏
账户控制器
账户控制器模块
负责用户账户的管理、登录、验证等功能
- class Controller.account_controller.AccountController(parent=None)[源代码]
-
账户控制器
负责用户账户的管理、登录、验证等功能
- login_success
- login_failed
- logout_completed
- account_list_updated
- get_current_account() Dict[str, Any] | None [源代码]
获取当前登录的账户
- 返回:
当前账户信息,如果未登录则返回None
- 返回类型:
Optional[Dict[str, Any]]
- staticMetaObject = PySide6.QtCore.QMetaObject("AccountController" inherits "BaseController": Methods: #7 type=Signal, signature=login_success(QVariantMap), parameters=QVariantMap #8 type=Signal, signature=login_failed(QString), parameters=QString #9 type=Signal, signature=logout_completed() #10 type=Signal, signature=account_list_updated(QVariantList), parameters=QVariantList )
设置控制器
设置控制器模块
负责应用设置的管理、保存、加载等功能
- class Controller.settings_controller.SettingsController(parent=None)[源代码]
-
设置控制器
负责应用设置的管理、保存、加载等功能
- settings_loaded
- settings_saved
- settings_changed
- get_setting(section: str, key: str, default=None) Any [源代码]
获取设置项
- 参数:
section -- 设置分区
key -- 设置项键名
default -- 默认值
- 返回:
设置项值
- 返回类型:
Any
- set_setting(section: str, key: str, value: Any) None [源代码]
设置设置项
- 参数:
section -- 设置分区
key -- 设置项键名
value -- 设置项值
- staticMetaObject = PySide6.QtCore.QMetaObject("SettingsController" inherits "BaseController": Methods: #7 type=Signal, signature=settings_loaded(QVariantMap), parameters=QVariantMap #8 type=Signal, signature=settings_saved() #9 type=Signal, signature=settings_changed(QString,PyObject), parameters=QString, PyObject )