import win32gui
import win32api
import win32con
import time
import sys
import os

sys.path.insert(0, '.')
from src.assistant_tool.item_hover_watcher import attach_to_default_desktop, ItemHoverWatcher
from src.assistant_tool.item_tooltip_overlay import ItemTooltipOverlay
from tools.autonomous_map_runner import ScreenCapturerGDI

attach_to_default_desktop()

overlay = ItemTooltipOverlay()
if not overlay.root:
    print("Failed to init overlay")
    sys.exit(1)

inspected_count = 0

def on_inspected(report, x, y):
    global inspected_count
    inspected_count += 1
    print(f"[CALLBACK] Inspected: {report.item_name} at ({x}, {y})")
    overlay.show(report, x, y)

watcher = ItemHoverWatcher(
    on_item_inspected=on_inspected,
    on_cursor_moved=overlay.hide,
    dwell_time_ms=180.0,
    enable_focus_interlock=True,
)
watcher.start()
print("Watcher started")

poe_hwnd = 23204270
win32gui.SetForegroundWindow(poe_hwnd)
time.sleep(0.1)

# Move cursor over Waystone
win32api.SetCursorPos((1875, 1040))
print("Moved cursor to (1875, 1040), waiting for dwell trigger...")

# Pump Tkinter events for 1.5 seconds
start_t = time.time()
while time.time() - start_t < 1.5:
    overlay.window.update()
    time.sleep(0.02)

print(f"Inspected count: {inspected_count}")

capturer = ScreenCapturerGDI()
capturer.capture('captures/test_auto_hover_success.png')
print("Captured test_auto_hover_success.png")

watcher.stop()
overlay.hide()
overlay.window.destroy()
