Add dialogic

This commit is contained in:
snider committed 2022-08-13 19:33:12 -07:00
1 parent 89d4d3a29c
commit 2c47b309ae
603 files changed
+34501

No files matched your search

@@ -0,0 +1,22 @@
[gd_scene load_steps=3 format=2]
[ext_resource path="res://addons/dialogic/Editor/Events/Parts/ResourcePickers/Definitions/EventPart_DefinitionPicker.gd" type="Script" id=1]
[ext_resource path="res://addons/dialogic/Editor/Events/Parts/ResourcePickers/ResourcePickerMenu.tscn" type="PackedScene" id=2]
[node name="DefinitionPicker" type="VBoxContainer"]
margin_right = 83.0
margin_bottom = 22.0
size_flags_vertical = 4
script = ExtResource( 1 )
__meta__ = {
"_edit_use_anchors_": false
}
default_text = "Value"
[node name="HBox" type="HBoxContainer" parent="."]
margin_right = 98.0
margin_bottom = 22.0
[node name="MenuButton" parent="HBox" instance=ExtResource( 2 )]
margin_right = 98.0
text = "Definition"
@@ -0,0 +1,79 @@
tool
extends "res://addons/dialogic/Editor/Events/Parts/EventPart.gd"
# has an event_data variable that stores the current data!!!
export (String) var default_text = "Select Definition"
## node references
onready var picker_menu = $HBox/MenuButton
# used to connect the signals
func _ready():
picker_menu.connect("about_to_show", self, "_on_PickerMenu_about_to_show")
# themeing
picker_menu.custom_icon_modulation = get_color("font_color", "Editor")
picker_menu.custom_icon = load("res://addons/dialogic/Images/Resources/definition.svg")
# called by the event block
func load_data(data:Dictionary):
# First set the event_data
.load_data(data)
# Now update the ui nodes to display the data.
select_definition_by_id(data['definition'])
# has to return the wanted preview, only useful for body parts
func get_preview():
return ''
func select_definition_by_id(id):
if id != '':
for d in DialogicResources.get_default_definitions()['variables']:
if d['id'] == id:
picker_menu.text = d['name']
else:
picker_menu.text = default_text
# when an index is selected on one of the menus.
func _on_PickerMenu_selected(index, menu):
var text = menu.get_item_text(index)
var metadata = menu.get_item_metadata(index)
picker_menu.text = text
event_data['definition'] = metadata['file']
# informs the parent about the changes!
data_changed()
func _on_PickerMenu_about_to_show():
# Building the picker menu()
picker_menu.get_popup().clear()
## building the root level
build_PickerMenuFolder(picker_menu.get_popup(), DialogicUtil.get_definitions_folder_structure(), "MenuButton")
# is called recursively to build all levels of the folder structure
func build_PickerMenuFolder(menu:PopupMenu, folder_structure:Dictionary, current_folder_name:String):
var index = 0
for folder_name in folder_structure['folders'].keys():
var submenu = PopupMenu.new()
var submenu_name = build_PickerMenuFolder(submenu, folder_structure['folders'][folder_name], folder_name)
submenu.name = submenu_name
menu.add_submenu_item(folder_name, submenu_name)
menu.set_item_icon(index, get_icon("Folder", "EditorIcons"))
menu.add_child(submenu)
picker_menu.update_submenu_style(submenu)
index += 1
var files_info = DialogicUtil.get_default_definitions_dict()
for file in folder_structure['files']:
if files_info[file]["type"] == 0:
menu.add_item(files_info[file]['name'])
menu.set_item_icon(index, load("res://addons/dialogic/Images/Resources/definition.svg"))
menu.set_item_metadata(index, {'file':file})
index += 1
if not menu.is_connected("index_pressed", self, "_on_PickerMenu_selected"):
menu.connect("index_pressed", self, '_on_PickerMenu_selected', [menu])
return current_folder_name
@@ -0,0 +1,79 @@
tool
extends "res://addons/dialogic/Editor/Events/Parts/EventPart.gd"
# has an event_data variable that stores the current data!!!
export (String) var default_text = "Select Glossary Item"
## node references
onready var picker_menu = $MenuButton
# used to connect the signals
func _ready():
picker_menu.connect("about_to_show", self, "_on_PickerMenu_about_to_show")
picker_menu.custom_icon = get_icon("ListSelect", "EditorIcons")
# called by the event block
func load_data(data:Dictionary):
# First set the event_data
.load_data(data)
# Now update the ui nodes to display the data.
select_glossary_by_id(data['glossary_id'])
# has to return the wanted preview, only useful for body parts
func get_preview():
return ''
func select_glossary_by_id(id):
if id != '':
for d in DialogicResources.get_default_definitions()['glossary']:
if d['id'] == id:
picker_menu.text = d['name']
else:
picker_menu.text = default_text
# when an index is selected on one of the menus.
func _on_PickerMenu_selected(index, menu):
event_data['glossary_id'] = menu.get_item_metadata(index).get('file', '')
select_glossary_by_id(event_data['glossary_id'])
# informs the parent about the changes!
data_changed()
func _on_PickerMenu_about_to_show():
build_PickerMenu()
func build_PickerMenu():
picker_menu.get_popup().clear()
var folder_structure = DialogicUtil.get_definitions_folder_structure()
## building the root level
build_PickerMenuFolder(picker_menu.get_popup(), folder_structure, "MenuButton")
# is called recursively to build all levels of the folder structure
func build_PickerMenuFolder(menu:PopupMenu, folder_structure:Dictionary, current_folder_name:String):
var index = 0
#menu.name = current_folder_name
for folder_name in folder_structure['folders'].keys():
var submenu = PopupMenu.new()
var submenu_name = build_PickerMenuFolder(submenu, folder_structure['folders'][folder_name], folder_name)
submenu.name = submenu_name
menu.add_submenu_item(folder_name, submenu_name)
menu.set_item_icon(index, get_icon("Folder", "EditorIcons"))
menu.add_child(submenu)
picker_menu.update_submenu_style(submenu)
index += 1
var files_info = DialogicUtil.get_default_definitions_dict()
for file in folder_structure['files']:
if files_info[file]["type"] == 1:
menu.add_item(files_info[file]['name'])
menu.set_item_icon(index, editor_reference.get_node("MainPanel/MasterTreeContainer/MasterTree").glossary_icon)
menu.set_item_metadata(index, {'file':file})
index += 1
if not menu.is_connected("index_pressed", self, "_on_PickerMenu_selected"):
menu.connect("index_pressed", self, '_on_PickerMenu_selected', [menu])
return current_folder_name
@@ -0,0 +1,133 @@
tool
extends "res://addons/dialogic/Editor/Events/Parts/EventPart.gd"
# has an event_data variable that stores the current data!!!
## node references
onready var title_input = $Title/Input
onready var title_check = $Title/Check
onready var text_input = $Text/Input
onready var text_check = $Text/Check
onready var extra_input = $Extra/Input
onready var extra_check = $Extra/Check
# used to connect the signals
func _ready():
title_input.connect("text_changed", self, "_on_TitleField_text_changed")
text_input.connect("text_changed", self, "_on_TextField_text_changed")
extra_input.connect("text_changed", self, "_on_ExtraField_text_changed")
title_check.connect("toggled", self, "_on_TitleCheck_toggled")
text_check.connect("toggled", self, "_on_TextCheck_toggled")
extra_check.connect("toggled", self, "_on_ExtraCheck_toggled")
# called by the event block
func load_data(data:Dictionary):
# First set the event_data
.load_data(data)
emit_signal("request_set_body_enabled", event_data['glossary_id'] != '')
$Title.visible = event_data['glossary_id'] != ''
$Text.visible = event_data['glossary_id'] != ''
$Extra.visible = event_data['glossary_id'] != ''
if event_data['glossary_id']:
var glossary_default
for d in DialogicResources.get_default_definitions()['glossary']:
if d['id'] == event_data['glossary_id']:
glossary_default = d
if glossary_default == null:
print('[D] The glossary item with id ', event_data['glossary_id'], ' cannot be found anymore. The event will be reset.')
event_data['glossary_id'] = ''
load_data(event_data)
return
title_input.placeholder_text = glossary_default['title']
text_input.placeholder_text = glossary_default['text']
extra_input.placeholder_text = glossary_default['extra']
# Now update the ui nodes to display the data.
if event_data['title'] == "[No Change]":
title_check.pressed = true
title_input.text = ""
else:
title_check.pressed = false
title_input.text = event_data['title']
if event_data['text'] == "[No Change]":
text_check.pressed = true
text_input.text = ""
else:
text_check.pressed = false
text_input.text = event_data['text']
if event_data['extra'] == "[No Change]":
extra_check.pressed = true
extra_input.text = ""
else:
extra_check.pressed = false
extra_input.text = event_data['extra']
# has to return the wanted preview, only useful for body parts
func get_preview():
if event_data['glossary_id']:
var text := ""
if event_data['title'] != "[No Change]":
text += "Changes title to '"+event_data['title']+"'. "
if event_data['extra'] != "[No Change]":
text += "Changes extra to '"+event_data['extra']+"'. "
if event_data['text'] != "[No Change]":
text += "Changes text to '"+event_data['text']+"'. "
return text
return ''
func _on_TitleField_text_changed(text):
event_data['title'] = text
# informs the parent about the changes!
data_changed()
func _on_TextField_text_changed(text):
event_data['text'] = text
# informs the parent about the changes!
data_changed()
func _on_ExtraField_text_changed(text):
event_data['extra'] = text
# informs the parent about the changes!
data_changed()
func _on_TitleCheck_toggled(toggle):
if toggle:
event_data['title'] = "[No Change]"
title_input.editable = false
else:
event_data['title'] = title_input.text
title_input.editable = true
# informs the parent about the changes!
data_changed()
func _on_TextCheck_toggled(toggle):
if toggle:
event_data['text'] = "[No Change]"
text_input.editable = false
else:
event_data['text'] = text_input.text
text_input.editable = true
# informs the parent about the changes!
data_changed()
func _on_ExtraCheck_toggled(toggle):
if toggle:
event_data['extra'] = "[No Change]"
extra_input.editable = false
else:
event_data['extra'] = extra_input.text
extra_input.editable = true
# informs the parent about the changes!
data_changed()
@@ -0,0 +1,27 @@
[gd_scene load_steps=4 format=2]
[ext_resource path="res://addons/dialogic/Editor/Events/Parts/ResourcePickers/Definitions/EventPart_GlossaryPicker.gd" type="Script" id=1]
[ext_resource path="res://addons/dialogic/Editor/Events/Parts/ResourcePickers/ResourcePickerMenu.tscn" type="PackedScene" id=2]
[ext_resource path="res://addons/dialogic/Editor/Events/Parts/Text/GreyLabel.tscn" type="PackedScene" id=3]
[node name="GlossaryPicker" type="HBoxContainer"]
margin_right = 40.0
margin_bottom = 40.0
size_flags_vertical = 4
script = ExtResource( 1 )
default_text = "Glossary item"
[node name="Label" parent="." instance=ExtResource( 3 )]
margin_top = 13.0
margin_right = 93.0
margin_bottom = 27.0
custom_colors/font_color = Color( 0, 0, 0, 1 )
text = "Set content of "
[node name="MenuButton" parent="." instance=ExtResource( 2 )]
margin_left = 97.0
margin_top = 8.0
margin_right = 285.0
margin_bottom = 32.0
custom_colors/font_color = Color( 0.8, 0.807843, 0.827451, 1 )
text = "Select Glossary Item"
@@ -0,0 +1,87 @@
[gd_scene load_steps=3 format=2]
[ext_resource path="res://addons/dialogic/Editor/Events/Parts/Text/CustomLineEdit.tscn" type="PackedScene" id=1]
[ext_resource path="res://addons/dialogic/Editor/Events/Parts/ResourcePickers/Definitions/EventPart_SetGlossary.gd" type="Script" id=3]
[node name="SetGlossary" type="VBoxContainer"]
margin_right = 40.0
margin_bottom = 40.0
size_flags_horizontal = 0
script = ExtResource( 3 )
__meta__ = {
"_edit_use_anchors_": false
}
[node name="Title" type="HBoxContainer" parent="."]
margin_right = 331.0
margin_bottom = 27.0
custom_constants/separation = 20
[node name="Label" type="Label" parent="Title"]
margin_top = 6.0
margin_right = 50.0
margin_bottom = 20.0
rect_min_size = Vector2( 50, 0 )
text = "Title:"
[node name="Input" parent="Title" instance=ExtResource( 1 )]
margin_left = 70.0
margin_right = 200.0
margin_bottom = 27.0
size_flags_horizontal = 3
[node name="Check" type="CheckBox" parent="Title"]
margin_left = 220.0
margin_right = 331.0
margin_bottom = 27.0
text = "Don't change"
[node name="Text" type="HBoxContainer" parent="."]
margin_top = 31.0
margin_right = 331.0
margin_bottom = 58.0
custom_constants/separation = 20
[node name="Label" type="Label" parent="Text"]
margin_top = 6.0
margin_right = 50.0
margin_bottom = 20.0
rect_min_size = Vector2( 50, 0 )
text = "Text:"
[node name="Input" parent="Text" instance=ExtResource( 1 )]
margin_left = 70.0
margin_right = 200.0
margin_bottom = 27.0
size_flags_horizontal = 3
[node name="Check" type="CheckBox" parent="Text"]
margin_left = 220.0
margin_right = 331.0
margin_bottom = 27.0
text = "Don't change"
[node name="Extra" type="HBoxContainer" parent="."]
margin_top = 62.0
margin_right = 331.0
margin_bottom = 89.0
custom_constants/separation = 20
[node name="Label" type="Label" parent="Extra"]
margin_top = 6.0
margin_right = 50.0
margin_bottom = 20.0
rect_min_size = Vector2( 50, 0 )
text = "Extra:"
[node name="Input" parent="Extra" instance=ExtResource( 1 )]
margin_left = 70.0
margin_right = 200.0
margin_bottom = 27.0
size_flags_horizontal = 3
[node name="Check" type="CheckBox" parent="Extra"]
margin_left = 220.0
margin_right = 331.0
margin_bottom = 27.0
text = "Don't change"