This repository has been archived on 2025-09-12. You can view files and clone it, but cannot push or open issues or pull requests.
ld48/game/loading/TransitionScreen.gd
2021-04-17 22:36:22 +02:00

48 lines
1.3 KiB
GDScript

class_name TransitionScreen
extends Control
signal animation_finished()
enum AnimationState {
IDLE,
FADING_IN,
FADING_OUT,
}
export var fade_in_duration: float = 0.5
export var fade_in_node: NodePath = @"."
export var fade_out_duration: float = 0.5
export var fade_out_node: NodePath = @"."
onready var fade_in_control: Control = get_node(fade_in_node)
onready var fade_out_control: Control = get_node(fade_out_node)
var anim_state = AnimationState.IDLE
var anim_time: float = 0.0
func _process(delta: float) -> void:
anim_time += delta
match anim_state:
AnimationState.IDLE:
pass
AnimationState.FADING_IN:
fade_in_control.modulate.a = clamp(inverse_lerp(0.0, fade_in_duration, anim_time), 0.0, 1.0)
if anim_time >= fade_in_duration:
anim_state = AnimationState.IDLE
emit_signal("animation_finished")
AnimationState.FADING_OUT:
fade_out_control.modulate.a = clamp(inverse_lerp(fade_out_duration, 0.0, anim_time), 0.0, 1.0)
if anim_time >= fade_out_duration:
hide()
anim_state = AnimationState.IDLE
emit_signal("animation_finished")
func fade_in() -> void:
fade_in_control.modulate.a = 0.0
show()
anim_time = 0.0
anim_state = AnimationState.FADING_IN
func fade_out() -> void:
anim_time = 0.0
anim_state = AnimationState.FADING_OUT