Files
tgcc/core/game_menu/option_menu.gd
2026-07-01 22:29:55 +02:00

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