massive work towards godot 4
This commit is contained in:
53
scripts/TypeLabel.gd
Normal file
53
scripts/TypeLabel.gd
Normal file
@@ -0,0 +1,53 @@
|
||||
extends Label
|
||||
|
||||
@export var time_to_show = 4.0
|
||||
@export var fade_after_show = true
|
||||
#Hide all charafcters checked start
|
||||
func _ready():
|
||||
show_text(time_to_show)
|
||||
visible_characters = 0
|
||||
|
||||
|
||||
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 timer #Timer object
|
||||
var fadeTimer #Timer object
|
||||
|
||||
func show_text(seconds):
|
||||
timeNeeded = seconds
|
||||
timePassed = 0
|
||||
if(!timer):
|
||||
timer = Timer.new()
|
||||
add_child(timer)
|
||||
timer.connect("timeout",Callable(self,"on_timeout"))
|
||||
timer.start(CHECK_LENGTH)
|
||||
|
||||
func fade_text(seconds):
|
||||
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
|
||||
modulate.a = 1 - (timePassed/timeNeeded)
|
||||
if(timePassed >= timeNeeded):
|
||||
fadeTimer.queue_free()
|
||||
else:
|
||||
fadeTimer.start(CHECK_LENGTH)
|
||||
pass
|
||||
|
||||
func on_timeout():
|
||||
timePassed += CHECK_LENGTH
|
||||
visible_characters = (timePassed/timeNeeded) * get_total_character_count()
|
||||
if(timePassed >= timeNeeded):
|
||||
timer.queue_free()
|
||||
if(fade_after_show):
|
||||
fade_text(2)
|
||||
else:
|
||||
timer.start(CHECK_LENGTH)
|
||||
pass
|
||||
Reference in New Issue
Block a user