* modification de certains assets * optimisation de chunks * ajout d'un SceneManager * ajout d'un premier dialogue avec Demeter * changement des jour en charge * mise en place d'un système de run * etc...
213 lines
5.0 KiB
GDScript
213 lines
5.0 KiB
GDScript
@tool
|
|
extends Node
|
|
class_name ControlAnimationPlayer
|
|
|
|
signal animation_ended
|
|
|
|
var on_animation = false
|
|
|
|
@onready var target : Control = get_parent()
|
|
|
|
var target_default_pos : Vector2
|
|
var target_default_modulate = Color.WHITE
|
|
|
|
@export_tool_button("Test Shake", "Callable") var shake_action = shake
|
|
@export_tool_button("Test Bounce", "Callable") var bounce_action = bounce
|
|
@export_tool_button("Test Appear", "Callable") var appear_action = appear
|
|
@export_tool_button("Test Disappear", "Callable") var disappear_action = disappear
|
|
@export_tool_button("Test Slide In", "Callable") var slide_in_action = slide_in
|
|
@export_tool_button("Test Slide Off", "Callable") var slide_off_action = slide_off
|
|
@export_tool_button("Test Fade In", "Callable") var fade_in_action = fade_in
|
|
@export_tool_button("Test Fade Out", "Callable") var fade_out_action = fade_out
|
|
|
|
func _ready():
|
|
setup_default_values()
|
|
get_tree().get_root().size_changed.connect(setup_default_values)
|
|
|
|
func setup_default_values():
|
|
target_default_pos = target.global_position
|
|
|
|
func start_anim():
|
|
on_animation = true
|
|
|
|
func end_anim():
|
|
animation_ended.emit()
|
|
on_animation = false
|
|
|
|
func fade_in(
|
|
duration : float = 0.3,
|
|
transition_type: Tween.TransitionType = Tween.TransitionType.TRANS_LINEAR,
|
|
):
|
|
start_anim()
|
|
target.visible = true
|
|
|
|
await add_tween(
|
|
"modulate",
|
|
target_default_modulate,
|
|
duration,
|
|
transition_type
|
|
).finished
|
|
|
|
end_anim()
|
|
|
|
func fade_out(
|
|
duration : float = 0.3,
|
|
transition_type: Tween.TransitionType = Tween.TransitionType.TRANS_LINEAR,
|
|
):
|
|
start_anim()
|
|
target.visible = true
|
|
|
|
await add_tween(
|
|
"modulate",
|
|
Color.TRANSPARENT,
|
|
duration,
|
|
transition_type
|
|
).finished
|
|
|
|
target.visible = false
|
|
end_anim()
|
|
|
|
func disappear(
|
|
duration : float = 0.3,
|
|
offset : int = 20,
|
|
transition_type: Tween.TransitionType = Tween.TransitionType.TRANS_LINEAR,
|
|
):
|
|
start_anim()
|
|
add_tween(
|
|
"modulate",
|
|
Color.TRANSPARENT,
|
|
duration,
|
|
transition_type
|
|
)
|
|
|
|
await add_tween(
|
|
"position",
|
|
target.position + Vector2.UP * offset,
|
|
duration,
|
|
transition_type
|
|
).finished
|
|
|
|
target.position = target_default_pos
|
|
end_anim()
|
|
|
|
func appear(
|
|
duration : float = 0.3,
|
|
offset : int = 20,
|
|
transition_type: Tween.TransitionType = Tween.TransitionType.TRANS_LINEAR,
|
|
):
|
|
start_anim()
|
|
target.modulate = Color.TRANSPARENT
|
|
|
|
add_tween(
|
|
"modulate",
|
|
target_default_modulate,
|
|
duration,
|
|
transition_type
|
|
).finished
|
|
|
|
target.position = target_default_pos + Vector2.UP * offset
|
|
|
|
await add_tween(
|
|
"position",
|
|
target_default_pos,
|
|
duration,
|
|
transition_type
|
|
).finished
|
|
|
|
target.position = target_default_pos
|
|
|
|
end_anim()
|
|
|
|
func slide_in(
|
|
duration : float = 0.3,
|
|
transition_type: Tween.TransitionType = Tween.TransitionType.TRANS_CUBIC,
|
|
):
|
|
start_anim()
|
|
target.position += Vector2.UP * target.size.y
|
|
target.visible = true
|
|
|
|
await add_tween(
|
|
"position",
|
|
target_default_pos,
|
|
duration,
|
|
transition_type
|
|
).finished
|
|
end_anim()
|
|
|
|
func slide_off(
|
|
duration : float = 0.3,
|
|
transition_type: Tween.TransitionType = Tween.TransitionType.TRANS_CUBIC,
|
|
):
|
|
start_anim()
|
|
await add_tween(
|
|
"position",
|
|
target.position - Vector2.UP * target.size.y,
|
|
duration,
|
|
transition_type
|
|
).finished
|
|
|
|
target.visible = false
|
|
target.position = target_default_pos
|
|
end_anim()
|
|
|
|
func bounce(
|
|
duration : float = 0.4,
|
|
amount : float = 10,
|
|
direction : Vector2 = Vector2.UP,
|
|
transition_type: Tween.TransitionType = Tween.TransitionType.TRANS_BOUNCE,
|
|
):
|
|
start_anim()
|
|
await add_tween(
|
|
"position",
|
|
target.position + direction * amount,
|
|
duration/2,
|
|
transition_type
|
|
).finished
|
|
await add_tween(
|
|
"position",
|
|
target_default_pos,
|
|
duration/2,
|
|
transition_type
|
|
).finished
|
|
end_anim()
|
|
|
|
func shake(
|
|
duration : float = 0.3,
|
|
amount : float = 10,
|
|
transition_type: Tween.TransitionType = Tween.TransitionType.TRANS_LINEAR,
|
|
):
|
|
start_anim()
|
|
await add_tween(
|
|
"position",
|
|
target.position + Vector2.RIGHT * amount/2,
|
|
duration/3,
|
|
transition_type
|
|
).finished
|
|
await add_tween(
|
|
"position",
|
|
target.position + Vector2.LEFT * amount,
|
|
duration/3,
|
|
transition_type
|
|
).finished
|
|
await add_tween(
|
|
"position",
|
|
target.position + Vector2.RIGHT * amount/2,
|
|
duration/3,
|
|
transition_type
|
|
).finished
|
|
|
|
target.position = target_default_pos
|
|
end_anim()
|
|
|
|
|
|
func add_tween(
|
|
property : String,
|
|
value : Variant,
|
|
seconds: float = 1.,
|
|
transition_type: Tween.TransitionType = Tween.TransitionType.TRANS_LINEAR
|
|
) -> Tween:
|
|
var tween : Tween = get_tree().create_tween()
|
|
tween.set_trans(transition_type)
|
|
tween.tween_property(target, property, value, seconds)
|
|
tween.set_pause_mode(Tween.TWEEN_PAUSE_PROCESS)
|
|
return tween |