Skip to content

Commit 85bbcbc

Browse files
committed
colored join in characters
1 parent 2c1e2aa commit 85bbcbc

File tree

4 files changed

+125
-19
lines changed

4 files changed

+125
-19
lines changed

addons/dialogic/Editor/EditorView.tscn

Lines changed: 38 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -82,21 +82,23 @@ icon = ExtResource( 7 )
8282
flat = true
8383

8484
[node name="ButtonSave" type="Button" parent="HBoxContainer"]
85+
visible = false
8586
margin_left = 68.0
8687
margin_right = 109.0
8788
margin_bottom = 28.0
8889
text = "Save"
8990
align = 0
9091

9192
[node name="ReloadResource" type="Button" parent="HBoxContainer"]
92-
margin_left = 109.0
93-
margin_right = 164.0
93+
visible = false
94+
margin_left = 68.0
95+
margin_right = 123.0
9496
margin_bottom = 28.0
9597
text = "Reload"
9698
align = 0
9799

98100
[node name="Control" type="Control" parent="HBoxContainer"]
99-
margin_left = 164.0
101+
margin_left = 68.0
100102
margin_right = 885.0
101103
margin_bottom = 28.0
102104
size_flags_horizontal = 3
@@ -135,6 +137,7 @@ margin_right = 180.0
135137
margin_bottom = 270.0
136138
size_flags_horizontal = 3
137139
size_flags_vertical = 3
140+
allow_rmb_select = true
138141

