class_name AppShell extends Node ## Entry point dell'app: coordina menu e caricamento dei giochi. const MAIN_MENU_SCENE := preload("res://menus/scenes/main_menu.tscn") const JUGGLEBOARD_SCENE := preload("res://games/juggleboard/scenes/juggleboard.tscn") const JUGGLING_GYM_SCENE := preload("res://games/juggling_gym/scenes/juggling_gym.tscn") var main_menu: MainMenuController var active_game: Node func _ready() -> void: _create_menus() _show_debug_target_or_home() func _create_menus() -> void: main_menu = MAIN_MENU_SCENE.instantiate() # P2A avvia direttamente Target: il vecchio dialog Target/Infinita non viene # più creato né mostrato. main_menu.mode_requested.connect(_start_juggleboard) main_menu.gym_requested.connect(_start_juggling_gym) main_menu.exit_requested.connect(_exit_app) add_child(main_menu) func _show_debug_target_or_home() -> void: var args := OS.get_cmdline_user_args() if args.has("--start-juggleboard"): _start_juggleboard() if args.has("--capture-menus"): _capture_game_after_frame() elif args.has("--start-gym"): _start_juggling_gym() if args.has("--capture-menus"): _capture_gym_after_frame() elif args.has("--capture-mode-dialog"): # Compatibilità del flag di debug: il dialog non fa più parte del flusso. main_menu.show_juggle() elif args.has("--capture-p2a"): main_menu.show_juggle() elif args.has("--capture-p3a"): main_menu.show_gym() else: main_menu.show_home() func _return_to_juggle_menu() -> void: if is_instance_valid(active_game): active_game.queue_free() active_game = null main_menu.show_juggle() func _return_to_gym_menu() -> void: if is_instance_valid(active_game): active_game.queue_free() active_game = null main_menu.show_gym() func _start_juggleboard() -> void: main_menu.hide_menu() if is_instance_valid(active_game): active_game.queue_free() active_game = JUGGLEBOARD_SCENE.instantiate() active_game.return_requested.connect(_return_to_juggle_menu) add_child(active_game) func _start_juggling_gym() -> void: main_menu.hide_menu() if is_instance_valid(active_game): active_game.queue_free() active_game = JUGGLING_GYM_SCENE.instantiate() active_game.return_requested.connect(_return_to_gym_menu) add_child(active_game) func _capture_game_after_frame() -> void: await RenderingServer.frame_post_draw get_viewport().get_texture().get_image().save_png("/tmp/autgame_juggleboard.png") func _capture_gym_after_frame() -> void: await RenderingServer.frame_post_draw get_viewport().get_texture().get_image().save_png("/tmp/autgame_juggling_gym.png") func _exit_app() -> void: if not OS.has_feature("web"): get_tree().quit()