Connected the dialog box to the NPC

This commit is contained in:
2026-03-11 16:54:12 +11:00
parent 21141376d2
commit 94b810e4f1
3 changed files with 16 additions and 5 deletions

View File

@@ -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("")

View File

@@ -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"]

View File

@@ -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