From 872d1f9200584973b2156102f0e7f03b3d271687 Mon Sep 17 00:00:00 2001 From: Jan Tuomi Date: Thu, 4 Dec 2025 22:04:59 +0200 Subject: Add initial dialogue system --- dialogue.gd | 24 ++++++++++++++++++++++ dialogue.gd.uid | 1 + dialogues/test1.gd | 14 +++++++++++++ dialogues/test1.gd.uid | 1 + docs/index.html | 2 +- docs/index.pck | Bin 3892536 -> 4604796 bytes docs/index.service.worker.js | 2 +- room_test3.tscn | 47 ++++--------------------------------------- text_bubble.gd | 10 +++++++++ text_bubble.gd.uid | 1 + text_bubble.tscn | 27 +++++++++++++++++++++++++ 11 files changed, 84 insertions(+), 45 deletions(-) create mode 100644 dialogue.gd create mode 100644 dialogue.gd.uid create mode 100644 dialogues/test1.gd create mode 100644 dialogues/test1.gd.uid create mode 100644 text_bubble.gd create mode 100644 text_bubble.gd.uid create mode 100644 text_bubble.tscn diff --git a/dialogue.gd b/dialogue.gd new file mode 100644 index 0000000..f085ed8 --- /dev/null +++ b/dialogue.gd @@ -0,0 +1,24 @@ +class_name Dialogue +extends Node + +signal next + +@onready var parent: Node2D = get_parent() +@onready var cam: GameCamera = parent.get_node("GameCamera") + +func say(who: Object, text: String): + var tb: TextBubble = preload("res://text_bubble.tscn").instantiate() + tb.text = text + if who is Node2D: + tb.global_position = who.global_position + Vector2(0, -20) + else: + tb.global_position = cam.global_position + + tb.add_to_group("text_bubbles") + parent.add_child(tb) + await next + +func _process(_delta: float): + if Input.is_action_just_pressed("action") or Input.is_action_just_pressed("jump"): + get_tree().call_group("text_bubbles", "queue_free") + next.emit() diff --git a/dialogue.gd.uid b/dialogue.gd.uid new file mode 100644 index 0000000..f06507a --- /dev/null +++ b/dialogue.gd.uid @@ -0,0 +1 @@ +uid://djbahr0s3jkpe diff --git a/dialogues/test1.gd b/dialogues/test1.gd new file mode 100644 index 0000000..e7752b3 --- /dev/null +++ b/dialogues/test1.gd @@ -0,0 +1,14 @@ +class_name DialogueTest1 +extends Dialogue + +@onready var player: Player = parent.get_node("Player") +@onready var npc: Node2D = parent.get_node("DialogueTestNPC") + +func _ready(): + player.request_state_init() + + await say(player, "hello") + await say(npc, "well hi") + + player.request_state_normal() + print("dialogue done") diff --git a/dialogues/test1.gd.uid b/dialogues/test1.gd.uid new file mode 100644 index 0000000..57573c2 --- /dev/null +++ b/dialogues/test1.gd.uid @@ -0,0 +1 @@ +uid://23xqfts2fuwx diff --git a/docs/index.html b/docs/index.html index c80f7dd..d691280 100644 --- a/docs/index.html +++ b/docs/index.html @@ -112,7 +112,7 @@ body {