#!/usr/bin/env python3
"""Test for features/scenes.md examples.

Tests both modern and procedural APIs from the docs.
"""
import mcrfpy
from mcrfpy import automation
import sys

# Test 1: Modern Scene API (lines 28-42)
print("Test 1: Modern Scene API")
scene = mcrfpy.Scene("test_modern")
scene.children.append(mcrfpy.Frame(pos=(0, 0), size=(800, 600)))

def my_handler(key, action):
    if action == mcrfpy.InputState.PRESSED:
        print(f"  Key handler received: {key}")

scene.on_key = my_handler
scene.activate()
mcrfpy.step(0.1)
print("  PASS - modern Scene API works")

# Test 2: Check Scene properties
print("Test 2: Scene properties")
print(f"  scene.name = {scene.name}")
print(f"  scene.active = {scene.active}")
print(f"  len(scene.children) = {len(scene.children)}")

# Test 3: Check if default_texture exists
print("Test 3: default_texture")
try:
    dt = mcrfpy.default_texture
    print(f"  mcrfpy.default_texture = {dt}")
except AttributeError:
    print("  default_texture NOT FOUND - docs bug!")

# Test 4: Check if currentScene exists
print("Test 4: currentScene()")
try:
    current = mcrfpy.currentScene()
    print(f"  mcrfpy.currentScene() = {current}")
except AttributeError:
    print("  currentScene() NOT FOUND - docs bug!")

# Test 5: Check Grid.at() signature
print("Test 5: Grid.at() signature")
texture = mcrfpy.Texture("assets/kenney_tinydungeon.png", 16, 16)
grid = mcrfpy.Grid(grid_size=(10, 10), texture=texture, pos=(0, 0), size=(200, 200))

# Try both signatures
try:
    point_tuple = grid.at((5, 5))
    print("  grid.at((x, y)) - tuple WORKS")
except Exception as e:
    print(f"  grid.at((x, y)) FAILS: {e}")

try:
    point_sep = grid.at(5, 5)
    print("  grid.at(x, y) - separate args WORKS")
except Exception as e:
    print(f"  grid.at(x, y) FAILS: {e}")

# Test 6: Scene transitions (setScene)
print("Test 6: setScene()")
scene2 = mcrfpy.Scene("test_transitions")
scene2.activate()
mcrfpy.step(0.1)

# Check if setScene exists
try:
    mcrfpy.setScene("test_modern")
    print("  mcrfpy.setScene() WORKS")
except AttributeError:
    print("  mcrfpy.setScene() NOT FOUND - use scene.activate() instead")
except Exception as e:
    print(f"  mcrfpy.setScene() error: {e}")

# Take screenshot
mcrfpy.step(0.1)
automation.screenshot("/opt/goblincorps/repos/McRogueFace/tests/docs/screenshots/features_scenes.png")

print("\nAll scene tests complete")
sys.exit(0)
