class_name MainMenu extends Panel var has_stage: bool = false: set(value): has_stage = value if is_node_ready(): if save_game_handle.get_most_recent_save().current_room == 0: continue_button.visible = false continue_button.disabled = true new_game_button.theme_type_variation = "H1Button" else: continue_button.visible = true continue_button.disabled = not has_stage new_game_button.theme_type_variation = "" load_game_button.disabled = not save_game_handle.has_existing_saves() for child: Control in $PanelContainer.get_children(): child.focus_mode = FOCUS_ALL if has_stage else FOCUS_NONE child.modulate = Color.WHITE if has_stage else Color.WEB_GRAY child.mouse_filter = Control.MOUSE_FILTER_STOP if has_stage else Control.MOUSE_FILTER_IGNORE if has_stage: if continue_button.visible: continue_button.grab_focus() else: new_game_button.grab_focus() signal start_game(savegame: SaveGame) signal open_settings(new_game: bool) signal roll_credits @onready var new_game_button: Button = $PanelContainer/NewGameButton @onready var continue_button: Button = $PanelContainer/ContinueGameButton @onready var load_game_button: Button = $PanelContainer/LoadGameButton @onready var settings_button: Button = $PanelContainer/SettingsButton @onready var settings_popup: SettingsPopup = %SettingsPopup @onready var credits_button: Button = $PanelContainer/CreditsButton @onready var quit_button: Button = $PanelContainer/QuitButton @onready var save_game_handle: SaveGameHandle = %SaveGameHandle @export var save_game_exists: bool = false: set(value): save_game_exists = value var await_new_game: bool = false # Called when the node enters the scene tree for the first time. func _ready() -> void: save_game_handle.picked.connect(_on_save_picked) if save_game_handle.get_most_recent_save().current_room == 0: continue_button.disabled = true continue_button.visible = false new_game_button.theme_type_variation = "H1Button" continue_button.pressed.connect(func(): start_game.emit(save_game_handle.get_most_recent_save())) new_game_button.pressed.connect(func(): save_game_handle.pick_save_slot(true)) load_game_button.pressed.connect(func(): save_game_handle.pick_save_slot(false)) load_game_button.disabled = not save_game_handle.has_existing_saves() settings_button.pressed.connect(settings_popup.show_settings) quit_button.pressed.connect(get_tree().quit) credits_button.pressed.connect(roll_credits.emit) State.take_stage(self) func _on_save_picked(save: SaveGame): start_game.emit(save)