Files
Omens-Ascent/scenes/components/title_screen.gd

57 lines
1.9 KiB
GDScript

class_name TitleScreen
extends Control
@onready var _start_game_button: Button = $Options/StartGameButton
@onready var _options_button: Button = $Options/OptionsButton
@onready var _credits_button: Button = $Options/CreditsButton
@onready var _exit_button: Button = $Options/ExitButton
@onready var _background: ColorRect = $FadeOut
func _ready() -> void:
AudioManager.stop_ambiance()
_start_game_button.pressed.connect(_on_start_game_pressed)
_options_button.pressed.connect(_on_options_pressed)
_credits_button.pressed.connect(_on_credit_pressed)
_exit_button.pressed.connect(_on_exit_pressed)
for button: Button in [_start_game_button, _options_button, _credits_button, _exit_button]:
button.focus_entered.connect(_on_button_focus_entered)
_start_game_button.grab_focus()
func _on_button_focus_entered() -> void:
AudioManager.play_sfx("options_move")
func _unhandled_input(event: InputEvent) -> void:
if not event.is_action_pressed("interact"):
return
var viewport: Viewport = get_viewport()
if viewport == null:
return
var focused: Control = viewport.gui_get_focus_owner()
if focused is Button:
(focused as Button).pressed.emit()
viewport.set_input_as_handled()
func _on_start_game_pressed() -> void:
# Fade out
var tween: Tween = create_tween()
tween.tween_property(_background, "color:a", 1.0, 1.2)
await tween.finished
if OS.get_name() == "Web":
JavaScriptBridge.eval("document.querySelector('canvas').focus()")
SceneManager.change_scene("res://scenes/components/intro.tscn")
func _on_options_pressed() -> void:
print('Options Pressed')
func _on_credit_pressed() -> void:
# Fade out
var tween: Tween = create_tween()
tween.tween_property(_background, "color:a", 1.0, 1.2)
await tween.finished
if OS.get_name() == "Web":
JavaScriptBridge.eval("document.querySelector('canvas').focus()")
SceneManager.change_scene("res://scenes/components/credits.tscn")
func _on_exit_pressed() -> void:
SceneManager.quit_game()