diff --git a/ArrowGirl/ArrowGirl.gd b/ArrowGirl/ArrowGirl.gd index 8775244..f8924ed 100644 --- a/ArrowGirl/ArrowGirl.gd +++ b/ArrowGirl/ArrowGirl.gd @@ -1,5 +1,6 @@ class_name ArrowGirl extends Area2D +@onready var _dialogController = $/root/Scene/DialogController @onready var _sprite = $AnimatedSprite2D #boilerplate @@ -12,3 +13,11 @@ func _on_animation_finished() -> void: _sprite.play("idle_glance", 2) else: _sprite.play("idle", 2) + +func _on_body_entered(body) -> void: + if body is BoxBoy: + _dialogController.set_dialog("Hello.", 0.2) + +func _on_body_exited(body) -> void: + if body is BoxBoy: + _dialogController.set_dialog("") diff --git a/ArrowGirl/ArrowGirl.tscn b/ArrowGirl/ArrowGirl.tscn index bae56e7..7886b47 100644 --- a/ArrowGirl/ArrowGirl.tscn +++ b/ArrowGirl/ArrowGirl.tscn @@ -52,4 +52,6 @@ metadata/_edit_lock_ = true shape = SubResource("RectangleShape2D_53v1e") metadata/_edit_lock_ = true +[connection signal="body_entered" from="." to="." method="_on_body_entered"] +[connection signal="body_exited" from="." to="." method="_on_body_exited"] [connection signal="animation_finished" from="AnimatedSprite2D" to="." method="_on_animation_finished"] diff --git a/Controllers/DialogController.gd b/Controllers/DialogController.gd index 78b974e..fb8f675 100644 --- a/Controllers/DialogController.gd +++ b/Controllers/DialogController.gd @@ -3,9 +3,7 @@ extends Node @export var dialogContainer: MarginContainer @export var dialogTextLabel: RichTextLabel -const INCREMENT: float = 0.01 - -func set_dialog(text: String) -> void: +func set_dialog(text: String, seconds: float = 1) -> void: dialogTextLabel.text = text dialogTextLabel.visible_ratio = 0 var ratio: float = 0 @@ -16,10 +14,12 @@ func set_dialog(text: String) -> void: else: dialogContainer.visible = true + var increment: float = (1 / seconds)/ 60.0 + while true: #don't interfere with other timers if dialogTextLabel.visible_ratio < ratio or dialogTextLabel.visible_ratio >= 1: return - dialogTextLabel.visible_ratio += INCREMENT + dialogTextLabel.visible_ratio += increment ratio = dialogTextLabel.visible_ratio - await get_tree().create_timer(INCREMENT).timeout + await get_tree().create_timer(1.0/60.0).timeout #update proportional to 60 FPS