massive work towards godot 4
This commit is contained in:
65
scripts/title_screen.gd
Normal file
65
scripts/title_screen.gd
Normal file
@@ -0,0 +1,65 @@
|
||||
extends Control
|
||||
|
||||
@export
|
||||
var music: AudioStream
|
||||
|
||||
@export
|
||||
var new_game_scene: PackedScene
|
||||
|
||||
var fade_to: PackedScene
|
||||
|
||||
func _ready():
|
||||
MusicPlayer.stop()
|
||||
MusicPlayer.stream = music
|
||||
MusicPlayer.volume_db = 0
|
||||
MusicPlayer.play()
|
||||
$Fader.modulate.a = 1
|
||||
$CreditsMenu.hide()
|
||||
|
||||
$"New Game".connect("button_down",Callable(self,"new_game"))
|
||||
$Credits.connect("button_down",Callable(self,"show_credits"))
|
||||
$Quit.connect("button_down",Callable(self,"on_quit_down"))
|
||||
|
||||
fade_out(3, 1, -1)
|
||||
|
||||
func new_game():
|
||||
SaveManager.add_run()
|
||||
fade_to = new_game_scene
|
||||
fade_out(3, -80)
|
||||
|
||||
func show_credits():
|
||||
$CreditsMenu.show()
|
||||
|
||||
func on_quit_down():
|
||||
get_tree().quit()
|
||||
|
||||
|
||||
var timePassed = 0 #Current amount of time spend displaying te
|
||||
const CHECK_LENGTH = 0.05 #Interval to check for updates
|
||||
var timeNeeded = 0 #Time that it takes to display the text
|
||||
var fadeTimer #Timer object
|
||||
|
||||
var multiplier = 1
|
||||
var adder = 0
|
||||
func fade_out(seconds, multi = 1, add = 0):
|
||||
multiplier = multi
|
||||
adder = add
|
||||
timeNeeded = seconds
|
||||
timePassed = 0
|
||||
if(!fadeTimer):
|
||||
fadeTimer = Timer.new()
|
||||
add_child(fadeTimer)
|
||||
fadeTimer.connect("timeout",Callable(self,"on_fade_timeout"))
|
||||
fadeTimer.start(CHECK_LENGTH)
|
||||
|
||||
func on_fade_timeout():
|
||||
timePassed += CHECK_LENGTH
|
||||
MusicPlayer.volume_db = multiplier * (timePassed/timeNeeded)
|
||||
$Fader.modulate.a = abs(timePassed/timeNeeded + adder)
|
||||
if(timePassed >= timeNeeded):
|
||||
fadeTimer.stop()
|
||||
if($Fader.modulate.a > 0.5):
|
||||
get_tree().change_scene_to_packed(fade_to)
|
||||
else:
|
||||
fadeTimer.start(CHECK_LENGTH)
|
||||
pass
|
||||
Reference in New Issue
Block a user