72 lines
2.1 KiB
GDScript
72 lines
2.1 KiB
GDScript
extends Node
|
|
|
|
@onready var Start: Button = %Start
|
|
@onready var Quit: Button = %Quit
|
|
@onready var background: TextureRect = %Background
|
|
@onready var music_player: AudioStreamPlayer = %MusicPlayer
|
|
@onready var version_label: Label = %VersionLabel
|
|
@onready var game_infos: Control = %GameInfos
|
|
@onready var options_menu : OptionsMenu = %OptionsMenu
|
|
|
|
@export var progression_backgrounds: Array[Texture2D] = []
|
|
@export var menu_music: AudioStream
|
|
@export var start_click_sound: AudioStream
|
|
|
|
const GAME_SCENE_PATH := "res://game/world/main.tscn"
|
|
const MUSIC_FADE_DURATION := 0.8
|
|
|
|
var is_transitioning : bool = false
|
|
|
|
func _ready() -> void:
|
|
GameData.load_data()
|
|
|
|
update_background()
|
|
setup_version_label()
|
|
play_menu_music()
|
|
fade_in_game_infos()
|
|
|
|
Start.grab_focus()
|
|
|
|
func update_background() -> void:
|
|
if progression_backgrounds.is_empty():
|
|
return
|
|
var stage : int = clampi(GameData.story_progress, 0, progression_backgrounds.size() - 1)
|
|
background.texture = progression_backgrounds[stage]
|
|
|
|
func setup_version_label() -> void:
|
|
var version : String = ProjectSettings.get_setting("application/config/version", "")
|
|
version_label.text = "v%s" % version if version != "" else ""
|
|
|
|
func play_menu_music() -> void:
|
|
if !menu_music: return
|
|
music_player.stream = menu_music
|
|
music_player.volume_db = -80.0
|
|
music_player.play()
|
|
var tween := create_tween()
|
|
tween.tween_property(music_player, "volume_db", 0.0, MUSIC_FADE_DURATION)
|
|
|
|
func fade_in_game_infos() -> void:
|
|
game_infos.modulate.a = 0.0
|
|
var tween := create_tween()
|
|
tween.tween_property(game_infos, "modulate:a", 1.0, 1.0)
|
|
|
|
func _on_start_pressed() -> void:
|
|
if is_transitioning: return
|
|
is_transitioning = true
|
|
play_click_sound()
|
|
LoadingScreen.change_scene(GAME_SCENE_PATH, "Préparation de l'aventure...")
|
|
|
|
func play_click_sound() -> void:
|
|
UiAudio.play(start_click_sound)
|
|
|
|
func fade_out_music() -> void:
|
|
if !music_player.playing: return
|
|
var tween := create_tween()
|
|
tween.tween_property(music_player, "volume_db", -80.0, MUSIC_FADE_DURATION)
|
|
|
|
func _on_quit_pressed() -> void:
|
|
get_tree().quit()
|
|
|
|
func _on_options_pressed() -> void:
|
|
options_menu.open()
|