Skip to content

Commit

Permalink
feat: win32新增controller type选择框
Browse files Browse the repository at this point in the history
  • Loading branch information
MistEO committed May 31, 2024
1 parent 17b0df6 commit 6767623
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 3 deletions.
8 changes: 6 additions & 2 deletions src/MaaDebugger/maafw/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,11 +62,15 @@ async def connect_adb(self, path: Path, address: str) -> bool:

return True

async def connect_win32hwnd(self, hwnd: int | str) -> bool:
async def connect_win32hwnd(
self, hwnd: int | str, screencap_type: int, input_type: int
) -> bool:
if isinstance(hwnd, str):
hwnd = int(hwnd, 16)

self.controller = Win32Controller(hwnd)
self.controller = Win32Controller(
hwnd, screencap_type=screencap_type, touch_type=input_type, key_type=0
)
connected = await self.controller.connect()
if not connected:
print(f"Failed to connect {hwnd}")
Expand Down
33 changes: 32 additions & 1 deletion src/MaaDebugger/webpage/index_page/master_control.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import asyncio
from pathlib import Path

from maa.define import MaaWin32ControllerTypeEnum
from nicegui import app, binding, ui

from ...maafw import maafw
Expand Down Expand Up @@ -137,6 +138,34 @@ async def connect_win32_control():
hwnd_input = (
ui.input("HWND").props("size=30").bind_value(app.storage.general, "hwnd")
)

SCREENCAP_DICT = {
MaaWin32ControllerTypeEnum.Screencap_GDI: "Screencap_GDI",
MaaWin32ControllerTypeEnum.Screencap_DXGI_DesktopDup: "Screencap_DXGI_DesktopDup",
MaaWin32ControllerTypeEnum.Screencap_DXGI_FramePool: "Screencap_DXGI_FramePool",
}
screencap_select = ui.select(
SCREENCAP_DICT, value=MaaWin32ControllerTypeEnum.Screencap_DXGI_DesktopDup
).bind_value(app.storage.general, "win32_screencap")

INPUT_DICT = {
(
MaaWin32ControllerTypeEnum.Touch_SendMessage
| MaaWin32ControllerTypeEnum.Key_SendMessage
): "Input_SendMessage",
(
MaaWin32ControllerTypeEnum.Touch_Seize
| MaaWin32ControllerTypeEnum.Key_Seize
): "Input_Seize",
}
input_select = ui.select(
INPUT_DICT,
value=(
MaaWin32ControllerTypeEnum.Touch_Seize
| MaaWin32ControllerTypeEnum.Key_Seize
),
).bind_value(app.storage.general, "win32_input")

ui.button(
"Connect",
on_click=lambda: on_click_connect(),
Expand Down Expand Up @@ -172,7 +201,9 @@ async def on_click_connect():
GlobalStatus.ctrl_connecting = Status.FAILURE
return

connected = await maafw.connect_win32hwnd(hwnd_input.value)
connected = await maafw.connect_win32hwnd(
hwnd_input.value, screencap_select.value, input_select.value
)
if not connected:
GlobalStatus.ctrl_connecting = Status.FAILURE
return
Expand Down

0 comments on commit 6767623

Please sign in to comment.