extends Control 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()) 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()