From 3112d6b8bf818e5693c8c85ec8f5a6f6308077d2 Mon Sep 17 00:00:00 2001 From: wooshings Date: Fri, 4 Sep 2026 21:04:58 -0700 Subject: [PATCH] basic dialogue progression --- backend/scenes/game.tscn | 24 ++++++++++++++++++++++++ backend/scripts/game.gd | 7 +++++-- characters/character.gd | 5 +++++ characters/character.gd.uid | 1 + dialogue/resources/test_scene.tres | 25 +++++++++++++++++++++++++ dialogue/scripts/choice.gd | 3 +++ dialogue/scripts/choice.gd.uid | 1 + dialogue/scripts/dialogue.gd | 6 ++++++ dialogue/scripts/dialogue.gd.uid | 1 + dialogue/scripts/scene.gd | 7 +++++++ dialogue/scripts/scene.gd.uid | 1 + dialogue/scripts/spawn_dialogue.gd | 18 ++++++++++++++++++ dialogue/scripts/spawn_dialogue.gd.uid | 1 + 13 files changed, 98 insertions(+), 2 deletions(-) create mode 100644 characters/character.gd create mode 100644 characters/character.gd.uid create mode 100644 dialogue/resources/test_scene.tres create mode 100644 dialogue/scripts/choice.gd create mode 100644 dialogue/scripts/choice.gd.uid create mode 100644 dialogue/scripts/dialogue.gd create mode 100644 dialogue/scripts/dialogue.gd.uid create mode 100644 dialogue/scripts/scene.gd create mode 100644 dialogue/scripts/scene.gd.uid create mode 100644 dialogue/scripts/spawn_dialogue.gd create mode 100644 dialogue/scripts/spawn_dialogue.gd.uid diff --git a/backend/scenes/game.tscn b/backend/scenes/game.tscn index 1178b62..6b21543 100644 --- a/backend/scenes/game.tscn +++ b/backend/scenes/game.tscn @@ -1,7 +1,31 @@ [gd_scene format=3 uid="uid://dc3nef7mu87lf"] [ext_resource type="Script" uid="uid://cyhw5qm44uykq" path="res://backend/scripts/game.gd" id="1_r8aos"] +[ext_resource type="Script" uid="uid://dw5jr50hsls5n" path="res://dialogue/scripts/dialogue.gd" id="2_6pot5"] +[ext_resource type="Script" uid="uid://d2d5w1vmd71js" path="res://dialogue/scripts/choice.gd" id="3_iree2"] +[ext_resource type="Script" uid="uid://cu54e7uh65lq0" path="res://dialogue/scripts/scene.gd" id="4_hiff8"] + +[sub_resource type="Resource" id="Resource_7gud4"] +script = ExtResource("2_6pot5") +dialogue = "this is a test scene for the dialogue system" +metadata/_custom_type_script = "uid://dw5jr50hsls5n" + +[sub_resource type="Resource" id="Resource_2c6wc"] +script = ExtResource("2_6pot5") +dialogue = "this is the next line the character is saying" +metadata/_custom_type_script = "uid://dw5jr50hsls5n" + +[sub_resource type="Resource" id="Resource_qfeqt"] +script = ExtResource("2_6pot5") +dialogue = "and this is the last line" +metadata/_custom_type_script = "uid://dw5jr50hsls5n" + +[sub_resource type="Resource" id="Resource_tbx8t"] +script = ExtResource("4_hiff8") +dialogue = Array[ExtResource("2_6pot5")]([SubResource("Resource_7gud4"), SubResource("Resource_2c6wc"), SubResource("Resource_qfeqt")]) +metadata/_custom_type_script = "uid://cu54e7uh65lq0" [node name="Game" type="Node" unique_id=1724068054] script = ExtResource("1_r8aos") +dialogue_scene = SubResource("Resource_tbx8t") metadata/_custom_type_script = "uid://cyhw5qm44uykq" diff --git a/backend/scripts/game.gd b/backend/scripts/game.gd index 0d1f966..9db3a1e 100644 --- a/backend/scripts/game.gd +++ b/backend/scripts/game.gd @@ -1,5 +1,8 @@ extends Node class_name Game -func _process(_delta: float) -> void: - pass +@export var dialogue_scene: DialogueScene + +func _ready() -> void: + add_child(await DialogueEncounter.new(self.dialogue_scene)) + diff --git a/characters/character.gd b/characters/character.gd new file mode 100644 index 0000000..9aa3af5 --- /dev/null +++ b/characters/character.gd @@ -0,0 +1,5 @@ +extends Resource +class_name Character + +@export var character_name: String +@export var portrait: Texture diff --git a/characters/character.gd.uid b/characters/character.gd.uid new file mode 100644 index 0000000..116cfd7 --- /dev/null +++ b/characters/character.gd.uid @@ -0,0 +1 @@ +uid://xbl6wraf2l3k diff --git a/dialogue/resources/test_scene.tres b/dialogue/resources/test_scene.tres new file mode 100644 index 0000000..4b6041d --- /dev/null +++ b/dialogue/resources/test_scene.tres @@ -0,0 +1,25 @@ +[gd_resource type="Resource" script_class="DialogueScene" format=3 uid="uid://n5bwjiaraca6"] + +[ext_resource type="Script" uid="uid://dw5jr50hsls5n" path="res://dialogue/scripts/dialogue.gd" id="1_tbx8t"] +[ext_resource type="Script" uid="uid://d2d5w1vmd71js" path="res://dialogue/scripts/choice.gd" id="2_7gud4"] +[ext_resource type="Script" uid="uid://cu54e7uh65lq0" path="res://dialogue/scripts/scene.gd" id="3_2c6wc"] + +[sub_resource type="Resource" id="Resource_qdk4l"] +script = ExtResource("1_tbx8t") +dialogue = "this is a test of the dialoge sysytem" +metadata/_custom_type_script = "uid://dw5jr50hsls5n" + +[sub_resource type="Resource" id="Resource_psx0q"] +script = ExtResource("1_tbx8t") +dialogue = "this should be the second message" +metadata/_custom_type_script = "uid://dw5jr50hsls5n" + +[sub_resource type="Resource" id="Resource_elg5j"] +script = ExtResource("1_tbx8t") +dialogue = "i hope you enjoyed" +metadata/_custom_type_script = "uid://dw5jr50hsls5n" + +[resource] +script = ExtResource("3_2c6wc") +dialogue = Array[ExtResource("1_tbx8t")]([SubResource("Resource_qdk4l"), SubResource("Resource_psx0q"), SubResource("Resource_elg5j")]) +metadata/_custom_type_script = "uid://cu54e7uh65lq0" diff --git a/dialogue/scripts/choice.gd b/dialogue/scripts/choice.gd new file mode 100644 index 0000000..a1820eb --- /dev/null +++ b/dialogue/scripts/choice.gd @@ -0,0 +1,3 @@ +extends Resource +class_name Choice + diff --git a/dialogue/scripts/choice.gd.uid b/dialogue/scripts/choice.gd.uid new file mode 100644 index 0000000..2df2213 --- /dev/null +++ b/dialogue/scripts/choice.gd.uid @@ -0,0 +1 @@ +uid://d2d5w1vmd71js diff --git a/dialogue/scripts/dialogue.gd b/dialogue/scripts/dialogue.gd new file mode 100644 index 0000000..0a48339 --- /dev/null +++ b/dialogue/scripts/dialogue.gd @@ -0,0 +1,6 @@ +extends Resource +class_name Dialogue + +@export var character: Character +@export_multiline() var dialogue: String +@export var choice: Dictionary[Choice, Dialogue] diff --git a/dialogue/scripts/dialogue.gd.uid b/dialogue/scripts/dialogue.gd.uid new file mode 100644 index 0000000..37c083b --- /dev/null +++ b/dialogue/scripts/dialogue.gd.uid @@ -0,0 +1 @@ +uid://dw5jr50hsls5n diff --git a/dialogue/scripts/scene.gd b/dialogue/scripts/scene.gd new file mode 100644 index 0000000..d9b101a --- /dev/null +++ b/dialogue/scripts/scene.gd @@ -0,0 +1,7 @@ +extends Resource +class_name DialogueScene + +@export var dialogue: Array[Dialogue] + +func get_scene() -> Array[Dialogue]: + return self.dialogue diff --git a/dialogue/scripts/scene.gd.uid b/dialogue/scripts/scene.gd.uid new file mode 100644 index 0000000..8413243 --- /dev/null +++ b/dialogue/scripts/scene.gd.uid @@ -0,0 +1 @@ +uid://cu54e7uh65lq0 diff --git a/dialogue/scripts/spawn_dialogue.gd b/dialogue/scripts/spawn_dialogue.gd new file mode 100644 index 0000000..b578358 --- /dev/null +++ b/dialogue/scripts/spawn_dialogue.gd @@ -0,0 +1,18 @@ +extends Node +class_name DialogueEncounter + +var dialogue: DialogueScene +signal step + +func _init(path: Resource) -> void: + self.dialogue = path + await Start() + +func _input(_event: InputEvent) -> void: + if Input.is_action_just_pressed("ui_accept"): + step.emit() + +func Start(): + for i in self.dialogue.get_scene(): + print(i.dialogue) + await step diff --git a/dialogue/scripts/spawn_dialogue.gd.uid b/dialogue/scripts/spawn_dialogue.gd.uid new file mode 100644 index 0000000..fffc404 --- /dev/null +++ b/dialogue/scripts/spawn_dialogue.gd.uid @@ -0,0 +1 @@ +uid://bglbul22528pf