94 lines
2.6 KiB
GDScript
94 lines
2.6 KiB
GDScript
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()
|