src / beginning / menu / menu.gd

Code

extends Control

enum Plate { OPENING, ROOT, ACCOUNTS, CHAPTERS }
@export var current_plate : Plate = Plate.OPENING : set = change_plate
@export var grab_focus_root : bool = false : set = set_grab_focus_root


func _ready() -> void:
	%ClimbButton.grab_focus()
	FocusHelper.set_neighbors_v([
		%ClimbButton, %OptionsButton, %CreditsButton, %QuitButton])


func set_grab_focus_root(val: bool) -> void:
	if val: %ClimbButton.grab_focus()


func change_plate(val: Plate) -> void:
	current_plate = val


func _on_climb_button_focus_entered() -> void:
	if current_plate == Plate.ROOT:
		%AnimationPlayer.play('climb_focused')


func _on_climb_button_focus_exited() -> void:
	if current_plate == Plate.ROOT:
		%AnimationPlayer.play('climb_unfocused')


func _on_climb_button_pressed() -> void:
	if current_plate == Plate.ROOT:
		Input.start_joy_vibration(0, 0.4, 0.6, 0.2)
		%AnimationPlayer.play('climb_selected')


func _on_quit_button_pressed() -> void:
	get_tree().quit()


func _on_accounts_ui_backed() -> void:
	if current_plate == Plate.ACCOUNTS:
		%AnimationPlayer.play('climb_unselected')


func _on_accounts_get_started(account: Account) -> void:
	%Chapters.setup_from_account_resource()
	%AnimationPlayer.play("chapters_show")


func _on_chapters_ui_backed() -> void:
	if current_plate == Plate.CHAPTERS || current_plate == Plate.ACCOUNTS:
		%AnimationPlayer.play('chapters_hide')
		%World.back_to_circular_move()


func _on_chapters_focused(idx: int) -> void:
	if current_plate == Plate.CHAPTERS:
		%World.focus_chapter(idx)


func _on_chapters_selected(idx: int) -> void:
	if current_plate == Plate.CHAPTERS:
		%World.zoom_chapter(idx)