MagicNStuff/source/src/ui/menus/main_menu/main_menu.gd

66 lines
1.6 KiB
GDScript

class_name MainMenu
extends Node
const AMBIENCE_STREAM: AudioStream = preload("uid://cyxvsy5wjxhl7")
@onready var continue_button: Button = %ContinueButton
@onready var new_game_button: Button = %NewGameButton
@onready var quit_button: Button = %QuitButton
@onready var options_menu: Control = $OptionsMenu
@onready var main_menu_ui: Control = $MainMenuUI
func _ready() -> void:
continue_button.disabled = not SaveManager.save_exists()
(continue_button if not continue_button.disabled else new_game_button).grab_focus()
AudioManager.play_audio(AMBIENCE_STREAM, AudioManager.AMBIENCE)
func _unhandled_input(event: InputEvent) -> void:
if options_menu.is_visible_in_tree() and event.is_action_pressed(&"pause"):
main_menu_ui.show()
options_menu.hide()
func load_game() -> void:
AudioManager.fade_audio(AMBIENCE_STREAM, -80.0, SceneFader.fade_in_duration, AudioManager.AMBIENCE, true)
SceneFader.load_to_path(GameGlobals.GAME_PATH, GameGlobals.LEVELS.get(GameGlobals.level, &""))
func _on_new_game_button_pressed() -> void:
if SceneFader.is_fading:
return
GameGlobals.reset_game()
SaveManager.delete_save()
SaveManager.save_game()
load_game()
func _on_continue_button_pressed() -> void:
if SceneFader.is_fading:
return
GameGlobals.reset_game()
GameGlobals.load_from_save()
load_game()
func _on_quit_button_pressed() -> void:
if SceneFader.is_fading:
return
AudioManager.fade_audio(AMBIENCE_STREAM, -80.0, SceneFader.fade_out_duration, AudioManager.AMBIENCE)
await SceneFader.fade_in()
get_tree().quit()
func _on_settings_button_pressed() -> void:
if SceneFader.is_fading:
return
main_menu_ui.hide()
options_menu.show()