139142
[node name="VBoxContainer" type="VBoxContainer" parent="Editor/EventTools"]
140143
margin_top = 274.0
@@ -426,10 +429,41 @@ dialog_text = "Are you sure you want to remove this character?
426429
__meta__ = {
427430
"_edit_use_anchors_": false
428431
}
432+
433+
[node name="RenameDialog" type="AcceptDialog" parent="."]
434+
visible = true
435+
anchor_left = 0.5
436+
anchor_top = 0.5
437+
anchor_right = 0.5
438+
anchor_bottom = 0.5
439+
margin_left = -250.0
440+
margin_top = -44.0
441+
margin_right = 250.0
442+
margin_bottom = 44.0
443+
rect_min_size = Vector2( 500, 0 )
444+
window_title = "Renaming Dialog"
445+
resizable = true
446+
__meta__ = {
447+
"_edit_use_anchors_": false
448+
}
449+
450+
[node name="LineEdit" type="LineEdit" parent="RenameDialog"]
451+
anchor_left = -0.00237569
452+
anchor_top = -0.00809895
453+
anchor_right = -0.00237569
454+
anchor_bottom = -0.00809895
455+
margin_left = 9.18785
456+
margin_top = 8.71271
457+
margin_right = 493.188
458+
margin_bottom = 52.7127
459+
__meta__ = {
460+
"_edit_use_anchors_": false
461+
}
429462
[connection signal="pressed" from="HBoxContainer/EventButton" to="." method="_on_EventButton_pressed"]
430463
[connection signal="pressed" from="HBoxContainer/CharactersButton" to="." method="_on_CharactersButton_pressed"]
431464
[connection signal="pressed" from="HBoxContainer/ButtonSave" to="." method="_on_ButtonSave_pressed"]
432465
[connection signal="pressed" from="HBoxContainer/ReloadResource" to="." method="_on_ReloadResource_pressed"]
466+
[connection signal="item_rmb_selected" from="Editor/EventTools/DialogItemList" to="." method="_on_DialogItemList_item_rmb_selected"]
433467
[connection signal="item_selected" from="Editor/EventTools/DialogItemList" to="." method="_on_DialogItemList_item_selected"]
434468
[connection signal="pressed" from="Editor/EventTools/VBoxContainer/ButtonText" to="." method="_on_ButtonText_pressed"]
435469
[connection signal="pressed" from="Editor/EventTools/VBoxContainer/ButtonBackground" to="." method="_on_ButtonBackground_pressed"]
@@ -443,3 +477,4 @@ __meta__ = {
443477
[connection signal="pressed" from="Editor/CharacterEditor/HBoxContainer/Container/Actions/SaveButton" to="." method="_on_character_SaveButton_pressed"]
444478
[connection signal="pressed" from="Editor/CharacterEditor/HBoxContainer/Container/Actions/DeleteButton" to="." method="_on_DeleteButton_pressed"]
445479
[connection signal="confirmed" from="RemoveConfirmation" to="." method="_on_RemoveConfirmation_confirmed"]
480+
[connection signal="confirmed" from="RenameDialog" to="." method="_on_RenameDialog_confirmed"]

addons/dialogic/Editor/Pieces/CharacterJoinBlock.gd

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@ tool
22
extends PanelContainer
33

44
var editor_reference
5-
var available_positions = ['left', 'middle', 'right']
5+
6+
var current_color = Color('#ffffff')
7+
var default_icon_color = Color("#65989898")
68

79
# This is the information of this event and it will get parsed and saved to the JSON file.
810
var event_data = {
@@ -24,12 +26,23 @@ func _on_MenuCharacter_about_to_show():
2426
var index = 0
2527
for c in editor_reference.get_character_list():
2628
Dropdown.get_popup().add_item(c['name'])
27-
Dropdown.get_popup().set_item_metadata(index, {'file': c['file'], 'color': Color('#ffffff')})
29+
Dropdown.get_popup().set_item_metadata(index, {'file': c['file'], 'color': c['color']})
2830
index += 1
2931

3032
func _on_character_selected(index):
3133
var text = $VBoxContainer/Header/CharacterDropdown.get_popup().get_item_text(index)
3234
var metadata = $VBoxContainer/Header/CharacterDropdown.get_popup().get_item_metadata(index)
35+
36+
# Updating icon Color
37+
current_color = Color(metadata['color'])
38+
var c_c_ind = 0
39+
for p in $VBoxContainer/Header/PositionsContainer.get_children():
40+
if event_data['position'][str(c_c_ind)]:
41+
p.set('self_modulate', Color(metadata['color']))
42+
else:
43+
p.set('self_modulate', default_icon_color)
44+
c_c_ind += 1
45+
3346
$VBoxContainer/Header/CharacterDropdown.text = text
3447
event_data['character'] = metadata['file']
3548

@@ -38,6 +51,7 @@ func position_button_pressed(name):
3851
var selected_index = name.split('-')[1]
3952
var button = $VBoxContainer/Header/PositionsContainer.get_node('position-' + selected_index)
4053
button.set('self_modulate', Color("#ffffff"))
54+
button.set('self_modulate', current_color)
4155
button.pressed = true
4256
event_data['position'][selected_index] = true
4357
print('here', selected_index)
@@ -46,19 +60,25 @@ func clear_all_positions():
4660
for i in range(5):
4761
event_data['position'][str(i)] = false
4862
for p in $VBoxContainer/Header/PositionsContainer.get_children():
49-
p.set('self_modulate', Color("#65989898"))
63+
p.set('self_modulate', default_icon_color)
5064
p.pressed = false
5165

52-
func check_active_position():
66+
func check_active_position(active_color = Color("#ffffff")):
5367
var index = 0
5468
for p in $VBoxContainer/Header/PositionsContainer.get_children():
5569
if event_data['position'][str(index)]:
56-
p.set('self_modulate', Color("#ffffff"))
5770
p.pressed = true
71+
p.set('self_modulate', active_color)
5872
index += 1
5973

6074
func load_data(data):
61-
if data['character'] != '':
62-
$VBoxContainer/Header/CharacterDropdown.text = editor_reference.get_character_name(data['character'])
6375
event_data = data
76+
if data['character'] != '':
77+
var character_data = editor_reference.get_character_data(data['character'])
78+
if character_data.has('name'):
79+
$VBoxContainer/Header/CharacterDropdown.text = character_data['name']
80+
if character_data.has('color'):
81+
current_color = Color('#' + character_data['color'])
82+
check_active_position(current_color)
83+
return
6484
check_active_position()

addons/dialogic/Editor/Pieces/CharacterJoinBlock.tscn

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ __meta__ = {
3232
margin_left = 6.0
3333
margin_top = 6.0
3434
margin_right = 1792.0
35-
margin_bottom = 46.0
35+
margin_bottom = 36.0
3636
size_flags_horizontal = 3
3737

3838
[node name="Header" type="HBoxContainer" parent="VBoxContainer"]

addons/dialogic/Editor/editor_view.gd

Lines changed: 59 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ var WORKING_DIR = "res://dialogic"
1111
var DIALOG_DIR = WORKING_DIR + "/dialogs"
1212
var CHAR_DIR = WORKING_DIR + "/characters"
1313
var working_dialog_file = ''
14+
var timer_duration = 200
15+
var timer_interval = 30
16+
var autosaving_hash
1417
onready var Timeline = $Editor/EventEditor/TimeLine
1518
onready var DialogList = $Editor/EventTools/DialogItemList
1619
onready var CharacterList = $Editor/CharacterTools/CharacterItemList
@@ -42,6 +45,12 @@ func _ready():
4245
# Making the dialog editor the default
4346
hide_editors()
4447
_on_EventButton_pressed()
48+
49+
func _process(delta):
50+
timer_interval -= 1
51+
if timer_interval < 0 :
52+
timer_interval = timer_duration
53+
_on_AutoSaver_timeout()
4554

4655
func _on_piece_connect(from, from_slot, to, to_slot):
4756
$Editor/GraphEdit.connect_node(from, from_slot, to, to_slot)
@@ -128,8 +137,7 @@ func _on_ReloadResource_pressed():
128137
func _on_ButtonSave_pressed():
129138
save_nodes(working_dialog_file)
130139

131-
func save_nodes(path):
132-
print('Saving resource --------')
140+
func generate_save_data():
133141
var info_to_save = {
134142
'metadata': {
135143
'dialogic-version': '0.4'
@@ -138,13 +146,16 @@ func save_nodes(path):
138146
}
139147
for event in Timeline.get_children():
140148
info_to_save['events'].append(event.event_data)
141-
149+
return info_to_save
150+
151+
func save_nodes(path):
152+
print('Saving resource --------')
153+
var info_to_save = generate_save_data()
142154
var file = File.new()
143155
file.open(path, File.WRITE)
144156
file.store_line(to_json(info_to_save))
145157
file.close()
146-
147-
print(info_to_save)
158+
autosaving_hash = info_to_save.hash()
148159

149160
func load_nodes(path):
150161
working_dialog_file = path
@@ -176,6 +187,7 @@ func load_nodes(path):
176187
create_character_leave_node(i['character'], i['action'])
177188
print('character-leave-block: ', i)
178189

190+
autosaving_hash = generate_save_data().hash()
179191
fold_all_nodes()
180192

181193
# Conversation files
@@ -202,13 +214,30 @@ func refresh_dialog_list():
202214
DialogList.set_item_metadata(index, {'file': c['file'], 'index': index})
203215
index += 1
204216

205-
206217
func _on_DialogItemList_item_selected(index):
207218
var selected = DialogList.get_item_text(index)
208219
var file = DialogList.get_item_metadata(index)['file']
209220
clear_timeline()
210221
load_nodes(DIALOG_DIR + '/' + file)
211222

223+
# Renaming dialogs
224+
225+
func _on_DialogItemList_item_rmb_selected(index, at_position):
226+
print(index)
227+
$RenameDialog.register_text_enter($RenameDialog/LineEdit)
228+
$RenameDialog/LineEdit.text = get_filename_from_path(working_dialog_file)
229+
$RenameDialog.set_as_minsize()
230+
$RenameDialog.popup_centered()
231+
232+
func _on_RenameDialog_confirmed():
233+
var new_name = $RenameDialog/LineEdit.text + '.json'
234+
var dir = Directory.new()
235+
var new_full_path = DIALOG_DIR + '/' + new_name
236+
dir.rename(working_dialog_file, new_full_path)
237+
working_dialog_file = new_full_path
238+
$RenameDialog/LineEdit.text = ''
239+
refresh_dialog_list()
240+
212241
# Character Creation
213242
func _on_Button_pressed():
214243
var file = create_character()
@@ -289,6 +318,18 @@ func _on_character_SaveButton_pressed():
289318
file.close()
290319
refresh_character_list()
291320

321+
func get_character_data(file):
322+
var data = load_json(CHAR_DIR + '/' + file)
323+
return data
324+
325+
func get_character_color(file):
326+
var data = load_json(CHAR_DIR + '/' + file)
327+
if is_instance_valid(data):
328+
if data.has('color'):
329+
return data['color']
330+
else:
331+
return "ffffff"
332+
292333
func get_character_name(file):
293334
var data = load_json(CHAR_DIR + '/' + file)
294335
if data.has('name'):
@@ -311,7 +352,6 @@ func _on_RemoveConfirmation_confirmed():
311352
clear_character_editor()
312353
refresh_character_list()
313354

314-
315355
func _on_DeleteButton_pressed():
316356
$RemoveConfirmation.popup_centered()
317357

@@ -342,6 +382,11 @@ func load_json(path):
342382
return
343383
return data_parse.result
344384

385+
func get_filename_from_path(path):
386+
if OS.get_name() == "Windows":
387+
return path.split('/')[-1].replace('.json', '')
388+
else:
389+
return path.split('\\')[-1].replace('.json', '')
345390

346391
# Godot dialog
347392
func godot_dialog():
@@ -362,7 +407,6 @@ func fold_all_nodes():
362407
func unfold_all_nodes():
363408
for event in Timeline.get_children():
364409
event.get_node("VBoxContainer/Header/VisibleToggle").set_pressed(true)
365-
print(event.get_node("VBoxContainer/Header/VisibleToggle"))
366410

367411
func _on_ButtonFold_pressed():
368412
fold_all_nodes()
@@ -387,3 +431,10 @@ func _on_CharactersButton_pressed():
387431
$Editor/CharacterTools.visible = true
388432
$Editor/CharacterEditor.visible = true
389433
$HBoxContainer/CharactersButton.set('self_modulate', Color('#6a9dea'))
434+
435+
# Auto saving
436+
437+
func _on_AutoSaver_timeout():
438+
if autosaving_hash != generate_save_data().hash():
439+
save_nodes(working_dialog_file)
440+
print('[!] Changes detected. Auto saving. ', autosaving_hash)

0 commit comments

Comments
 (0)