55 lines
1.8 KiB
GDScript
55 lines
1.8 KiB
GDScript
extends Control
|
|
|
|
signal settings_requested
|
|
|
|
const TRAIN_WHISTLE_STREAM: AudioStream = preload("res://tgcc/train/sounds/train_whistle2.mp3")
|
|
|
|
@onready var play_button: Button = $%PlayButton
|
|
@onready var resume_button: Button = $%ResumeButton
|
|
@onready var settings_button: Button = $%SettingsButton
|
|
@onready var save_button: Button = $%SaveButton
|
|
@onready var quit_button: Button = $%QuitButton
|
|
@export var fade_time: float = 0.5
|
|
@export var menu_whistle_volume_db: float = -12.0
|
|
|
|
var _fallback_whistle_player: AudioStreamPlayer
|
|
|
|
func _ready() -> void:
|
|
_create_fallback_whistle_player()
|
|
play_button.pressed.connect(_on_play_button_pressed)
|
|
save_button.pressed.connect(_on_save_button_pressed)
|
|
quit_button.pressed.connect(_on_quit_button_pressed)
|
|
resume_button.pressed.connect(func(): UIEvents.resume_game_requested.emit())
|
|
settings_button.pressed.connect(func(): settings_requested.emit())
|
|
|
|
func _on_play_button_pressed() -> void:
|
|
_play_train_horn()
|
|
await get_tree().create_timer(fade_time).timeout
|
|
SceneManager.change_scene(SceneConfig.SceneName.GAME)
|
|
|
|
func _create_fallback_whistle_player() -> void:
|
|
_fallback_whistle_player = AudioStreamPlayer.new()
|
|
_fallback_whistle_player.name = "FallbackTrainWhistlePlayer"
|
|
_fallback_whistle_player.bus = &"SFX"
|
|
_fallback_whistle_player.volume_db = menu_whistle_volume_db
|
|
_fallback_whistle_player.stream = TRAIN_WHISTLE_STREAM
|
|
add_child(_fallback_whistle_player)
|
|
|
|
func _play_train_horn() -> void:
|
|
if not UIEvents.toot_toot.get_connections().is_empty():
|
|
UIEvents.toot_toot.emit(false)
|
|
return
|
|
|
|
if _fallback_whistle_player == null:
|
|
return
|
|
|
|
_fallback_whistle_player.stop()
|
|
_fallback_whistle_player.play()
|
|
|
|
func _on_save_button_pressed() -> void:
|
|
GameState.save_game()
|
|
|
|
|
|
func _on_quit_button_pressed() -> void:
|
|
GameState.quit_game()
|