update tests: new scene API

This commit is contained in:
John McCardle 2026-01-03 10:59:52 -05:00
commit 838da4571d
142 changed files with 616 additions and 601 deletions

View file

@ -46,9 +46,9 @@ def run_automation_tests():
print("=== Setting Up Test Scene ===")
# Create scene with visible content
mcrfpy.createScene("timer_test_scene")
mcrfpy.setScene("timer_test_scene")
ui = mcrfpy.sceneUI("timer_test_scene")
timer_test_scene = mcrfpy.Scene("timer_test_scene")
timer_test_scene.activate()
ui = timer_test_scene.children
# Add a bright red frame that should be visible
frame = mcrfpy.Frame(pos=(100, 100), size=(400, 300),

View file

@ -9,7 +9,7 @@ def test_createScene():
for scene_name in test_scenes:
try:
mcrfpy.createScene(scene_name)
_scene = mcrfpy.Scene(scene_name)
print(f"✓ Created scene: {scene_name}")
except Exception as e:
print(f"✗ Failed to create scene {scene_name}: {e}")
@ -17,8 +17,8 @@ def test_createScene():
# Try to set scene to verify it was created
try:
mcrfpy.setScene("test_scene1")
current = mcrfpy.currentScene()
test_scene1.activate() # Note: ensure scene was created
current = (mcrfpy.current_scene.name if mcrfpy.current_scene else None)
if current == "test_scene1":
print("✓ Scene switching works correctly")
else:

View file

@ -7,7 +7,7 @@ print("Starting setScene/currentScene test...")
# Create test scenes first
scenes = ["scene_A", "scene_B", "scene_C"]
for scene in scenes:
mcrfpy.createScene(scene)
_scene = mcrfpy.Scene(scene)
print(f"Created scene: {scene}")
results = []
@ -15,8 +15,8 @@ results = []
# Test switching between scenes
for scene in scenes:
try:
mcrfpy.setScene(scene)
current = mcrfpy.currentScene()
mcrfpy.current_scene = scene
current = (mcrfpy.current_scene.name if mcrfpy.current_scene else None)
if current == scene:
results.append(f"✓ setScene/currentScene works for '{scene}'")
else:
@ -25,9 +25,9 @@ for scene in scenes:
results.append(f"✗ Error with scene '{scene}': {e}")
# Test invalid scene - it should not change the current scene
current_before = mcrfpy.currentScene()
mcrfpy.setScene("nonexistent_scene")
current_after = mcrfpy.currentScene()
current_before = (mcrfpy.current_scene.name if mcrfpy.current_scene else None)
nonexistent_scene.activate() # Note: ensure scene was created
current_after = (mcrfpy.current_scene.name if mcrfpy.current_scene else None)
if current_before == current_after:
results.append(f"✓ setScene correctly ignores nonexistent scene (stayed on '{current_after}')")
else:

View file

@ -6,8 +6,8 @@ import os
import sys
# Create a simple scene
mcrfpy.createScene("test")
mcrfpy.setScene("test")
test = mcrfpy.Scene("test")
test.activate()
# Take a screenshot immediately
try:

View file

@ -128,8 +128,8 @@ mcrfpy.log_benchmark("Test log message")
print("Logged test message")
# Set up scene and run for a few frames
mcrfpy.createScene("test")
mcrfpy.setScene("test")
test = mcrfpy.Scene("test")
test.activate()
# Schedule test completion after ~100ms (to capture some frames)
mcrfpy.setTimer("test", run_test, 100)

View file

@ -12,8 +12,8 @@ def test_uicollection_find():
print("Testing UICollection.find()...")
# Create a scene with named elements
mcrfpy.createScene("test_find")
ui = mcrfpy.sceneUI("test_find")
test_find = mcrfpy.Scene("test_find")
ui = test_find.children
# Create frames with names
frame1 = mcrfpy.Frame(pos=(0, 0), size=(100, 100))
@ -94,8 +94,8 @@ def test_entitycollection_find():
print("\nTesting EntityCollection.find()...")
# Create a grid with entities
mcrfpy.createScene("test_entity_find")
ui = mcrfpy.sceneUI("test_entity_find")
test_entity_find = mcrfpy.Scene("test_entity_find")
ui = test_entity_find.children
grid = mcrfpy.Grid(grid_size=(10, 10), pos=(0, 0), size=(400, 400))
ui.append(grid)
@ -149,8 +149,8 @@ def test_recursive_find():
"""Test recursive find in nested Frame children."""
print("\nTesting recursive find in nested frames...")
mcrfpy.createScene("test_recursive")
ui = mcrfpy.sceneUI("test_recursive")
test_recursive = mcrfpy.Scene("test_recursive")
ui = test_recursive.children
# Create nested structure
parent = mcrfpy.Frame(pos=(0, 0), size=(400, 400))

View file

@ -12,8 +12,8 @@ def test_uicollection_remove():
"""Test UICollection.remove() takes a value, not an index."""
print("Testing UICollection.remove()...")
mcrfpy.createScene("test_remove")
ui = mcrfpy.sceneUI("test_remove")
test_remove = mcrfpy.Scene("test_remove")
ui = test_remove.children
frame1 = mcrfpy.Frame(pos=(0, 0), size=(100, 100))
frame2 = mcrfpy.Frame(pos=(100, 0), size=(100, 100))
@ -58,8 +58,8 @@ def test_uicollection_pop():
"""Test UICollection.pop() removes and returns element at index."""
print("\nTesting UICollection.pop()...")
mcrfpy.createScene("test_pop")
ui = mcrfpy.sceneUI("test_pop")
test_pop = mcrfpy.Scene("test_pop")
ui = test_pop.children
frame1 = mcrfpy.Frame(pos=(0, 0), size=(100, 100))
frame1.name = "first"
@ -108,8 +108,8 @@ def test_uicollection_insert():
"""Test UICollection.insert() inserts at given index."""
print("\nTesting UICollection.insert()...")
mcrfpy.createScene("test_insert")
ui = mcrfpy.sceneUI("test_insert")
test_insert = mcrfpy.Scene("test_insert")
ui = test_insert.children
frame1 = mcrfpy.Frame(pos=(0, 0), size=(100, 100))
frame1.name = "first"
@ -160,8 +160,8 @@ def test_entitycollection_pop_insert():
"""Test EntityCollection.pop() and insert()."""
print("\nTesting EntityCollection.pop() and insert()...")
mcrfpy.createScene("test_entity_pop")
ui = mcrfpy.sceneUI("test_entity_pop")
test_entity_pop = mcrfpy.Scene("test_entity_pop")
ui = test_entity_pop.children
grid = mcrfpy.Grid(grid_size=(10, 10), pos=(0, 0), size=(400, 400))
ui.append(grid)
@ -204,8 +204,8 @@ def test_index_and_count():
"""Test index() and count() methods."""
print("\nTesting index() and count()...")
mcrfpy.createScene("test_index_count")
ui = mcrfpy.sceneUI("test_index_count")
test_index_count = mcrfpy.Scene("test_index_count")
ui = test_index_count.children
frame1 = mcrfpy.Frame(pos=(0, 0), size=(100, 100))
frame2 = mcrfpy.Frame(pos=(100, 0), size=(100, 100))

View file

@ -7,7 +7,7 @@ import sys
print("Debugging empty paths...")
# Create scene and grid
mcrfpy.createScene("debug")
debug = mcrfpy.Scene("debug")
grid = mcrfpy.Grid(grid_x=10, grid_y=10)
# Initialize grid - all walkable
@ -72,9 +72,9 @@ def timer_cb(dt):
sys.exit(0)
# Quick UI setup
ui = mcrfpy.sceneUI("debug")
ui = debug.children
ui.append(grid)
mcrfpy.setScene("debug")
debug.activate()
mcrfpy.setTimer("exit", timer_cb, 100)
print("\nStarting timer...")

View file

@ -11,13 +11,13 @@ print(f"Automation available: {'automation' in dir(mcrfpy)}")
# Try to understand the scene state
print("\nCreating and checking scene...")
mcrfpy.createScene("debug_scene")
mcrfpy.setScene("debug_scene")
current = mcrfpy.currentScene()
debug_scene = mcrfpy.Scene("debug_scene")
debug_scene.activate()
current = (mcrfpy.current_scene.name if mcrfpy.current_scene else None)
print(f"Current scene: {current}")
# Get UI collection
ui = mcrfpy.sceneUI("debug_scene")
ui = debug_scene.children
print(f"UI collection type: {type(ui)}")
print(f"Initial UI elements: {len(ui)}")

View file

@ -32,8 +32,8 @@ def create_caption(x, y, text, font_size=16, text_color=WHITE, outline_color=BLA
def create_caption_example():
"""Create a scene showing Caption UI element examples"""
mcrfpy.createScene("caption_example")
ui = mcrfpy.sceneUI("caption_example")
caption_example = mcrfpy.Scene("caption_example")
ui = caption_example.children
# Background frame
bg = mcrfpy.Frame(0, 0, 800, 600, fill_color=FRAME_COLOR)
@ -61,8 +61,8 @@ def create_caption_example():
def create_sprite_example():
"""Create a scene showing Sprite UI element examples"""
mcrfpy.createScene("sprite_example")
ui = mcrfpy.sceneUI("sprite_example")
sprite_example = mcrfpy.Scene("sprite_example")
ui = sprite_example.children
# Background frame
bg = mcrfpy.Frame(0, 0, 800, 600, fill_color=FRAME_COLOR)
@ -122,8 +122,8 @@ def create_sprite_example():
def create_frame_example():
"""Create a scene showing Frame UI element examples"""
mcrfpy.createScene("frame_example")
ui = mcrfpy.sceneUI("frame_example")
frame_example = mcrfpy.Scene("frame_example")
ui = frame_example.children
# Background
bg = mcrfpy.Frame(0, 0, 800, 600, fill_color=SHADOW_COLOR)
@ -184,8 +184,8 @@ def create_frame_example():
def create_grid_example():
"""Create a scene showing Grid UI element examples"""
mcrfpy.createScene("grid_example")
ui = mcrfpy.sceneUI("grid_example")
grid_example = mcrfpy.Scene("grid_example")
ui = grid_example.children
# Background
bg = mcrfpy.Frame(0, 0, 800, 600, fill_color=FRAME_COLOR)
@ -234,8 +234,8 @@ def create_grid_example():
def create_entity_example():
"""Create a scene showing Entity examples in a Grid"""
mcrfpy.createScene("entity_example")
ui = mcrfpy.sceneUI("entity_example")
entity_example = mcrfpy.Scene("entity_example")
ui = entity_example.children
# Background
bg = mcrfpy.Frame(0, 0, 800, 600, fill_color=FRAME_COLOR)
@ -310,8 +310,8 @@ def create_entity_example():
def create_combined_example():
"""Create a scene showing all UI elements combined"""
mcrfpy.createScene("combined_example")
ui = mcrfpy.sceneUI("combined_example")
combined_example = mcrfpy.Scene("combined_example")
ui = combined_example.children
# Background
bg = mcrfpy.Frame(0, 0, 800, 600, fill_color=SHADOW_COLOR)
@ -417,7 +417,7 @@ def take_screenshots(runtime):
scene_name, filename = screenshots[current_screenshot]
# Switch to the scene
mcrfpy.setScene(scene_name)
mcrfpy.current_scene = scene_name
# Take screenshot after a short delay to ensure rendering
def capture():
@ -435,7 +435,7 @@ def take_screenshots(runtime):
mcrfpy.setTimer("capture", lambda r: capture(), 100)
# Start with the first scene
mcrfpy.setScene("caption_example")
caption_example.activate()
# Start the screenshot process
print(f"\nStarting screenshot capture of {len(screenshots)} scenes...")

View file

@ -16,7 +16,7 @@ def capture_grid(runtime):
sys.exit(0)
# Create scene
mcrfpy.createScene("grid")
grid = mcrfpy.Scene("grid")
# Load texture
texture = mcrfpy.Texture("assets/kenney_TD_MR_IP.png", 16, 16)
@ -92,7 +92,7 @@ for i, label in enumerate(labels):
l.font = mcrfpy.default_font
l.font_size = 10
l.fill_color = mcrfpy.Color(255, 255, 255)
mcrfpy.sceneUI("grid").append(l)
grid.children.append(l)
# Add info caption
info = mcrfpy.Caption(pos=(100, 680), text="Grid supports tiles and entities. Entities can move independently of the tile grid.")
@ -101,7 +101,7 @@ info.font_size = 14
info.fill_color = mcrfpy.Color(200, 200, 200)
# Add all elements to scene
ui = mcrfpy.sceneUI("grid")
ui = grid.children
ui.append(title)
ui.append(grid)
ui.append(palette_label)
@ -109,7 +109,7 @@ ui.append(palette)
ui.append(info)
# Switch to scene
mcrfpy.setScene("grid")
grid.activate()
# Set timer to capture after rendering starts
mcrfpy.setTimer("capture", capture_grid, 100)

View file

@ -16,7 +16,7 @@ def capture_sprites(runtime):
sys.exit(0)
# Create scene
mcrfpy.createScene("sprites")
sprites = mcrfpy.Scene("sprites")
# Load texture
texture = mcrfpy.Texture("assets/kenney_TD_MR_IP.png", 16, 16)
@ -129,10 +129,10 @@ for i, scale in enumerate([1.0, 2.0, 3.0, 4.0]):
s.texture = texture
s.sprite_index = 84 # Player
s.scale = (scale, scale)
mcrfpy.sceneUI("sprites").append(s)
sprites.children.append(s)
# Add all elements to scene
ui = mcrfpy.sceneUI("sprites")
ui = sprites.children
ui.append(frame)
ui.append(title)
ui.append(player_label)
@ -154,7 +154,7 @@ ui.append(armor)
ui.append(scale_label)
# Switch to scene
mcrfpy.setScene("sprites")
sprites.activate()
# Set timer to capture after rendering starts
mcrfpy.setTimer("capture", capture_sprites, 100)

View file

@ -11,15 +11,15 @@ def test_keypress_validation(timer_name):
print("Testing keypressScene() validation...")
# Create test scene
mcrfpy.createScene("test")
mcrfpy.setScene("test")
test = mcrfpy.Scene("test")
test.activate()
# Test 1: Valid callable (function)
def key_handler(key, action):
print(f"Key pressed: {key}, action: {action}")
try:
mcrfpy.keypressScene(key_handler)
test.on_key = key_handler
print("✓ Accepted valid function as key handler")
except Exception as e:
print(f"✗ Rejected valid function: {e}")
@ -27,7 +27,7 @@ def test_keypress_validation(timer_name):
# Test 2: Valid callable (lambda)
try:
mcrfpy.keypressScene(lambda k, a: None)
test.on_key = lambda k, a: None
print("✓ Accepted valid lambda as key handler")
except Exception as e:
print(f"✗ Rejected valid lambda: {e}")
@ -35,7 +35,7 @@ def test_keypress_validation(timer_name):
# Test 3: Invalid - string
try:
mcrfpy.keypressScene("not callable")
test.on_key = "not callable"
print("✗ Should have rejected string as key handler")
except TypeError as e:
print(f"✓ Correctly rejected string: {e}")
@ -45,7 +45,7 @@ def test_keypress_validation(timer_name):
# Test 4: Invalid - number
try:
mcrfpy.keypressScene(42)
test.on_key = 42
print("✗ Should have rejected number as key handler")
except TypeError as e:
print(f"✓ Correctly rejected number: {e}")
@ -55,7 +55,7 @@ def test_keypress_validation(timer_name):
# Test 5: Invalid - None
try:
mcrfpy.keypressScene(None)
test.on_key = None
print("✗ Should have rejected None as key handler")
except TypeError as e:
print(f"✓ Correctly rejected None: {e}")
@ -65,7 +65,7 @@ def test_keypress_validation(timer_name):
# Test 6: Invalid - dict
try:
mcrfpy.keypressScene({"not": "callable"})
test.on_key = {"not": "callable"}
print("✗ Should have rejected dict as key handler")
except TypeError as e:
print(f"✓ Correctly rejected dict: {e}")
@ -79,7 +79,7 @@ def test_keypress_validation(timer_name):
print(f"Class handler: {key}, {action}")
try:
mcrfpy.keypressScene(KeyHandler())
test.on_key = KeyHandler()
print("✓ Accepted valid callable class instance")
except Exception as e:
print(f"✗ Rejected valid callable class: {e}")

View file

@ -10,9 +10,9 @@ def test_transparency_workaround():
print("=== Screenshot Transparency Fix Test ===\n")
# Create a scene
mcrfpy.createScene("opaque_test")
mcrfpy.setScene("opaque_test")
ui = mcrfpy.sceneUI("opaque_test")
opaque_test = mcrfpy.Scene("opaque_test")
opaque_test.activate()
ui = opaque_test.children
# WORKAROUND: Create a full-window opaque frame as the first element
# This acts as an opaque background since the scene clears with transparent

View file

@ -28,7 +28,7 @@ def take_screenshot(runtime):
sys.exit(0)
# Create minimal scene
mcrfpy.createScene("test")
test = mcrfpy.Scene("test")
# Add a visible element
caption = mcrfpy.Caption(pos=(100, 100), text="Screenshot Test")
@ -36,8 +36,8 @@ caption.font = mcrfpy.default_font
caption.fill_color = mcrfpy.Color(255, 255, 255)
caption.font_size = 24
mcrfpy.sceneUI("test").append(caption)
mcrfpy.setScene("test")
test.children.append(caption)
test.activate()
# Use timer to ensure rendering has started
print("Setting timer...")

View file

@ -25,9 +25,9 @@ def take_screenshot_and_exit():
# Set up a simple scene
print("Creating test scene...")
mcrfpy.createScene("test")
mcrfpy.setScene("test")
ui = mcrfpy.sceneUI("test")
test = mcrfpy.Scene("test")
test.activate()
ui = test.children
# Add visible content - a white frame on default background
frame = mcrfpy.Frame(pos=(100, 100), size=(200, 200),

View file

@ -17,12 +17,12 @@ def my_callback(anim, target):
def setup_and_run():
"""Set up scene and run animation with callback"""
# Create scene
mcrfpy.createScene("callback_demo")
mcrfpy.setScene("callback_demo")
callback_demo = mcrfpy.Scene("callback_demo")
callback_demo.activate()
# Create a frame to animate
frame = mcrfpy.Frame((100, 100), (200, 200), fill_color=(255, 0, 0))
ui = mcrfpy.sceneUI("callback_demo")
ui = callback_demo.children
ui.append(frame)
# Create animation with callback
@ -42,7 +42,7 @@ def check_result(runtime):
# Test 2: Animation without callback
print("\nTesting animation without callback...")
ui = mcrfpy.sceneUI("callback_demo")
ui = callback_demo.children
frame = ui[0]
anim2 = mcrfpy.Animation("y", 300.0, 0.5, "linear")

View file

@ -67,7 +67,7 @@ class PathAnimator:
self._animate_next_step()
# Create test scene
mcrfpy.createScene("chain_test")
chain_test = mcrfpy.Scene("chain_test")
# Create grid
grid = mcrfpy.Grid(grid_x=20, grid_y=15)
@ -97,7 +97,7 @@ enemy = mcrfpy.Entity((17, 12), grid=grid)
enemy.sprite_index = 69 # E
# UI setup
ui = mcrfpy.sceneUI("chain_test")
ui = chain_test.children
ui.append(grid)
grid.position = (100, 100)
grid.size = (600, 450)
@ -201,8 +201,8 @@ def handle_input(key, state):
info.text = "Positions reset"
# Setup
mcrfpy.setScene("chain_test")
mcrfpy.keypressScene(handle_input)
chain_test.activate()
chain_test.on_key = handle_input
# Camera update timer
mcrfpy.setTimer("cam_update", update_camera, 100)

View file

@ -59,7 +59,7 @@ class AnimationTracker:
mcrfpy.delTimer(f"check_{self.name}")
# Create test scene
mcrfpy.createScene("anim_debug")
anim_debug = mcrfpy.Scene("anim_debug")
# Simple grid
grid = mcrfpy.Grid(grid_x=15, grid_y=10)
@ -75,7 +75,7 @@ entity = mcrfpy.Entity((5, 5), grid=grid)
entity.sprite_index = 64
# UI
ui = mcrfpy.sceneUI("anim_debug")
ui = anim_debug.children
ui.append(grid)
grid.position = (100, 150)
grid.size = (450, 300)
@ -215,8 +215,8 @@ def handle_input(key, state):
print("Reset entity and cleared log")
# Setup
mcrfpy.setScene("anim_debug")
mcrfpy.keypressScene(handle_input)
anim_debug.activate()
anim_debug.on_key = handle_input
mcrfpy.setTimer("update", update_display, 100)
print("Animation Debug Tool")

View file

@ -6,11 +6,11 @@ Test Animation creation without timer
import mcrfpy
print("1. Creating scene...")
mcrfpy.createScene("test")
mcrfpy.setScene("test")
test = mcrfpy.Scene("test")
test.activate()
print("2. Getting UI...")
ui = mcrfpy.sceneUI("test")
ui = test.children
print("3. Creating frame...")
frame = mcrfpy.Frame(pos=(100, 100), size=(200, 200))

View file

@ -30,7 +30,7 @@ def test_result(name, passed, details=""):
def test_1_replace_mode_default():
"""Test that REPLACE mode is the default and works correctly"""
try:
ui = mcrfpy.sceneUI("test")
ui = test.children
frame = mcrfpy.Frame(pos=(100, 100), size=(100, 100))
ui.append(frame)
@ -55,7 +55,7 @@ def test_1_replace_mode_default():
def test_2_replace_mode_explicit():
"""Test explicit REPLACE mode"""
try:
ui = mcrfpy.sceneUI("test")
ui = test.children
frame = mcrfpy.Frame(pos=(100, 100), size=(100, 100))
ui.append(frame)
@ -73,7 +73,7 @@ def test_2_replace_mode_explicit():
def test_3_queue_mode():
"""Test QUEUE mode - animation should be queued"""
try:
ui = mcrfpy.sceneUI("test")
ui = test.children
frame = mcrfpy.Frame(pos=(100, 100), size=(100, 100))
ui.append(frame)
@ -95,7 +95,7 @@ def test_3_queue_mode():
def test_4_error_mode():
"""Test ERROR mode - should raise RuntimeError"""
try:
ui = mcrfpy.sceneUI("test")
ui = test.children
frame = mcrfpy.Frame(pos=(100, 100), size=(100, 100))
ui.append(frame)
@ -120,7 +120,7 @@ def test_4_error_mode():
def test_5_invalid_conflict_mode():
"""Test that invalid conflict_mode raises ValueError"""
try:
ui = mcrfpy.sceneUI("test")
ui = test.children
frame = mcrfpy.Frame(pos=(100, 100), size=(100, 100))
ui.append(frame)
@ -140,7 +140,7 @@ def test_5_invalid_conflict_mode():
def test_6_different_properties_no_conflict():
"""Test that different properties can animate simultaneously"""
try:
ui = mcrfpy.sceneUI("test")
ui = test.children
frame = mcrfpy.Frame(pos=(100, 100), size=(100, 100))
ui.append(frame)
@ -164,7 +164,7 @@ def test_6_different_properties_no_conflict():
def test_7_different_targets_no_conflict():
"""Test that same property on different targets doesn't conflict"""
try:
ui = mcrfpy.sceneUI("test")
ui = test.children
frame1 = mcrfpy.Frame(pos=(100, 100), size=(100, 100))
frame2 = mcrfpy.Frame(pos=(200, 200), size=(100, 100))
ui.append(frame1)
@ -187,7 +187,7 @@ def test_7_different_targets_no_conflict():
def test_8_replace_completes_old():
"""Test that REPLACE mode completes the old animation's value"""
try:
ui = mcrfpy.sceneUI("test")
ui = test.children
frame = mcrfpy.Frame(pos=(0, 0), size=(100, 100))
ui.append(frame)
@ -242,8 +242,8 @@ def run_all_tests(runtime):
# Setup and run
mcrfpy.createScene("test")
mcrfpy.setScene("test")
test = mcrfpy.Scene("test")
test.activate()
# Start tests after a brief delay to allow scene to initialize
mcrfpy.setTimer("start", run_all_tests, 100)

View file

@ -29,7 +29,7 @@ def test_result(name, passed, details=""):
def test_1_basic_animation():
"""Test that basic animations still work"""
try:
ui = mcrfpy.sceneUI("test")
ui = test.children
frame = mcrfpy.Frame(pos=(100, 100), size=(100, 100))
ui.append(frame)
@ -48,7 +48,7 @@ def test_1_basic_animation():
def test_2_remove_animated_object():
"""Test removing object with active animation"""
try:
ui = mcrfpy.sceneUI("test")
ui = test.children
frame = mcrfpy.Frame(pos=(100, 100), size=(100, 100))
ui.append(frame)
@ -72,7 +72,7 @@ def test_2_remove_animated_object():
def test_3_complete_animation():
"""Test completing animation immediately"""
try:
ui = mcrfpy.sceneUI("test")
ui = test.children
frame = mcrfpy.Frame(pos=(100, 100), size=(100, 100))
ui.append(frame)
@ -97,7 +97,7 @@ def test_4_multiple_animations_timer():
def create_animations(runtime):
nonlocal success
try:
ui = mcrfpy.sceneUI("test")
ui = test.children
frame = mcrfpy.Frame(pos=(200, 200), size=(100, 100))
ui.append(frame)
@ -113,7 +113,7 @@ def test_4_multiple_animations_timer():
mcrfpy.setTimer("exit", lambda t: None, 100)
# Clear scene
ui = mcrfpy.sceneUI("test")
ui = test.children
while len(ui) > 0:
ui.remove(len(ui) - 1)
@ -124,10 +124,10 @@ def test_5_scene_cleanup():
"""Test that changing scenes cleans up animations"""
try:
# Create a second scene
mcrfpy.createScene("test2")
test2 = mcrfpy.Scene("test2")
# Add animated objects to first scene
ui = mcrfpy.sceneUI("test")
ui = test.children
for i in range(5):
frame = mcrfpy.Frame(pos=(50 * i, 100), size=(40, 40))
ui.append(frame)
@ -135,10 +135,10 @@ def test_5_scene_cleanup():
anim.start(frame)
# Switch scenes (animations should become invalid)
mcrfpy.setScene("test2")
test2.activate()
# Switch back
mcrfpy.setScene("test")
test.activate()
test_result("Scene change cleanup", True)
except Exception as e:
@ -147,7 +147,7 @@ def test_5_scene_cleanup():
def test_6_animation_after_clear():
"""Test animations after clearing UI"""
try:
ui = mcrfpy.sceneUI("test")
ui = test.children
# Create and animate
frame = mcrfpy.Frame(pos=(100, 100), size=(100, 100))
@ -202,11 +202,11 @@ def print_results(runtime):
mcrfpy.setTimer("exit", lambda t: sys.exit(0 if tests_failed == 0 else 1), 500)
# Setup and run
mcrfpy.createScene("test")
mcrfpy.setScene("test")
test = mcrfpy.Scene("test")
test.activate()
# Add a background
ui = mcrfpy.sceneUI("test")
ui = test.children
bg = mcrfpy.Frame(pos=(0, 0), size=(1024, 768))
bg.fill_color = mcrfpy.Color(20, 20, 30)
ui.append(bg)

View file

@ -10,7 +10,7 @@ def clear_and_recreate(runtime):
"""Clear UI and recreate - mimics demo switching"""
print(f"\nTimer called at {runtime}")
ui = mcrfpy.sceneUI("test")
ui = test.children
# Remove all but first 2 items (like clear_demo_objects)
print(f"Scene has {len(ui)} elements before clearing")
@ -37,9 +37,9 @@ def clear_and_recreate(runtime):
# Create initial scene
print("Creating scene...")
mcrfpy.createScene("test")
mcrfpy.setScene("test")
ui = mcrfpy.sceneUI("test")
test = mcrfpy.Scene("test")
test.activate()
ui = test.children
# Add title and subtitle (to preserve during clearing)
title = mcrfpy.Caption(pos=(400, 20), text="Test Title")

View file

@ -14,7 +14,7 @@ print("A* Pathfinding Test")
print("==================")
# Create scene and grid
mcrfpy.createScene("astar_test")
astar_test = mcrfpy.Scene("astar_test")
grid = mcrfpy.Grid(grid_x=20, grid_y=20)
# Initialize grid - all walkable
@ -119,12 +119,12 @@ def visual_test(runtime):
sys.exit(0)
# Set up minimal UI for visual test
ui = mcrfpy.sceneUI("astar_test")
ui = astar_test.children
ui.append(grid)
grid.position = (50, 50)
grid.size = (400, 400)
mcrfpy.setScene("astar_test")
astar_test.activate()
mcrfpy.setTimer("visual", visual_test, 100)
print("\nStarting visual test...")

View file

@ -6,6 +6,6 @@ import sys
print("Testing audio cleanup...")
# Create a scene and immediately exit
mcrfpy.createScene("test")
test = mcrfpy.Scene("test")
print("Exiting now...")
sys.exit(0)

View file

@ -8,8 +8,8 @@ def test_bounds_property():
"""Test bounds property returns correct local bounds"""
print("Testing bounds property...")
mcrfpy.createScene("test_bounds")
ui = mcrfpy.sceneUI("test_bounds")
test_bounds = mcrfpy.Scene("test_bounds")
ui = test_bounds.children
frame = mcrfpy.Frame(pos=(50, 75), size=(200, 150))
ui.append(frame)
@ -27,8 +27,8 @@ def test_global_bounds_no_parent():
"""Test global_bounds equals bounds when no parent"""
print("Testing global_bounds without parent...")
mcrfpy.createScene("test_gb1")
ui = mcrfpy.sceneUI("test_gb1")
test_gb1 = mcrfpy.Scene("test_gb1")
ui = test_gb1.children
frame = mcrfpy.Frame(pos=(100, 100), size=(50, 50))
ui.append(frame)
@ -45,8 +45,8 @@ def test_global_bounds_with_parent():
"""Test global_bounds correctly adds parent offset"""
print("Testing global_bounds with parent...")
mcrfpy.createScene("test_gb2")
ui = mcrfpy.sceneUI("test_gb2")
test_gb2 = mcrfpy.Scene("test_gb2")
ui = test_gb2.children
parent = mcrfpy.Frame(pos=(100, 100), size=(200, 200))
ui.append(parent)
@ -67,8 +67,8 @@ def test_global_bounds_nested():
"""Test global_bounds with deeply nested hierarchy"""
print("Testing global_bounds with nested hierarchy...")
mcrfpy.createScene("test_gb3")
ui = mcrfpy.sceneUI("test_gb3")
test_gb3 = mcrfpy.Scene("test_gb3")
ui = test_gb3.children
# Create 3-level hierarchy
root = mcrfpy.Frame(pos=(10, 10), size=(300, 300))
@ -92,8 +92,8 @@ def test_all_drawable_types_have_bounds():
"""Test that all drawable types have bounds properties"""
print("Testing bounds on all drawable types...")
mcrfpy.createScene("test_types")
ui = mcrfpy.sceneUI("test_types")
test_types = mcrfpy.Scene("test_types")
ui = test_types.children
types_to_test = [
("Frame", mcrfpy.Frame(pos=(0, 0), size=(100, 100))),

View file

@ -37,7 +37,7 @@ print()
print("Test 3: Function creating mcrfpy objects")
def create_scene():
try:
mcrfpy.createScene("test")
test = mcrfpy.Scene("test")
print(" ✓ Created scene")
# Now try range
@ -69,7 +69,7 @@ print()
print("Test 4: Exact failing pattern")
def failing_pattern():
try:
mcrfpy.createScene("failing_test")
failing_test = mcrfpy.Scene("failing_test")
grid = mcrfpy.Grid(grid_x=14, grid_y=10)
# This is where it fails in the demos

View file

@ -7,7 +7,7 @@ print("Testing Color fix...")
# Test 1: Create grid
try:
mcrfpy.createScene("test")
test = mcrfpy.Scene("test")
grid = mcrfpy.Grid(grid_x=5, grid_y=5)
print("✓ Grid created")
except Exception as e:

View file

@ -178,5 +178,5 @@ def test_color_helpers(runtime):
sys.exit(0 if all_pass else 1)
# Run test
mcrfpy.createScene("test")
test = mcrfpy.Scene("test")
mcrfpy.setTimer("test", test_color_helpers, 100)

View file

@ -9,7 +9,7 @@ print("=" * 50)
# Test 1: Basic Color assignment
print("Test 1: Color assignment in grid")
try:
mcrfpy.createScene("test1")
test1 = mcrfpy.Scene("test1")
grid = mcrfpy.Grid(grid_x=25, grid_y=15)
# Assign color to a cell
@ -27,7 +27,7 @@ except Exception as e:
# Test 2: Multiple color assignments
print("\nTest 2: Multiple color assignments")
try:
mcrfpy.createScene("test2")
test2 = mcrfpy.Scene("test2")
grid = mcrfpy.Grid(grid_x=25, grid_y=15)
# Multiple properties including color
@ -54,7 +54,7 @@ print("\nTest 3: Exact pattern from dijkstra_demo_final.py")
try:
# Recreate the exact function
def create_demo():
mcrfpy.createScene("dijkstra_demo")
dijkstra_demo = mcrfpy.Scene("dijkstra_demo")
# Create grid
grid = mcrfpy.Grid(grid_x=25, grid_y=15)

View file

@ -9,7 +9,7 @@ print("=" * 50)
# Test 1: Setting color with tuple (old way)
print("Test 1: Setting color with tuple")
try:
mcrfpy.createScene("test1")
test1 = mcrfpy.Scene("test1")
grid = mcrfpy.Grid(grid_x=5, grid_y=5)
# This should work (PyArg_ParseTuple expects tuple)
@ -26,7 +26,7 @@ print()
# Test 2: Setting color with Color object (the bug)
print("Test 2: Setting color with Color object")
try:
mcrfpy.createScene("test2")
test2 = mcrfpy.Scene("test2")
grid = mcrfpy.Grid(grid_x=5, grid_y=5)
# This will fail in PyArg_ParseTuple but not report it
@ -45,7 +45,7 @@ print()
# Test 3: Multiple color assignments
print("Test 3: Multiple Color assignments (reproducing original bug)")
try:
mcrfpy.createScene("test3")
test3 = mcrfpy.Scene("test3")
grid = mcrfpy.Grid(grid_x=25, grid_y=15)
# Do multiple color assignments

View file

@ -16,7 +16,7 @@ import sys
def create_test_grid():
"""Create a test grid with obstacles"""
mcrfpy.createScene("dijkstra_test")
dijkstra_test = mcrfpy.Scene("dijkstra_test")
# Create grid
grid = mcrfpy.Grid(grid_x=20, grid_y=20)
@ -212,7 +212,7 @@ print("=====================================")
# Set up scene
grid = create_test_grid()
ui = mcrfpy.sceneUI("dijkstra_test")
ui = dijkstra_test.children
ui.append(grid)
# Add title
@ -224,4 +224,4 @@ ui.append(title)
mcrfpy.setTimer("test", run_test, 100)
# Show scene
mcrfpy.setScene("dijkstra_test")
dijkstra_test.activate()

View file

@ -6,8 +6,8 @@ Test if AnimationManager crashes with no animations
import mcrfpy
print("Creating empty scene...")
mcrfpy.createScene("test")
mcrfpy.setScene("test")
test = mcrfpy.Scene("test")
test.activate()
print("Scene created, no animations added")
print("Starting game loop in 100ms...")

View file

@ -11,7 +11,7 @@ import mcrfpy
import sys
# Create scene
mcrfpy.createScene("test_anim")
test_anim = mcrfpy.Scene("test_anim")
# Create simple grid
grid = mcrfpy.Grid(grid_x=15, grid_y=15)
@ -42,7 +42,7 @@ entity = mcrfpy.Entity((5, 5), grid=grid)
entity.sprite_index = 64 # @
# UI setup
ui = mcrfpy.sceneUI("test_anim")
ui = test_anim.children
ui.append(grid)
grid.position = (100, 100)
grid.size = (450, 450) # 15 * 30 pixels per cell
@ -182,8 +182,8 @@ def handle_input(key, state):
print(f"Reset entity to ({entity.x}, {entity.y})")
# Set scene
mcrfpy.setScene("test_anim")
mcrfpy.keypressScene(handle_input)
test_anim.activate()
test_anim.on_key = handle_input
# Start position update timer
mcrfpy.setTimer("update_pos", update_position_display, 200)

View file

@ -12,11 +12,11 @@ def test_remove_by_entity():
# Create a test scene and grid
scene_name = "test_entity_remove"
mcrfpy.createScene(scene_name)
_scene = mcrfpy.Scene(scene_name)
# Create a grid (entities need a grid)
grid = mcrfpy.Grid() # Default 2x2 grid is fine for testing
mcrfpy.sceneUI(scene_name).append(grid)
_scene.children.append(grid) # TODO: Replace _scene with correct Scene object
# Get the entity collection
entities = grid.entities

View file

@ -2,8 +2,8 @@
import mcrfpy
# Create scene and grid
mcrfpy.createScene("test")
ui = mcrfpy.sceneUI("test")
test = mcrfpy.Scene("test")
ui = test.children
# Create texture and grid
texture = mcrfpy.Texture("assets/kenney_TD_MR_IP.png", 16, 16)

View file

@ -27,7 +27,7 @@ print("UIEntity::setProperty for 'x' and 'y' properties.")
print()
# Create scene to demonstrate
mcrfpy.createScene("fix_demo")
fix_demo = mcrfpy.Scene("fix_demo")
# Create grid
grid = mcrfpy.Grid(grid_x=15, grid_y=10)
@ -49,7 +49,7 @@ entity = mcrfpy.Entity((2, 2), grid=grid)
entity.sprite_index = 64 # @
# UI
ui = mcrfpy.sceneUI("fix_demo")
ui = fix_demo.children
ui.append(grid)
grid.position = (100, 150)
grid.size = (450, 300)
@ -111,8 +111,8 @@ def handle_input(key, state):
status.text = "Reset entity to (2,2)"
# Setup
mcrfpy.setScene("fix_demo")
mcrfpy.keypressScene(handle_input)
fix_demo.activate()
fix_demo.on_key = handle_input
mcrfpy.setTimer("update", update_display, 100)
print("Ready to demonstrate the issue.")

View file

@ -7,7 +7,7 @@ print("Testing Entity.path_to() method...")
print("=" * 50)
# Create scene and grid
mcrfpy.createScene("path_test")
path_test = mcrfpy.Scene("path_test")
grid = mcrfpy.Grid(grid_x=10, grid_y=10)
# Set up a simple map with some walls

View file

@ -19,7 +19,7 @@ except Exception as e:
# Test 2: Entity in grid with walls blocking path
print("\nTest 2: Completely blocked path")
mcrfpy.createScene("blocked_test")
blocked_test = mcrfpy.Scene("blocked_test")
grid = mcrfpy.Grid(grid_x=5, grid_y=5)
# Make all tiles walkable first

View file

@ -12,7 +12,7 @@ FLOOR_COLOR = mcrfpy.Color(200, 200, 220)
def test_exact_pattern():
"""Exact code from dijkstra_demo_final.py"""
mcrfpy.createScene("dijkstra_demo")
dijkstra_demo = mcrfpy.Scene("dijkstra_demo")
# Create grid
grid = mcrfpy.Grid(grid_x=25, grid_y=15)
@ -48,7 +48,7 @@ print("Test 2: Breaking it down step by step...")
# Step 1: Scene and grid
try:
mcrfpy.createScene("test2")
test2 = mcrfpy.Scene("test2")
grid = mcrfpy.Grid(grid_x=25, grid_y=15)
print(" ✓ Step 1: Scene and grid created")
except Exception as e:

View file

@ -22,7 +22,7 @@ def take_second_screenshot(runtime):
def animate_frames(runtime):
"""Animate frames to demonstrate clipping"""
mcrfpy.delTimer("animate")
scene = mcrfpy.sceneUI("test")
scene = test.children
# Move child frames
parent1 = scene[0]
parent2 = scene[1]
@ -36,7 +36,7 @@ def test_clipping(runtime):
print("Testing UIFrame clipping functionality...")
scene = mcrfpy.sceneUI("test")
scene = test.children
# Create parent frame with clipping disabled (default)
parent1 = Frame(pos=(50, 50), size=(200, 150),
@ -119,15 +119,15 @@ def test_clipping(runtime):
def handle_keypress(key, modifiers):
if key == "c":
scene = mcrfpy.sceneUI("test")
scene = test.children
parent1 = scene[0]
parent1.clip_children = not parent1.clip_children
print(f"Toggled parent1 clip_children to: {parent1.clip_children}")
# Main execution
print("Creating test scene...")
mcrfpy.createScene("test")
mcrfpy.setScene("test")
mcrfpy.keypressScene(handle_keypress)
test = mcrfpy.Scene("test")
test.activate()
test.on_key = handle_keypress
mcrfpy.setTimer("test_clipping", test_clipping, 100)
print("Test scheduled, running...")

View file

@ -12,7 +12,7 @@ def test_nested_clipping(runtime):
print("Testing advanced UIFrame clipping with nested frames...")
# Create test scene
scene = mcrfpy.sceneUI("test")
scene = test.children
# Create outer frame with clipping enabled
outer = Frame(pos=(50, 50), size=(400, 300),
@ -94,8 +94,8 @@ def test_nested_clipping(runtime):
# Main execution
print("Creating advanced test scene...")
mcrfpy.createScene("test")
mcrfpy.setScene("test")
test = mcrfpy.Scene("test")
test.activate()
# Schedule the test
mcrfpy.setTimer("test_nested_clipping", test_nested_clipping, 100)

View file

@ -9,8 +9,8 @@ def test_grid_background():
print("Testing Grid Background Color...")
# Create a test scene
mcrfpy.createScene("test")
ui = mcrfpy.sceneUI("test")
test = mcrfpy.Scene("test")
ui = test.children
# Create a grid with default background
grid = mcrfpy.Grid(pos=(50, 50), size=(400, 300), grid_size=(20, 15))
@ -40,7 +40,7 @@ def test_grid_background():
info_frame.children.append(color_display)
# Activate the scene
mcrfpy.setScene("test")
test.activate()
def run_tests(dt):
"""Run background color tests"""

View file

@ -9,8 +9,8 @@ def test_properties():
"""Test grid cell event properties exist and work"""
print("Testing grid cell event properties...")
mcrfpy.createScene("test_props")
ui = mcrfpy.sceneUI("test_props")
test_props = mcrfpy.Scene("test_props")
ui = test_props.children
grid = mcrfpy.Grid(grid_size=(5, 5), pos=(100, 100), size=(200, 200))
ui.append(grid)
@ -45,9 +45,9 @@ def test_cell_hover():
"""Test cell hover events"""
print("Testing cell hover events...")
mcrfpy.createScene("test_hover")
ui = mcrfpy.sceneUI("test_hover")
mcrfpy.setScene("test_hover")
test_hover = mcrfpy.Scene("test_hover")
ui = test_hover.children
test_hover.activate()
grid = mcrfpy.Grid(grid_size=(5, 5), pos=(100, 100), size=(200, 200))
ui.append(grid)
@ -89,9 +89,9 @@ def test_cell_click():
"""Test cell click events"""
print("Testing cell click events...")
mcrfpy.createScene("test_click")
ui = mcrfpy.sceneUI("test_click")
mcrfpy.setScene("test_click")
test_click = mcrfpy.Scene("test_click")
ui = test_click.children
test_click.activate()
grid = mcrfpy.Grid(grid_size=(5, 5), pos=(100, 100), size=(200, 200))
ui.append(grid)

View file

@ -18,7 +18,7 @@ def run_test(runtime):
mcrfpy.delTimer("test")
# Get the scene UI
ui = mcrfpy.sceneUI("test")
ui = test.children
# Create a grid without texture (uses default 16x16 cells)
print("Test 1: Creating Grid with children...")
@ -122,8 +122,8 @@ def run_test(runtime):
mcrfpy.setTimer("screenshot", take_screenshot, 100)
# Create a test scene
mcrfpy.createScene("test")
mcrfpy.setScene("test")
test = mcrfpy.Scene("test")
test.activate()
# Schedule test to run after game loop starts
mcrfpy.setTimer("test", run_test, 50)

View file

@ -8,7 +8,7 @@ print("Testing grid creation...")
# First create scene
try:
mcrfpy.createScene("test")
test = mcrfpy.Scene("test")
print("✓ Created scene")
except Exception as e:
print(f"✗ Failed to create scene: {e}")

View file

@ -8,7 +8,7 @@ import traceback
print("Testing grid creation with detailed error...")
# Create scene first
mcrfpy.createScene("test")
test = mcrfpy.Scene("test")
# Try to create grid and get detailed error
try:

View file

@ -9,7 +9,7 @@ print("=" * 50)
# Test 1: Basic grid.at() calls
print("Test 1: Basic grid.at() calls")
try:
mcrfpy.createScene("test1")
test1 = mcrfpy.Scene("test1")
grid = mcrfpy.Grid(grid_x=5, grid_y=5)
# Single call
@ -32,7 +32,7 @@ print()
# Test 2: Grid.at() in a loop
print("Test 2: Grid.at() in simple loop")
try:
mcrfpy.createScene("test2")
test2 = mcrfpy.Scene("test2")
grid = mcrfpy.Grid(grid_x=5, grid_y=5)
for i in range(3):
@ -50,7 +50,7 @@ print()
# Test 3: Nested loops with grid.at()
print("Test 3: Nested loops with grid.at()")
try:
mcrfpy.createScene("test3")
test3 = mcrfpy.Scene("test3")
grid = mcrfpy.Grid(grid_x=5, grid_y=5)
for y in range(3):
@ -68,7 +68,7 @@ print()
# Test 4: Exact pattern from failing code
print("Test 4: Exact failing pattern")
try:
mcrfpy.createScene("test4")
test4 = mcrfpy.Scene("test4")
grid = mcrfpy.Grid(grid_x=25, grid_y=15)
grid.fill_color = mcrfpy.Color(0, 0, 0)
@ -109,7 +109,7 @@ print()
# Test 5: Is it related to the number of grid.at() calls?
print("Test 5: Testing grid.at() call limits")
try:
mcrfpy.createScene("test5")
test5 = mcrfpy.Scene("test5")
grid = mcrfpy.Grid(grid_x=10, grid_y=10)
count = 0

View file

@ -17,9 +17,9 @@ def run_tests():
print("=== Headless Benchmark Tests ===\n")
# Create a test scene
mcrfpy.createScene("benchmark_test")
mcrfpy.setScene("benchmark_test")
ui = mcrfpy.sceneUI("benchmark_test")
benchmark_test = mcrfpy.Scene("benchmark_test")
benchmark_test.activate()
ui = benchmark_test.children
# Add some UI elements to have something to render
frame = mcrfpy.Frame(pos=(100, 100), size=(200, 200))

View file

@ -13,9 +13,9 @@ def test_headless_click():
"""Test that clicks work in headless mode via automation API"""
print("Testing headless click events...")
mcrfpy.createScene("test_click")
ui = mcrfpy.sceneUI("test_click")
mcrfpy.setScene("test_click")
test_click = mcrfpy.Scene("test_click")
ui = test_click.children
test_click.activate()
# Create a frame at known position
frame = mcrfpy.Frame(pos=(100, 100), size=(200, 200))
@ -64,9 +64,9 @@ def test_click_miss():
click_count = 0
click_positions = []
mcrfpy.createScene("test_miss")
ui = mcrfpy.sceneUI("test_miss")
mcrfpy.setScene("test_miss")
test_miss = mcrfpy.Scene("test_miss")
ui = test_miss.children
test_miss.activate()
# Create a frame at known position
frame = mcrfpy.Frame(pos=(100, 100), size=(100, 100))

View file

@ -6,9 +6,9 @@ from mcrfpy import automation
import sys
# Create scene
mcrfpy.createScene("detect_test")
ui = mcrfpy.sceneUI("detect_test")
mcrfpy.setScene("detect_test")
detect_test = mcrfpy.Scene("detect_test")
ui = detect_test.children
detect_test.activate()
# Create a frame
frame = mcrfpy.Frame(pos=(100, 100), size=(200, 200))

View file

@ -5,9 +5,9 @@ import mcrfpy
import sys
# Create scene
mcrfpy.createScene("headless_test")
ui = mcrfpy.sceneUI("headless_test")
mcrfpy.setScene("headless_test")
headless_test = mcrfpy.Scene("headless_test")
ui = headless_test.children
headless_test.activate()
# Create a visible indicator
frame = mcrfpy.Frame(pos=(200, 200), size=(400, 200))

View file

@ -108,11 +108,11 @@ def test_metrics(runtime):
# Set up test scene
print("Setting up metrics test scene...")
mcrfpy.createScene("metrics_test")
mcrfpy.setScene("metrics_test")
metrics_test = mcrfpy.Scene("metrics_test")
metrics_test.activate()
# Add some UI elements
ui = mcrfpy.sceneUI("metrics_test")
ui = metrics_test.children
# Create various UI elements
frame1 = mcrfpy.Frame(pos=(10, 10), size=(200, 150))

View file

@ -15,8 +15,8 @@ def test_callback_assignment():
"""Test that on_enter and on_exit callbacks can be assigned"""
print("Testing callback assignment...")
mcrfpy.createScene("test_assign")
ui = mcrfpy.sceneUI("test_assign")
test_assign = mcrfpy.Scene("test_assign")
ui = test_assign.children
frame = mcrfpy.Frame(pos=(100, 100), size=(200, 200))
ui.append(frame)
@ -50,8 +50,8 @@ def test_hovered_property():
"""Test that hovered property exists and is initially False"""
print("Testing hovered property...")
mcrfpy.createScene("test_hovered")
ui = mcrfpy.sceneUI("test_hovered")
test_hovered = mcrfpy.Scene("test_hovered")
ui = test_hovered.children
frame = mcrfpy.Frame(pos=(50, 50), size=(100, 100))
ui.append(frame)
@ -77,8 +77,8 @@ def test_all_types_have_events():
"""Test that all drawable types have on_enter/on_exit properties"""
print("Testing events on all drawable types...")
mcrfpy.createScene("test_types")
ui = mcrfpy.sceneUI("test_types")
test_types = mcrfpy.Scene("test_types")
ui = test_types.children
types_to_test = [
("Frame", mcrfpy.Frame(pos=(0, 0), size=(100, 100))),
@ -121,9 +121,9 @@ def test_enter_exit_simulation():
enter_positions = []
exit_positions = []
mcrfpy.createScene("test_sim")
ui = mcrfpy.sceneUI("test_sim")
mcrfpy.setScene("test_sim")
test_sim = mcrfpy.Scene("test_sim")
ui = test_sim.children
test_sim.activate()
# Create a frame at known position
frame = mcrfpy.Frame(pos=(100, 100), size=(200, 200))

View file

@ -85,7 +85,7 @@ def test_ui_constructors(runtime):
sys.exit(0)
# Create a basic scene so the game can start
mcrfpy.createScene("test")
test = mcrfpy.Scene("test")
# Schedule the test to run after game initialization
mcrfpy.setTimer("test", test_ui_constructors, 100)

View file

@ -9,8 +9,8 @@ def test_on_move_property():
"""Test that on_move property exists and can be assigned"""
print("Testing on_move property...")
mcrfpy.createScene("test_move_prop")
ui = mcrfpy.sceneUI("test_move_prop")
test_move_prop = mcrfpy.Scene("test_move_prop")
ui = test_move_prop.children
frame = mcrfpy.Frame(pos=(100, 100), size=(200, 200))
ui.append(frame)
@ -33,9 +33,9 @@ def test_on_move_fires():
"""Test that on_move fires when mouse moves within bounds"""
print("Testing on_move callback firing...")
mcrfpy.createScene("test_move")
ui = mcrfpy.sceneUI("test_move")
mcrfpy.setScene("test_move")
test_move = mcrfpy.Scene("test_move")
ui = test_move.children
test_move.activate()
# Create a frame at known position
frame = mcrfpy.Frame(pos=(100, 100), size=(200, 200))
@ -78,9 +78,9 @@ def test_on_move_not_outside():
"""Test that on_move doesn't fire when mouse is outside bounds"""
print("Testing on_move doesn't fire outside bounds...")
mcrfpy.createScene("test_move_outside")
ui = mcrfpy.sceneUI("test_move_outside")
mcrfpy.setScene("test_move_outside")
test_move_outside = mcrfpy.Scene("test_move_outside")
ui = test_move_outside.children
test_move_outside.activate()
# Frame at 100-300, 100-300
frame = mcrfpy.Frame(pos=(100, 100), size=(200, 200))
@ -117,8 +117,8 @@ def test_all_types_have_on_move():
"""Test that all drawable types have on_move property"""
print("Testing on_move on all drawable types...")
mcrfpy.createScene("test_types")
ui = mcrfpy.sceneUI("test_types")
test_types = mcrfpy.Scene("test_types")
ui = test_types.children
types_to_test = [
("Frame", mcrfpy.Frame(pos=(0, 0), size=(100, 100))),

View file

@ -47,7 +47,7 @@ print()
# Test 4: After creating mcrfpy objects
print("Test 4: After creating mcrfpy scene/grid")
try:
mcrfpy.createScene("test")
test = mcrfpy.Scene("test")
grid = mcrfpy.Grid(grid_x=10, grid_y=10)
walls = []
@ -63,7 +63,7 @@ print()
# Test 5: Check line number in error
print("Test 5: Checking exact error location")
def test_exact_pattern():
mcrfpy.createScene("dijkstra_demo")
dijkstra_demo = mcrfpy.Scene("dijkstra_demo")
grid = mcrfpy.Grid(grid_x=25, grid_y=15)
grid.fill_color = mcrfpy.Color(0, 0, 0)

View file

@ -13,8 +13,8 @@ def test_parent_property():
print("Testing parent property...")
# Create scene and get UI
mcrfpy.createScene("test")
ui = mcrfpy.sceneUI("test")
test = mcrfpy.Scene("test")
ui = test.children
# Create a parent frame
parent = mcrfpy.Frame(pos=(100, 100), size=(200, 200))
@ -44,8 +44,8 @@ def test_global_position():
print("Testing global_position property...")
# Create scene and get UI
mcrfpy.createScene("test2")
ui = mcrfpy.sceneUI("test2")
test2 = mcrfpy.Scene("test2")
ui = test2.children
# Create nested hierarchy:
# root (50, 50)
@ -81,8 +81,8 @@ def test_parent_changes_on_move():
"""Test that moving child to different parent updates parent reference"""
print("Testing parent changes on move...")
mcrfpy.createScene("test3")
ui = mcrfpy.sceneUI("test3")
test3 = mcrfpy.Scene("test3")
ui = test3.children
parent1 = mcrfpy.Frame(pos=(0, 0), size=(100, 100), fill_color=(255, 0, 0, 255))
parent2 = mcrfpy.Frame(pos=(200, 0), size=(100, 100), fill_color=(0, 255, 0, 255))
@ -116,8 +116,8 @@ def test_remove_clears_parent():
"""Test that removing child clears parent reference"""
print("Testing remove clears parent...")
mcrfpy.createScene("test4")
ui = mcrfpy.sceneUI("test4")
test4 = mcrfpy.Scene("test4")
ui = test4.children
parent = mcrfpy.Frame(pos=(0, 0), size=(100, 100))
ui.append(parent)
@ -140,8 +140,8 @@ def test_scene_level_elements():
"""Test that scene-level elements have no parent"""
print("Testing scene-level elements...")
mcrfpy.createScene("test5")
ui = mcrfpy.sceneUI("test5")
test5 = mcrfpy.Scene("test5")
ui = test5.children
frame = mcrfpy.Frame(pos=(10, 10), size=(50, 50))
ui.append(frame)
@ -160,8 +160,8 @@ def test_all_drawable_types():
"""Test parent/global_position on all drawable types"""
print("Testing all drawable types...")
mcrfpy.createScene("test6")
ui = mcrfpy.sceneUI("test6")
test6 = mcrfpy.Scene("test6")
ui = test6.children
parent = mcrfpy.Frame(pos=(100, 100), size=(300, 300))
ui.append(parent)
@ -190,8 +190,8 @@ def test_parent_setter():
"""Test parent property setter (assign parent directly)"""
print("Testing parent setter...")
mcrfpy.createScene("test7")
ui = mcrfpy.sceneUI("test7")
test7 = mcrfpy.Scene("test7")
ui = test7.children
# Create parent frame and child
parent = mcrfpy.Frame(pos=(100, 100), size=(200, 200))
@ -223,8 +223,8 @@ def test_reparenting_via_setter():
"""Test moving a child from one parent to another via setter"""
print("Testing reparenting via setter...")
mcrfpy.createScene("test8")
ui = mcrfpy.sceneUI("test8")
test8 = mcrfpy.Scene("test8")
ui = test8.children
parent1 = mcrfpy.Frame(pos=(0, 0), size=(100, 100))
parent2 = mcrfpy.Frame(pos=(200, 200), size=(100, 100))

View file

@ -8,7 +8,7 @@ print("Testing path color changes...")
print("=" * 50)
# Create scene and small grid
mcrfpy.createScene("test")
test = mcrfpy.Scene("test")
grid = mcrfpy.Grid(grid_x=5, grid_y=5)
# Add color layer for cell coloring
@ -75,12 +75,12 @@ def check_visual(runtime):
sys.exit(0)
# Set up minimal UI to test rendering
ui = mcrfpy.sceneUI("test")
ui = test.children
ui.append(grid)
grid.position = (50, 50)
grid.size = (250, 250)
mcrfpy.setScene("test")
test.activate()
mcrfpy.setTimer("check", check_visual, 500)
print("\nStarting render test...")

View file

@ -8,7 +8,7 @@ print("Testing pathfinding integration...")
print("=" * 50)
# Create scene and grid
mcrfpy.createScene("test")
test = mcrfpy.Scene("test")
grid = mcrfpy.Grid(grid_x=10, grid_y=10)
# Initialize grid

View file

@ -5,9 +5,9 @@ import mcrfpy
import sys
# Create a simple scene
mcrfpy.createScene("test")
mcrfpy.setScene("test")
ui = mcrfpy.sceneUI("test")
test = mcrfpy.Scene("test")
test.activate()
ui = test.children
# Create a small grid
grid = mcrfpy.Grid(

View file

@ -53,5 +53,5 @@ def test_properties(runtime):
sys.exit(0)
mcrfpy.createScene("test")
test = mcrfpy.Scene("test")
mcrfpy.setTimer("test_properties", test_properties, 100)

View file

@ -36,7 +36,7 @@ def run_tests(runtime):
# Test 2: Create instance and add to scene
frame = MyFrame(50, 50)
scene_ui = mcrfpy.sceneUI("test_scene")
scene_ui = test_scene.children
scene_ui.append(frame)
# Test 3: Retrieve from collection and check type
@ -142,8 +142,8 @@ def run_tests(runtime):
sys.exit(0 if test_passed else 1)
# Create test scene
mcrfpy.createScene("test_scene")
mcrfpy.setScene("test_scene")
test_scene = mcrfpy.Scene("test_scene")
test_scene.activate()
# Schedule tests to run after game loop starts
mcrfpy.setTimer("test", run_tests, 100)

View file

@ -18,7 +18,7 @@ except Exception as e:
# Test 2: range(25) after creating scene/grid
print("\nTest 2: range(25) after creating 25x15 grid")
try:
mcrfpy.createScene("test")
test = mcrfpy.Scene("test")
grid = mcrfpy.Grid(grid_x=25, grid_y=15)
for i in range(25):
@ -30,7 +30,7 @@ except Exception as e:
# Test 3: The killer combination
print("\nTest 3: range(25) after 15x25 grid.at() operations")
try:
mcrfpy.createScene("test3")
test3 = mcrfpy.Scene("test3")
grid = mcrfpy.Grid(grid_x=25, grid_y=15)
# Do the nested loop that triggers the bug
@ -54,7 +54,7 @@ except Exception as e:
# Test 4: Does range(24) still work?
print("\nTest 4: range(24) after same operations")
try:
mcrfpy.createScene("test4")
test4 = mcrfpy.Scene("test4")
grid = mcrfpy.Grid(grid_x=25, grid_y=15)
for y in range(15):
@ -76,7 +76,7 @@ except Exception as e:
# Test 5: Is it about the specific combination of 15 and 25?
print("\nTest 5: Different grid dimensions")
try:
mcrfpy.createScene("test5")
test5 = mcrfpy.Scene("test5")
grid = mcrfpy.Grid(grid_x=30, grid_y=20)
for y in range(20):

View file

@ -69,7 +69,7 @@ print("Testing if it's about grid size vs range size...")
try:
# Small grid, large range
mcrfpy.createScene("test_small_grid")
test_small_grid = mcrfpy.Scene("test_small_grid")
grid = mcrfpy.Grid(grid_x=5, grid_y=5)
# Do minimal grid operations
@ -85,7 +85,7 @@ except Exception as e:
try:
# Large grid, see what happens
mcrfpy.createScene("test_large_grid")
test_large_grid = mcrfpy.Scene("test_large_grid")
grid = mcrfpy.Grid(grid_x=20, grid_y=20)
# Do operations on large grid

View file

@ -4,7 +4,7 @@ import mcrfpy
import sys
# Create test scenes
mcrfpy.createScene("test_scene")
test_scene = mcrfpy.Scene("test_scene")
def test_scene_pos():
"""Test Scene pos property"""

View file

@ -5,56 +5,58 @@ import mcrfpy
import sys
import time
red_scene, blue_scene, green_scene, menu_scene = None, None, None, None # global scoping
def create_test_scenes():
"""Create several test scenes with different colored backgrounds."""
global red_scene, blue_scene, green_scene, menu_scene
# Scene 1: Red background
mcrfpy.createScene("red_scene")
ui1 = mcrfpy.sceneUI("red_scene")
red_scene = mcrfpy.Scene("red_scene")
ui1 = red_scene.children
bg1 = mcrfpy.Frame(pos=(0, 0), size=(1024, 768), fill_color=mcrfpy.Color(255, 0, 0, 255))
label1 = mcrfpy.Caption(pos=(512, 384), text="RED SCENE", font=mcrfpy.Font.font_ui)
label1 = mcrfpy.Caption(pos=(512, 384), text="RED SCENE", font=mcrfpy.default_font)
label1.fill_color = mcrfpy.Color(255, 255, 255, 255)
ui1.append(bg1)
ui1.append(label1)
# Scene 2: Blue background
mcrfpy.createScene("blue_scene")
ui2 = mcrfpy.sceneUI("blue_scene")
blue_scene = mcrfpy.Scene("blue_scene")
ui2 = blue_scene.children
bg2 = mcrfpy.Frame(pos=(0, 0), size=(1024, 768), fill_color=mcrfpy.Color(0, 0, 255, 255))
label2 = mcrfpy.Caption(pos=(512, 384), text="BLUE SCENE", font=mcrfpy.Font.font_ui)
label2 = mcrfpy.Caption(pos=(512, 384), text="BLUE SCENE", font=mcrfpy.default_font)
label2.fill_color = mcrfpy.Color(255, 255, 255, 255)
ui2.append(bg2)
ui2.append(label2)
# Scene 3: Green background
mcrfpy.createScene("green_scene")
ui3 = mcrfpy.sceneUI("green_scene")
green_scene = mcrfpy.Scene("green_scene")
ui3 = green_scene.children
bg3 = mcrfpy.Frame(pos=(0, 0), size=(1024, 768), fill_color=mcrfpy.Color(0, 255, 0, 255))
label3 = mcrfpy.Caption(pos=(512, 384), text="GREEN SCENE", font=mcrfpy.Font.font_ui)
label3 = mcrfpy.Caption(pos=(512, 384), text="GREEN SCENE", font=mcrfpy.default_font)
label3.fill_color = mcrfpy.Color(0, 0, 0, 255) # Black text on green
ui3.append(bg3)
ui3.append(label3)
# Scene 4: Menu scene with buttons
mcrfpy.createScene("menu_scene")
ui4 = mcrfpy.sceneUI("menu_scene")
menu_scene = mcrfpy.Scene("menu_scene")
ui4 = menu_scene.children
bg4 = mcrfpy.Frame(pos=(0, 0), size=(1024, 768), fill_color=mcrfpy.Color(50, 50, 50, 255))
title = mcrfpy.Caption(pos=(512, 100), text="SCENE TRANSITION DEMO", font=mcrfpy.Font.font_ui)
title = mcrfpy.Caption(pos=(512, 100), text="SCENE TRANSITION DEMO", font=mcrfpy.default_font)
title.fill_color = mcrfpy.Color(255, 255, 255, 255)
ui4.append(bg4)
ui4.append(title)
# Add instruction text
instructions = mcrfpy.Caption(pos=(512, 200), text="Press keys 1-6 for different transitions", font=mcrfpy.Font.font_ui)
instructions = mcrfpy.Caption(pos=(512, 200), text="Press keys 1-6 for different transitions", font=mcrfpy.default_font)
instructions.fill_color = mcrfpy.Color(200, 200, 200, 255)
ui4.append(instructions)
controls = mcrfpy.Caption(pos=(512, 250), text="1: Fade | 2: Slide Left | 3: Slide Right | 4: Slide Up | 5: Slide Down | 6: Instant", font=mcrfpy.Font.font_ui)
controls = mcrfpy.Caption(pos=(512, 250), text="1: Fade | 2: Slide Left | 3: Slide Right | 4: Slide Up | 5: Slide Down | 6: Instant", font=mcrfpy.default_font)
controls.fill_color = mcrfpy.Color(150, 150, 150, 255)
ui4.append(controls)
scene_info = mcrfpy.Caption(pos=(512, 300), text="R: Red Scene | B: Blue Scene | G: Green Scene | M: Menu", font=mcrfpy.Font.font_ui)
scene_info = mcrfpy.Caption(pos=(512, 300), text="R: Red Scene | B: Blue Scene | G: Green Scene | M: Menu", font=mcrfpy.default_font)
scene_info.fill_color = mcrfpy.Color(150, 150, 150, 255)
ui4.append(scene_info)
@ -71,7 +73,7 @@ def handle_key(key, action):
if action != "start":
return
current_scene = mcrfpy.currentScene()
current_scene = (mcrfpy.current_scene.name if mcrfpy.current_scene else None)
# Number keys set transition type
if key == "Num1":
@ -94,34 +96,43 @@ def handle_key(key, action):
print("Transition set to: instant")
# Letter keys change scene
elif key == "R":
if current_scene != "red_scene":
print(f"Transitioning to red_scene with {current_transition}")
if current_transition:
mcrfpy.setScene("red_scene", current_transition, transition_duration)
else:
mcrfpy.setScene("red_scene")
elif key == "B":
if current_scene != "blue_scene":
print(f"Transitioning to blue_scene with {current_transition}")
if current_transition:
mcrfpy.setScene("blue_scene", current_transition, transition_duration)
else:
mcrfpy.setScene("blue_scene")
elif key == "G":
if current_scene != "green_scene":
print(f"Transitioning to green_scene with {current_transition}")
if current_transition:
mcrfpy.setScene("green_scene", current_transition, transition_duration)
else:
mcrfpy.setScene("green_scene")
elif key == "M":
if current_scene != "menu_scene":
print(f"Transitioning to menu_scene with {current_transition}")
if current_transition:
mcrfpy.setScene("menu_scene", current_transition, transition_duration)
else:
mcrfpy.setScene("menu_scene")
keytransitions = {
"R": red_scene,
"B": blue_scene,
"G": green_scene,
"M": menu_scene
}
if key in keytransitions:
if mcrfpy.current_scene != keytransitions[key]:
keytransitions[key].activate()
#elif key == "R":
# if current_scene != "red_scene":
# print(f"Transitioning to red_scene with {current_transition}")
# if current_transition:
# mcrfpy.setScene("red_scene", current_transition, transition_duration)
# else:
# red_scene.activate()
#elif key == "B":
# if current_scene != "blue_scene":
# print(f"Transitioning to blue_scene with {current_transition}")
# if current_transition:
# mcrfpy.setScene("blue_scene", current_transition, transition_duration)
# else:
# blue_scene.activate()
#elif key == "G":
# if current_scene != "green_scene":
# print(f"Transitioning to green_scene with {current_transition}")
# if current_transition:
# mcrfpy.setScene("green_scene", current_transition, transition_duration)
# else:
# green_scene.activate()
#elif key == "M":
# if current_scene != "menu_scene":
# print(f"Transitioning to menu_scene with {current_transition}")
# if current_transition:
# mcrfpy.setScene("menu_scene", current_transition, transition_duration)
# else:
# menu_scene.activate()
elif key == "Escape":
print("Exiting...")
sys.exit(0)
@ -144,7 +155,7 @@ def test_automatic_transitions(delay):
mcrfpy.setScene(scene, trans_type, 1.0)
else:
print(f"Transition {i+1}: instant to {scene}")
mcrfpy.setScene(scene)
mcrfpy.current_scene = scene
time.sleep(2) # Wait for transition to complete plus viewing time
print("Automatic test complete!")
@ -155,14 +166,16 @@ print("=== Scene Transition Test ===")
create_test_scenes()
# Start with menu scene
mcrfpy.setScene("menu_scene")
menu_scene.activate()
# Set up keyboard handler
mcrfpy.keypressScene(handle_key)
for s in (red_scene, blue_scene, green_scene, menu_scene):
s.on_key = handle_key
#menu_scene.on_key = handle_key
# Option to run automatic test
if len(sys.argv) > 1 and sys.argv[1] == "--auto":
mcrfpy.setTimer("auto_test", test_automatic_transitions, 1000)
else:
print("\nManual test mode. Use keyboard controls shown on screen.")
print("Run with --auto flag for automatic transition demo.")
print("Run with --auto flag for automatic transition demo.")

View file

@ -11,14 +11,14 @@ def test_scene_transitions():
print("Creating test scenes...")
# Scene 1
mcrfpy.createScene("scene1")
ui1 = mcrfpy.sceneUI("scene1")
scene1 = mcrfpy.Scene("scene1")
ui1 = scene1.children
frame1 = mcrfpy.Frame(pos=(0, 0), size=(100, 100), fill_color=mcrfpy.Color(255, 0, 0))
ui1.append(frame1)
# Scene 2
mcrfpy.createScene("scene2")
ui2 = mcrfpy.sceneUI("scene2")
scene2 = mcrfpy.Scene("scene2")
ui2 = scene2.children
frame2 = mcrfpy.Frame(pos=(0, 0), size=(100, 100), fill_color=mcrfpy.Color(0, 0, 255))
ui2.append(frame2)
@ -35,20 +35,20 @@ def test_scene_transitions():
print("\nTesting scene transitions:")
# Start with scene1
mcrfpy.setScene("scene1")
print(f"Initial scene: {mcrfpy.currentScene()}")
scene1.activate()
print(f"Initial scene: {(mcrfpy.current_scene.name if mcrfpy.current_scene else None)}")
for trans_type, duration in transitions:
target = "scene2" if mcrfpy.currentScene() == "scene1" else "scene1"
target = "scene2" if (mcrfpy.current_scene.name if mcrfpy.current_scene else None) == "scene1" else "scene1"
if trans_type:
print(f"\nTransitioning to {target} with {trans_type} (duration: {duration}s)")
mcrfpy.setScene(target, trans_type, duration)
else:
print(f"\nTransitioning to {target} instantly")
mcrfpy.setScene(target)
mcrfpy.current_scene = target
print(f"Current scene after transition: {mcrfpy.currentScene()}")
print(f"Current scene after transition: {(mcrfpy.current_scene.name if mcrfpy.current_scene else None)}")
print("\n✓ All scene transition types tested successfully!")
print("\nNote: Visual transitions cannot be verified in headless mode.")

View file

@ -6,8 +6,8 @@ import sys
def cb(a, t):
print("CB")
mcrfpy.createScene("test")
mcrfpy.setScene("test")
test = mcrfpy.Scene("test")
test.activate()
e = mcrfpy.Entity((0, 0), texture=None, sprite_index=0)
a = mcrfpy.Animation("x", 1.0, 0.1, "linear", callback=cb)
a.start(e)

View file

@ -26,5 +26,5 @@ def simple_test(runtime):
sys.exit(0)
mcrfpy.createScene("test")
test = mcrfpy.Scene("test")
mcrfpy.setTimer("simple_test", simple_test, 100)

View file

@ -9,8 +9,8 @@ print(f"stdin.isatty(): {sys.stdin.isatty()}")
print(f"stdin fileno: {sys.stdin.fileno()}")
# Set up a basic scene
mcrfpy.createScene("stdin_test")
mcrfpy.setScene("stdin_test")
stdin_test = mcrfpy.Scene("stdin_test")
stdin_test.activate()
# Try to prevent interactive mode by closing stdin
print("\nAttempting to prevent interactive mode...")

View file

@ -108,8 +108,8 @@ def run_tests():
if __name__ == "__main__":
try:
# Create a scene for the test
mcrfpy.createScene("test_step")
mcrfpy.setScene("test_step")
test_step = mcrfpy.Scene("test_step")
test_step.activate()
if run_tests():
print("\nPASS")

View file

@ -22,9 +22,9 @@ def run_tests():
print("=== Synchronous Screenshot Tests ===\n")
# Create a test scene with UI elements
mcrfpy.createScene("screenshot_test")
mcrfpy.setScene("screenshot_test")
ui = mcrfpy.sceneUI("screenshot_test")
screenshot_test = mcrfpy.Scene("screenshot_test")
screenshot_test.activate()
ui = screenshot_test.children
# Test 1: Basic screenshot works
print("Test 1: Basic screenshot functionality")

View file

@ -9,7 +9,7 @@ def run_tests():
# Test 1: Basic Grid Creation
print("Test 1: Grid Creation")
mcrfpy.createScene("tcod_test")
tcod_test = mcrfpy.Scene("tcod_test")
grid = mcrfpy.Grid(grid_x=10, grid_y=10, texture=None, pos=(10, 10), size=(160, 160))
print("✓ Grid created successfully\n")

View file

@ -6,7 +6,7 @@ import sys
try:
print("1. Creating scene and grid...")
mcrfpy.createScene("test")
test = mcrfpy.Scene("test")
grid = mcrfpy.Grid(grid_x=5, grid_y=5, texture=None, pos=(0, 0), size=(80, 80))
print(" Grid created")

View file

@ -8,7 +8,7 @@ try:
print("1. Module loaded")
print("2. Creating scene...")
mcrfpy.createScene("test")
test = mcrfpy.Scene("test")
print(" Scene created")
print("3. Creating grid with explicit parameters...")

View file

@ -6,7 +6,7 @@ import sys
try:
print("1. Creating scene and grid...")
mcrfpy.createScene("test")
test = mcrfpy.Scene("test")
grid = mcrfpy.Grid(grid_x=7, grid_y=7, texture=None, pos=(0, 0), size=(112, 112))
print(" Grid created")

View file

@ -14,8 +14,8 @@ from text_input_widget import FocusManager, TextInput
def create_demo():
"""Create demo scene with text inputs"""
# Create scene
mcrfpy.createScene("text_demo")
scene = mcrfpy.sceneUI("text_demo")
text_demo = mcrfpy.Scene("text_demo")
scene = text_demo.children
# Background
bg = mcrfpy.Frame(pos=(0, 0), size=(800, 600))
@ -86,8 +86,8 @@ def create_demo():
print(f" Field {i+1}: '{inp.get_text()}'")
sys.exit(0)
mcrfpy.keypressScene("text_demo", handle_keys)
mcrfpy.setScene("text_demo")
text_demo.on_key = "text_demo", handle_keys
text_demo.activate()
# Run demo test
def run_test(timer_name):

View file

@ -23,8 +23,8 @@ def new_style_callback(arg1, arg2=None):
sys.exit(0)
# Set up the scene
mcrfpy.createScene("test_scene")
mcrfpy.setScene("test_scene")
test_scene = mcrfpy.Scene("test_scene")
test_scene.activate()
print("Testing old style timer with setTimer...")
mcrfpy.setTimer("old_timer", old_style_callback, 100)

View file

@ -17,8 +17,8 @@ def timer_callback(runtime):
sys.exit(0)
# Set up the scene
mcrfpy.createScene("test_scene")
mcrfpy.setScene("test_scene")
test_scene = mcrfpy.Scene("test_scene")
test_scene.activate()
# Create a timer the old way
mcrfpy.setTimer("test_timer", timer_callback, 100)

View file

@ -132,8 +132,8 @@ def run_tests(runtime):
mcrfpy.setTimer("final_check", final_check, 2000)
# Create a minimal scene
mcrfpy.createScene("timer_test")
mcrfpy.setScene("timer_test")
timer_test = mcrfpy.Scene("timer_test")
timer_test.activate()
# Start tests after game loop begins
mcrfpy.setTimer("run_tests", run_tests, 100)

View file

@ -31,8 +31,8 @@ def check_results(runtime):
sys.exit(1)
# Set up the scene
mcrfpy.createScene("test_scene")
mcrfpy.setScene("test_scene")
test_scene = mcrfpy.Scene("test_scene")
test_scene.activate()
# Create timers
print("Creating once timer with once=True...")

View file

@ -18,7 +18,7 @@ def run_test(runtime):
mcrfpy.delTimer("test")
# Get the scene UI
ui = mcrfpy.sceneUI("test")
ui = test.children
# Test 1: Create arcs with different parameters
print("Test 1: Creating arcs...")
@ -130,8 +130,8 @@ def run_test(runtime):
mcrfpy.setTimer("screenshot", take_screenshot, 50)
# Create a test scene
mcrfpy.createScene("test")
mcrfpy.setScene("test")
test = mcrfpy.Scene("test")
test.activate()
# Schedule test to run after game loop starts
mcrfpy.setTimer("test", run_test, 50)

View file

@ -11,7 +11,7 @@ def run_visual_test(runtime):
print("\nRunning visual tests...")
# Get our captions
ui = mcrfpy.sceneUI("test")
ui = test.children
# Test 1: Make caption2 invisible
print("Test 1: Making caption2 invisible")
@ -65,8 +65,8 @@ def main():
print("=== UICaption Visual Test ===\n")
# Create test scene
mcrfpy.createScene("test")
mcrfpy.setScene("test")
test = mcrfpy.Scene("test")
test.activate()
# Create multiple captions for testing
caption1 = mcrfpy.Caption(pos=(50, 50), text="Caption 1: Normal", fill_color=mcrfpy.Color(255, 255, 255))
@ -76,7 +76,7 @@ def main():
caption5 = mcrfpy.Caption(pos=(50, 250), text="Caption 5: 0% opacity", fill_color=mcrfpy.Color(255, 255, 200))
# Add captions to scene
ui = mcrfpy.sceneUI("test")
ui = test.children
ui.append(caption1)
ui.append(caption2)
ui.append(caption3)

View file

@ -18,7 +18,7 @@ def run_test(runtime):
mcrfpy.delTimer("test")
# Get the scene UI
ui = mcrfpy.sceneUI("test")
ui = test.children
# Test 1: Create circles with different parameters
print("Test 1: Creating circles...")
@ -121,8 +121,8 @@ def run_test(runtime):
mcrfpy.setTimer("screenshot", take_screenshot, 50)
# Create a test scene
mcrfpy.createScene("test")
mcrfpy.setScene("test")
test = mcrfpy.Scene("test")
test.activate()
# Schedule test to run after game loop starts
mcrfpy.setTimer("test", run_test, 50)

View file

@ -31,5 +31,5 @@ def test_utf8(runtime):
sys.exit(0)
# Run test
mcrfpy.createScene("test")
test = mcrfpy.Scene("test")
mcrfpy.setTimer("test", test_utf8, 100)

View file

@ -243,5 +243,5 @@ def test_vector_arithmetic(runtime):
sys.exit(0 if all_pass else 1)
# Run test
mcrfpy.createScene("test")
test = mcrfpy.Scene("test")
mcrfpy.setTimer("test", test_vector_arithmetic, 100)

View file

@ -20,7 +20,7 @@ def test_viewport_modes(runtime):
print(f"Window resolution: {window.resolution}")
# Create test scene with visual elements
scene = mcrfpy.sceneUI("test")
scene = test.children
# Create a frame that fills the game resolution to show boundaries
game_res = window.game_resolution
@ -188,7 +188,7 @@ def handle_keypress(key, state):
return
window = Window.get()
scene = mcrfpy.sceneUI("test")
scene = test.children
mode_text = None
for elem in scene:
if hasattr(elem, 'name') and elem.name == "mode_text":
@ -235,9 +235,9 @@ def handle_keypress(key, state):
# Main execution
print("Creating viewport test scene...")
mcrfpy.createScene("test")
mcrfpy.setScene("test")
mcrfpy.keypressScene(handle_keypress)
test = mcrfpy.Scene("test")
test.activate()
test.on_key = handle_keypress
# Schedule the test
mcrfpy.setTimer("test_viewport", test_viewport_modes, 100)

View file

@ -14,7 +14,7 @@ print("Knowledge Stubs 1 - Visibility System Test")
print("==========================================")
# Create scene and grid
mcrfpy.createScene("visibility_test")
visibility_test = mcrfpy.Scene("visibility_test")
grid = mcrfpy.Grid(grid_x=20, grid_y=15)
grid.fill_color = mcrfpy.Color(20, 20, 30) # Dark background
@ -135,7 +135,7 @@ visible_count = sum(1 for state in entity.gridstate if state.visible)
print(f" Visible cells after move: {visible_count}")
# Set up UI
ui = mcrfpy.sceneUI("visibility_test")
ui = visibility_test.children
ui.append(grid)
grid.position = (50, 50)
grid.size = (600, 450) # 20*30, 15*30
@ -156,7 +156,7 @@ legend.fill_color = mcrfpy.Color(150, 150, 150)
ui.append(legend)
# Set scene
mcrfpy.setScene("visibility_test")
visibility_test.activate()
# Set timer to cycle perspectives
mcrfpy.setTimer("cycle", visual_test, 2000) # Every 2 seconds

View file

@ -10,7 +10,7 @@ FLOOR_COLOR = mcrfpy.Color(200, 200, 220)
PATH_COLOR = mcrfpy.Color(100, 255, 100)
# Create scene
mcrfpy.createScene("visual_test")
visual_test = mcrfpy.Scene("visual_test")
# Create grid
grid = mcrfpy.Grid(grid_x=5, grid_y=5)
@ -64,7 +64,7 @@ if path:
print(f" Set ({x},{y}) to green")
# Set up UI
ui = mcrfpy.sceneUI("visual_test")
ui = visual_test.children
ui.append(grid)
grid.position = (50, 50)
grid.size = (250, 250)
@ -75,7 +75,7 @@ title.fill_color = mcrfpy.Color(255, 255, 255)
ui.append(title)
# Set scene
mcrfpy.setScene("visual_test")
visual_test.activate()
# Set timer to check rendering
mcrfpy.setTimer("check", check_render, 500)

View file

@ -8,9 +8,9 @@ print("Test script starting...")
def test_Entity():
"""Test Entity class and index() method for collection removal"""
# Create test scene with grid
mcrfpy.createScene("entity_test")
mcrfpy.setScene("entity_test")
ui = mcrfpy.sceneUI("entity_test")
entity_test = mcrfpy.Scene("entity_test")
entity_test.activate()
ui = entity_test.children
# Create a grid
grid = mcrfpy.Grid(10, 10,

View file

@ -8,9 +8,9 @@ def test_issue_38_children():
print("\n=== Testing Issue #38: children argument in Frame constructor ===")
# Create test scene
mcrfpy.createScene("issue38_test")
mcrfpy.setScene("issue38_test")
ui = mcrfpy.sceneUI("issue38_test")
issue38_test = mcrfpy.Scene("issue38_test")
issue38_test.activate()
ui = issue38_test.children
# Test 1: Try to pass children in constructor
print("\nTest 1: Passing children argument to Frame constructor")
@ -54,9 +54,9 @@ def test_issue_42_click_callback():
print("\n\n=== Testing Issue #42: click callback arguments ===")
# Create test scene
mcrfpy.createScene("issue42_test")
mcrfpy.setScene("issue42_test")
ui = mcrfpy.sceneUI("issue42_test")
issue42_test = mcrfpy.Scene("issue42_test")
issue42_test.activate()
ui = issue42_test.children
# Test 1: Callback with correct signature
print("\nTest 1: Click callback with correct signature (x, y, button)")

View file

@ -17,7 +17,7 @@ def test_grid_none_texture(runtime):
sys.exit(1)
# Add to UI
ui = mcrfpy.sceneUI("grid_none_test")
ui = grid_none_test.children
ui.append(grid)
# Test 2: Verify grid properties
@ -83,11 +83,11 @@ def test_grid_none_texture(runtime):
# Set up test scene
print("Creating test scene...")
mcrfpy.createScene("grid_none_test")
mcrfpy.setScene("grid_none_test")
grid_none_test = mcrfpy.Scene("grid_none_test")
grid_none_test.activate()
# Add a background frame so we can see the grid
ui = mcrfpy.sceneUI("grid_none_test")
ui = grid_none_test.children
background = mcrfpy.Frame(pos=(0, 0), size=(800, 600),
fill_color=mcrfpy.Color(200, 200, 200),
outline_color=mcrfpy.Color(0, 0, 0),

View file

@ -8,9 +8,9 @@ def test_grid_null_texture():
print("=== Testing Grid with null texture ===")
# Create test scene
mcrfpy.createScene("grid_null_test")
mcrfpy.setScene("grid_null_test")
ui = mcrfpy.sceneUI("grid_null_test")
grid_null_test = mcrfpy.Scene("grid_null_test")
grid_null_test.activate()
ui = grid_null_test.children
# Test 1: Try with None
try:

View file

@ -6,11 +6,11 @@ print("Starting test...")
# Create test scene
print("[DEBUG] Creating scene...")
mcrfpy.createScene("grid_test")
grid_test = mcrfpy.Scene("grid_test")
print("[DEBUG] Setting scene...")
mcrfpy.setScene("grid_test")
grid_test.activate()
print("[DEBUG] Getting UI...")
ui = mcrfpy.sceneUI("grid_test")
ui = grid_test.children
print("[DEBUG] UI retrieved")
# Test texture creation

View file

@ -5,9 +5,9 @@ import mcrfpy
print("Testing Sprite texture methods (Issue #19)...")
# Create test scene
mcrfpy.createScene("sprite_texture_test")
mcrfpy.setScene("sprite_texture_test")
ui = mcrfpy.sceneUI("sprite_texture_test")
sprite_texture_test = mcrfpy.Scene("sprite_texture_test")
sprite_texture_test.activate()
ui = sprite_texture_test.children
# Create sprites
# Based on sprite2 syntax: Sprite(x, y, texture, sprite_index, scale)

View file

@ -6,9 +6,9 @@ from datetime import datetime
def test_UICollection():
"""Test UICollection sequence protocol compliance"""
# Create test scene
mcrfpy.createScene("collection_test")
mcrfpy.setScene("collection_test")
ui = mcrfpy.sceneUI("collection_test")
collection_test = mcrfpy.Scene("collection_test")
collection_test.activate()
ui = collection_test.children
# Add various UI elements
frame = mcrfpy.Frame(pos=(10, 10), size=(100, 100))

View file

@ -10,9 +10,9 @@ def test_screenshot_validation():
print("=== Screenshot Validation Test ===\n")
# Create a scene with bright, visible content
mcrfpy.createScene("screenshot_validation")
mcrfpy.setScene("screenshot_validation")
ui = mcrfpy.sceneUI("screenshot_validation")
screenshot_validation = mcrfpy.Scene("screenshot_validation")
screenshot_validation.activate()
ui = screenshot_validation.children
# Create multiple colorful elements to ensure visibility
print("Creating UI elements...")

View file

@ -6,9 +6,9 @@ from mcrfpy import automation
print("Setting up timer test...")
# Create a scene
mcrfpy.createScene("timer_works")
mcrfpy.setScene("timer_works")
ui = mcrfpy.sceneUI("timer_works")
timer_works = mcrfpy.Scene("timer_works")
timer_works.activate()
ui = timer_works.children
# Add visible content
frame = mcrfpy.Frame(pos=(100, 100), size=(300, 200),