import os
import sys
import time
import ctypes
from pathlib import Path

sys.path.insert(0, str(Path(".").resolve()))

from src.common.win32_window import find_poe2_window, ensure_window_focus, is_poe2_window_focused
from src.assistant_tool.screen_capturer import ScreenCapturer
import src.common.vision_ocr as vision_ocr
from PIL import Image

hwnd = find_poe2_window()
if not hwnd:
    print("Game not found!")
    sys.exit(1)

ensure_window_focus(hwnd)
time.sleep(0.5)

capturer = ScreenCapturer(output_dir="captures/live_test")
cap1 = capturer.capture_screenshot(event_name="RAW_BEFORE", capture_ram=False, auto_focus=False, background_mode=True)

print("Testing direct keybd_event VK_W (0x57, scan 0x11) hold for 2.0s...")
user32 = ctypes.windll.user32

# Key down
user32.keybd_event(0x57, 0x11, 0, 0)
time.sleep(2.0)
# Key up
user32.keybd_event(0x57, 0x11, 2, 0)

time.sleep(0.5)
cap2 = capturer.capture_screenshot(event_name="RAW_AFTER", capture_ram=False, auto_focus=False, background_mode=True)

img1 = Image.open(cap1)
img2 = Image.open(cap2)

res1 = vision_ocr.safe_recognize_pil_sync(img1)
res2 = vision_ocr.safe_recognize_pil_sync(img2)

def get_pos(res, label):
    for l in res.get("lines", []):
        if label in l.get("text", "").upper():
            words = l.get("words", [])
            if words:
                r = words[0].get("bounding_rect", {})
                return r.get("x"), r.get("y")
    return None, None

for lbl in ["MAP DEVICE", "WAYPOINT", "ANGE", "WELL"]:
    p1 = get_pos(res1, lbl)
    p2 = get_pos(res2, lbl)
    print(f"{lbl:12s}: Before={p1} -> After={p2}")
