Skip to content

Commit 2d1d2c7

Browse files
committed
Get everything hooked up
1 parent 37895ef commit 2d1d2c7

File tree

9 files changed

+78
-32
lines changed

9 files changed

+78
-32
lines changed

addons/parley/components/dialogue/dialogue_container.gd

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,4 @@ func _ready() -> void:
2222
func _render() -> void:
2323
if dialogue_text_label:
2424
var character: ParleyCharacter = dialogue_node.resolve_character()
25-
dialogue_text_label.text = "[b]%s[/b] – %s" % [tr(character.name) if character.name != '' else 'Unknown', dialogue_node.text]
25+
dialogue_text_label.text = "[b]%s[/b] – %s" % [tr(character.name if character.name != '' else 'Unknown'), dialogue_node.text]

addons/parley/components/dialogue/dialogue_node_editor.gd

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -109,10 +109,6 @@ func _on_character_store_changed() -> void:
109109
_render_character_options()
110110

111111

112-
func _emit_dialogue_node_changed() -> void:
113-
dialogue_node_changed.emit(id, character, dialogue, text_translation_key)
114-
115-
116112
func _on_translation_key_editor_key_changed(new_key: String) -> void:
117113
text_translation_key = new_key
118114
_emit_dialogue_node_changed()
@@ -121,4 +117,8 @@ func _on_translation_key_editor_key_changed(new_key: String) -> void:
121117
func _on_translation_key_editor_key_generation_requested() -> void:
122118
text_translation_key = ParleyUtils.translation.generate_key(dialogue, dialogue_sequence_ast, node_ast, 'text')
123119
_emit_dialogue_node_changed()
120+
121+
122+
func _emit_dialogue_node_changed() -> void:
123+
dialogue_node_changed.emit(id, character, dialogue, text_translation_key)
124124
#endregion

addons/parley/components/dialogue_option/dialogue_option_node_editor.gd

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,23 @@ class_name ParleyDialogueOptionNodeEditor extends ParleyBaseNodeEditor
88
var character_store: ParleyCharacterStore: set = _set_character_store
99
@export var character: String = "": set = _set_character
1010
@export var option: String = "": set = _set_option
11+
@export var text_translation_key: String = "": set = _set_text_translation_key
1112

1213

1314
@onready var character_selector: OptionButton = %CharacterSelector
1415
@onready var option_editor: TextEdit = %OptionEditor
16+
@onready var text_translation_key_editor: ParleyTranslationKeyEditor = %TranslationKeyEditor
1517

1618

17-
signal dialogue_option_node_changed(id: String, character: String, option: String)
19+
signal dialogue_option_node_changed(id: String, character: String, option: String, text_translation_key: String)
1820
#endregion
1921

2022

2123
#region LIFECYCLE
2224
func _ready() -> void:
2325
set_title()
2426
_render_option()
27+
_render_text_translation_key_editor(true)
2528
_render_character_options()
2629
if character_store:
2730
ParleyUtils.signals.safe_connect(character_store.changed, _on_character_store_changed)
@@ -48,6 +51,11 @@ func _set_option(new_option: String) -> void:
4851
func _set_character(new_character: String) -> void:
4952
character = new_character
5053
_render_character()
54+
55+
56+
func _set_text_translation_key(new_text_translation_key: String) -> void:
57+
text_translation_key = new_text_translation_key
58+
_render_text_translation_key_editor()
5159
#endregion
5260

5361

@@ -57,6 +65,14 @@ func _render_option() -> void:
5765
option_editor.text = option
5866

5967

68+
func _render_text_translation_key_editor(on_ready: bool = false) -> void:
69+
if text_translation_key_editor:
70+
if text_translation_key_editor.key != text_translation_key:
71+
text_translation_key_editor.key = text_translation_key
72+
if on_ready:
73+
text_translation_key_editor.label = &"Text Translation Key: "
74+
75+
6076
func _render_character_options() -> void:
6177
if not character_selector:
6278
return
@@ -89,10 +105,20 @@ func _on_character_selector_item_selected(index: int) -> void:
89105
emit_dialogue_option_node_changed()
90106

91107

