Add another gym about scene switching
This commit is contained in:
37
docs/gyms/gym09_scene_switching/gym09_controller.gd
Normal file
37
docs/gyms/gym09_scene_switching/gym09_controller.gd
Normal file
@@ -0,0 +1,37 @@
|
||||
# ============================================================
|
||||
# Gym 09 — Scene Switching Controller
|
||||
# ============================================================
|
||||
# This root node handles:
|
||||
# 1. Starting the right timeline on scene load
|
||||
# (intro on first visit, congrats after minigame)
|
||||
# 2. Catching the [signal arg=start_minigame] to change scenes
|
||||
# ============================================================
|
||||
extends Node2D
|
||||
|
||||
const MINIGAME_SCENE_PATH := "res://docs/gyms/gym09_scene_switching/gym09_minigame.tscn"
|
||||
|
||||
@export var intro_timeline: DialogicTimeline
|
||||
@export var congrats_timeline: DialogicTimeline
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
# Connect to signal events from timelines
|
||||
Dialogic.signal_event.connect(_on_dialogic_signal)
|
||||
|
||||
# Check if we're returning from the minigame
|
||||
if Dialogic.VAR.Gym.minigame_done:
|
||||
print("[Gym09 Controller] Returning from minigame — starting congrats timeline.")
|
||||
Dialogic.VAR.Gym.minigame_done = false
|
||||
Dialogic.start(congrats_timeline)
|
||||
else:
|
||||
print("[Gym09 Controller] First visit — starting intro timeline.")
|
||||
Dialogic.start(intro_timeline)
|
||||
|
||||
|
||||
func _on_dialogic_signal(argument: Variant) -> void:
|
||||
if argument is String and argument == "start_minigame":
|
||||
print("[Gym09 Controller] Signal 'start_minigame' received — switching to minigame scene.")
|
||||
# Tell the minigame where to return
|
||||
Dialogic.VAR.Gym.minigame_return = "standalone"
|
||||
await get_tree().create_timer(0.3).timeout
|
||||
get_tree().change_scene_to_file(MINIGAME_SCENE_PATH)
|
||||
Reference in New Issue
Block a user