66 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			GDScript
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			GDScript
		
	
	
	
	
	
| 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
 |