mirror of
https://github.com/MaaAssistantArknights/MaaAssistantArknights.git
synced 2026-07-17 10:00:44 +08:00
feat: 初步实现MacController (#4161)
添加新的触控方式,针对 macOS 平台原生运行的 iOS 版明日方舟客户端。 ## 背景 macOS 上有一个叫做 [PlayCover](https://playcover.io) 的 iOS 游戏启动器的项目。它的原理是通过注入库([PlayTools](https://github.com/PlayCover/PlayTools))让应用绕过系统的运行环境检查。 ## 实现 我们可以 [fork 一份 PlayTools](https://github.com/hguandl/PlayTools/tree/MaaTools),添加一个功能类似 adb 的本地 server,来实现截图和触控。我们可以称其为 MaaTools。 ## 协议 当前的 MaaTools 基于 TCP 实现了以下协议: - 握手:`MAA\x00` 作为最初的 4 个字节发送以尝试建立连接,如果成功会收到 `OKAY`,连接就此建立。 - 请求体:后续请求会先有2字节作为长度,然后发送请求内容。 - 截图请求:内容为 `SCRN`,返回 4 字节头作为长度,然后紧接着是 RGBA bitmap 内容。 - 分辨率请求:内容为 `SIZE`,返回各 2 字节长度的宽和高。 - 触控请求:内容为 `TUCH` + 1 字节触控类型 + 各 2 字节长度的 x 和 y,无返回。 - 关闭请求:内容为 `TERM`,关闭客户端,无返回。 ## 合并 请 @aa889788 帮忙看看我对新 Controller 类的实现是否完全。iOS 不支持 ESC 按键,不知道除了不能暂停部署之外,会不会对 MAA 的其他功能造成影响。最后再让玛丽 @MistEO 把把关()
This commit is contained in:
@@ -87,6 +87,10 @@ bool asst::Assistant::set_instance_option(InstanceOptionKey key, const std::stri
|
||||
m_ctrler->set_touch_mode(TouchMode::Maatouch);
|
||||
return true;
|
||||
}
|
||||
else if (constexpr std::string_view MacPlayTools = "MacPlayTools"; value == MacPlayTools) {
|
||||
m_ctrler->set_touch_mode(TouchMode::MacPlayTools);
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
case InstanceOptionKey::DeploymentWithPause:
|
||||
if (constexpr std::string_view Enable = "1"; value == Enable) {
|
||||
|
||||
Reference in New Issue
Block a user