import os
import sys
import time
import ctypes
import numpy as np
from PIL import Image

sys.path.insert(0, r"c:\Projects\AutoPOE2")

from src.common.win32_window import find_poe2_window
from src.common.virtual_display_manager import capture_virtual_display
from src.common.win32_input import post_message_click

user32 = ctypes.windll.user32
hwnd = find_poe2_window()
print(f"Testing on HWND: {hex(hwnd)}")

# 1. Capture before
img_before = capture_virtual_display()
img_before.save("captures/test_move_before.png")

# 2. Try clicking ground 150px north of player (960, 390)
print("Sending click to (960, 390)...")
post_message_click(hwnd, 960, 390, button="left", hold_ms=0.1, delay_after=0.8)

# 3. Capture after
img_after = capture_virtual_display()
img_after.save("captures/test_move_after.png")

# 4. Compare images
arr1 = np.array(img_before, dtype=np.float32)
arr2 = np.array(img_after, dtype=np.float32)
diff = np.abs(arr2 - arr1)
mean_diff = np.mean(diff)
max_diff = np.max(diff)

# Compare specifically player area (860..1060, 440..640)
player_diff = np.mean(diff[440:640, 860:1060])

print(f"Overall Mean Diff: {mean_diff:.4f}, Max Diff: {max_diff}")
print(f"Player Box Mean Diff: {player_diff:.4f}")

if player_diff > 2.0 or mean_diff > 1.0:
    print(">>> VISUAL CHANGE DETECTED! Character or world moved! <<<")
else:
    print(">>> NO visual change detected. Ground click was ignored. <<<")
