import time
import ctypes
import os
import sys

def main():
    user32 = ctypes.windll.user32
    hwinsta = user32.OpenWindowStationW("WinSta0", False, 0x10000000)
    if hwinsta:
        user32.SetProcessWindowStation(hwinsta)
    hdesk = user32.OpenDesktopW("Default", 0, False, 0x10000000)
    if hdesk:
        user32.SetThreadDesktop(hdesk)

    hwnd = user32.FindWindowW("POEWindowClass", None)
    if not hwnd:
        hwnd = user32.FindWindowW(None, "Path of Exile 2")
    print(f"HWND: {hwnd}")
    if not hwnd:
        return

    user32.ShowWindow(hwnd, 9)
    user32.SetForegroundWindow(hwnd)
    time.sleep(0.3)

    # Let's test holding 'W' (0x57, scan 0x11) for 1 second
    print("Holding W for 1 second...")
    user32.keybd_event(0x57, 0x11, 0, 0)
    time.sleep(1.0)
    user32.keybd_event(0x57, 0x11, 2, 0)
    time.sleep(0.5)

    # Let's test holding 'S' (0x53, scan 0x1F) for 1 second
    print("Holding S for 1 second...")
    user32.keybd_event(0x53, 0x1F, 0, 0)
    time.sleep(1.0)
    user32.keybd_event(0x53, 0x1F, 2, 0)
    time.sleep(0.5)

    # Let's test holding Space (dodge roll)
    print("Pressing Space (dodge roll)...")
    user32.keybd_event(0x20, 0x39, 0, 0)
    time.sleep(0.08)
    user32.keybd_event(0x20, 0x39, 2, 0)
    time.sleep(0.5)

    # Capture result
    sys.path.insert(0, r"C:\Projects\AutoPOE2")
    from tools.autonomous_map_runner import ScreenCapturerGDI
    c = ScreenCapturerGDI()
    out = r"C:\Projects\AutoPOE2\captures\test_wasd_direct.png"
    c.capture(out)
    print(f"Saved {out}")

if __name__ == "__main__":
    main()