108+
func _on_translation_key_editor_key_changed(new_key: String) -> void:
109+
text_translation_key = new_key
110+
emit_dialogue_option_node_changed()
111+
112+
113+
func _on_translation_key_editor_key_generation_requested() -> void:
114+
text_translation_key = ParleyUtils.translation.generate_key(option, dialogue_sequence_ast, node_ast, 'text')
115+
emit_dialogue_option_node_changed()
116+
117+
92118
func _on_character_store_changed() -> void:
93119
_render_character_options()
94120

95121

96122
func emit_dialogue_option_node_changed() -> void:
97-
dialogue_option_node_changed.emit(id, character, option)
123+
dialogue_option_node_changed.emit(id, character, option, text_translation_key)
98124
#endregion

addons/parley/components/dialogue_option/dialogue_option_node_editor.tscn

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
1-
[gd_scene load_steps=3 format=3 uid="uid://cnq1fogoewemd"]
1+
[gd_scene load_steps=4 format=3 uid="uid://cnq1fogoewemd"]
22

33
[ext_resource type="Script" uid="uid://dy0x43s04n867" path="res://addons/parley/components/dialogue_option/dialogue_option_node_editor.gd" id="1_3b5a7"]
44
[ext_resource type="PackedScene" uid="uid://m3v11vm16l8y" path="res://addons/parley/components/node/node_editor.tscn" id="1_acvks"]
5+
[ext_resource type="PackedScene" uid="uid://n4t3w6dhkt6a" path="res://addons/parley/components/editor/translation_key.tscn" id="3_yrbg7"]
56

67
[node name="DialogueOptionNodeEditor" instance=ExtResource("1_acvks")]
78
script = ExtResource("1_3b5a7")
89
character = ""
910
option = ""
11+
text_translation_key = ""
1012
type = 1
1113

1214
[node name="TitleLabel" parent="TitleContainer/TitlePanelContainer/TitleMarginContainer/TitlePartsContainer" index="0"]
@@ -43,5 +45,11 @@ size_flags_vertical = 3
4345
placeholder_text = "Dialogue goes here.."
4446
wrap_mode = 1
4547

48+
[node name="TranslationKeyEditor" parent="BodyMarginContainer/BodyScrollContainer/BodyContainer" index="2" instance=ExtResource("3_yrbg7")]
49+
unique_name_in_owner = true
50+
layout_mode = 2
51+
4652
[connection signal="item_selected" from="BodyMarginContainer/BodyScrollContainer/BodyContainer/CharacterContainer/CharacterSelector" to="." method="_on_character_selector_item_selected"]
4753
[connection signal="text_changed" from="BodyMarginContainer/BodyScrollContainer/BodyContainer/VBoxContainer/OptionEditor" to="." method="_on_code_edit_text_changed"]
54+
[connection signal="key_changed" from="BodyMarginContainer/BodyScrollContainer/BodyContainer/TranslationKeyEditor" to="." method="_on_translation_key_editor_key_changed"]
55+
[connection signal="key_generation_requested" from="BodyMarginContainer/BodyScrollContainer/BodyContainer/TranslationKeyEditor" to="." method="_on_translation_key_editor_key_generation_requested"]

addons/parley/main_panel.gd

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -155,10 +155,10 @@ func _set_node_ast(new_node_ast: ParleyNodeAst) -> void:
155155
match new_node_ast.type:
156156
ParleyDialogueSequenceAst.Type.DIALOGUE:
157157
var dialogue_node_ast: ParleyDialogueNodeAst = new_node_ast
158-
_on_dialogue_node_editor_dialogue_node_changed(dialogue_node_ast.id, dialogue_node_ast.character, dialogue_node_ast.text)
158+
_on_dialogue_node_editor_dialogue_node_changed(dialogue_node_ast.id, dialogue_node_ast.character, dialogue_node_ast.text, dialogue_node_ast.text_translation_key)
159159
ParleyDialogueSequenceAst.Type.DIALOGUE_OPTION:
160160
var dialogue_option_node_ast: ParleyDialogueOptionNodeAst = new_node_ast
161-
_on_dialogue_option_node_editor_dialogue_option_node_changed(dialogue_option_node_ast.id, dialogue_option_node_ast.character, dialogue_option_node_ast.text)
161+
_on_dialogue_option_node_editor_dialogue_option_node_changed(dialogue_option_node_ast.id, dialogue_option_node_ast.character, dialogue_option_node_ast.text, dialogue_option_node_ast.text_translation_key)
162162
ParleyDialogueSequenceAst.Type.CONDITION:
163163
var condition_node_ast: ParleyConditionNodeAst = new_node_ast
164164
_on_condition_node_editor_condition_node_changed(condition_node_ast.id, condition_node_ast.description, condition_node_ast.combiner, condition_node_ast.conditions)
@@ -425,7 +425,7 @@ func _on_graph_view_scroll_offset_changed(offset: Vector2) -> void:
425425

