168 lines
6.1 KiB
Python
168 lines
6.1 KiB
Python
#!/usr/bin/env python3
|
|
"""Test scene transitions to verify implementation and demonstrate usage."""
|
|
|
|
import mcrfpy
|
|
import sys
|
|
import time
|
|
|
|
def create_test_scenes():
|
|
"""Create several test scenes with different colored backgrounds."""
|
|
|
|
# Scene 1: Red background
|
|
mcrfpy.createScene("red_scene")
|
|
ui1 = mcrfpy.sceneUI("red_scene")
|
|
bg1 = mcrfpy.Frame(0, 0, 1024, 768, fill_color=mcrfpy.Color(255, 0, 0, 255))
|
|
label1 = mcrfpy.Caption(512, 384, "RED SCENE", font=mcrfpy.Font.font_ui)
|
|
label1.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")
|
|
bg2 = mcrfpy.Frame(0, 0, 1024, 768, fill_color=mcrfpy.Color(0, 0, 255, 255))
|
|
label2 = mcrfpy.Caption(512, 384, "BLUE SCENE", font=mcrfpy.Font.font_ui)
|
|
label2.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")
|
|
bg3 = mcrfpy.Frame(0, 0, 1024, 768, fill_color=mcrfpy.Color(0, 255, 0, 255))
|
|
label3 = mcrfpy.Caption(512, 384, "GREEN SCENE", font=mcrfpy.Font.font_ui)
|
|
label3.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")
|
|
bg4 = mcrfpy.Frame(0, 0, 1024, 768, fill_color=mcrfpy.Color(50, 50, 50, 255))
|
|
|
|
title = mcrfpy.Caption(512, 100, "SCENE TRANSITION DEMO", font=mcrfpy.Font.font_ui)
|
|
title.color = mcrfpy.Color(255, 255, 255, 255)
|
|
ui4.append(bg4)
|
|
ui4.append(title)
|
|
|
|
# Add instruction text
|
|
instructions = mcrfpy.Caption(512, 200, "Press keys 1-6 for different transitions", font=mcrfpy.Font.font_ui)
|
|
instructions.color = mcrfpy.Color(200, 200, 200, 255)
|
|
ui4.append(instructions)
|
|
|
|
controls = mcrfpy.Caption(512, 250, "1: Fade | 2: Slide Left | 3: Slide Right | 4: Slide Up | 5: Slide Down | 6: Instant", font=mcrfpy.Font.font_ui)
|
|
controls.color = mcrfpy.Color(150, 150, 150, 255)
|
|
ui4.append(controls)
|
|
|
|
scene_info = mcrfpy.Caption(512, 300, "R: Red Scene | B: Blue Scene | G: Green Scene | M: Menu", font=mcrfpy.Font.font_ui)
|
|
scene_info.color = mcrfpy.Color(150, 150, 150, 255)
|
|
ui4.append(scene_info)
|
|
|
|
print("Created test scenes: red_scene, blue_scene, green_scene, menu_scene")
|
|
|
|
# Track current transition type
|
|
current_transition = "fade"
|
|
transition_duration = 1.0
|
|
|
|
def handle_key(key, action):
|
|
"""Handle keyboard input for scene transitions."""
|
|
global current_transition, transition_duration
|
|
|
|
if action != "start":
|
|
return
|
|
|
|
current_scene = mcrfpy.currentScene()
|
|
|
|
# Number keys set transition type
|
|
if key == "Num1":
|
|
current_transition = "fade"
|
|
print("Transition set to: fade")
|
|
elif key == "Num2":
|
|
current_transition = "slide_left"
|
|
print("Transition set to: slide_left")
|
|
elif key == "Num3":
|
|
current_transition = "slide_right"
|
|
print("Transition set to: slide_right")
|
|
elif key == "Num4":
|
|
current_transition = "slide_up"
|
|
print("Transition set to: slide_up")
|
|
elif key == "Num5":
|
|
current_transition = "slide_down"
|
|
print("Transition set to: slide_down")
|
|
elif key == "Num6":
|
|
current_transition = None # Instant
|
|
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")
|
|
elif key == "Escape":
|
|
print("Exiting...")
|
|
sys.exit(0)
|
|
|
|
def test_automatic_transitions(delay):
|
|
"""Run through all transitions automatically after a delay."""
|
|
transitions = [
|
|
("fade", "red_scene"),
|
|
("slide_left", "blue_scene"),
|
|
("slide_right", "green_scene"),
|
|
("slide_up", "red_scene"),
|
|
("slide_down", "menu_scene"),
|
|
(None, "blue_scene"), # Instant
|
|
]
|
|
|
|
print("\nRunning automatic transition test...")
|
|
for i, (trans_type, scene) in enumerate(transitions):
|
|
if trans_type:
|
|
print(f"Transition {i+1}: {trans_type} to {scene}")
|
|
mcrfpy.setScene(scene, trans_type, 1.0)
|
|
else:
|
|
print(f"Transition {i+1}: instant to {scene}")
|
|
mcrfpy.setScene(scene)
|
|
time.sleep(2) # Wait for transition to complete plus viewing time
|
|
|
|
print("Automatic test complete!")
|
|
sys.exit(0)
|
|
|
|
# Main test setup
|
|
print("=== Scene Transition Test ===")
|
|
create_test_scenes()
|
|
|
|
# Start with menu scene
|
|
mcrfpy.setScene("menu_scene")
|
|
|
|
# Set up keyboard handler
|
|
mcrfpy.keypressScene(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.") |