#!/usr/bin/env python3
"""
McRogueFace Automation API Example

This demonstrates how to use the automation API for testing game UIs.
The API is PyAutoGUI-compatible for easy migration of existing tests.
"""

from mcrfpy import automation
import mcrfpy
import time

def automation_demo():
    """Demonstrate all automation API features"""
    
    print("=== McRogueFace Automation API Demo ===\n")
    
    # 1. Screen Information
    print("1. Screen Information:")
    screen_size = automation.size()
    print(f"   Screen size: {screen_size[0]}x{screen_size[1]}")
    
    mouse_pos = automation.position()
    print(f"   Current mouse position: {mouse_pos}")
    
    on_screen = automation.onScreen(100, 100)
    print(f"   Is (100, 100) on screen? {on_screen}")
    print()
    
    # 2. Mouse Movement
    print("2. Mouse Movement:")
    print("   Moving to center of screen...")
    center_x, center_y = screen_size[0]//2, screen_size[1]//2
    automation.moveTo(center_x, center_y, duration=0.5)
    
    print("   Moving relative by (100, 100)...")
    automation.moveRel(100, 100, duration=0.5)
    print()
    
    # 3. Mouse Clicks
    print("3. Mouse Clicks:")
    print("   Single click...")
    automation.click()
    time.sleep(0.2)
    
    print("   Double click...")
    automation.doubleClick()
    time.sleep(0.2)
    
    print("   Right click...")
    automation.rightClick()
    time.sleep(0.2)
    
    print("   Triple click...")
    automation.tripleClick()
    print()
    
    # 4. Keyboard Input
    print("4. Keyboard Input:")
    print("   Typing message...")
    automation.typewrite("Hello from McRogueFace automation!", interval=0.05)
    
    print("   Pressing Enter...")
    automation.keyDown("enter")
    automation.keyUp("enter")
    
    print("   Hotkey Ctrl+A (select all)...")
    automation.hotkey("ctrl", "a")
    print()
    
    # 5. Drag Operations
    print("5. Drag Operations:")
    print("   Dragging from current position to (500, 500)...")
    automation.dragTo(500, 500, duration=1.0)
    
    print("   Dragging relative by (-100, -100)...")
    automation.dragRel(-100, -100, duration=0.5)
    print()
    
    # 6. Scroll Operations
    print("6. Scroll Operations:")
    print("   Scrolling up 5 clicks...")
    automation.scroll(5)
    time.sleep(0.5)
    
    print("   Scrolling down 5 clicks...")
    automation.scroll(-5)
    print()
    
    # 7. Screenshots
    print("7. Screenshots:")
    print("   Taking screenshot...")
    success = automation.screenshot("automation_demo_screenshot.png")
    print(f"   Screenshot saved: {success}")
    print()
    
    print("=== Demo Complete ===")

def create_test_ui():
    """Create a simple UI for testing automation"""
    print("Creating test UI...")
    
    # Create a test scene
    mcrfpy.createScene("automation_test")
    mcrfpy.setScene("automation_test")
    
    # Add some UI elements
    ui = mcrfpy.sceneUI("automation_test")
    
    # Add a frame
    frame = mcrfpy.Frame(50, 50, 300, 200)
    ui.append(frame)
    
    # Add a caption
    caption = mcrfpy.Caption(60, 60, "Automation Test UI")
    ui.append(caption)
    
    print("Test UI created!")

if __name__ == "__main__":
    # Create test UI first
    create_test_ui()
    
    # Run automation demo
    automation_demo()
    
    print("\nYou can now use the automation API to test your game!")