426426

427427
# TODO: remove ast stuff
428-
func _on_dialogue_node_editor_dialogue_node_changed(id: String, new_character: String, new_dialogue_text: String) -> void:
428+
func _on_dialogue_node_editor_dialogue_node_changed(id: String, new_character: String, new_dialogue_text: String, new_text_translation_key: String) -> void:
429429
if not dialogue_ast:
430430
return
431431
var _ast_node: ParleyNodeAst = dialogue_ast.find_node_by_id(id)
@@ -434,7 +434,7 @@ func _on_dialogue_node_editor_dialogue_node_changed(id: String, new_character: S
434434
return
435435
if _ast_node is ParleyDialogueNodeAst:
436436
var ast_node: ParleyDialogueNodeAst = _ast_node
437-
ast_node.update(new_character, new_dialogue_text)
437+
ast_node.update(new_character, new_dialogue_text, new_text_translation_key)
438438
# TODO: move into graph view
439439
if _selected_node is ParleyDialogueNode:
440440
var selected_node: ParleyDialogueNode = _selected_node
@@ -443,7 +443,7 @@ func _on_dialogue_node_editor_dialogue_node_changed(id: String, new_character: S
443443

444444

445445
# TODO: remove ast stuff
446-
func _on_dialogue_option_node_editor_dialogue_option_node_changed(id: String, new_character: String, new_option_text: String) -> void:
446+
func _on_dialogue_option_node_editor_dialogue_option_node_changed(id: String, new_character: String, new_option_text: String, new_text_translation_key: String) -> void:
447447
if not dialogue_ast:
448448
return
449449
var _ast_node: ParleyNodeAst = dialogue_ast.find_node_by_id(id)
@@ -452,7 +452,7 @@ func _on_dialogue_option_node_editor_dialogue_option_node_changed(id: String, ne
452452
return
453453
if _ast_node is ParleyDialogueOptionNodeAst:
454454
var ast_node: ParleyDialogueOptionNodeAst = _ast_node
455-
ast_node.update(new_character, new_option_text)
455+
ast_node.update(new_character, new_option_text, new_text_translation_key)
456456
# TODO: move into graph view
457457
if _selected_node is ParleyDialogueOptionNode:
458458
var selected_node: ParleyDialogueOptionNode = _selected_node

addons/parley/models/dialogue_node_ast.gd

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,23 +22,26 @@ class_name ParleyDialogueNodeAst extends ParleyNodeAst
2222
## Create a new instance of a Dialogue Node AST.
2323
## Example: ParleyDialogueNodeAst.new("1", Vector2.ZERO, "Alice", "I need some coffee.")
2424
func _init(
25-
_id: String = "",
26-
_position: Vector2 = Vector2.ZERO,
27-
_character: String = "",
28-
_text: String = ""
25+
p_id: String = "",
26+
p_position: Vector2 = Vector2.ZERO,
27+
p_character: String = "",
28+
p_text: String = "",
29+
p_text_translation_key: String = ""
2930
) -> void:
3031
type = ParleyDialogueSequenceAst.Type.DIALOGUE
31-
id = _id
32-
position = _position
33-
character = _character
34-
text = _text
32+
id = p_id
33+
position = p_position
34+
character = p_character
35+
text = p_text
36+
text_translation_key = p_text_translation_key
3537

3638

3739
## Update a Dialogue Node AST.
3840
## Example: node.update("Alice", "I need some coffee.")
39-
func update(_character: String, _text: String) -> void:
40-
character = _character
41-
text = _text
41+
func update(p_character: String, p_text: String, p_text_translation_key: String) -> void:
42+
character = p_character
43+
text = p_text
44+
text_translation_key = p_text_translation_key
4245

4346

4447
static func get_colour() -> Color:
@@ -51,7 +54,8 @@ func to_resolved(resolved_text: String) -> ParleyDialogueNodeAst:
5154
id,
5255
position,
5356
character,
54-
resolved_text
57+
resolved_text,
58+
text_translation_key
5559
)
5660

5761

addons/parley/models/dialogue_option_node_ast.gd

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,20 +25,23 @@ func _init(
2525
p_id: String = "",
2626
p_position: Vector2 = Vector2.ZERO,
2727
p_character: String = "",
28-
p_text: String = ""
28+
p_text: String = "",
29+
p_text_translation_key: String = ""
2930
) -> void:
3031
type = ParleyDialogueSequenceAst.Type.DIALOGUE_OPTION
3132
id = p_id
3233
position = p_position
3334
character = p_character
3435
text = p_text
36+
text_translation_key = p_text_translation_key
3537

3638

3739
## Update a Dialogue Option Node AST.
3840
## Example: node.update("Alice", "Slurp some coffee.")
39-
func update(p_character: String, p_text: String) -> void:
41+
func update(p_character: String, p_text: String, p_text_translation_key: String) -> void:
4042
character = p_character
4143
text = p_text
44+
text_translation_key = p_text_translation_key
4245

4346

4447
static func get_colour() -> Color:
@@ -51,7 +54,8 @@ func to_resolved(resolved_text: String) -> ParleyDialogueOptionNodeAst:
5154
id,
5255
position,
5356
character,
54-
resolved_text
57+
resolved_text,
58+
text_translation_key
5559
)
5660

5761

addons/parley/models/dialogue_sequence_ast.gd

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,11 +74,13 @@ func add_ast_node(node: Dictionary) -> void:
7474
Type.DIALOGUE:
7575
var character: String = node.get('character', '')
7676
var text: String = node.get('text', '')
77-
ast_node = ParleyDialogueNodeAst.new(id, position, character, text)
77+
var text_translation_key: String = node.get('text_translation_key', '')
78+
ast_node = ParleyDialogueNodeAst.new(id, position, character, text, text_translation_key)
7879
Type.DIALOGUE_OPTION:
7980
var character: String = node.get('character', '')
8081
var text: String = node.get('text', '')
81-
ast_node = ParleyDialogueOptionNodeAst.new(id, position, character, text)
82+
var text_translation_key: String = node.get('text_translation_key', '')
83+
ast_node = ParleyDialogueOptionNodeAst.new(id, position, character, text, text_translation_key)
8284
Type.CONDITION:
8385
var combiner: ParleyConditionNodeAst.Combiner = ParleyConditionNodeAst.Combiner.get(node.get('combiner'), ParleyConditionNodeAst.Combiner.ALL)
8486
var description: String = node.get('description', '')

addons/parley/views/parley_node.gd

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ func _render_dialogue_option_node_editor() -> void:
112112
dialogue_option_node_editor.id = dialogue_option_node_ast.id
113113
dialogue_option_node_editor.character = dialogue_option_node_ast.character
114114
dialogue_option_node_editor.option = dialogue_option_node_ast.text
115+
dialogue_option_node_editor.text_translation_key = dialogue_option_node_ast.text_translation_key
115116
ParleyUtils.signals.safe_connect(dialogue_option_node_editor.dialogue_option_node_changed, _on_dialogue_option_node_editor_dialogue_option_node_changed)
116117
ParleyUtils.signals.safe_connect(dialogue_option_node_editor.delete_node_button_pressed, _on_delete_node_button_pressed)
117118
node_editor_container.add_child(dialogue_option_node_editor)
@@ -267,11 +268,12 @@ func _on_delete_node_button_pressed(id: String) -> void:
267268
delete_node_button_pressed.emit(id)
268269

269270

270-
func _on_dialogue_option_node_editor_dialogue_option_node_changed(_id: String, character: String, option: String) -> void:
271+
func _on_dialogue_option_node_editor_dialogue_option_node_changed(_id: String, character: String, option: String, text_translation_key: String) -> void:
271272
# TODO: we should probably just update the resource here - it would make things way easier!
272273
var new_node_ast: ParleyDialogueOptionNodeAst = node_ast.duplicate(true)
273274
new_node_ast.character = character
274275
new_node_ast.text = option
276+
new_node_ast.text_translation_key = text_translation_key
275277
node_changed.emit(new_node_ast)
276278

277279

0 commit comments

Comments
 (0)