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
error_occurred

当发生错误时发出,携带错误消息。

Type:

Signal[str]

task_progress

报告任务进度,参数为(任务名, 进度百分比)。

Type:

Signal[str, int]

task_completed

任务完成时发出,携带任务名。

Type:

Signal[str]

__init__(parent: QObject | None = None)[源代码]

初始化控制器基类。

参数:

parent -- 父QObject对象,用于Qt对象树管理

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"
)
cleanup() None[源代码]

清理资源,关闭所有线程。

这个方法应该在控制器销毁前调用,确保所有后台线程正确关闭。

备注

会等待每个线程最多1秒钟,超时则强制退出。

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

error

任务出错时发出,携带错误消息。

Type:

Signal[str]

progress

报告任务进度,参数为进度百分比(0-100)。

Type:

Signal[int]

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() )
result

任务成功完成时发出,携带返回值。

Type:

Signal[object]

__init__(func: Callable[[...], Any], *args, **kwargs)[源代码]

初始化工作器。

参数:
  • func -- 要执行的任务函数

  • *args -- 传递给任务函数的位置参数

  • **kwargs -- 传递给任务函数的关键字参数

run() None[源代码]

执行任务。

这个方法在工作线程中被调用,执行任务函数并发出相应信号。

备注

任务成功时发出 result 信号。 任务失败时发出 error 信号。 无论成功失败都会发出 finished 信号。

游戏控制器

游戏控制器模块。

该模块提供游戏安装、启动、版本管理等核心功能的控制器接口。

class Controller.game_controller.GameController(parent: QObject | None = None)[源代码]

基类:BaseController

游戏控制器。

负责游戏的安装、启动、版本管理等功能。提供异步的游戏操作接口, 确保长时间运行的操作不会阻塞用户界面。

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

game_terminated

游戏进程结束时发出,携带退出码。

Type:

Signal[int]

version_list_updated

版本列表更新时发出,携带版本信息列表。

Type:

Signal[list]

download_progress

下载进度更新时发出,参数为(文件名, 当前大小, 总大小)。

Type:

Signal[str, int, int]

__init__(parent: QObject | None = None)[源代码]

初始化游戏控制器。

参数:

parent -- 父QObject对象,用于Qt对象树管理

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 -- 玩家用户名

抛出:

备注

这是一个异步操作,启动过程中会发出相应的信号:

  1. game_launch_started - 启动开始

  2. game_launched - 启动成功

  3. error_occurred - 启动失败

示例

启动最新版本游戏:

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(): 启动已安装的游戏

get_current_version() str | None[源代码]

获取当前运行的游戏版本。

返回:

当前游戏版本ID,如果没有游戏在运行则返回None

is_game_running() bool[源代码]

检查是否有游戏正在运行。

返回:

如果有游戏进程在运行返回True,否则返回False

账户控制器

账户控制器模块

负责用户账户的管理、登录、验证等功能

class Controller.account_controller.AccountController(parent=None)[源代码]

基类:BaseController

账户控制器

负责用户账户的管理、登录、验证等功能

login_success
login_failed
logout_completed
account_list_updated
__init__(parent=None)[源代码]

初始化账户控制器

initialize() bool[源代码]

初始化控制器

返回:

初始化是否成功

返回类型:

bool

login(username: str, password: str) None[源代码]

登录账户

参数:
  • username -- 用户名

  • password -- 密码

logout() None[源代码]

登出当前账户

get_accounts() List[Dict[str, Any]][源代码]

获取已保存的账户列表

返回:

账户列表

返回类型:

List[Dict[str, Any]]

refresh_account_list() None[源代码]

刷新账户列表

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)[源代码]

基类:BaseController

设置控制器

负责应用设置的管理、保存、加载等功能

settings_loaded
settings_saved
settings_changed
__init__(parent=None)[源代码]

初始化设置控制器

initialize() bool[源代码]

初始化控制器

返回:

初始化是否成功

返回类型:

bool

load_settings() None[源代码]

加载设置

save_settings() None[源代码]

保存设置

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 -- 设置项值

get_all_settings() Dict[str, Dict[str, Any]][源代码]

获取所有设置

返回:

所有设置

返回类型:

Dict[str, Dict[str, Any]]

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 )