From 5fc8d1426ba698717e2fc346fea1dac9efd1d7d8 Mon Sep 17 00:00:00 2001 From: Arnaud Vergnet Date: Wed, 7 Apr 2021 22:32:31 +0200 Subject: [PATCH] update dialogic to 1.1pre --- addons/dialogic/Dialog.tscn | 10 +- .../Editor/CharacterEditor/CharacterEditor.gd | 2 +- .../DefinitionEditor/DefinitionEditor.gd | 2 +- addons/dialogic/Editor/EditorView.gd | 72 +- addons/dialogic/Editor/EditorView.tscn | 163 +- .../dialogic/Editor/MasterTree/MasterTree.gd | 164 +- addons/dialogic/Editor/Pieces/CallNode.gd | 93 + addons/dialogic/Editor/Pieces/CallNode.tscn | 143 ++ .../Pieces/Common/PieceExtraSettings.gd | 7 +- .../Pieces/Common/PieceExtraSettings.tscn | 2 +- .../Editor/Pieces/Common/SpinBoxPreventDnD.gd | 8 + .../dialogic/Editor/Pieces/IfCondition.tscn | 3 +- addons/dialogic/Editor/Pieces/SceneEvent.gd | 6 +- addons/dialogic/Editor/Pieces/TextBlock.gd | 27 +- addons/dialogic/Editor/Pieces/TextBlock.tscn | 7 +- .../dialogic/Editor/Pieces/WaitSeconds.tscn | 4 +- .../Editor/SettingsEditor/SettingsEditor.gd | 10 + .../Editor/SettingsEditor/SettingsEditor.tscn | 57 +- .../Editor/ThemeEditor/ThemeEditor.gd | 259 ++- .../Editor/ThemeEditor/ThemeEditor.tscn | 1650 +++++++++-------- .../Editor/TimelineEditor/EventButton.gd | 16 + .../Editor/TimelineEditor/TimelineArea.gd | 139 ++ .../Editor/TimelineEditor/TimelineEditor.gd | 188 +- .../Editor/TimelineEditor/TimelineEditor.tscn | 217 ++- .../Images/Resources/character-1.25.svg | 4 + .../Resources/character-1.25.svg.import | 34 + .../dialogic/Images/Resources/character-2.svg | 4 + .../Images/Resources/character-2.svg.import | 34 + .../dialogic/Images/Resources/character.svg | 4 + .../character.svg.import} | 6 +- .../Images/Resources/definition-1.25.svg | 3 + .../Resources/definition-1.25.svg.import | 34 + .../Images/Resources/definition-2.svg | 3 + .../Images/Resources/definition-2.svg.import | 34 + .../dialogic/Images/Resources/definition.svg | 4 +- .../Images/Resources/glossary-1.25.svg | 3 + .../Images/Resources/glossary-1.25.svg.import | 34 + .../dialogic/Images/Resources/glossary-2.svg | 3 + .../Images/Resources/glossary-2.svg.import | 34 + addons/dialogic/Images/Resources/glossary.svg | 4 +- .../dialogic/Images/Resources/theme-1.25.svg | 4 + .../Images/Resources/theme-1.25.svg.import | 34 + addons/dialogic/Images/Resources/theme-2.svg | 4 + .../theme-2.svg.import} | 6 +- addons/dialogic/Images/Resources/theme.svg | 6 +- .../Images/Resources/timeline-1.25.svg | 6 + .../Images/Resources/timeline-1.25.svg.import | 34 + .../dialogic/Images/Resources/timeline-2.svg | 6 + .../Images/Resources/timeline-2.svg.import | 34 + addons/dialogic/Images/Resources/timeline.svg | 7 + .../timeline.svg.import} | 6 +- .../Images/Toolbar/add-character-1.25.svg | 4 + .../Toolbar/add-character-1.25.svg.import | 34 + .../Images/Toolbar/add-character-2.svg | 4 + .../Images/Toolbar/add-character-2.svg.import | 34 + .../dialogic/Images/Toolbar/add-character.svg | 6 +- .../Images/Toolbar/add-definition-1.25.svg | 4 + .../Toolbar/add-definition-1.25.svg.import | 34 + .../Images/Toolbar/add-definition-2.svg | 4 + .../Toolbar/add-definition-2.svg.import | 34 + .../Images/Toolbar/add-definition.svg | 6 +- .../Images/Toolbar/add-glossary-1.25.svg | 4 + .../Toolbar/add-glossary-1.25.svg.import | 34 + .../Images/Toolbar/add-glossary-2.svg | 4 + .../Images/Toolbar/add-glossary-2.svg.import | 34 + .../dialogic/Images/Toolbar/add-glossary.svg | 4 + .../Images/Toolbar/add-glossary.svg.import | 34 + .../Images/Toolbar/add-theme-1.25.svg | 5 + .../Images/Toolbar/add-theme-1.25.svg.import | 34 + .../dialogic/Images/Toolbar/add-theme-2.svg | 5 + .../Images/Toolbar/add-theme-2.svg.import | 34 + addons/dialogic/Images/Toolbar/add-theme.svg | 8 +- .../Images/Toolbar/add-timeline-1.25.svg | 7 + .../Toolbar/add-timeline-1.25.svg.import | 34 + .../Images/Toolbar/add-timeline-2.svg | 7 + .../Images/Toolbar/add-timeline-2.svg.import | 34 + .../dialogic/Images/Toolbar/add-timeline.svg | 12 +- addons/dialogic/Images/Tools.svg | 1 - addons/dialogic/Images/icon.svg | 5 - addons/dialogic/Images/logo.png | Bin 4914 -> 0 bytes addons/dialogic/Nodes/dialog_node.gd | 179 +- addons/dialogic/Other/DialogicResources.gd | 40 +- .../Other/inspector_timeline_picker.gd | 17 +- addons/dialogic/Other/timeline_picker.gd | 62 +- addons/dialogic/dialogic.gd | 2 + addons/dialogic/plugin.cfg | 2 +- dialogic/characters/character-1616658471.json | 2 +- dialogic/timelines/timeline-1616656510.json | 2 +- dialogic/timelines/timeline-1616657347.json | 2 +- dialogic/timelines/timeline-1616659153.json | 2 +- dialogic/timelines/timeline-1616659306.json | 2 +- dialogic/timelines/timeline-1616659917.json | 2 +- dialogic/timelines/timeline-1616660188.json | 2 +- dialogic/timelines/timeline-1616660446.json | 2 +- dialogic/timelines/timeline-1616660984.json | 2 +- dialogic/timelines/timeline-1616661304.json | 2 +- dialogic/timelines/timeline-1616661658.json | 2 +- dialogic/timelines/timeline-1616661685.json | 2 +- dialogic/timelines/timeline-1616662258.json | 2 +- 99 files changed, 3198 insertions(+), 1232 deletions(-) create mode 100644 addons/dialogic/Editor/Pieces/CallNode.gd create mode 100644 addons/dialogic/Editor/Pieces/CallNode.tscn create mode 100644 addons/dialogic/Editor/Pieces/Common/SpinBoxPreventDnD.gd create mode 100644 addons/dialogic/Editor/TimelineEditor/EventButton.gd create mode 100644 addons/dialogic/Editor/TimelineEditor/TimelineArea.gd create mode 100644 addons/dialogic/Images/Resources/character-1.25.svg create mode 100644 addons/dialogic/Images/Resources/character-1.25.svg.import create mode 100644 addons/dialogic/Images/Resources/character-2.svg create mode 100644 addons/dialogic/Images/Resources/character-2.svg.import create mode 100644 addons/dialogic/Images/Resources/character.svg rename addons/dialogic/Images/{icon.svg.import => Resources/character.svg.import} (67%) create mode 100644 addons/dialogic/Images/Resources/definition-1.25.svg create mode 100644 addons/dialogic/Images/Resources/definition-1.25.svg.import create mode 100644 addons/dialogic/Images/Resources/definition-2.svg create mode 100644 addons/dialogic/Images/Resources/definition-2.svg.import create mode 100644 addons/dialogic/Images/Resources/glossary-1.25.svg create mode 100644 addons/dialogic/Images/Resources/glossary-1.25.svg.import create mode 100644 addons/dialogic/Images/Resources/glossary-2.svg create mode 100644 addons/dialogic/Images/Resources/glossary-2.svg.import create mode 100644 addons/dialogic/Images/Resources/theme-1.25.svg create mode 100644 addons/dialogic/Images/Resources/theme-1.25.svg.import create mode 100644 addons/dialogic/Images/Resources/theme-2.svg rename addons/dialogic/Images/{Tools.svg.import => Resources/theme-2.svg.import} (68%) create mode 100644 addons/dialogic/Images/Resources/timeline-1.25.svg create mode 100644 addons/dialogic/Images/Resources/timeline-1.25.svg.import create mode 100644 addons/dialogic/Images/Resources/timeline-2.svg create mode 100644 addons/dialogic/Images/Resources/timeline-2.svg.import create mode 100644 addons/dialogic/Images/Resources/timeline.svg rename addons/dialogic/Images/{logo.png.import => Resources/timeline.svg.import} (67%) create mode 100644 addons/dialogic/Images/Toolbar/add-character-1.25.svg create mode 100644 addons/dialogic/Images/Toolbar/add-character-1.25.svg.import create mode 100644 addons/dialogic/Images/Toolbar/add-character-2.svg create mode 100644 addons/dialogic/Images/Toolbar/add-character-2.svg.import create mode 100644 addons/dialogic/Images/Toolbar/add-definition-1.25.svg create mode 100644 addons/dialogic/Images/Toolbar/add-definition-1.25.svg.import create mode 100644 addons/dialogic/Images/Toolbar/add-definition-2.svg create mode 100644 addons/dialogic/Images/Toolbar/add-definition-2.svg.import create mode 100644 addons/dialogic/Images/Toolbar/add-glossary-1.25.svg create mode 100644 addons/dialogic/Images/Toolbar/add-glossary-1.25.svg.import create mode 100644 addons/dialogic/Images/Toolbar/add-glossary-2.svg create mode 100644 addons/dialogic/Images/Toolbar/add-glossary-2.svg.import create mode 100644 addons/dialogic/Images/Toolbar/add-glossary.svg create mode 100644 addons/dialogic/Images/Toolbar/add-glossary.svg.import create mode 100644 addons/dialogic/Images/Toolbar/add-theme-1.25.svg create mode 100644 addons/dialogic/Images/Toolbar/add-theme-1.25.svg.import create mode 100644 addons/dialogic/Images/Toolbar/add-theme-2.svg create mode 100644 addons/dialogic/Images/Toolbar/add-theme-2.svg.import create mode 100644 addons/dialogic/Images/Toolbar/add-timeline-1.25.svg create mode 100644 addons/dialogic/Images/Toolbar/add-timeline-1.25.svg.import create mode 100644 addons/dialogic/Images/Toolbar/add-timeline-2.svg create mode 100644 addons/dialogic/Images/Toolbar/add-timeline-2.svg.import delete mode 100644 addons/dialogic/Images/Tools.svg delete mode 100644 addons/dialogic/Images/icon.svg delete mode 100644 addons/dialogic/Images/logo.png diff --git a/addons/dialogic/Dialog.tscn b/addons/dialogic/Dialog.tscn index d5e15ef..fa49bbf 100644 --- a/addons/dialogic/Dialog.tscn +++ b/addons/dialogic/Dialog.tscn @@ -87,9 +87,9 @@ anchor_left = 0.5 anchor_top = 1.0 anchor_right = 0.5 anchor_bottom = 1.0 -margin_left = -455.0 +margin_left = -250.0 margin_top = -207.0 -margin_right = 455.0 +margin_right = 250.0 margin_bottom = -40.0 __meta__ = { "_edit_use_anchors_": false @@ -136,8 +136,6 @@ __meta__ = { "_edit_use_anchors_": false } -[node name="Tween" type="Tween" parent="TextBubble"] - [node name="NextIndicator" type="TextureRect" parent="TextBubble"] visible = false anchor_left = 1.0 @@ -203,6 +201,8 @@ __meta__ = { "_edit_use_anchors_": false } +[node name="Tween" type="Tween" parent="TextBubble"] + [node name="Options" type="VBoxContainer" parent="."] anchor_left = 0.5 anchor_top = 0.5 @@ -340,8 +340,8 @@ __meta__ = { [node name="Timer" type="Timer" parent="DefinitionInfo"] [node name="WaitSeconds" type="Timer" parent="."] + [connection signal="meta_hover_ended" from="TextBubble/RichTextLabel" to="." method="_on_RichTextLabel_meta_hover_ended"] [connection signal="meta_hover_started" from="TextBubble/RichTextLabel" to="." method="_on_RichTextLabel_meta_hover_started"] -[connection signal="tween_completed" from="TextBubble/Tween" to="." method="_on_Tween_tween_completed"] [connection signal="timeout" from="DefinitionInfo/Timer" to="." method="_on_Definition_Timer_timeout"] [connection signal="timeout" from="WaitSeconds" to="." method="_on_WaitSeconds_timeout"] diff --git a/addons/dialogic/Editor/CharacterEditor/CharacterEditor.gd b/addons/dialogic/Editor/CharacterEditor/CharacterEditor.gd index f426639..b049eee 100644 --- a/addons/dialogic/Editor/CharacterEditor/CharacterEditor.gd +++ b/addons/dialogic/Editor/CharacterEditor/CharacterEditor.gd @@ -2,7 +2,7 @@ tool extends ScrollContainer var editor_reference -onready var master_tree = get_node('../MasterTree') +onready var master_tree = get_node('../MasterTreeContainer/MasterTree') var opened_character_data var portrait_entry = load("res://addons/dialogic/Editor/CharacterEditor/PortraitEntry.tscn") onready var nodes = { diff --git a/addons/dialogic/Editor/DefinitionEditor/DefinitionEditor.gd b/addons/dialogic/Editor/DefinitionEditor/DefinitionEditor.gd index 771b4a3..18b1b32 100644 --- a/addons/dialogic/Editor/DefinitionEditor/DefinitionEditor.gd +++ b/addons/dialogic/Editor/DefinitionEditor/DefinitionEditor.gd @@ -2,7 +2,7 @@ tool extends ScrollContainer var editor_reference -onready var master_tree = get_node('../MasterTree') +onready var master_tree = get_node('../MasterTreeContainer/MasterTree') var current_definition = null onready var nodes = { diff --git a/addons/dialogic/Editor/EditorView.gd b/addons/dialogic/Editor/EditorView.gd index 61cde66..3c8f47f 100644 --- a/addons/dialogic/Editor/EditorView.gd +++ b/addons/dialogic/Editor/EditorView.gd @@ -6,7 +6,7 @@ var editor_file_dialog # EditorFileDialog var file_picker_data: Dictionary = {'method': '', 'node': self} var current_editor_view: String = 'Master' var version_string: String -onready var master_tree = $MainPanel/MasterTree +onready var master_tree = $MainPanel/MasterTreeContainer/MasterTree onready var timeline_editor = $MainPanel/TimelineEditor onready var character_editor = $MainPanel/CharacterEditor onready var definition_editor = $MainPanel/DefinitionEditor @@ -27,6 +27,40 @@ func _ready(): master_tree.connect("editor_selected", self, 'on_master_tree_editor_selected') + + # Sizes + # This part of the code is a bit terrible. But there is no better way + # of doing this in Godot at the moment. I'm sorry. + var separation = get_constant("separation", "BoxContainer") + $MainPanel.margin_left = separation + $MainPanel.margin_right = separation * -1 + $MainPanel.margin_bottom = separation * -1 + $MainPanel.margin_top = 38 + var modifier = '' + var _scale = get_constant("inspector_margin", "Editor") + _scale = _scale * 0.125 + if _scale == 1: + $MainPanel.margin_top = 30 + if _scale == 1.25: + modifier = '-1.25' + $MainPanel.margin_top = 37 + if _scale == 1.5: + modifier = '-1.25' + $MainPanel.margin_top = 46 + if _scale == 1.75: + modifier = '-1.25' + $MainPanel.margin_top = 53 + if _scale == 2: + $MainPanel.margin_top = 59 + modifier = '-2' + $ToolBar/NewTimelineButton.icon = load("res://addons/dialogic/Images/Toolbar/add-timeline" + modifier + ".svg") + $ToolBar/NewCharactersButton.icon = load("res://addons/dialogic/Images/Toolbar/add-character" + modifier + ".svg") + $ToolBar/NewDefinitionButton.icon = load("res://addons/dialogic/Images/Toolbar/add-definition" + modifier + ".svg") + $ToolBar/NewThemeButton.icon = load("res://addons/dialogic/Images/Toolbar/add-theme" + modifier + ".svg") + $ToolBar/NewThemeButton.icon = load("res://addons/dialogic/Images/Toolbar/add-theme" + modifier + ".svg") + + $ToolBar/FoldTools/ButtonFold.icon = get_icon("GuiTreeArrowRight", "EditorIcons") + $ToolBar/FoldTools/ButtonUnfold.icon = get_icon("GuiTreeArrowDown", "EditorIcons") # Toolbar $ToolBar/NewTimelineButton.connect('pressed', $MainPanel/TimelineEditor, 'new_timeline') $ToolBar/NewCharactersButton.connect('pressed', $MainPanel/CharacterEditor, 'new_character') @@ -55,7 +89,9 @@ func _ready(): var err = config.load("res://addons/dialogic/plugin.cfg") if err == OK: version_string = config.get_value("plugin", "version", "?") - $ToolBar/Version.text = 'v' + version_string + $ToolBar/Version.text = 'Dialogic v' + version_string + + $MainPanel/MasterTreeContainer/FilterMasterTreeEdit.right_icon = get_icon("Search", "EditorIcons") func on_master_tree_editor_selected(editor: String): @@ -75,10 +111,10 @@ func _on_TimelinePopupMenu_id_pressed(id): func _on_RemoveTimelineConfirmation_confirmed(): var dir = Directory.new() var target = $MainPanel/TimelineEditor.timeline_file - print('target: ', target) + #'target: ', target) DialogicResources.delete_timeline(target) - $MainPanel/MasterTree.remove_selected() - $MainPanel/MasterTree.hide_all_editors() + $MainPanel/MasterTreeContainer/MasterTree.remove_selected() + $MainPanel/MasterTreeContainer/MasterTree.hide_all_editors() # Character context menu @@ -95,6 +131,10 @@ func _on_ThemePopupMenu_id_pressed(id): OS.shell_open(ProjectSettings.globalize_path(DialogicResources.get_path('THEME_DIR'))) if id == 1: $RemoveThemeConfirmation.popup_centered() + if id == 2: + var filename = $MainPanel/MasterTreeContainer/MasterTree.get_selected().get_metadata(0)['file'] + if (filename.begins_with('theme-')): + theme_editor.duplicate_theme(filename) # Definition context menu @@ -108,22 +148,22 @@ func _on_DefinitionPopupMenu_id_pressed(id): func _on_RemoveDefinitionConfirmation_confirmed(): var target = $MainPanel/DefinitionEditor.current_definition['id'] DialogicResources.delete_default_definition(target) - $MainPanel/MasterTree.remove_selected() - $MainPanel/MasterTree.hide_all_editors() + $MainPanel/MasterTreeContainer/MasterTree.remove_selected() + $MainPanel/MasterTreeContainer/MasterTree.hide_all_editors() func _on_RemoveCharacterConfirmation_confirmed(): - var filename = DialogicResources.get_path('CHAR_DIR', $MainPanel/CharacterEditor.opened_character_data['id']) + var filename = $MainPanel/CharacterEditor.opened_character_data['id'] DialogicResources.delete_character(filename) - $MainPanel/MasterTree.remove_selected() - $MainPanel/MasterTree.hide_all_editors() + $MainPanel/MasterTreeContainer/MasterTree.remove_selected() + $MainPanel/MasterTreeContainer/MasterTree.hide_all_editors() func _on_RemoveThemeConfirmation_confirmed(): - var filename = $MainPanel/MasterTree.get_selected().get_metadata(0)['file'] + var filename = $MainPanel/MasterTreeContainer/MasterTree.get_selected().get_metadata(0)['file'] DialogicResources.delete_theme(filename) - $MainPanel/MasterTree.remove_selected() - $MainPanel/MasterTree.hide_all_editors() + $MainPanel/MasterTreeContainer/MasterTree.remove_selected() + $MainPanel/MasterTreeContainer/MasterTree.hide_all_editors() # Godot dialog @@ -157,12 +197,6 @@ func _on_file_selected(path): dprint(path) -func _on_Logo_gui_input(event) -> void: - # I should probably replace this with an "About Dialogic" dialog - if event is InputEventMouseButton and event.button_index == 1: - OS.shell_open("https://github.com/coppolaemilio/dialogic") - - func dprint(what) -> void: if debug_mode: print(what) diff --git a/addons/dialogic/Editor/EditorView.tscn b/addons/dialogic/Editor/EditorView.tscn index 7f72ae9..e6e08d0 100644 --- a/addons/dialogic/Editor/EditorView.tscn +++ b/addons/dialogic/Editor/EditorView.tscn @@ -1,24 +1,21 @@ -[gd_scene load_steps=20 format=2] +[gd_scene load_steps=17 format=2] [ext_resource path="res://addons/dialogic/Editor/EditorView.gd" type="Script" id=1] [ext_resource path="res://addons/dialogic/Editor/TimelineEditor/TimelineEditor.tscn" type="PackedScene" id=2] -[ext_resource path="res://addons/dialogic/Images/Toolbar/add-timeline.svg" type="Texture" id=3] -[ext_resource path="res://addons/dialogic/Images/Toolbar/add-character.svg" type="Texture" id=4] -[ext_resource path="res://addons/dialogic/Images/Toolbar/add-theme.svg" type="Texture" id=5] +[ext_resource path="res://addons/dialogic/Images/Toolbar/add-character.svg" type="Texture" id=3] +[ext_resource path="res://addons/dialogic/Images/Toolbar/add-timeline.svg" type="Texture" id=4] +[ext_resource path="res://addons/dialogic/Images/Toolbar/add-definition.svg" type="Texture" id=5] [ext_resource path="res://addons/dialogic/Editor/SettingsEditor/SettingsEditor.tscn" type="PackedScene" id=6] [ext_resource path="res://addons/dialogic/Editor/CharacterEditor/CharacterEditor.tscn" type="PackedScene" id=7] [ext_resource path="res://addons/dialogic/Editor/ThemeEditor/ThemeEditor.tscn" type="PackedScene" id=8] -[ext_resource path="res://addons/dialogic/Images/open-icon.svg" type="Texture" id=9] -[ext_resource path="res://addons/dialogic/Images/closed-icon.svg" type="Texture" id=10] [ext_resource path="res://addons/dialogic/Images/ActionCopy.svg" type="Texture" id=11] [ext_resource path="res://addons/dialogic/Editor/DefinitionEditor/DefinitionEditor.tscn" type="PackedScene" id=12] -[ext_resource path="res://addons/dialogic/Images/Toolbar/add-definition.svg" type="Texture" id=13] -[ext_resource path="res://addons/dialogic/Images/logo.png" type="Texture" id=14] +[ext_resource path="res://addons/dialogic/Images/Toolbar/add-theme.svg" type="Texture" id=13] [ext_resource path="res://addons/dialogic/Images/Remove.svg" type="Texture" id=22] [ext_resource path="res://addons/dialogic/Images/Filesystem.svg" type="Texture" id=26] [ext_resource path="res://addons/dialogic/Editor/MasterTree/MasterTree.tscn" type="PackedScene" id=35] -[sub_resource type="Image" id=3] +[sub_resource type="Image" id=1] data = { "data": PoolByteArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), "format": "LumAlpha8", @@ -30,16 +27,12 @@ data = { [sub_resource type="ImageTexture" id=2] flags = 4 flags = 4 -image = SubResource( 3 ) +image = SubResource( 1 ) size = Vector2( 16, 16 ) [node name="EditorView" type="Control"] anchor_right = 1.0 anchor_bottom = 1.0 -margin_left = 8.0 -margin_top = 8.0 -margin_right = -8.0 -margin_bottom = -8.0 rect_min_size = Vector2( 0, 200 ) size_flags_horizontal = 3 size_flags_vertical = 3 @@ -50,7 +43,7 @@ __meta__ = { [node name="ToolBar" type="HBoxContainer" parent="."] anchor_right = 1.0 -margin_bottom = 30.0 +margin_bottom = 32.0 custom_constants/separation = 0 __meta__ = { "_edit_use_anchors_": false @@ -58,119 +51,118 @@ __meta__ = { [node name="NewTimelineButton" type="Button" parent="ToolBar"] self_modulate = Color( 0.870588, 0.870588, 0.870588, 1 ) -margin_right = 34.0 -margin_bottom = 30.0 +margin_right = 28.0 +margin_bottom = 32.0 hint_tooltip = "New Timeline" focus_mode = 0 -icon = ExtResource( 3 ) +icon = ExtResource( 4 ) flat = true [node name="NewCharactersButton" type="ToolButton" parent="ToolBar"] self_modulate = Color( 0.870588, 0.870588, 0.870588, 1 ) -margin_left = 34.0 -margin_right = 68.0 -margin_bottom = 30.0 +margin_left = 28.0 +margin_right = 56.0 +margin_bottom = 32.0 hint_tooltip = "New Character" focus_mode = 0 -icon = ExtResource( 4 ) +icon = ExtResource( 3 ) [node name="NewDefinitionButton" type="Button" parent="ToolBar"] self_modulate = Color( 0.870588, 0.870588, 0.870588, 1 ) -margin_left = 68.0 -margin_right = 102.0 -margin_bottom = 30.0 +margin_left = 56.0 +margin_right = 84.0 +margin_bottom = 32.0 hint_tooltip = "New Definition" focus_mode = 0 -icon = ExtResource( 13 ) -flat = true - -[node name="NewThemeButton" type="Button" parent="ToolBar"] -self_modulate = Color( 0.870588, 0.870588, 0.870588, 1 ) -margin_left = 102.0 -margin_right = 136.0 -margin_bottom = 30.0 -hint_tooltip = "New Theme" -focus_mode = 0 icon = ExtResource( 5 ) flat = true +[node name="NewThemeButton" type="Button" parent="ToolBar"] +self_modulate = Color( 0.870588, 0.870588, 0.870588, 1 ) +margin_left = 84.0 +margin_right = 112.0 +margin_bottom = 32.0 +hint_tooltip = "New Theme" +focus_mode = 0 +icon = ExtResource( 13 ) +flat = true + [node name="FoldTools" type="HBoxContainer" parent="ToolBar"] visible = false -margin_left = 136.0 -margin_right = 271.0 -margin_bottom = 30.0 +margin_left = 112.0 +margin_right = 203.0 +margin_bottom = 32.0 [node name="Label" type="Label" parent="ToolBar/FoldTools"] -margin_top = 8.0 +margin_top = 9.0 margin_right = 59.0 -margin_bottom = 22.0 +margin_bottom = 23.0 text = " Fold " -[node name="ButtonFold" type="Button" parent="ToolBar/FoldTools"] +[node name="ButtonFold" type="ToolButton" parent="ToolBar/FoldTools"] margin_left = 63.0 -margin_right = 97.0 -margin_bottom = 30.0 -icon = ExtResource( 10 ) +margin_right = 75.0 +margin_bottom = 32.0 +icon = SubResource( 2 ) align = 0 -[node name="ButtonUnfold" type="Button" parent="ToolBar/FoldTools"] -margin_left = 101.0 -margin_right = 135.0 -margin_bottom = 30.0 -icon = ExtResource( 9 ) +[node name="ButtonUnfold" type="ToolButton" parent="ToolBar/FoldTools"] +margin_left = 79.0 +margin_right = 91.0 +margin_bottom = 32.0 +icon = SubResource( 2 ) align = 0 [node name="Spacer" type="Control" parent="ToolBar"] -margin_left = 136.0 -margin_right = 751.0 -margin_bottom = 30.0 +margin_left = 112.0 +margin_right = 832.0 +margin_bottom = 32.0 size_flags_horizontal = 3 [node name="Docs" type="ToolButton" parent="ToolBar"] self_modulate = Color( 0.870588, 0.870588, 0.870588, 1 ) -margin_left = 751.0 -margin_right = 861.0 -margin_bottom = 30.0 +margin_left = 832.0 +margin_right = 942.0 +margin_bottom = 32.0 hint_tooltip = "Theme Editor" mouse_default_cursor_shape = 2 text = "Online Docs" icon = SubResource( 2 ) -[node name="Logo" type="TextureRect" parent="ToolBar"] -margin_left = 861.0 -margin_right = 981.0 -margin_bottom = 30.0 -rect_min_size = Vector2( 120, 0 ) -mouse_default_cursor_shape = 2 -texture = ExtResource( 14 ) -expand = true -stretch_mode = 5 - [node name="Version" type="Label" parent="ToolBar"] self_modulate = Color( 1, 1, 1, 0.631373 ) -margin_left = 981.0 -margin_top = 8.0 -margin_right = 1008.0 -margin_bottom = 22.0 -text = "v1.0" +margin_left = 942.0 +margin_top = 9.0 +margin_right = 1024.0 +margin_bottom = 23.0 +text = "Dialogic v1.1" [node name="MainPanel" type="HSplitContainer" parent="."] anchor_right = 1.0 anchor_bottom = 1.0 -margin_left = 6.0 margin_top = 38.0 -margin_right = -5.0 -margin_bottom = -5.0 __meta__ = { "_edit_use_anchors_": false } -[node name="MasterTree" parent="MainPanel" instance=ExtResource( 35 )] +[node name="MasterTreeContainer" type="VBoxContainer" parent="MainPanel"] +margin_right = 150.0 +margin_bottom = 562.0 + +[node name="FilterMasterTreeEdit" type="LineEdit" parent="MainPanel/MasterTreeContainer"] +margin_right = 150.0 +margin_bottom = 26.0 +clear_button_enabled = true +right_icon = SubResource( 2 ) +placeholder_text = "Filter" + +[node name="MasterTree" parent="MainPanel/MasterTreeContainer" instance=ExtResource( 35 )] anchor_right = 0.0 anchor_bottom = 0.0 -margin_right = 180.0 -margin_bottom = 541.0 -rect_min_size = Vector2( 180, 0 ) +margin_top = 30.0 +margin_right = 150.0 +margin_bottom = 562.0 +rect_min_size = Vector2( 150, 0 ) size_flags_vertical = 3 [node name="TimelineEditor" parent="MainPanel" instance=ExtResource( 2 )] @@ -194,15 +186,15 @@ margin_right = 1253.0 margin_bottom = 661.0 [node name="Empty" type="CenterContainer" parent="MainPanel"] -margin_left = 192.0 -margin_right = 997.0 -margin_bottom = 541.0 +margin_left = 162.0 +margin_right = 1024.0 +margin_bottom = 562.0 [node name="VBoxContainer" type="VBoxContainer" parent="MainPanel/Empty"] -margin_left = 262.0 -margin_top = 263.0 -margin_right = 542.0 -margin_bottom = 277.0 +margin_left = 291.0 +margin_top = 274.0 +margin_right = 571.0 +margin_bottom = 288.0 [node name="Label" type="Label" parent="MainPanel/Empty/VBoxContainer"] margin_right = 280.0 @@ -234,7 +226,7 @@ margin_left = 171.799 margin_top = 209.0 margin_right = 267.799 margin_bottom = 229.0 -items = [ "Show in File Manager", ExtResource( 26 ), 0, false, false, 0, 0, null, "", false, "Remove Theme", ExtResource( 22 ), 0, false, false, 1, 0, null, "", false ] +items = [ "Show in File Manager", ExtResource( 26 ), 0, false, false, 0, 0, null, "", false, "Remove Theme", ExtResource( 22 ), 0, false, false, 1, 0, null, "", false, "Duplicate Theme", ExtResource( 11 ), 0, false, false, 2, 0, null, "", false ] __meta__ = { "_edit_use_anchors_": false } @@ -298,4 +290,3 @@ dialog_text = "Are you sure you want to remove this timeline? __meta__ = { "_edit_use_anchors_": false } -[connection signal="gui_input" from="ToolBar/Logo" to="." method="_on_Logo_gui_input"] diff --git a/addons/dialogic/Editor/MasterTree/MasterTree.gd b/addons/dialogic/Editor/MasterTree/MasterTree.gd index 0cc661c..f9c0891 100644 --- a/addons/dialogic/Editor/MasterTree/MasterTree.gd +++ b/addons/dialogic/Editor/MasterTree/MasterTree.gd @@ -1,26 +1,31 @@ tool extends Tree -onready var editor_reference = get_node('../..') -onready var timeline_editor = get_node('../TimelineEditor') -onready var character_editor = get_node('../CharacterEditor') -onready var definition_editor = get_node('../DefinitionEditor') -onready var settings_editor = get_node('../SettingsEditor') -onready var theme_editor = get_node('../ThemeEditor') -onready var empty_editor = get_node('../Empty') +onready var editor_reference = get_node('../../../') +onready var timeline_editor = get_node('../../TimelineEditor') +onready var character_editor = get_node('../../CharacterEditor') +onready var definition_editor = get_node('../../DefinitionEditor') +onready var settings_editor = get_node('../../SettingsEditor') +onready var theme_editor = get_node('../../ThemeEditor') +onready var empty_editor = get_node('../../Empty') +onready var filter_tree_edit = get_node('../FilterMasterTreeEdit') onready var tree = self -var timeline_icon = load("res://addons/dialogic/Images/timeline.svg") -var character_icon = load("res://addons/dialogic/Images/character.svg") -var theme_icon = load("res://addons/dialogic/Images/Resources/theme.svg") -var definition_icon = load("res://addons/dialogic/Images/Resources/definition.svg") -var glossary_icon = load("res://addons/dialogic/Images/Resources/glossary.svg") + +var timeline_icon +var character_icon +var theme_icon +var definition_icon +var glossary_icon + var timelines_tree var characters_tree var definitions_tree var themes_tree var settings_tree +var filter_tree_term = '' + signal editor_selected(selected) func _ready(): @@ -28,26 +33,49 @@ func _ready(): var root = tree.create_item() tree.set_hide_root(true) + var modifier = '' + var _scale = get_constant("inspector_margin", "Editor") + _scale = _scale * 0.125 + rect_min_size.x = 150 + if _scale == 1.25: + modifier = '-1.25' + rect_min_size.x = 180 + if _scale == 1.5: + modifier = '-1.25' + rect_min_size.x = 250 + if _scale == 1.75: + modifier = '-1.25' + rect_min_size.x = 250 + if _scale == 2: + modifier = '-2' + rect_min_size.x = 360 + rect_size.x = 0 + timeline_icon = load("res://addons/dialogic/Images/Resources/timeline" + modifier + ".svg") + character_icon = load("res://addons/dialogic/Images/Resources/character" + modifier + ".svg") + theme_icon = load("res://addons/dialogic/Images/Resources/theme" + modifier + ".svg") + definition_icon = load("res://addons/dialogic/Images/Resources/definition" + modifier + ".svg") + glossary_icon = load("res://addons/dialogic/Images/Resources/glossary" + modifier + ".svg") + # Creating the parents timelines_tree = tree.create_item(root) timelines_tree.set_selectable(0, false) timelines_tree.set_text(0, "Timelines") - #timelines_tree.set_icon(0, get_icon("Folder", "EditorIcons")) + timelines_tree.set_icon(0, get_icon("Folder", "EditorIcons")) characters_tree = tree.create_item(root) characters_tree.set_selectable(0, false) characters_tree.set_text(0, "Characters") - #characters_tree.set_icon(0, get_icon("Folder", "EditorIcons")) + characters_tree.set_icon(0, get_icon("Folder", "EditorIcons")) definitions_tree = tree.create_item(root) definitions_tree.set_selectable(0, false) definitions_tree.set_text(0, "Definitions") - #definitions_tree.set_icon(0, get_icon("Folder", "EditorIcons")) + definitions_tree.set_icon(0, get_icon("Folder", "EditorIcons")) themes_tree = tree.create_item(root) themes_tree.set_selectable(0, false) themes_tree.set_text(0, "Themes") - #themes_tree.set_icon(0, get_icon("Folder", "EditorIcons")) + themes_tree.set_icon(0, get_icon("Folder", "EditorIcons")) settings_tree = tree.create_item(root) settings_tree.set_selectable(0, true) @@ -62,6 +90,8 @@ func _ready(): connect('item_edited', self, '_on_item_edited') $RenamerReset.connect("timeout", self, '_on_renamer_reset_timeout') + filter_tree_edit.connect("text_changed", self, '_on_filter_tree_edit_changed') + #var subchild1 = tree.create_item(timelines_tree) #subchild1.set_text(0, "Subchild1") @@ -93,7 +123,13 @@ func _clear_tree_children(parent: TreeItem): func build_timelines(selected_item: String=''): _clear_tree_children(timelines_tree) for t in DialogicUtil.get_sorted_timeline_list(): - _add_timeline(t, not selected_item.empty() and t['file'] == selected_item) + if (filter_tree_term != ''): + if (filter_tree_term.to_lower() in t['file'].to_lower() or filter_tree_term.to_lower() in t['name'].to_lower()): + _add_timeline(t, not selected_item.empty() and t['file'] == selected_item) + else: + _add_timeline(t, not selected_item.empty() and t['file'] == selected_item) + # force redraw control + update() func _add_timeline(timeline, select = false): @@ -115,7 +151,13 @@ func _add_timeline(timeline, select = false): func build_themes(selected_item: String=''): _clear_tree_children(themes_tree) for t in DialogicUtil.get_sorted_theme_list(): - _add_theme(t, not selected_item.empty() and t['file'] == selected_item) + if (filter_tree_term != ''): + if (filter_tree_term.to_lower() in t['file'].to_lower() or filter_tree_term.to_lower() in t['name'].to_lower()): + _add_theme(t, not selected_item.empty() and t['file'] == selected_item) + else: + _add_theme(t, not selected_item.empty() and t['file'] == selected_item) + # force redraw tree + update() func _add_theme(theme_item, select = false): @@ -133,7 +175,13 @@ func _add_theme(theme_item, select = false): func build_characters(selected_item: String=''): _clear_tree_children(characters_tree) for t in DialogicUtil.get_sorted_character_list(): - _add_character(t, not selected_item.empty() and t['file'] == selected_item) + if (filter_tree_term != ''): + if (filter_tree_term.to_lower() in t['file'].to_lower() or filter_tree_term.to_lower() in t['name'].to_lower()): + _add_character(t, not selected_item.empty() and t['file'] == selected_item) + else: + _add_character(t, not selected_item.empty() and t['file'] == selected_item) + # force redraw tree + update() func _add_character(character, select = false): @@ -156,7 +204,13 @@ func _add_character(character, select = false): func build_definitions(selected_item: String=''): _clear_tree_children(definitions_tree) for t in DialogicUtil.get_sorted_default_definitions_list(): - _add_definition(t, not selected_item.empty() and t['id'] == selected_item) + if (filter_tree_term != ''): + if (filter_tree_term.to_lower() in t['name'].to_lower()): + _add_definition(t, not selected_item.empty() and t['id'] == selected_item) + else: + _add_definition(t, not selected_item.empty() and t['id'] == selected_item) + # force redraw tree + update() func _add_definition(definition, select = false): @@ -209,6 +263,7 @@ func show_character_editor(): settings_editor.visible = false empty_editor.visible = false + func show_timeline_editor(): emit_signal("editor_selected", 'timeline') character_editor.visible = false @@ -218,6 +273,7 @@ func show_timeline_editor(): settings_editor.visible = false empty_editor.visible = false + func show_definition_editor(): emit_signal("editor_selected", 'definition') character_editor.visible = false @@ -227,6 +283,7 @@ func show_definition_editor(): settings_editor.visible = false empty_editor.visible = false + func show_theme_editor(): emit_signal("editor_selected", 'theme') character_editor.visible = false @@ -236,6 +293,7 @@ func show_theme_editor(): settings_editor.visible = false empty_editor.visible = false + func show_settings_editor(): emit_signal("editor_selected", 'theme') character_editor.visible = false @@ -245,6 +303,7 @@ func show_settings_editor(): settings_editor.visible = true empty_editor.visible = false + func hide_all_editors(): emit_signal("editor_selected", 'none') character_editor.visible = false @@ -279,7 +338,8 @@ func remove_selected(): func refresh_timeline_list(): - print('update timeline list') + #print('update timeline list') + pass func _on_renamer_reset_timeout(): @@ -296,7 +356,6 @@ func _on_gui_input(event): func _on_item_edited(): - print('edited') var item = get_selected() var metadata = item.get_metadata(0) if metadata['editor'] == 'Timeline': @@ -320,6 +379,14 @@ func _on_item_edited(): func _on_autosave_timeout(): save_current_resource() + + +func _on_filter_tree_edit_changed(value): + filter_tree_term = value + build_timelines() + build_themes() + build_characters() + build_definitions() func save_current_resource(): @@ -336,3 +403,56 @@ func save_current_resource(): if metadata['editor'] == 'Definition': definition_editor.save_definition() # Note: Theme files auto saves on change + + +func select_timeline_item(timeline_name): + if (timeline_name == ''): + return + + var main_item = tree.get_root().get_children() + + # wow, godots tree traversal is extremly odd, or I just don't get it + while (main_item): + + if (main_item == null): + break + + if (main_item.has_method("get_text") && main_item.get_text(0) == "Timelines"): + var item = main_item.get_children() + while (item): + + if (not item.has_method("get_metadata")): + item = item.get_next() + continue + + var meta = item.get_metadata(0) + + if (meta == null): + item = item.get_next() + continue + + if (not meta.has("editor") or meta["editor"] != "Timeline"): + item = item.get_next() + continue + + # search for filename + if (meta.has("file") and meta["file"] == timeline_name): + # select this one + item.select(0) + return; + + # search for name + if (meta.has("name") and meta["name"] == timeline_name): + # select this one + item.select(0) + return; + + item = item.get_next() + break + else: + main_item = main_item.get_next() + + # fallback + hide_all_editors() + pass + diff --git a/addons/dialogic/Editor/Pieces/CallNode.gd b/addons/dialogic/Editor/Pieces/CallNode.gd new file mode 100644 index 0000000..7380718 --- /dev/null +++ b/addons/dialogic/Editor/Pieces/CallNode.gd @@ -0,0 +1,93 @@ +tool +extends Control + +var editor_reference +var editorPopup + + +# This is the information of this event and it will get parsed and saved to the JSON file. +var event_data = { + 'call_node': { + 'target_node_path': '', + 'method_name': '', + 'arguments': [] + } +} + + +func load_data(data): + event_data = data + + if (not event_data['call_node']['arguments'] is Array): + event_data['call_node']['arguments'] = [] + + for i in range(event_data['call_node']['arguments'].size()): + if (event_data['call_node']['arguments'][i] == null): + event_data['call_node']['arguments'][i] = '' + + $PanelContainer/VBoxContainer/Properties/TargetNodeEdit.text = event_data['call_node']['target_node_path'] + $PanelContainer/VBoxContainer/Properties/CallMethodEdit.text = event_data['call_node']['method_name'] + $PanelContainer/VBoxContainer/Properties/ArgumentsSpinBox.value = event_data['call_node']['arguments'].size() + + _create_argument_controls() + + +# signal callbacks + +func _on_Target_LineEdit_text_changed(new_text): + event_data['call_node']['target_node_path'] = new_text + +func _on_Method_LineEdit_text_changed(new_text): + event_data['call_node']['method_name'] = new_text + +func _on_ArgumentsSpinBox_value_changed(value): + event_data['call_node']['arguments'].resize(max(0, value)) + + for i in range(event_data['call_node']['arguments'].size()): + if (event_data['call_node']['arguments'][i] == null): + event_data['call_node']['arguments'][i] = '' + + _create_argument_controls() + pass + +func _on_argument_value_changed(value, arg_index): + if (arg_index < 0 or arg_index >= event_data['call_node']['arguments'].size()): + return + + event_data['call_node']['arguments'][arg_index] = str(value) + pass + +# helpers +func _create_argument_controls(): + if (not event_data['call_node']['arguments'] is Array): + return + + # clear old + for c in $PanelContainer/VBoxContainer/Arguments.get_children(): + $PanelContainer/VBoxContainer/Arguments.remove_child(c) + c.queue_free() + + # create controls + var index = 0 + for a in event_data['call_node']['arguments']: + var container = HBoxContainer.new() + container.name = "Argument%s" % index + + var label = Label.new() + label.name = "ArgumentLabel" + label.text = "Argument %s:" % index + label.rect_min_size.x = 100 + container.add_child(label) + + var edit = LineEdit.new() + edit.name = "ArgumentValue" + edit.text = str(a) + edit.connect("text_changed", self, "_on_argument_value_changed", [ index ]) + edit.rect_min_size.x = 250 + container.add_child(edit) + + $PanelContainer/VBoxContainer/Arguments.add_child(container) + + index += 1 + + pass diff --git a/addons/dialogic/Editor/Pieces/CallNode.tscn b/addons/dialogic/Editor/Pieces/CallNode.tscn new file mode 100644 index 0000000..5640ce5 --- /dev/null +++ b/addons/dialogic/Editor/Pieces/CallNode.tscn @@ -0,0 +1,143 @@ +[gd_scene load_steps=6 format=2] + +[ext_resource path="res://addons/dialogic/Images/Script.svg" type="Texture" id=1] +[ext_resource path="res://addons/dialogic/Editor/Pieces/CallNode.gd" type="Script" id=2] +[ext_resource path="res://addons/dialogic/Editor/Pieces/Common/Spacer.tscn" type="PackedScene" id=3] +[ext_resource path="res://addons/dialogic/Editor/Pieces/Common/PieceExtraSettings.tscn" type="PackedScene" id=4] + +[sub_resource type="StyleBoxFlat" id=1] +content_margin_left = 16.0 +content_margin_right = 6.0 +content_margin_top = 6.0 +content_margin_bottom = 6.0 +bg_color = Color( 0.14902, 0.333333, 0.509804, 0.4 ) +border_width_left = 2 +border_width_top = 2 +border_width_right = 2 +border_width_bottom = 2 +border_color = Color( 0.12549, 0.12549, 0.12549, 1 ) +corner_radius_top_left = 6 +corner_radius_top_right = 6 +corner_radius_bottom_right = 6 +corner_radius_bottom_left = 6 + +[node name="CallNode" type="HBoxContainer"] +margin_right = 1004.0 +margin_bottom = 100.0 +size_flags_horizontal = 3 +size_flags_vertical = 9 +script = ExtResource( 2 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Indent" type="Control" parent="."] +visible = false +margin_bottom = 42.0 + +[node name="PanelContainer" type="PanelContainer" parent="."] +margin_right = 1004.0 +margin_bottom = 100.0 +mouse_filter = 1 +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/panel = SubResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer"] +margin_left = 16.0 +margin_top = 6.0 +margin_right = 998.0 +margin_bottom = 94.0 +size_flags_horizontal = 3 + +[node name="Header" type="HBoxContainer" parent="PanelContainer/VBoxContainer"] +margin_right = 982.0 +margin_bottom = 28.0 + +[node name="TextureRect" type="TextureRect" parent="PanelContainer/VBoxContainer/Header"] +margin_right = 22.0 +margin_bottom = 28.0 +texture = ExtResource( 1 ) +stretch_mode = 6 + +[node name="Title" type="Label" parent="PanelContainer/VBoxContainer/Header"] +margin_left = 26.0 +margin_top = 7.0 +margin_right = 87.0 +margin_bottom = 21.0 +text = "Call Node" + +[node name="Preview" type="Label" parent="PanelContainer/VBoxContainer/Header"] +margin_left = 91.0 +margin_top = 7.0 +margin_right = 91.0 +margin_bottom = 21.0 +custom_colors/font_color = Color( 1, 1, 1, 0.513726 ) + +[node name="Spacer" parent="PanelContainer/VBoxContainer/Header" instance=ExtResource( 3 )] +margin_left = 95.0 +margin_right = 941.0 +margin_bottom = 28.0 + +[node name="OptionButton" parent="PanelContainer/VBoxContainer/Header" instance=ExtResource( 4 )] +margin_left = 945.0 +margin_right = 982.0 +margin_bottom = 28.0 +items = [ "Move Up", null, 0, false, false, 0, 0, null, "", false, "Move Down", null, 0, false, false, 1, 0, null, "", false, "", null, 0, false, false, 2, 0, null, "", true, "Remove", null, 0, false, false, 3, 0, null, "", false ] + +[node name="Properties" type="HBoxContainer" parent="PanelContainer/VBoxContainer"] +margin_top = 32.0 +margin_right = 982.0 +margin_bottom = 56.0 +custom_constants/separation = 8 + +[node name="TargetNodeLabel" type="Label" parent="PanelContainer/VBoxContainer/Properties"] +margin_top = 5.0 +margin_right = 81.0 +margin_bottom = 19.0 +text = "Target Node:" + +[node name="TargetNodeEdit" type="LineEdit" parent="PanelContainer/VBoxContainer/Properties"] +margin_left = 89.0 +margin_right = 339.0 +margin_bottom = 24.0 +rect_min_size = Vector2( 250, 0 ) + +[node name="CallMethodLabel" type="Label" parent="PanelContainer/VBoxContainer/Properties"] +margin_left = 347.0 +margin_top = 5.0 +margin_right = 427.0 +margin_bottom = 19.0 +text = "Call Method:" + +[node name="CallMethodEdit" type="LineEdit" parent="PanelContainer/VBoxContainer/Properties"] +margin_left = 435.0 +margin_right = 635.0 +margin_bottom = 24.0 +rect_min_size = Vector2( 200, 0 ) + +[node name="ArgumentsLabel" type="Label" parent="PanelContainer/VBoxContainer/Properties"] +margin_left = 643.0 +margin_top = 5.0 +margin_right = 717.0 +margin_bottom = 19.0 +text = "Arguments:" + +[node name="ArgumentsSpinBox" type="SpinBox" parent="PanelContainer/VBoxContainer/Properties"] +margin_left = 725.0 +margin_right = 799.0 +margin_bottom = 24.0 +max_value = 99.0 + +[node name="Arguments" type="VBoxContainer" parent="PanelContainer/VBoxContainer"] +margin_top = 60.0 +margin_right = 982.0 +margin_bottom = 60.0 +custom_constants/separation = 5 + +[connection signal="text_changed" from="PanelContainer/VBoxContainer/Properties/TargetNodeEdit" to="." method="_on_Target_LineEdit_text_changed"] +[connection signal="text_changed" from="PanelContainer/VBoxContainer/Properties/CallMethodEdit" to="." method="_on_Method_LineEdit_text_changed"] +[connection signal="value_changed" from="PanelContainer/VBoxContainer/Properties/ArgumentsSpinBox" to="." method="_on_ArgumentsSpinBox_value_changed"] diff --git a/addons/dialogic/Editor/Pieces/Common/PieceExtraSettings.gd b/addons/dialogic/Editor/Pieces/Common/PieceExtraSettings.gd index 213e32a..b339355 100644 --- a/addons/dialogic/Editor/Pieces/Common/PieceExtraSettings.gd +++ b/addons/dialogic/Editor/Pieces/Common/PieceExtraSettings.gd @@ -21,8 +21,7 @@ func _on_OptionSelected(index): timeline_editor.move_block(current_piece, 'down') elif index == 3: # Removing a piece - if timeline_editor.selected_item == current_piece: - timeline_editor.selected_item = null - # TODO: Add a warning here if the event has changes - current_piece.queue_free() + if timeline_editor.selected_item != current_piece: + timeline_editor._select_item(current_piece) + timeline_editor.delete_event() timeline_editor.indent_events() diff --git a/addons/dialogic/Editor/Pieces/Common/PieceExtraSettings.tscn b/addons/dialogic/Editor/Pieces/Common/PieceExtraSettings.tscn index 4518994..f9c22f2 100644 --- a/addons/dialogic/Editor/Pieces/Common/PieceExtraSettings.tscn +++ b/addons/dialogic/Editor/Pieces/Common/PieceExtraSettings.tscn @@ -11,7 +11,7 @@ text = "Item 0" icon = ExtResource( 1 ) clip_text = true align = 2 -items = [ "Move Up", null, 0, false, false, 0, 0, null, "", false, "Move Down", null, 0, false, false, 1, 0, null, "", false, "", null, 0, false, false, 2, 0, null, "", true, "Remove", null, 0, false, false, 3, 0, null, "", false ] +items = [ "Move Up (Alt+Up)", null, 0, false, false, 0, 0, null, "", false, "Move Down (Alt+Down)", null, 0, false, false, 1, 0, null, "", false, "", null, 0, false, false, 2, 0, null, "", true, "Remove", null, 0, false, false, 3, 0, null, "", false ] script = ExtResource( 2 ) __meta__ = { "_edit_use_anchors_": false diff --git a/addons/dialogic/Editor/Pieces/Common/SpinBoxPreventDnD.gd b/addons/dialogic/Editor/Pieces/Common/SpinBoxPreventDnD.gd new file mode 100644 index 0000000..48c9704 --- /dev/null +++ b/addons/dialogic/Editor/Pieces/Common/SpinBoxPreventDnD.gd @@ -0,0 +1,8 @@ +tool +extends SpinBox + +func can_drop_data(position, data): + # this prevents locking the mouse + # on some operating systems + # due to a godot editor bug with SpinBox drag/drop + return false diff --git a/addons/dialogic/Editor/Pieces/IfCondition.tscn b/addons/dialogic/Editor/Pieces/IfCondition.tscn index a06688b..3d7c195 100644 --- a/addons/dialogic/Editor/Pieces/IfCondition.tscn +++ b/addons/dialogic/Editor/Pieces/IfCondition.tscn @@ -75,8 +75,9 @@ margin_bottom = 28.0 [node name="CustomLineEdit" parent="PanelContainer/VBoxContainer/Header" instance=ExtResource( 6 )] margin_left = 256.0 -margin_right = 304.0 +margin_right = 352.0 margin_bottom = 28.0 +hint_tooltip = "you can enter a text-value, a number or you can enter the name of another definition to compare against." [node name="Preview" type="Label" parent="PanelContainer/VBoxContainer/Header"] margin_left = 308.0 diff --git a/addons/dialogic/Editor/Pieces/SceneEvent.gd b/addons/dialogic/Editor/Pieces/SceneEvent.gd index a82d9d3..ca440e4 100644 --- a/addons/dialogic/Editor/Pieces/SceneEvent.gd +++ b/addons/dialogic/Editor/Pieces/SceneEvent.gd @@ -18,7 +18,7 @@ func _ready(): func _on_ImageButton_pressed(): - editor_reference.godot_dialog("*.png, *.jpg, *.jpeg, *.tga, *.svg, *.svgz, *.bmp, *.webp;Image") + editor_reference.godot_dialog("*.png, *.jpg, *.jpeg, *.tga, *.svg, *.svgz, *.bmp, *.webp, *.tscn") editor_reference.godot_dialog_connect(self, "_on_file_selected") @@ -33,8 +33,8 @@ func load_data(data): func load_image(img_src): event_data['background'] = img_src - if event_data['background'] != '': - $PanelContainer/VBoxContainer/HBoxContainer/LineEdit.text = event_data['background'] + $PanelContainer/VBoxContainer/HBoxContainer/LineEdit.text = event_data['background'] + if event_data['background'] != '' and not event_data['background'].ends_with('.tscn'): $PanelContainer/VBoxContainer/TextureRect.texture = load(event_data['background']) $PanelContainer/VBoxContainer/TextureRect.rect_min_size = Vector2(200,200) preview = event_data['background'] diff --git a/addons/dialogic/Editor/Pieces/TextBlock.gd b/addons/dialogic/Editor/Pieces/TextBlock.gd index ae56a46..aa8b1b7 100644 --- a/addons/dialogic/Editor/Pieces/TextBlock.gd +++ b/addons/dialogic/Editor/Pieces/TextBlock.gd @@ -1,7 +1,7 @@ tool extends Control -var text_height = 26 +var text_height = 21 var editor_reference var preview = '' onready var toggler = get_node("PanelContainer/VBoxContainer/Header/VisibleToggle") @@ -16,7 +16,11 @@ var event_data = { onready var portrait_picker = $PanelContainer/VBoxContainer/Header/PortraitPicker func _ready(): + var _scale = get_constant("inspector_margin", "Editor") + _scale = _scale * 0.125 + text_height = text_height * _scale connect("gui_input", self, '_on_gui_input') + $PanelContainer/VBoxContainer/TextEdit.connect("focus_entered", self, "_on_TextEdit_focus_entered") $PanelContainer/VBoxContainer/TextEdit.set("rect_min_size", Vector2(0, 80)) $PanelContainer/VBoxContainer/Header/CharacterPicker.connect('character_selected', self , '_on_character_selected') portrait_picker.get_popup().connect("index_pressed", self, '_on_portrait_selected') @@ -96,5 +100,26 @@ func _on_gui_input(event): toggler.pressed = true +func _on_TextEdit_focus_entered(): + # propagate to timeline to make this text event as active selected + # to help improve keyboard shortcut workflows + # only maybe only do this on left click since mouse wheel and + # touch scrolling may triggers this event too + if (Input.is_mouse_button_pressed(BUTTON_LEFT)): + var timeline_editor = editor_reference.get_node_or_null('MainPanel/TimelineEditor') + if (timeline_editor != null): + # @todo select item and clear selection is marked as "private" in TimelineEditor.gd + # consider to make it "public" or add a public helper function + timeline_editor._clear_selection() + timeline_editor._select_item(self) + pass + + func _on_saver_timer_timeout(): update_preview() + + +# gets called when the user selects this node in the timeline +func on_timeline_selected(): + $PanelContainer/VBoxContainer/TextEdit.grab_focus() + pass diff --git a/addons/dialogic/Editor/Pieces/TextBlock.tscn b/addons/dialogic/Editor/Pieces/TextBlock.tscn index fa5541d..8f21ebd 100644 --- a/addons/dialogic/Editor/Pieces/TextBlock.tscn +++ b/addons/dialogic/Editor/Pieces/TextBlock.tscn @@ -76,9 +76,9 @@ stretch_mode = 6 [node name="Label" type="Label" parent="PanelContainer/VBoxContainer/Header"] visible = false -margin_left = 60.0 +margin_left = 35.0 margin_top = 8.0 -margin_right = 103.0 +margin_right = 78.0 margin_bottom = 22.0 text = " Text " @@ -93,6 +93,8 @@ margin_right = 149.0 [node name="PortraitPicker" parent="PanelContainer/VBoxContainer/Header" instance=ExtResource( 7 )] visible = false +margin_left = 153.0 +margin_right = 187.0 [node name="VisibleToggle" parent="PanelContainer/VBoxContainer/Header" instance=ExtResource( 2 )] margin_left = 153.0 @@ -127,4 +129,5 @@ size_flags_vertical = 3 show_line_numbers = true smooth_scrolling = true wrap_enabled = true + [connection signal="text_changed" from="PanelContainer/VBoxContainer/TextEdit" to="." method="_on_TextEdit_text_changed"] diff --git a/addons/dialogic/Editor/Pieces/WaitSeconds.tscn b/addons/dialogic/Editor/Pieces/WaitSeconds.tscn index 3a60230..90d8783 100644 --- a/addons/dialogic/Editor/Pieces/WaitSeconds.tscn +++ b/addons/dialogic/Editor/Pieces/WaitSeconds.tscn @@ -1,9 +1,10 @@ -[gd_scene load_steps=6 format=2] +[gd_scene load_steps=8 format=2] [ext_resource path="res://addons/dialogic/Images/Events/Wait.svg" type="Texture" id=1] [ext_resource path="res://addons/dialogic/Editor/Pieces/WaitSeconds.gd" type="Script" id=2] [ext_resource path="res://addons/dialogic/Editor/Pieces/Common/Spacer.tscn" type="PackedScene" id=3] [ext_resource path="res://addons/dialogic/Editor/Pieces/Common/PieceExtraSettings.tscn" type="PackedScene" id=4] +[ext_resource path="res://addons/dialogic/Editor/Pieces/Common/SpinBoxPreventDnD.gd" type="Script" id=6] [sub_resource type="StyleBoxFlat" id=1] content_margin_left = 16.0 @@ -78,6 +79,7 @@ min_value = 0.1 value = 0.1 allow_greater = true align = 1 +script = ExtResource( 6 ) [node name="Title2" type="Label" parent="PanelContainer/VBoxContainer/Header"] margin_left = 157.0 diff --git a/addons/dialogic/Editor/SettingsEditor/SettingsEditor.gd b/addons/dialogic/Editor/SettingsEditor/SettingsEditor.gd index faec1bc..85157eb 100644 --- a/addons/dialogic/Editor/SettingsEditor/SettingsEditor.gd +++ b/addons/dialogic/Editor/SettingsEditor/SettingsEditor.gd @@ -7,7 +7,10 @@ onready var nodes = { 'remove_empty_messages': $VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer2/HBoxContainer/RemoveEmptyMessages, 'auto_color_names': $VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer2/HBoxContainer3/AutoColorNames, 'propagate_input': $VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer2/HBoxContainer4/PropagateInput, + 'dim_characters': $VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer2/HBoxContainer5/DimCharacters, } + + func _ready(): update_data() @@ -16,6 +19,7 @@ func _ready(): nodes['remove_empty_messages'].connect('toggled', self, '_on_remove_empty_message_toggled') nodes['auto_color_names'].connect('toggled', self, '_on_auto_color_names_toggled') nodes['propagate_input'].connect('toggled', self, '_on_propagate_input_toggled') + nodes['dim_characters'].connect('toggled', self, '_on_dim_characters_toggled') func update_data(): @@ -33,6 +37,8 @@ func dialog_options(settings): nodes['auto_color_names'].pressed = settings.get_value('dialog', 'auto_color_names') if settings.has_section_key('dialog', 'propagate_input'): nodes['propagate_input'].pressed = settings.get_value('dialog', 'propagate_input') + if settings.has_section_key('dialog', 'dim_characters'): + nodes['dim_characters'].pressed = settings.get_value('dialog', 'dim_characters') func refresh_themes(settings): @@ -74,10 +80,14 @@ func _on_new_line_toggled(value): func _on_auto_color_names_toggled(value): set_value('dialog', 'auto_color_names', value) + func _on_propagate_input_toggled(value): set_value('dialog', 'propagate_input', value) +func _on_dim_characters_toggled(value): + set_value('dialog', 'dim_characters', value) + # Reading and saving data to the settings file func set_value(section, key, value): DialogicResources.set_settings_value(section, key, value) diff --git a/addons/dialogic/Editor/SettingsEditor/SettingsEditor.tscn b/addons/dialogic/Editor/SettingsEditor/SettingsEditor.tscn index 3eaf266..df0419a 100644 --- a/addons/dialogic/Editor/SettingsEditor/SettingsEditor.tscn +++ b/addons/dialogic/Editor/SettingsEditor/SettingsEditor.tscn @@ -18,19 +18,19 @@ size_flags_vertical = 3 [node name="HBoxContainer3" type="HBoxContainer" parent="VBoxContainer"] margin_right = 1024.0 -margin_bottom = 212.0 +margin_bottom = 240.0 [node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/HBoxContainer3"] -margin_right = 288.0 -margin_bottom = 212.0 +margin_right = 304.0 +margin_bottom = 240.0 custom_constants/separation = 16 [node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/HBoxContainer3/VBoxContainer"] -margin_right = 288.0 +margin_right = 304.0 margin_bottom = 54.0 [node name="Panel" type="Panel" parent="VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer"] -margin_right = 288.0 +margin_right = 304.0 margin_bottom = 30.0 rect_min_size = Vector2( 0, 30 ) size_flags_horizontal = 3 @@ -45,7 +45,7 @@ __meta__ = { [node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer"] margin_top = 34.0 -margin_right = 288.0 +margin_right = 304.0 margin_bottom = 54.0 [node name="Label" type="Label" parent="VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer/HBoxContainer"] @@ -59,19 +59,23 @@ margin_left = 50.0 margin_right = 190.0 margin_bottom = 20.0 rect_min_size = Vector2( 140, 0 ) -text = "test" -items = [ "test", null, false, 0, { -"file": "theme-1616687382.cfg" +text = "Basic" +items = [ "Alternative", null, false, 0, { +"file": "theme-1617143167.cfg" +}, "Basic", null, false, 1, { +"file": "theme-1616778229.cfg" +}, "New Theme", null, false, 2, { +"file": "theme-1617143282.cfg" } ] -selected = 0 +selected = 1 [node name="VBoxContainer2" type="VBoxContainer" parent="VBoxContainer/HBoxContainer3/VBoxContainer"] margin_top = 70.0 -margin_right = 288.0 -margin_bottom = 212.0 +margin_right = 304.0 +margin_bottom = 240.0 [node name="Panel2" type="Panel" parent="VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer2"] -margin_right = 288.0 +margin_right = 304.0 margin_bottom = 30.0 rect_min_size = Vector2( 0, 30 ) size_flags_horizontal = 3 @@ -86,7 +90,7 @@ __meta__ = { [node name="HBoxContainer2" type="HBoxContainer" parent="VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer2"] margin_top = 34.0 -margin_right = 288.0 +margin_right = 304.0 margin_bottom = 58.0 [node name="Label" type="Label" parent="VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer2/HBoxContainer2"] @@ -105,7 +109,7 @@ pressed = true [node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer2"] margin_top = 62.0 -margin_right = 288.0 +margin_right = 304.0 margin_bottom = 86.0 [node name="Label" type="Label" parent="VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer2/HBoxContainer"] @@ -116,14 +120,14 @@ text = "Remove empty messages" [node name="RemoveEmptyMessages" type="CheckBox" parent="VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer2/HBoxContainer"] margin_left = 169.0 -margin_right = 288.0 +margin_right = 304.0 margin_bottom = 24.0 size_flags_horizontal = 3 pressed = true [node name="HBoxContainer3" type="HBoxContainer" parent="VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer2"] margin_top = 90.0 -margin_right = 288.0 +margin_right = 304.0 margin_bottom = 114.0 [node name="Label" type="Label" parent="VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer2/HBoxContainer3"] @@ -140,7 +144,7 @@ pressed = true [node name="HBoxContainer4" type="HBoxContainer" parent="VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer2"] margin_top = 118.0 -margin_right = 288.0 +margin_right = 304.0 margin_bottom = 142.0 [node name="Label" type="Label" parent="VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer2/HBoxContainer4"] @@ -154,3 +158,20 @@ margin_left = 223.0 margin_right = 247.0 margin_bottom = 24.0 pressed = true + +[node name="HBoxContainer5" type="HBoxContainer" parent="VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer2"] +margin_top = 146.0 +margin_right = 304.0 +margin_bottom = 170.0 + +[node name="Label" type="Label" parent="VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer2/HBoxContainer5"] +margin_top = 5.0 +margin_right = 276.0 +margin_bottom = 19.0 +text = "Dim characters when they are not speaking" + +[node name="DimCharacters" type="CheckBox" parent="VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer2/HBoxContainer5"] +margin_left = 280.0 +margin_right = 304.0 +margin_bottom = 24.0 +pressed = true diff --git a/addons/dialogic/Editor/ThemeEditor/ThemeEditor.gd b/addons/dialogic/Editor/ThemeEditor/ThemeEditor.gd index d98d4de..af0d09e 100644 --- a/addons/dialogic/Editor/ThemeEditor/ThemeEditor.gd +++ b/addons/dialogic/Editor/ThemeEditor/ThemeEditor.gd @@ -2,68 +2,78 @@ tool extends Control var editor_reference -onready var master_tree = get_node('../MasterTree') +onready var master_tree = get_node('../MasterTreeContainer/MasterTree') onready var settings_editor = get_node('../SettingsEditor') var current_theme = '' +# When loading the variables to the input fields in the +# load_theme function, every element thinks the value was updated +# so it has to perform a "saving" of that property. +# The loading variable is a way to check if the values should be saved +# or not. +var loading = true + # The amazing and revolutionary path system that magically works and you can't # complain because "that is not how you are supposed to work". If there was only # a way to set an id and then access that node via id... # Here you have paths in all its glory. Praise the paths (っ´ω`c)♡ onready var n = { # Text - 'theme_text_shadow': $VBoxContainer/HBoxContainer2/Text/GridContainer/HBoxContainer2/CheckBoxShadow, - 'theme_text_shadow_color': $VBoxContainer/HBoxContainer2/Text/GridContainer/HBoxContainer2/ColorPickerButtonShadow, - 'theme_text_color': $VBoxContainer/HBoxContainer2/Text/GridContainer/ColorPickerButton, - 'theme_font': $VBoxContainer/HBoxContainer2/Text/GridContainer/FontButton, - 'theme_shadow_offset_x': $VBoxContainer/HBoxContainer2/Text/GridContainer/HBoxContainer/ShadowOffsetX, - 'theme_shadow_offset_y': $VBoxContainer/HBoxContainer2/Text/GridContainer/HBoxContainer/ShadowOffsetY, - 'theme_text_speed': $VBoxContainer/HBoxContainer2/Text/GridContainer/TextSpeed, - 'alignment': $VBoxContainer/HBoxContainer2/Text/GridContainer/HBoxContainer3/Alignment, + 'theme_text_shadow': $VBoxContainer/TabContainer/Text/Column/GridContainer/HBoxContainer2/CheckBoxShadow, + 'theme_text_shadow_color': $VBoxContainer/TabContainer/Text/Column/GridContainer/HBoxContainer2/ColorPickerButtonShadow, + 'theme_text_color': $VBoxContainer/TabContainer/Text/Column/GridContainer/ColorPickerButton, + 'theme_font': $VBoxContainer/TabContainer/Text/Column/GridContainer/FontButton, + 'theme_shadow_offset_x': $VBoxContainer/TabContainer/Text/Column/GridContainer/HBoxContainer/ShadowOffsetX, + 'theme_shadow_offset_y': $VBoxContainer/TabContainer/Text/Column/GridContainer/HBoxContainer/ShadowOffsetY, + 'theme_text_speed': $VBoxContainer/TabContainer/Text/Column/GridContainer/TextSpeed, + 'alignment': $VBoxContainer/TabContainer/Text/Column/GridContainer/HBoxContainer3/Alignment, # Dialog box - 'background_texture_button_visible': $VBoxContainer/HBoxContainer2/DialogBox/GridContainer/HBoxContainer3/CheckBox, - 'theme_background_image': $VBoxContainer/HBoxContainer2/DialogBox/GridContainer/HBoxContainer3/BackgroundTextureButton, - 'theme_next_image': $VBoxContainer/HBoxContainer2/DialogBox/GridContainer/NextIndicatorButton, - 'next_animation': $VBoxContainer/HBoxContainer2/DialogBox/GridContainer/NextAnimation, - 'theme_action_key': $VBoxContainer/HBoxContainer2/DialogBox/GridContainer/BoxContainer/ActionOptionButton, - 'theme_background_color_visible': $VBoxContainer/HBoxContainer2/DialogBox/GridContainer/HBoxContainer2/CheckBox, - 'theme_background_color': $VBoxContainer/HBoxContainer2/DialogBox/GridContainer/HBoxContainer2/ColorPickerButton, - 'theme_text_margin': $VBoxContainer/HBoxContainer2/DialogBox/GridContainer/HBoxContainer/TextOffsetV, - 'theme_text_margin_h': $VBoxContainer/HBoxContainer2/DialogBox/GridContainer/HBoxContainer/TextOffsetH, - 'size_w': $VBoxContainer/HBoxContainer2/DialogBox/GridContainer/HBoxContainer4/BoxSizeW, - 'size_h': $VBoxContainer/HBoxContainer2/DialogBox/GridContainer/HBoxContainer4/BoxSizeH, - 'bottom_gap': $VBoxContainer/HBoxContainer2/DialogBox/GridContainer/HBoxContainer5/BottomGap, + 'background_texture_button_visible': $"VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer3/CheckBox", + 'theme_background_image': $"VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer3/BackgroundTextureButton", + 'theme_next_image': $"VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/NextIndicatorButton", + 'next_animation': $"VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/NextAnimation", + 'theme_action_key': $"VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/BoxContainer/ActionOptionButton", + 'theme_background_color_visible': $"VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer2/CheckBox", + 'theme_background_color': $"VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer2/ColorPickerButton", + 'theme_text_margin': $"VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer/TextOffsetV", + 'theme_text_margin_h': $"VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer/TextOffsetH", + 'size_w': $"VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer4/BoxSizeW", + 'size_h': $"VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer4/BoxSizeH", + 'bottom_gap': $"VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer5/BottomGap", + 'background_modulation': $"VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer6/CheckBox", + 'background_modulation_color': $"VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer6/ColorPickerButton", + # Buttons - 'button_text_color_enabled': $VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer/HBoxContainer4/CheckBox2, - 'button_text_color': $VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer/HBoxContainer4/ButtonTextColor, - 'button_background': $VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer/HBoxContainer2/ColorPickerButton, - 'button_background_visible': $VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer/HBoxContainer2/CheckBox, - 'button_image': $VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer/HBoxContainer3/BackgroundTextureButton, - 'button_image_visible': $VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer/HBoxContainer3/CheckBox, - 'button_offset_x': $VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer/HBoxContainer/TextOffsetH, - 'button_offset_y': $VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer/HBoxContainer/TextOffsetV, - 'button_separation': $VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer/VerticalSeparation, + 'button_text_color_enabled': $"VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer/HBoxContainer4/CheckBox2", + 'button_text_color': $"VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer/HBoxContainer4/ButtonTextColor", + 'button_background': $"VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer/HBoxContainer2/ColorPickerButton", + 'button_background_visible': $"VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer/HBoxContainer2/CheckBox", + 'button_image': $"VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer/HBoxContainer3/BackgroundTextureButton", + 'button_image_visible': $"VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer/HBoxContainer3/CheckBox", + 'button_offset_x': $"VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer/HBoxContainer/TextOffsetH", + 'button_offset_y': $"VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer/HBoxContainer/TextOffsetV", + 'button_separation': $"VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer/VerticalSeparation", # Definitions - 'glossary_font': $VBoxContainer/HBoxContainer2/Glossary/GridContainer/FontButton, - 'glossary_color': $VBoxContainer/HBoxContainer2/Glossary/GridContainer/ColorPickerButton, + 'glossary_font': $VBoxContainer/TabContainer/Glossary/Column/GridContainer/FontButton, + 'glossary_color': $VBoxContainer/TabContainer/Glossary/Column/GridContainer/ColorPickerButton, + # Text preview - 'preview_panel': $VBoxContainer/Panel, 'text_preview': $VBoxContainer/HBoxContainer3/TextEdit, # Character Names - 'name_auto_color': $VBoxContainer/HBoxContainer2/Glossary/GridContainer2/CheckBox, - 'name_background_visible': $VBoxContainer/HBoxContainer2/Glossary/GridContainer2/HBoxContainer2/CheckBox, - 'name_background': $VBoxContainer/HBoxContainer2/Glossary/GridContainer2/HBoxContainer2/ColorPickerButton, - 'name_image': $VBoxContainer/HBoxContainer2/Glossary/GridContainer2/HBoxContainer3/BackgroundTextureButton, - 'name_image_visible': $VBoxContainer/HBoxContainer2/Glossary/GridContainer2/HBoxContainer3/CheckBox, - 'name_shadow': $VBoxContainer/HBoxContainer2/Glossary/GridContainer2/HBoxContainer4/ColorPickerButtonShadow, - 'name_shadow_visible': $VBoxContainer/HBoxContainer2/Glossary/GridContainer2/HBoxContainer4/CheckBoxShadow, - 'name_shadow_offset_x': $VBoxContainer/HBoxContainer2/Glossary/GridContainer2/HBoxContainer/ShadowOffsetX, - 'name_shadow_offset_y': $VBoxContainer/HBoxContainer2/Glossary/GridContainer2/HBoxContainer/ShadowOffsetY, - 'name_bottom_gap': $VBoxContainer/HBoxContainer2/Glossary/GridContainer2/HBoxContainer5/BottomGap, + 'name_auto_color': $"VBoxContainer/TabContainer/Name Label/Column/GridContainer/CheckBox", + 'name_background_visible': $"VBoxContainer/TabContainer/Name Label/Column/GridContainer/HBoxContainer2/CheckBox", + 'name_background': $"VBoxContainer/TabContainer/Name Label/Column/GridContainer/HBoxContainer2/ColorPickerButton", + 'name_image': $"VBoxContainer/TabContainer/Name Label/Column/GridContainer/HBoxContainer3/BackgroundTextureButton", + 'name_image_visible': $"VBoxContainer/TabContainer/Name Label/Column/GridContainer/HBoxContainer3/CheckBox", + 'name_shadow': $"VBoxContainer/TabContainer/Name Label/Column/GridContainer/HBoxContainer4/ColorPickerButtonShadow", + 'name_shadow_visible': $"VBoxContainer/TabContainer/Name Label/Column/GridContainer/HBoxContainer4/CheckBoxShadow", + 'name_shadow_offset_x': $"VBoxContainer/TabContainer/Name Label/Column/GridContainer/HBoxContainer/ShadowOffsetX", + 'name_shadow_offset_y': $"VBoxContainer/TabContainer/Name Label/Column/GridContainer/HBoxContainer/ShadowOffsetY", + 'name_bottom_gap': $"VBoxContainer/TabContainer/Name Label/Column/GridContainer/HBoxContainer5/BottomGap", } func _ready(): @@ -73,11 +83,15 @@ func _ready(): $VBoxContainer/HBoxContainer3/PreviewButton.icon = load("res://addons/dialogic/Images/Plugin/plugin-editor-icon-dark-theme.svg") else: $VBoxContainer/HBoxContainer3/PreviewButton.icon = load("res://addons/dialogic/Images/Plugin/plugin-editor-icon-light-theme.svg") + + $DelayPreviewTimer.one_shot = true + $DelayPreviewTimer.connect("timeout", self, '_on_DelayPreview_timer_timeout') # Force preview update _on_visibility_changed() func load_theme(filename): + loading = true current_theme = filename var theme = DialogicResources.get_theme_config(filename) # Settings @@ -89,6 +103,10 @@ func load_theme(filename): n['theme_background_color'].color = Color(theme.get_value('background', 'color', '#ff000000')) n['theme_background_color_visible'].pressed = theme.get_value('background', 'use_color', false) n['theme_next_image'].text = DialogicResources.get_filename_from_path(theme.get_value('next_indicator', 'image', 'res://addons/dialogic/Images/next-indicator.png')) + + n['background_modulation'].pressed = theme.get_value('background', 'modulation', false) + n['background_modulation_color'].color = Color(theme.get_value('background', 'modulation_color', '#ffffffff')) + var size_value = theme.get_value('box', 'size', Vector2(910, 167)) n['size_w'].value = size_value.x @@ -160,6 +178,8 @@ func load_theme(filename): # Preview text n['text_preview'].text = theme.get_value('text', 'preview', 'This is preview text. You can use [color=#A5EFAC]BBCode[/color] to style it.\n[wave amp=50 freq=2]You can even use effects![/wave]') + # Finished loading + loading = false # Updating the preview _on_PreviewButton_pressed() @@ -171,18 +191,29 @@ func new_theme(): load_theme(theme_file) # Check if it is the only theme to set as default if DialogicUtil.get_theme_list().size() == 1: - print('only theme, setting as default') + #print('only theme, setting as default') settings_editor.set_value('theme', 'default', theme_file) +func duplicate_theme(from_filename): + var duplicate_theme = 'theme-' + str(OS.get_unix_time()) + '.cfg' + DialogicResources.duplicate_theme(from_filename, duplicate_theme) + DialogicResources.set_theme_value(duplicate_theme, 'settings', 'name', duplicate_theme) + master_tree.build_themes(duplicate_theme) + load_theme(duplicate_theme) + + func _on_BackgroundTextureButton_pressed(): editor_reference.godot_dialog("*.png") editor_reference.godot_dialog_connect(self, "_on_background_selected") func _on_background_selected(path, target): + if loading == true: + return DialogicResources.set_theme_value(current_theme, 'background','image', path) n['theme_background_image'].text = DialogicResources.get_filename_from_path(path) + _on_PreviewButton_pressed() # Refreshing the preview func _on_NextIndicatorButton_pressed(): @@ -191,36 +222,54 @@ func _on_NextIndicatorButton_pressed(): func _on_indicator_selected(path, target): + if loading == true: + return DialogicResources.set_theme_value(current_theme, 'next_indicator','image', path) n['theme_next_image'].text = DialogicResources.get_filename_from_path(path) + _on_PreviewButton_pressed() # Refreshing the preview func _on_NextAnimation_item_selected(index): DialogicResources.set_theme_value(current_theme, 'next_indicator', 'animation', n['next_animation'].get_item_text(index)) + _on_PreviewButton_pressed() # Refreshing the preview func _on_ColorPickerButton_color_changed(color): + if loading == true: + return DialogicResources.set_theme_value(current_theme, 'text','color', '#' + color.to_html()) + $DelayPreviewTimer.start(0.5) # Calling a timer so the update doesn't get triggered many times func _on_ColorPickerButtonShadow_color_changed(color): + if loading == true: + return DialogicResources.set_theme_value(current_theme, 'text','shadow_color', '#' + color.to_html()) + $DelayPreviewTimer.start(0.5) # Calling a timer so the update doesn't get triggered many times func _on_CheckBoxShadow_toggled(button_pressed): + if loading == true: + return DialogicResources.set_theme_value(current_theme, 'text','shadow', button_pressed) + _on_PreviewButton_pressed() # Refreshing the preview func _on_ShadowOffset_value_changed(_value): + if loading == true: + return DialogicResources.set_theme_value(current_theme, 'text','shadow_offset', Vector2(n['theme_shadow_offset_x'].value,n['theme_shadow_offset_y'].value)) + _on_PreviewButton_pressed() # Refreshing the preview func _on_PreviewButton_pressed(): - for i in n['preview_panel'].get_children(): + for i in $VBoxContainer/Panel.get_children(): i.free() var dialogic_node = load("res://addons/dialogic/Dialog.tscn") var preview_dialog = dialogic_node.instance() + preview_dialog.timeline = '' preview_dialog.preview = true + preview_dialog.debug_mode = false preview_dialog.get_node('DefinitionInfo').in_theme_editor = true # Random character preview if there are any @@ -230,21 +279,27 @@ func _on_PreviewButton_pressed(): characters.shuffle() character_file = characters[0]['file'] + # Loading the theme here because I need it for the parse_alignment + preview_dialog.current_theme = preview_dialog.load_theme(current_theme) + # Creating the one event timeline for the dialog + var text = preview_dialog.parse_definitions(n['text_preview'].text) preview_dialog.dialog_script['events'] = [{ "character": character_file, "portrait":'', - "text": preview_dialog.parse_definitions(n['text_preview'].text) + "text": text }] preview_dialog.parse_characters(preview_dialog.dialog_script) preview_dialog.settings = DialogicResources.get_settings_config() # Alignment - n['preview_panel'].add_child(preview_dialog) + $VBoxContainer/Panel.add_child(preview_dialog) preview_dialog.load_dialog() + # Reloading the theme preview_dialog.current_theme = preview_dialog.load_theme(current_theme) + # When not performing this step, the dialog name doesn't update the color for some reason # I should probably refactor the preview dialog to stop making everything manually. if n['name_auto_color'].pressed: @@ -252,11 +307,13 @@ func _on_PreviewButton_pressed(): preview_dialog.get_node('TextBubble/NameLabel').set('custom_colors/font_color', characters[0]['color']) # maintaining the preview panel big enough for the dialog box - n['preview_panel'].rect_min_size.y = preview_dialog.current_theme.get_value('box', 'size', Vector2(910, 167)).y + 90 + preview_dialog.current_theme.get_value('box', 'bottom_gap', 40) - n['preview_panel'].rect_size.y = 0 + $VBoxContainer/Panel.rect_min_size.y = preview_dialog.current_theme.get_value('box', 'size', Vector2(910, 167)).y + 90 + preview_dialog.current_theme.get_value('box', 'bottom_gap', 40) + $VBoxContainer/Panel.rect_size.y = 0 func _on_ActionOptionButton_item_selected(index): + if loading == true: + return DialogicResources.set_theme_value(current_theme, 'settings','action_key', n['theme_action_key'].text) @@ -274,43 +331,68 @@ func _on_FontButton_pressed(): func _on_Font_selected(path, target): + if loading == true: + return DialogicResources.set_theme_value(current_theme, 'text','font', path) n['theme_font'].text = DialogicResources.get_filename_from_path(path) + _on_PreviewButton_pressed() # Refreshing the preview func _on_textSpeed_value_changed(value): + if loading == true: + return DialogicResources.set_theme_value(current_theme, 'text','speed', value) + _on_PreviewButton_pressed() # Refreshing the preview func _on_TextMargin_value_changed(value): + if loading == true: + return var final_vector = Vector2( n['theme_text_margin'].value, n['theme_text_margin_h'].value ) DialogicResources.set_theme_value(current_theme, 'text', 'margin', final_vector) + _on_PreviewButton_pressed() # Refreshing the preview func _on_BackgroundColor_CheckBox_toggled(button_pressed): + if loading == true: + return DialogicResources.set_theme_value(current_theme, 'background', 'use_color', button_pressed) + _on_PreviewButton_pressed() # Refreshing the preview func _on_BackgroundColor_ColorPickerButton_color_changed(color): + if loading == true: + return DialogicResources.set_theme_value(current_theme, 'background', 'color', '#' + color.to_html()) + $DelayPreviewTimer.start(0.5) # Calling a timer so the update doesn't get triggered many times func _on_BackgroundTexture_CheckBox_toggled(button_pressed): + if loading == true: + return DialogicResources.set_theme_value(current_theme, 'background', 'use_image', button_pressed) - + _on_PreviewButton_pressed() # Refreshing the preview + func _on_button_background_visible_toggled(button_pressed): + if loading == true: + return DialogicResources.set_theme_value(current_theme, 'buttons', 'use_background_color', button_pressed) func _on_button_background_color_color_changed(color): + if loading == true: + return DialogicResources.set_theme_value(current_theme, 'buttons', 'background_color', '#' + color.to_html()) + $DelayPreviewTimer.start(0.5) # Calling a timer so the update doesn't get triggered many times func _on_ButtonOffset_value_changed(value): + if loading == true: + return var final_vector = Vector2( n['button_offset_x'].value, n['button_offset_y'].value @@ -319,10 +401,14 @@ func _on_ButtonOffset_value_changed(value): func _on_VerticalSeparation_value_changed(value): + if loading == true: + return DialogicResources.set_theme_value(current_theme, 'buttons', 'gap', n['button_separation'].value) func _on_button_texture_toggled(button_pressed): + if loading == true: + return DialogicResources.set_theme_value(current_theme, 'buttons', 'use_image', button_pressed) @@ -332,29 +418,43 @@ func _on_ButtonTextureButton_pressed(): func _on_button_texture_selected(path, target): + if loading == true: + return DialogicResources.set_theme_value(current_theme, 'buttons', 'image', path) n['button_image'].text = DialogicResources.get_filename_from_path(path) func _on_ButtonTextColor_color_changed(color): + if loading == true: + return DialogicResources.set_theme_value(current_theme, 'buttons', 'text_color', '#' + color.to_html()) + $DelayPreviewTimer.start(0.5) # Calling a timer so the update doesn't get triggered many times func _on_Custom_Button_Color_toggled(button_pressed): + if loading == true: + return DialogicResources.set_theme_value(current_theme, 'buttons', 'text_color_enabled', button_pressed) func _on_GlossaryColorPicker_color_changed(color): + if loading == true: + return DialogicResources.set_theme_value(current_theme, 'definitions', 'color', '#' + color.to_html()) + $DelayPreviewTimer.start(0.5) # Calling a timer so the update doesn't get triggered many times func _on_GlossaryFontButton_pressed(): editor_reference.godot_dialog("*.tres") editor_reference.godot_dialog_connect(self, "_on_Glossary_Font_selected") + func _on_Glossary_Font_selected(path, target): + if loading == true: + return DialogicResources.set_theme_value(current_theme, 'definitions', 'font', path) n['glossary_font'].text = DialogicResources.get_filename_from_path(path) + _on_PreviewButton_pressed() # Refreshing the preview func _on_visibility_changed(): @@ -364,47 +464,69 @@ func _on_visibility_changed(): else: # Erasing all previews since them keeps working # on background - for i in n['preview_panel'].get_children(): + for i in $VBoxContainer/Panel.get_children(): i.queue_free() func _on_BoxSize_value_changed(value): + if loading == true: + return var size_value = Vector2(n['size_w'].value, n['size_h'].value) DialogicResources.set_theme_value(current_theme, 'box', 'size', size_value) + _on_PreviewButton_pressed() # Refreshing the preview func _on_BottomGap_value_changed(value): + if loading == true: + return DialogicResources.set_theme_value(current_theme, 'box', 'bottom_gap', value) + _on_PreviewButton_pressed() # Refreshing the preview func _on_Alignment_item_selected(index): + if loading == true: + return if index == 0: DialogicResources.set_theme_value(current_theme, 'text', 'alignment', 'Left') elif index == 1: DialogicResources.set_theme_value(current_theme, 'text', 'alignment', 'Center') elif index == 2: DialogicResources.set_theme_value(current_theme, 'text', 'alignment', 'Right') - + _on_PreviewButton_pressed() # Refreshing the preview func _on_Preview_text_changed(): + if loading == true: + return DialogicResources.set_theme_value(current_theme, 'text', 'preview', n['text_preview'].text) func _on_name_auto_color_toggled(button_pressed): + if loading == true: + return DialogicResources.set_theme_value(current_theme, 'name', 'auto_color', button_pressed) + _on_PreviewButton_pressed() # Refreshing the preview func _on_name_background_visible_toggled(button_pressed): + if loading == true: + return DialogicResources.set_theme_value(current_theme, 'name', 'background_visible', button_pressed) + _on_PreviewButton_pressed() # Refreshing the preview func _on_name_background_color_changed(color): + if loading == true: + return DialogicResources.set_theme_value(current_theme, 'name', 'background', '#' + color.to_html()) + $DelayPreviewTimer.start(0.5) # Calling a timer so the update doesn't get triggered many times func _on_name_image_visible_toggled(button_pressed): + if loading == true: + return DialogicResources.set_theme_value(current_theme, 'name', 'image_visible', button_pressed) + _on_PreviewButton_pressed() # Refreshing the preview func _on_name_image_pressed(): @@ -413,22 +535,55 @@ func _on_name_image_pressed(): func _on_name_texture_selected(path, target): + if loading == true: + return DialogicResources.set_theme_value(current_theme, 'name', 'image', path) n['name_image'].text = DialogicResources.get_filename_from_path(path) + _on_PreviewButton_pressed() # Refreshing the preview func _on_shadow_visible_toggled(button_pressed): + if loading == true: + return DialogicResources.set_theme_value(current_theme, 'name', 'shadow_visible', button_pressed) + _on_PreviewButton_pressed() # Refreshing the preview func _on_name_shadow_color_changed(color): + if loading == true: + return DialogicResources.set_theme_value(current_theme, 'name', 'shadow', '#' + color.to_html()) + $DelayPreviewTimer.start(0.5) # Calling a timer so the update doesn't get triggered many times func _on_name_ShadowOffset_value_changed(_value): + if loading == true: + return DialogicResources.set_theme_value(current_theme, 'name','shadow_offset', Vector2(n['name_shadow_offset_x'].value,n['name_shadow_offset_y'].value)) + _on_PreviewButton_pressed() # Refreshing the preview func _on_name_BottomGap_value_changed(value): + if loading == true: + return DialogicResources.set_theme_value(current_theme, 'name', 'bottom_gap', value) + _on_PreviewButton_pressed() # Refreshing the preview + + +func _on_DelayPreview_timer_timeout(): + _on_PreviewButton_pressed() # Refreshing the preview + + +func _on_BackgroundTexture_Modulation_toggled(button_pressed): + if loading == true: + return + DialogicResources.set_theme_value(current_theme, 'background', 'modulation', button_pressed) + _on_PreviewButton_pressed() # Refreshing the preview + + +func _on_ColorPicker_Background_texture_modulation_color_changed(color): + if loading == true: + return + DialogicResources.set_theme_value(current_theme, 'background', 'modulation_color', '#' + color.to_html()) + $DelayPreviewTimer.start(0.5) # Calling a timer so the update doesn't get triggered many times diff --git a/addons/dialogic/Editor/ThemeEditor/ThemeEditor.tscn b/addons/dialogic/Editor/ThemeEditor/ThemeEditor.tscn index 7c16786..4970f14 100644 --- a/addons/dialogic/Editor/ThemeEditor/ThemeEditor.tscn +++ b/addons/dialogic/Editor/ThemeEditor/ThemeEditor.tscn @@ -1,778 +1,28 @@ -[gd_scene load_steps=4 format=2] +[gd_scene load_steps=3 format=2] [ext_resource path="res://addons/dialogic/Images/Plugin/plugin-editor-icon-light-theme.svg" type="Texture" id=1] [ext_resource path="res://addons/dialogic/Editor/ThemeEditor/ThemeEditor.gd" type="Script" id=2] -[ext_resource path="res://addons/dialogic/Editor/ThemeEditor/SectionTitle.tscn" type="PackedScene" id=3] [node name="ThemeEditor" type="ScrollContainer"] anchor_right = 1.0 anchor_bottom = 1.0 margin_right = 261.0 +margin_bottom = 232.0 script = ExtResource( 2 ) __meta__ = { "_edit_use_anchors_": false } [node name="VBoxContainer" type="VBoxContainer" parent="."] -margin_right = 1273.0 -margin_bottom = 701.0 +margin_right = 1285.0 +margin_bottom = 832.0 size_flags_horizontal = 3 size_flags_vertical = 3 custom_constants/separation = 15 -[node name="HBoxContainer2" type="HBoxContainer" parent="VBoxContainer"] -margin_right = 1273.0 -margin_bottom = 296.0 - -[node name="Text" type="VBoxContainer" parent="VBoxContainer/HBoxContainer2"] -margin_right = 316.0 -margin_bottom = 296.0 -size_flags_horizontal = 3 -size_flags_vertical = 3 -__meta__ = { -"_edit_use_anchors_": false -} - -[node name="PanelContainer" type="Panel" parent="VBoxContainer/HBoxContainer2/Text"] -margin_right = 316.0 -margin_bottom = 30.0 -rect_min_size = Vector2( 0, 30 ) - -[node name="Label" type="Label" parent="VBoxContainer/HBoxContainer2/Text/PanelContainer"] -margin_right = 40.0 -margin_bottom = 14.0 -text = "Text" -__meta__ = { -"_edit_use_anchors_": false -} - -[node name="GridContainer" type="GridContainer" parent="VBoxContainer/HBoxContainer2/Text"] -margin_top = 34.0 -margin_right = 316.0 -margin_bottom = 202.0 -size_flags_horizontal = 3 -custom_constants/hseparation = 10 -columns = 2 - -[node name="Label5" type="Label" parent="VBoxContainer/HBoxContainer2/Text/GridContainer"] -margin_top = 3.0 -margin_right = 148.0 -margin_bottom = 17.0 -size_flags_horizontal = 3 -text = "Font" - -[node name="FontButton" type="Button" parent="VBoxContainer/HBoxContainer2/Text/GridContainer"] -margin_left = 158.0 -margin_right = 316.0 -margin_bottom = 20.0 -size_flags_vertical = 4 -text = "DefaultFont" - -[node name="Label3" type="Label" parent="VBoxContainer/HBoxContainer2/Text/GridContainer"] -margin_top = 32.0 -margin_right = 148.0 -margin_bottom = 46.0 -text = "Color" - -[node name="ColorPickerButton" type="ColorPickerButton" parent="VBoxContainer/HBoxContainer2/Text/GridContainer"] -margin_left = 158.0 -margin_top = 24.0 -margin_right = 316.0 -margin_bottom = 54.0 -rect_min_size = Vector2( 50, 30 ) -color = Color( 1, 1, 1, 1 ) - -[node name="Label" type="Label" parent="VBoxContainer/HBoxContainer2/Text/GridContainer"] -margin_top = 66.0 -margin_right = 148.0 -margin_bottom = 80.0 -text = "Shadow" - -[node name="HBoxContainer2" type="HBoxContainer" parent="VBoxContainer/HBoxContainer2/Text/GridContainer"] -margin_left = 158.0 -margin_top = 58.0 -margin_right = 316.0 -margin_bottom = 88.0 - -[node name="CheckBoxShadow" type="CheckBox" parent="VBoxContainer/HBoxContainer2/Text/GridContainer/HBoxContainer2"] -margin_right = 24.0 -margin_bottom = 30.0 - -[node name="ColorPickerButtonShadow" type="ColorPickerButton" parent="VBoxContainer/HBoxContainer2/Text/GridContainer/HBoxContainer2"] -margin_left = 28.0 -margin_right = 158.0 -margin_bottom = 30.0 -rect_min_size = Vector2( 50, 30 ) -size_flags_horizontal = 3 -color = Color( 0, 0, 0, 0.619608 ) - -[node name="Label4" type="Label" parent="VBoxContainer/HBoxContainer2/Text/GridContainer"] -margin_top = 97.0 -margin_right = 148.0 -margin_bottom = 111.0 -text = "Shadow Offset" - -[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/HBoxContainer2/Text/GridContainer"] -margin_left = 158.0 -margin_top = 92.0 -margin_right = 316.0 -margin_bottom = 116.0 -custom_constants/separation = 10 - -[node name="ShadowOffsetX" type="SpinBox" parent="VBoxContainer/HBoxContainer2/Text/GridContainer/HBoxContainer"] -margin_right = 74.0 -margin_bottom = 24.0 -value = 2.0 -rounded = true -allow_lesser = true -prefix = "X" - -[node name="ShadowOffsetY" type="SpinBox" parent="VBoxContainer/HBoxContainer2/Text/GridContainer/HBoxContainer"] -margin_left = 84.0 -margin_right = 158.0 -margin_bottom = 24.0 -value = 2.0 -rounded = true -allow_lesser = true -prefix = "Y" - -[node name="Label6" type="Label" parent="VBoxContainer/HBoxContainer2/Text/GridContainer"] -margin_top = 125.0 -margin_right = 148.0 -margin_bottom = 139.0 -text = "Speed (bigger = slower)" - -[node name="TextSpeed" type="SpinBox" parent="VBoxContainer/HBoxContainer2/Text/GridContainer"] -margin_left = 158.0 -margin_top = 120.0 -margin_right = 316.0 -margin_bottom = 144.0 -max_value = 10.0 -value = 2.0 -rounded = true - -[node name="Label2" type="Label" parent="VBoxContainer/HBoxContainer2/Text/GridContainer"] -margin_top = 151.0 -margin_right = 148.0 -margin_bottom = 165.0 -text = "Alignment" - -[node name="HBoxContainer3" type="HBoxContainer" parent="VBoxContainer/HBoxContainer2/Text/GridContainer"] -margin_left = 158.0 -margin_top = 148.0 -margin_right = 316.0 -margin_bottom = 168.0 - -[node name="Alignment" type="OptionButton" parent="VBoxContainer/HBoxContainer2/Text/GridContainer/HBoxContainer3"] -margin_right = 158.0 -margin_bottom = 20.0 -size_flags_horizontal = 3 -text = "Left" -items = [ "Left", null, false, 0, null, "Center", null, false, 1, null, "Right", null, false, 2, null ] -selected = 0 - -[node name="Glossary" type="VBoxContainer" parent="VBoxContainer/HBoxContainer2"] -margin_left = 320.0 -margin_right = 635.0 -margin_bottom = 296.0 -size_flags_horizontal = 3 -size_flags_vertical = 3 -__meta__ = { -"_edit_use_anchors_": false -} - -[node name="Character Name" parent="VBoxContainer/HBoxContainer2/Glossary" instance=ExtResource( 3 )] -margin_right = 315.0 - -[node name="GridContainer2" type="GridContainer" parent="VBoxContainer/HBoxContainer2/Glossary"] -margin_top = 34.0 -margin_right = 315.0 -margin_bottom = 204.0 -columns = 2 - -[node name="Label5" type="Label" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer2"] -margin_top = 5.0 -margin_right = 126.0 -margin_bottom = 19.0 -text = "Background Color" - -[node name="HBoxContainer2" type="HBoxContainer" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer2"] -margin_left = 130.0 -margin_right = 288.0 -margin_bottom = 24.0 - -[node name="CheckBox" type="CheckBox" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer2/HBoxContainer2"] -margin_right = 24.0 -margin_bottom = 24.0 - -[node name="ColorPickerButton" type="ColorPickerButton" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer2/HBoxContainer2"] -margin_left = 28.0 -margin_right = 158.0 -margin_bottom = 24.0 -size_flags_horizontal = 3 - -[node name="Label2" type="Label" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer2"] -margin_top = 33.0 -margin_right = 126.0 -margin_bottom = 47.0 -text = "Background Texture" - -[node name="HBoxContainer3" type="HBoxContainer" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer2"] -margin_left = 130.0 -margin_top = 28.0 -margin_right = 288.0 -margin_bottom = 52.0 - -[node name="CheckBox" type="CheckBox" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer2/HBoxContainer3"] -margin_right = 24.0 -margin_bottom = 24.0 -pressed = true - -[node name="BackgroundTextureButton" type="Button" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer2/HBoxContainer3"] -margin_left = 28.0 -margin_right = 158.0 -margin_bottom = 24.0 -size_flags_horizontal = 3 -text = "background-2" - -[node name="Label3" type="Label" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer2"] -margin_top = 64.0 -margin_right = 126.0 -margin_bottom = 78.0 -text = "Shadow" - -[node name="HBoxContainer4" type="HBoxContainer" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer2"] -margin_left = 130.0 -margin_top = 56.0 -margin_right = 288.0 -margin_bottom = 86.0 - -[node name="CheckBoxShadow" type="CheckBox" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer2/HBoxContainer4"] -margin_right = 24.0 -margin_bottom = 30.0 - -[node name="ColorPickerButtonShadow" type="ColorPickerButton" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer2/HBoxContainer4"] -margin_left = 28.0 -margin_right = 158.0 -margin_bottom = 30.0 -rect_min_size = Vector2( 50, 30 ) -size_flags_horizontal = 3 -color = Color( 0, 0, 0, 0.619608 ) - -[node name="Label4" type="Label" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer2"] -margin_top = 95.0 -margin_right = 126.0 -margin_bottom = 109.0 -text = "Shadow Offset" - -[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer2"] -margin_left = 130.0 -margin_top = 90.0 -margin_right = 288.0 -margin_bottom = 114.0 -custom_constants/separation = 10 - -[node name="ShadowOffsetX" type="SpinBox" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer2/HBoxContainer"] -margin_right = 74.0 -margin_bottom = 24.0 -value = 2.0 -rounded = true -allow_lesser = true -prefix = "X" - -[node name="ShadowOffsetY" type="SpinBox" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer2/HBoxContainer"] -margin_left = 84.0 -margin_right = 158.0 -margin_bottom = 24.0 -value = 2.0 -rounded = true -allow_lesser = true -prefix = "Y" - -[node name="Label8" type="Label" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer2"] -margin_top = 123.0 -margin_right = 126.0 -margin_bottom = 137.0 -text = "Bottom gap" - -[node name="HBoxContainer5" type="HBoxContainer" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer2"] -margin_left = 130.0 -margin_top = 118.0 -margin_right = 288.0 -margin_bottom = 142.0 - -[node name="BottomGap" type="SpinBox" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer2/HBoxContainer5"] -margin_right = 74.0 -margin_bottom = 24.0 -max_value = 999.0 -value = 48.0 -allow_greater = true -allow_lesser = true - -[node name="Label" type="Label" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer2"] -margin_top = 151.0 -margin_right = 126.0 -margin_bottom = 165.0 -text = "Auto color" - -[node name="CheckBox" type="CheckBox" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer2"] -margin_left = 130.0 -margin_top = 146.0 -margin_right = 288.0 -margin_bottom = 170.0 - -[node name="Glossary Panel" parent="VBoxContainer/HBoxContainer2/Glossary" instance=ExtResource( 3 )] -margin_top = 208.0 -margin_right = 315.0 -margin_bottom = 238.0 - -[node name="GridContainer" type="GridContainer" parent="VBoxContainer/HBoxContainer2/Glossary"] -margin_top = 242.0 -margin_right = 315.0 -margin_bottom = 296.0 -size_flags_horizontal = 3 -custom_constants/hseparation = 10 -columns = 2 - -[node name="Label5" type="Label" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer"] -margin_top = 3.0 -margin_right = 210.0 -margin_bottom = 17.0 -size_flags_horizontal = 3 -text = "Font" - -[node name="FontButton" type="Button" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer"] -margin_left = 220.0 -margin_right = 315.0 -margin_bottom = 20.0 -size_flags_vertical = 4 -text = "GlossaryFont" - -[node name="Label3" type="Label" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer"] -margin_top = 32.0 -margin_right = 210.0 -margin_bottom = 46.0 -text = "Color" - -[node name="ColorPickerButton" type="ColorPickerButton" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer"] -margin_left = 220.0 -margin_top = 24.0 -margin_right = 315.0 -margin_bottom = 54.0 -rect_min_size = Vector2( 50, 30 ) -color = Color( 0.215686, 0.654902, 0.67451, 1 ) - -[node name="Label" type="Label" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer"] -visible = false -margin_top = 66.0 -margin_right = 141.0 -margin_bottom = 80.0 -text = "Shadow" - -[node name="HBoxContainer2" type="HBoxContainer" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer"] -visible = false -margin_top = 58.0 -margin_right = 213.0 -margin_bottom = 88.0 - -[node name="CheckBoxShadow" type="CheckBox" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer/HBoxContainer2"] -margin_right = 24.0 -margin_bottom = 30.0 - -[node name="ColorPickerButtonShadow" type="ColorPickerButton" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer/HBoxContainer2"] -margin_left = 28.0 -margin_right = 213.0 -margin_bottom = 30.0 -rect_min_size = Vector2( 50, 30 ) -size_flags_horizontal = 3 -color = Color( 0, 0, 0, 0.619608 ) - -[node name="Label4" type="Label" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer"] -visible = false -margin_top = 63.0 -margin_right = 141.0 -margin_bottom = 77.0 -text = "S, Offset" - -[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer"] -visible = false -margin_top = 58.0 -margin_right = 213.0 -margin_bottom = 82.0 -custom_constants/separation = 10 - -[node name="ShadowOffsetX" type="SpinBox" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer/HBoxContainer"] -margin_right = 74.0 -margin_bottom = 24.0 -value = 2.0 -rounded = true -allow_lesser = true -prefix = "X" - -[node name="ShadowOffsetY" type="SpinBox" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer/HBoxContainer"] -margin_left = 84.0 -margin_right = 158.0 -margin_bottom = 24.0 -value = 2.0 -rounded = true -allow_lesser = true -prefix = "Y" - -[node name="DialogBox" type="VBoxContainer" parent="VBoxContainer/HBoxContainer2"] -margin_left = 639.0 -margin_right = 954.0 -margin_bottom = 296.0 -size_flags_horizontal = 3 -size_flags_vertical = 3 -__meta__ = { -"_edit_use_anchors_": false -} - -[node name="PanelContainer" type="Panel" parent="VBoxContainer/HBoxContainer2/DialogBox"] -margin_right = 315.0 -margin_bottom = 30.0 -rect_min_size = Vector2( 0, 30 ) - -[node name="Label" type="Label" parent="VBoxContainer/HBoxContainer2/DialogBox/PanelContainer"] -margin_right = 40.0 -margin_bottom = 14.0 -text = "Dialog Box" -__meta__ = { -"_edit_use_anchors_": false -} - -[node name="GridContainer" type="GridContainer" parent="VBoxContainer/HBoxContainer2/DialogBox"] -margin_top = 34.0 -margin_right = 315.0 -margin_bottom = 242.0 -size_flags_horizontal = 3 -custom_constants/hseparation = 10 -columns = 2 - -[node name="Label5" type="Label" parent="VBoxContainer/HBoxContainer2/DialogBox/GridContainer"] -margin_top = 5.0 -margin_right = 126.0 -margin_bottom = 19.0 -text = "Background Color" - -[node name="HBoxContainer2" type="HBoxContainer" parent="VBoxContainer/HBoxContainer2/DialogBox/GridContainer"] -margin_left = 136.0 -margin_right = 288.0 -margin_bottom = 24.0 - -[node name="CheckBox" type="CheckBox" parent="VBoxContainer/HBoxContainer2/DialogBox/GridContainer/HBoxContainer2"] -margin_right = 24.0 -margin_bottom = 24.0 - -[node name="ColorPickerButton" type="ColorPickerButton" parent="VBoxContainer/HBoxContainer2/DialogBox/GridContainer/HBoxContainer2"] -margin_left = 28.0 -margin_right = 152.0 -margin_bottom = 24.0 -size_flags_horizontal = 3 - -[node name="Label" type="Label" parent="VBoxContainer/HBoxContainer2/DialogBox/GridContainer"] -margin_top = 33.0 -margin_right = 126.0 -margin_bottom = 47.0 -text = "Background Texture" - -[node name="HBoxContainer3" type="HBoxContainer" parent="VBoxContainer/HBoxContainer2/DialogBox/GridContainer"] -margin_left = 136.0 -margin_top = 28.0 -margin_right = 288.0 -margin_bottom = 52.0 - -[node name="CheckBox" type="CheckBox" parent="VBoxContainer/HBoxContainer2/DialogBox/GridContainer/HBoxContainer3"] -margin_right = 24.0 -margin_bottom = 24.0 -pressed = true - -[node name="BackgroundTextureButton" type="Button" parent="VBoxContainer/HBoxContainer2/DialogBox/GridContainer/HBoxContainer3"] -margin_left = 28.0 -margin_right = 152.0 -margin_bottom = 24.0 -size_flags_horizontal = 3 -text = "background-2" - -[node name="Label2" type="Label" parent="VBoxContainer/HBoxContainer2/DialogBox/GridContainer"] -margin_top = 59.0 -margin_right = 126.0 -margin_bottom = 73.0 -text = "Next indicator" - -[node name="NextIndicatorButton" type="Button" parent="VBoxContainer/HBoxContainer2/DialogBox/GridContainer"] -margin_left = 136.0 -margin_top = 56.0 -margin_right = 288.0 -margin_bottom = 76.0 -text = "next-indicator" - -[node name="Label4" type="Label" parent="VBoxContainer/HBoxContainer2/DialogBox/GridContainer"] -margin_top = 83.0 -margin_right = 126.0 -margin_bottom = 97.0 -text = "Next animation" - -[node name="NextAnimation" type="OptionButton" parent="VBoxContainer/HBoxContainer2/DialogBox/GridContainer"] -margin_left = 136.0 -margin_top = 80.0 -margin_right = 288.0 -margin_bottom = 100.0 -__meta__ = { -"_edit_use_anchors_": false -} - -[node name="Label6" type="Label" parent="VBoxContainer/HBoxContainer2/DialogBox/GridContainer"] -margin_top = 109.0 -margin_right = 126.0 -margin_bottom = 123.0 -text = "Box padding" - -[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/HBoxContainer2/DialogBox/GridContainer"] -margin_left = 136.0 -margin_top = 104.0 -margin_right = 288.0 -margin_bottom = 128.0 - -[node name="TextOffsetV" type="SpinBox" parent="VBoxContainer/HBoxContainer2/DialogBox/GridContainer/HBoxContainer"] -margin_right = 74.0 -margin_bottom = 24.0 -value = 10.0 -rounded = true -allow_lesser = true - -[node name="TextOffsetH" type="SpinBox" parent="VBoxContainer/HBoxContainer2/DialogBox/GridContainer/HBoxContainer"] -margin_left = 78.0 -margin_right = 152.0 -margin_bottom = 24.0 -value = 20.0 -rounded = true -allow_lesser = true - -[node name="Label7" type="Label" parent="VBoxContainer/HBoxContainer2/DialogBox/GridContainer"] -margin_top = 137.0 -margin_right = 126.0 -margin_bottom = 151.0 -text = "Box Size (pixels)" - -[node name="HBoxContainer4" type="HBoxContainer" parent="VBoxContainer/HBoxContainer2/DialogBox/GridContainer"] -margin_left = 136.0 -margin_top = 132.0 -margin_right = 288.0 -margin_bottom = 156.0 - -[node name="BoxSizeW" type="SpinBox" parent="VBoxContainer/HBoxContainer2/DialogBox/GridContainer/HBoxContainer4"] -margin_right = 74.0 -margin_bottom = 24.0 -value = 100.0 -rounded = true -allow_greater = true -allow_lesser = true - -[node name="BoxSizeH" type="SpinBox" parent="VBoxContainer/HBoxContainer2/DialogBox/GridContainer/HBoxContainer4"] -margin_left = 78.0 -margin_right = 152.0 -margin_bottom = 24.0 -max_value = 999.0 -value = 167.0 -rounded = true -allow_greater = true -allow_lesser = true - -[node name="Label8" type="Label" parent="VBoxContainer/HBoxContainer2/DialogBox/GridContainer"] -margin_top = 165.0 -margin_right = 126.0 -margin_bottom = 179.0 -text = "Bottom gap" - -[node name="HBoxContainer5" type="HBoxContainer" parent="VBoxContainer/HBoxContainer2/DialogBox/GridContainer"] -margin_left = 136.0 -margin_top = 160.0 -margin_right = 288.0 -margin_bottom = 184.0 - -[node name="BottomGap" type="SpinBox" parent="VBoxContainer/HBoxContainer2/DialogBox/GridContainer/HBoxContainer5"] -margin_right = 74.0 -margin_bottom = 24.0 -max_value = 999.0 -value = 40.0 -rounded = true -allow_greater = true -allow_lesser = true - -[node name="Label3" type="Label" parent="VBoxContainer/HBoxContainer2/DialogBox/GridContainer"] -margin_top = 188.0 -margin_right = 126.0 -margin_bottom = 208.0 -size_flags_vertical = 5 -text = "Action key" - -[node name="BoxContainer" type="HBoxContainer" parent="VBoxContainer/HBoxContainer2/DialogBox/GridContainer"] -margin_left = 136.0 -margin_top = 188.0 -margin_right = 288.0 -margin_bottom = 208.0 - -[node name="ActionOptionButton" type="OptionButton" parent="VBoxContainer/HBoxContainer2/DialogBox/GridContainer/BoxContainer"] -margin_right = 152.0 -margin_bottom = 20.0 -hint_tooltip = "To add/remove actions go to Project > Project Settings > Input Map" -size_flags_horizontal = 3 -text = "[Select Action]" -items = [ "[Select Action]", null, false, 0, null, "ui_accept", null, false, 1, null, "ui_select", null, false, 2, null, "ui_cancel", null, false, 3, null, "ui_focus_next", null, false, 4, null, "ui_focus_prev", null, false, 5, null, "ui_left", null, false, 6, null, "ui_right", null, false, 7, null, "ui_up", null, false, 8, null, "ui_down", null, false, 9, null, "ui_page_up", null, false, 10, null, "ui_page_down", null, false, 11, null, "ui_home", null, false, 12, null, "ui_end", null, false, 13, null ] -selected = 0 - -[node name="ButtonStyle" type="VBoxContainer" parent="VBoxContainer/HBoxContainer2"] -margin_left = 958.0 -margin_right = 1273.0 -margin_bottom = 296.0 -size_flags_horizontal = 3 -size_flags_vertical = 3 -__meta__ = { -"_edit_use_anchors_": false -} - -[node name="PanelContainer" type="Panel" parent="VBoxContainer/HBoxContainer2/ButtonStyle"] -margin_right = 315.0 -margin_bottom = 30.0 -rect_min_size = Vector2( 0, 30 ) - -[node name="Label" type="Label" parent="VBoxContainer/HBoxContainer2/ButtonStyle/PanelContainer"] -margin_right = 40.0 -margin_bottom = 14.0 -text = "Choice Buttons" -__meta__ = { -"_edit_use_anchors_": false -} - -[node name="GridContainer" type="GridContainer" parent="VBoxContainer/HBoxContainer2/ButtonStyle"] -margin_top = 34.0 -margin_right = 315.0 -margin_bottom = 170.0 -size_flags_horizontal = 3 -custom_constants/hseparation = 10 -columns = 2 - -[node name="Label5" type="Label" parent="VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer"] -margin_top = 5.0 -margin_right = 126.0 -margin_bottom = 19.0 -text = "Text Color " - -[node name="HBoxContainer4" type="HBoxContainer" parent="VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer"] -margin_left = 136.0 -margin_right = 288.0 -margin_bottom = 24.0 -__meta__ = { -"_edit_use_anchors_": false -} - -[node name="CheckBox2" type="CheckBox" parent="VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer/HBoxContainer4"] -margin_right = 24.0 -margin_bottom = 24.0 -pressed = true - -[node name="ButtonTextColor" type="ColorPickerButton" parent="VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer/HBoxContainer4"] -margin_left = 28.0 -margin_right = 152.0 -margin_bottom = 24.0 -size_flags_horizontal = 3 -color = Color( 1, 1, 1, 1 ) - -[node name="Label7" type="Label" parent="VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer"] -margin_top = 33.0 -margin_right = 126.0 -margin_bottom = 47.0 -text = "Background Color" - -[node name="HBoxContainer2" type="HBoxContainer" parent="VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer"] -margin_left = 136.0 -margin_top = 28.0 -margin_right = 288.0 -margin_bottom = 52.0 - -[node name="CheckBox" type="CheckBox" parent="VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer/HBoxContainer2"] -margin_right = 24.0 -margin_bottom = 24.0 - -[node name="ColorPickerButton" type="ColorPickerButton" parent="VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer/HBoxContainer2"] -margin_left = 28.0 -margin_right = 152.0 -margin_bottom = 24.0 -size_flags_horizontal = 3 - -[node name="Label" type="Label" parent="VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer"] -margin_top = 61.0 -margin_right = 126.0 -margin_bottom = 75.0 -text = "Background Texture" - -[node name="HBoxContainer3" type="HBoxContainer" parent="VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer"] -margin_left = 136.0 -margin_top = 56.0 -margin_right = 288.0 -margin_bottom = 80.0 - -[node name="CheckBox" type="CheckBox" parent="VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer/HBoxContainer3"] -margin_right = 24.0 -margin_bottom = 24.0 -pressed = true - -[node name="BackgroundTextureButton" type="Button" parent="VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer/HBoxContainer3"] -margin_left = 28.0 -margin_right = 152.0 -margin_bottom = 24.0 -size_flags_horizontal = 3 -text = "background-2" - -[node name="Label6" type="Label" parent="VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer"] -margin_top = 89.0 -margin_right = 126.0 -margin_bottom = 103.0 -text = "Box padding" - -[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer"] -margin_left = 136.0 -margin_top = 84.0 -margin_right = 288.0 -margin_bottom = 108.0 - -[node name="TextOffsetV" type="SpinBox" parent="VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer/HBoxContainer"] -margin_right = 74.0 -margin_bottom = 24.0 -value = 5.0 -rounded = true -allow_lesser = true -prefix = "V" - -[node name="TextOffsetH" type="SpinBox" parent="VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer/HBoxContainer"] -margin_left = 78.0 -margin_right = 152.0 -margin_bottom = 24.0 -value = 5.0 -rounded = true -allow_lesser = true -prefix = "H" - -[node name="Label2" type="Label" parent="VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer"] -margin_top = 117.0 -margin_right = 126.0 -margin_bottom = 131.0 -text = "Vertical separation" - -[node name="VerticalSeparation" type="SpinBox" parent="VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer"] -margin_left = 136.0 -margin_top = 112.0 -margin_right = 288.0 -margin_bottom = 136.0 -value = 5.0 -rounded = true -allow_lesser = true - [node name="HBoxContainer3" type="HBoxContainer" parent="VBoxContainer"] -margin_top = 311.0 -margin_right = 1273.0 -margin_bottom = 371.0 +margin_right = 1285.0 +margin_bottom = 60.0 custom_constants/separation = 10 [node name="PreviewButton" type="Button" parent="VBoxContainer/HBoxContainer3"] @@ -783,7 +33,7 @@ icon = ExtResource( 1 ) [node name="TextEdit" type="TextEdit" parent="VBoxContainer/HBoxContainer3"] margin_left = 162.0 -margin_right = 1273.0 +margin_right = 1285.0 margin_bottom = 60.0 rect_min_size = Vector2( 400, 60 ) size_flags_horizontal = 3 @@ -792,66 +42,842 @@ text = "This is preview text. You can use [color=#A5EFAC]BBCode[/color] to styl wrap_enabled = true [node name="Panel" type="Panel" parent="VBoxContainer"] -margin_top = 386.0 -margin_right = 1273.0 -margin_bottom = 686.0 +margin_top = 75.0 +margin_right = 1285.0 +margin_bottom = 375.0 rect_min_size = Vector2( 0, 300 ) -[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"] -margin_top = 701.0 -margin_right = 1273.0 -margin_bottom = 701.0 +[node name="TabContainer" type="TabContainer" parent="VBoxContainer"] +margin_top = 390.0 +margin_right = 1285.0 +margin_bottom = 594.0 +tab_align = 0 -[node name="Control" type="Control" parent="VBoxContainer/HBoxContainer"] -margin_right = 1273.0 +[node name="Text" type="HBoxContainer" parent="VBoxContainer/TabContainer"] +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = 4.0 +margin_top = 32.0 +margin_right = -4.0 +margin_bottom = -4.0 + +[node name="Column" type="VBoxContainer" parent="VBoxContainer/TabContainer/Text"] +margin_right = 316.0 +margin_bottom = 168.0 +size_flags_vertical = 3 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="GridContainer" type="GridContainer" parent="VBoxContainer/TabContainer/Text/Column"] +margin_right = 316.0 +margin_bottom = 168.0 +size_flags_horizontal = 3 +custom_constants/hseparation = 10 +columns = 2 + +[node name="Label5" type="Label" parent="VBoxContainer/TabContainer/Text/Column/GridContainer"] +margin_top = 3.0 +margin_right = 148.0 +margin_bottom = 17.0 +size_flags_horizontal = 3 +text = "Font" + +[node name="FontButton" type="Button" parent="VBoxContainer/TabContainer/Text/Column/GridContainer"] +margin_left = 158.0 +margin_right = 316.0 +margin_bottom = 20.0 +size_flags_vertical = 4 +text = "DefaultFont" + +[node name="Label3" type="Label" parent="VBoxContainer/TabContainer/Text/Column/GridContainer"] +margin_top = 32.0 +margin_right = 148.0 +margin_bottom = 46.0 +text = "Color" + +[node name="ColorPickerButton" type="ColorPickerButton" parent="VBoxContainer/TabContainer/Text/Column/GridContainer"] +margin_left = 158.0 +margin_top = 24.0 +margin_right = 316.0 +margin_bottom = 54.0 +rect_min_size = Vector2( 50, 30 ) +color = Color( 1, 1, 1, 1 ) + +[node name="Label" type="Label" parent="VBoxContainer/TabContainer/Text/Column/GridContainer"] +margin_top = 66.0 +margin_right = 148.0 +margin_bottom = 80.0 +text = "Shadow" + +[node name="HBoxContainer2" type="HBoxContainer" parent="VBoxContainer/TabContainer/Text/Column/GridContainer"] +margin_left = 158.0 +margin_top = 58.0 +margin_right = 316.0 +margin_bottom = 88.0 + +[node name="CheckBoxShadow" type="CheckBox" parent="VBoxContainer/TabContainer/Text/Column/GridContainer/HBoxContainer2"] +margin_right = 24.0 +margin_bottom = 30.0 + +[node name="ColorPickerButtonShadow" type="ColorPickerButton" parent="VBoxContainer/TabContainer/Text/Column/GridContainer/HBoxContainer2"] +margin_left = 28.0 +margin_right = 158.0 +margin_bottom = 30.0 +rect_min_size = Vector2( 50, 30 ) +size_flags_horizontal = 3 +color = Color( 0, 0, 0, 0.619608 ) + +[node name="Label4" type="Label" parent="VBoxContainer/TabContainer/Text/Column/GridContainer"] +margin_top = 97.0 +margin_right = 148.0 +margin_bottom = 111.0 +text = "Shadow Offset" + +[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/TabContainer/Text/Column/GridContainer"] +margin_left = 158.0 +margin_top = 92.0 +margin_right = 316.0 +margin_bottom = 116.0 +custom_constants/separation = 10 + +[node name="ShadowOffsetX" type="SpinBox" parent="VBoxContainer/TabContainer/Text/Column/GridContainer/HBoxContainer"] +margin_right = 74.0 +margin_bottom = 24.0 +value = 2.0 +rounded = true +allow_lesser = true +prefix = "X" + +[node name="ShadowOffsetY" type="SpinBox" parent="VBoxContainer/TabContainer/Text/Column/GridContainer/HBoxContainer"] +margin_left = 84.0 +margin_right = 158.0 +margin_bottom = 24.0 +value = 2.0 +rounded = true +allow_lesser = true +prefix = "Y" + +[node name="Label6" type="Label" parent="VBoxContainer/TabContainer/Text/Column/GridContainer"] +margin_top = 125.0 +margin_right = 148.0 +margin_bottom = 139.0 +text = "Speed (bigger = slower)" + +[node name="TextSpeed" type="SpinBox" parent="VBoxContainer/TabContainer/Text/Column/GridContainer"] +margin_left = 158.0 +margin_top = 120.0 +margin_right = 316.0 +margin_bottom = 144.0 +max_value = 10.0 +value = 2.0 +rounded = true + +[node name="Label2" type="Label" parent="VBoxContainer/TabContainer/Text/Column/GridContainer"] +margin_top = 151.0 +margin_right = 148.0 +margin_bottom = 165.0 +text = "Alignment" + +[node name="HBoxContainer3" type="HBoxContainer" parent="VBoxContainer/TabContainer/Text/Column/GridContainer"] +margin_left = 158.0 +margin_top = 148.0 +margin_right = 316.0 +margin_bottom = 168.0 + +[node name="Alignment" type="OptionButton" parent="VBoxContainer/TabContainer/Text/Column/GridContainer/HBoxContainer3"] +margin_right = 158.0 +margin_bottom = 20.0 +size_flags_horizontal = 3 +text = "Left" +items = [ "Left", null, false, 0, null, "Center", null, false, 1, null, "Right", null, false, 2, null ] +selected = 0 + +[node name="Dialog Box" type="HBoxContainer" parent="VBoxContainer/TabContainer"] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = 4.0 +margin_top = 32.0 +margin_right = -4.0 +margin_bottom = -4.0 + +[node name="Column" type="VBoxContainer" parent="VBoxContainer/TabContainer/Dialog Box"] +margin_right = 1277.0 +margin_bottom = 236.0 size_flags_horizontal = 3 size_flags_vertical = 3 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="GridContainer" type="GridContainer" parent="VBoxContainer/TabContainer/Dialog Box/Column"] +margin_right = 1277.0 +margin_bottom = 236.0 +size_flags_horizontal = 3 +custom_constants/hseparation = 10 +columns = 2 + +[node name="Label5" type="Label" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer"] +margin_top = 5.0 +margin_right = 126.0 +margin_bottom = 19.0 +text = "Background Color" + +[node name="HBoxContainer2" type="HBoxContainer" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer"] +margin_left = 136.0 +margin_right = 288.0 +margin_bottom = 24.0 + +[node name="CheckBox" type="CheckBox" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer2"] +margin_right = 24.0 +margin_bottom = 24.0 + +[node name="ColorPickerButton" type="ColorPickerButton" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer2"] +margin_left = 28.0 +margin_right = 152.0 +margin_bottom = 24.0 +size_flags_horizontal = 3 + +[node name="Label" type="Label" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer"] +margin_top = 33.0 +margin_right = 126.0 +margin_bottom = 47.0 +text = "Background Texture" + +[node name="HBoxContainer3" type="HBoxContainer" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer"] +margin_left = 136.0 +margin_top = 28.0 +margin_right = 288.0 +margin_bottom = 52.0 + +[node name="CheckBox" type="CheckBox" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer3"] +margin_right = 24.0 +margin_bottom = 24.0 +pressed = true + +[node name="BackgroundTextureButton" type="Button" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer3"] +margin_left = 28.0 +margin_right = 152.0 +margin_bottom = 24.0 +size_flags_horizontal = 3 +text = "background-2" + +[node name="Label9" type="Label" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer"] +margin_top = 61.0 +margin_right = 126.0 +margin_bottom = 75.0 +text = "Texture Modulation" + +[node name="HBoxContainer6" type="HBoxContainer" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer"] +margin_left = 136.0 +margin_top = 56.0 +margin_right = 288.0 +margin_bottom = 80.0 + +[node name="CheckBox" type="CheckBox" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer6"] +margin_right = 24.0 +margin_bottom = 24.0 + +[node name="ColorPickerButton" type="ColorPickerButton" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer6"] +margin_left = 28.0 +margin_right = 152.0 +margin_bottom = 24.0 +size_flags_horizontal = 3 + +[node name="Label2" type="Label" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer"] +margin_top = 87.0 +margin_right = 126.0 +margin_bottom = 101.0 +text = "Next indicator" + +[node name="NextIndicatorButton" type="Button" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer"] +margin_left = 136.0 +margin_top = 84.0 +margin_right = 288.0 +margin_bottom = 104.0 +text = "next-indicator" + +[node name="Label4" type="Label" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer"] +margin_top = 111.0 +margin_right = 126.0 +margin_bottom = 125.0 +text = "Next animation" + +[node name="NextAnimation" type="OptionButton" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer"] +margin_left = 136.0 +margin_top = 108.0 +margin_right = 288.0 +margin_bottom = 128.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Label6" type="Label" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer"] +margin_top = 137.0 +margin_right = 126.0 +margin_bottom = 151.0 +text = "Box padding" + +[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer"] +margin_left = 136.0 +margin_top = 132.0 +margin_right = 288.0 +margin_bottom = 156.0 + +[node name="TextOffsetV" type="SpinBox" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer"] +margin_right = 74.0 +margin_bottom = 24.0 +max_value = 1e+07 +value = 10.0 +rounded = true +allow_greater = true +allow_lesser = true + +[node name="TextOffsetH" type="SpinBox" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer"] +margin_left = 78.0 +margin_right = 152.0 +margin_bottom = 24.0 +max_value = 1e+07 +value = 20.0 +rounded = true +allow_greater = true +allow_lesser = true + +[node name="Label7" type="Label" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer"] +margin_top = 165.0 +margin_right = 126.0 +margin_bottom = 179.0 +text = "Box Size (pixels)" + +[node name="HBoxContainer4" type="HBoxContainer" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer"] +margin_left = 136.0 +margin_top = 160.0 +margin_right = 288.0 +margin_bottom = 184.0 + +[node name="BoxSizeW" type="SpinBox" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer4"] +margin_right = 74.0 +margin_bottom = 24.0 +value = 100.0 +rounded = true +allow_greater = true +allow_lesser = true + +[node name="BoxSizeH" type="SpinBox" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer4"] +margin_left = 78.0 +margin_right = 152.0 +margin_bottom = 24.0 +max_value = 999.0 +value = 167.0 +rounded = true +allow_greater = true +allow_lesser = true + +[node name="Label8" type="Label" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer"] +margin_top = 193.0 +margin_right = 126.0 +margin_bottom = 207.0 +text = "Bottom gap" + +[node name="HBoxContainer5" type="HBoxContainer" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer"] +margin_left = 136.0 +margin_top = 188.0 +margin_right = 288.0 +margin_bottom = 212.0 + +[node name="BottomGap" type="SpinBox" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer5"] +margin_right = 74.0 +margin_bottom = 24.0 +max_value = 999.0 +value = 40.0 +rounded = true +allow_greater = true +allow_lesser = true + +[node name="Label3" type="Label" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer"] +margin_top = 216.0 +margin_right = 126.0 +margin_bottom = 236.0 +size_flags_vertical = 5 +text = "Action key" + +[node name="BoxContainer" type="HBoxContainer" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer"] +margin_left = 136.0 +margin_top = 216.0 +margin_right = 288.0 +margin_bottom = 236.0 + +[node name="ActionOptionButton" type="OptionButton" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/BoxContainer"] +margin_right = 152.0 +margin_bottom = 20.0 +hint_tooltip = "To add/remove actions go to Project > Project Settings > Input Map" +size_flags_horizontal = 3 +text = "[Select Action]" +items = [ "[Select Action]", null, false, 0, null, "ui_accept", null, false, 1, null, "ui_select", null, false, 2, null, "ui_cancel", null, false, 3, null, "ui_focus_next", null, false, 4, null, "ui_focus_prev", null, false, 5, null, "ui_left", null, false, 6, null, "ui_right", null, false, 7, null, "ui_up", null, false, 8, null, "ui_down", null, false, 9, null, "ui_page_up", null, false, 10, null, "ui_page_down", null, false, 11, null, "ui_home", null, false, 12, null, "ui_end", null, false, 13, null ] +selected = 0 + +[node name="Choice Buttons" type="HBoxContainer" parent="VBoxContainer/TabContainer"] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = 4.0 +margin_top = 32.0 +margin_right = -4.0 +margin_bottom = -4.0 + +[node name="Column" type="VBoxContainer" parent="VBoxContainer/TabContainer/Choice Buttons"] +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = 953.0 +margin_top = 187.0 +margin_right = 945.0 +margin_bottom = 189.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="GridContainer" type="GridContainer" parent="VBoxContainer/TabContainer/Choice Buttons/Column"] +margin_top = 34.0 +margin_right = 316.0 +margin_bottom = 170.0 +size_flags_horizontal = 3 +custom_constants/hseparation = 10 +columns = 2 + +[node name="Label5" type="Label" parent="VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer"] +margin_top = 5.0 +margin_right = 126.0 +margin_bottom = 19.0 +text = "Text Color " + +[node name="HBoxContainer4" type="HBoxContainer" parent="VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer"] +margin_left = 136.0 +margin_right = 288.0 +margin_bottom = 24.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="CheckBox2" type="CheckBox" parent="VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer/HBoxContainer4"] +margin_right = 24.0 +margin_bottom = 24.0 +pressed = true + +[node name="ButtonTextColor" type="ColorPickerButton" parent="VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer/HBoxContainer4"] +margin_left = 28.0 +margin_right = 152.0 +margin_bottom = 24.0 +size_flags_horizontal = 3 +color = Color( 1, 1, 1, 1 ) + +[node name="Label7" type="Label" parent="VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer"] +margin_top = 33.0 +margin_right = 126.0 +margin_bottom = 47.0 +text = "Background Color" + +[node name="HBoxContainer2" type="HBoxContainer" parent="VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer"] +margin_left = 136.0 +margin_top = 28.0 +margin_right = 288.0 +margin_bottom = 52.0 + +[node name="CheckBox" type="CheckBox" parent="VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer/HBoxContainer2"] +margin_right = 24.0 +margin_bottom = 24.0 + +[node name="ColorPickerButton" type="ColorPickerButton" parent="VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer/HBoxContainer2"] +margin_left = 28.0 +margin_right = 152.0 +margin_bottom = 24.0 +size_flags_horizontal = 3 + +[node name="Label" type="Label" parent="VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer"] +margin_top = 61.0 +margin_right = 126.0 +margin_bottom = 75.0 +text = "Background Texture" + +[node name="HBoxContainer3" type="HBoxContainer" parent="VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer"] +margin_left = 136.0 +margin_top = 56.0 +margin_right = 288.0 +margin_bottom = 80.0 + +[node name="CheckBox" type="CheckBox" parent="VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer/HBoxContainer3"] +margin_right = 24.0 +margin_bottom = 24.0 +pressed = true + +[node name="BackgroundTextureButton" type="Button" parent="VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer/HBoxContainer3"] +margin_left = 28.0 +margin_right = 152.0 +margin_bottom = 24.0 +size_flags_horizontal = 3 +text = "background-2" + +[node name="Label6" type="Label" parent="VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer"] +margin_top = 89.0 +margin_right = 126.0 +margin_bottom = 103.0 +text = "Box padding" + +[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer"] +margin_left = 136.0 +margin_top = 84.0 +margin_right = 288.0 +margin_bottom = 108.0 + +[node name="TextOffsetV" type="SpinBox" parent="VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer/HBoxContainer"] +margin_right = 74.0 +margin_bottom = 24.0 +value = 5.0 +rounded = true +allow_lesser = true +prefix = "V" + +[node name="TextOffsetH" type="SpinBox" parent="VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer/HBoxContainer"] +margin_left = 78.0 +margin_right = 152.0 +margin_bottom = 24.0 +value = 5.0 +rounded = true +allow_lesser = true +prefix = "H" + +[node name="Label2" type="Label" parent="VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer"] +margin_top = 117.0 +margin_right = 126.0 +margin_bottom = 131.0 +text = "Vertical separation" + +[node name="VerticalSeparation" type="SpinBox" parent="VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer"] +margin_left = 136.0 +margin_top = 112.0 +margin_right = 288.0 +margin_bottom = 136.0 +value = 5.0 +rounded = true +allow_lesser = true + +[node name="Name Label" type="HBoxContainer" parent="VBoxContainer/TabContainer"] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = 4.0 +margin_top = 32.0 +margin_right = -4.0 +margin_bottom = -4.0 + +[node name="Column" type="VBoxContainer" parent="VBoxContainer/TabContainer/Name Label"] +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = 315.0 +margin_top = 187.0 +margin_right = 307.0 +margin_bottom = 315.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="GridContainer" type="GridContainer" parent="VBoxContainer/TabContainer/Name Label/Column"] +margin_top = 34.0 +margin_right = 315.0 +margin_bottom = 204.0 +columns = 2 + +[node name="Label5" type="Label" parent="VBoxContainer/TabContainer/Name Label/Column/GridContainer"] +margin_top = 5.0 +margin_right = 126.0 +margin_bottom = 19.0 +text = "Background Color" + +[node name="HBoxContainer2" type="HBoxContainer" parent="VBoxContainer/TabContainer/Name Label/Column/GridContainer"] +margin_left = 130.0 +margin_right = 288.0 +margin_bottom = 24.0 + +[node name="CheckBox" type="CheckBox" parent="VBoxContainer/TabContainer/Name Label/Column/GridContainer/HBoxContainer2"] +margin_right = 24.0 +margin_bottom = 24.0 + +[node name="ColorPickerButton" type="ColorPickerButton" parent="VBoxContainer/TabContainer/Name Label/Column/GridContainer/HBoxContainer2"] +margin_left = 28.0 +margin_right = 158.0 +margin_bottom = 24.0 +size_flags_horizontal = 3 + +[node name="Label2" type="Label" parent="VBoxContainer/TabContainer/Name Label/Column/GridContainer"] +margin_top = 33.0 +margin_right = 126.0 +margin_bottom = 47.0 +text = "Background Texture" + +[node name="HBoxContainer3" type="HBoxContainer" parent="VBoxContainer/TabContainer/Name Label/Column/GridContainer"] +margin_left = 130.0 +margin_top = 28.0 +margin_right = 288.0 +margin_bottom = 52.0 + +[node name="CheckBox" type="CheckBox" parent="VBoxContainer/TabContainer/Name Label/Column/GridContainer/HBoxContainer3"] +margin_right = 24.0 +margin_bottom = 24.0 +pressed = true + +[node name="BackgroundTextureButton" type="Button" parent="VBoxContainer/TabContainer/Name Label/Column/GridContainer/HBoxContainer3"] +margin_left = 28.0 +margin_right = 158.0 +margin_bottom = 24.0 +size_flags_horizontal = 3 +text = "background-2" + +[node name="Label3" type="Label" parent="VBoxContainer/TabContainer/Name Label/Column/GridContainer"] +margin_top = 64.0 +margin_right = 126.0 +margin_bottom = 78.0 +text = "Shadow" + +[node name="HBoxContainer4" type="HBoxContainer" parent="VBoxContainer/TabContainer/Name Label/Column/GridContainer"] +margin_left = 130.0 +margin_top = 56.0 +margin_right = 288.0 +margin_bottom = 86.0 + +[node name="CheckBoxShadow" type="CheckBox" parent="VBoxContainer/TabContainer/Name Label/Column/GridContainer/HBoxContainer4"] +margin_right = 24.0 +margin_bottom = 30.0 + +[node name="ColorPickerButtonShadow" type="ColorPickerButton" parent="VBoxContainer/TabContainer/Name Label/Column/GridContainer/HBoxContainer4"] +margin_left = 28.0 +margin_right = 158.0 +margin_bottom = 30.0 +rect_min_size = Vector2( 50, 30 ) +size_flags_horizontal = 3 +color = Color( 0, 0, 0, 0.619608 ) + +[node name="Label4" type="Label" parent="VBoxContainer/TabContainer/Name Label/Column/GridContainer"] +margin_top = 95.0 +margin_right = 126.0 +margin_bottom = 109.0 +text = "Shadow Offset" + +[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/TabContainer/Name Label/Column/GridContainer"] +margin_left = 130.0 +margin_top = 90.0 +margin_right = 288.0 +margin_bottom = 114.0 +custom_constants/separation = 10 + +[node name="ShadowOffsetX" type="SpinBox" parent="VBoxContainer/TabContainer/Name Label/Column/GridContainer/HBoxContainer"] +margin_right = 74.0 +margin_bottom = 24.0 +value = 2.0 +rounded = true +allow_lesser = true +prefix = "X" + +[node name="ShadowOffsetY" type="SpinBox" parent="VBoxContainer/TabContainer/Name Label/Column/GridContainer/HBoxContainer"] +margin_left = 84.0 +margin_right = 158.0 +margin_bottom = 24.0 +value = 2.0 +rounded = true +allow_lesser = true +prefix = "Y" + +[node name="Label8" type="Label" parent="VBoxContainer/TabContainer/Name Label/Column/GridContainer"] +margin_top = 123.0 +margin_right = 126.0 +margin_bottom = 137.0 +text = "Bottom gap" + +[node name="HBoxContainer5" type="HBoxContainer" parent="VBoxContainer/TabContainer/Name Label/Column/GridContainer"] +margin_left = 130.0 +margin_top = 118.0 +margin_right = 288.0 +margin_bottom = 142.0 + +[node name="BottomGap" type="SpinBox" parent="VBoxContainer/TabContainer/Name Label/Column/GridContainer/HBoxContainer5"] +margin_right = 74.0 +margin_bottom = 24.0 +max_value = 999.0 +value = 48.0 +allow_greater = true +allow_lesser = true + +[node name="Label" type="Label" parent="VBoxContainer/TabContainer/Name Label/Column/GridContainer"] +margin_top = 151.0 +margin_right = 126.0 +margin_bottom = 165.0 +text = "Auto color" + +[node name="CheckBox" type="CheckBox" parent="VBoxContainer/TabContainer/Name Label/Column/GridContainer"] +margin_left = 130.0 +margin_top = 146.0 +margin_right = 288.0 +margin_bottom = 170.0 + +[node name="Glossary" type="HBoxContainer" parent="VBoxContainer/TabContainer"] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = 4.0 +margin_top = 32.0 +margin_right = -4.0 +margin_bottom = -4.0 + +[node name="Column" type="VBoxContainer" parent="VBoxContainer/TabContainer/Glossary"] +margin_right = 40.0 +margin_bottom = 40.0 + +[node name="GridContainer" type="GridContainer" parent="VBoxContainer/TabContainer/Glossary/Column"] +margin_left = 315.0 +margin_top = 429.0 +margin_right = 630.0 +margin_bottom = 483.0 +size_flags_horizontal = 3 +custom_constants/hseparation = 10 +columns = 2 + +[node name="Label5" type="Label" parent="VBoxContainer/TabContainer/Glossary/Column/GridContainer"] +margin_top = 3.0 +margin_right = 210.0 +margin_bottom = 17.0 +size_flags_horizontal = 3 +text = "Font" + +[node name="FontButton" type="Button" parent="VBoxContainer/TabContainer/Glossary/Column/GridContainer"] +margin_left = 220.0 +margin_right = 315.0 +margin_bottom = 20.0 +size_flags_vertical = 4 +text = "GlossaryFont" + +[node name="Label3" type="Label" parent="VBoxContainer/TabContainer/Glossary/Column/GridContainer"] +margin_top = 32.0 +margin_right = 210.0 +margin_bottom = 46.0 +text = "Color" + +[node name="ColorPickerButton" type="ColorPickerButton" parent="VBoxContainer/TabContainer/Glossary/Column/GridContainer"] +margin_left = 220.0 +margin_top = 24.0 +margin_right = 315.0 +margin_bottom = 54.0 +rect_min_size = Vector2( 50, 30 ) +color = Color( 0.215686, 0.654902, 0.67451, 1 ) + +[node name="Label" type="Label" parent="VBoxContainer/TabContainer/Glossary/Column/GridContainer"] +visible = false +margin_top = 66.0 +margin_right = 141.0 +margin_bottom = 80.0 +text = "Shadow" + +[node name="HBoxContainer2" type="HBoxContainer" parent="VBoxContainer/TabContainer/Glossary/Column/GridContainer"] +visible = false +margin_top = 58.0 +margin_right = 213.0 +margin_bottom = 88.0 + +[node name="CheckBoxShadow" type="CheckBox" parent="VBoxContainer/TabContainer/Glossary/Column/GridContainer/HBoxContainer2"] +margin_right = 24.0 +margin_bottom = 30.0 + +[node name="ColorPickerButtonShadow" type="ColorPickerButton" parent="VBoxContainer/TabContainer/Glossary/Column/GridContainer/HBoxContainer2"] +margin_left = 28.0 +margin_right = 213.0 +margin_bottom = 30.0 +rect_min_size = Vector2( 50, 30 ) +size_flags_horizontal = 3 +color = Color( 0, 0, 0, 0.619608 ) + +[node name="Label4" type="Label" parent="VBoxContainer/TabContainer/Glossary/Column/GridContainer"] +visible = false +margin_top = 63.0 +margin_right = 141.0 +margin_bottom = 77.0 +text = "S, Offset" + +[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/TabContainer/Glossary/Column/GridContainer"] +visible = false +margin_top = 58.0 +margin_right = 213.0 +margin_bottom = 82.0 +custom_constants/separation = 10 + +[node name="ShadowOffsetX" type="SpinBox" parent="VBoxContainer/TabContainer/Glossary/Column/GridContainer/HBoxContainer"] +margin_right = 74.0 +margin_bottom = 24.0 +value = 2.0 +rounded = true +allow_lesser = true +prefix = "X" + +[node name="ShadowOffsetY" type="SpinBox" parent="VBoxContainer/TabContainer/Glossary/Column/GridContainer/HBoxContainer"] +margin_left = 84.0 +margin_right = 158.0 +margin_bottom = 24.0 +value = 2.0 +rounded = true +allow_lesser = true +prefix = "Y" + +[node name="DelayPreviewTimer" type="Timer" parent="."] +one_shot = true -[connection signal="pressed" from="VBoxContainer/HBoxContainer2/Text/GridContainer/FontButton" to="." method="_on_FontButton_pressed"] -[connection signal="color_changed" from="VBoxContainer/HBoxContainer2/Text/GridContainer/ColorPickerButton" to="." method="_on_ColorPickerButton_color_changed"] -[connection signal="toggled" from="VBoxContainer/HBoxContainer2/Text/GridContainer/HBoxContainer2/CheckBoxShadow" to="." method="_on_CheckBoxShadow_toggled"] -[connection signal="color_changed" from="VBoxContainer/HBoxContainer2/Text/GridContainer/HBoxContainer2/ColorPickerButtonShadow" to="." method="_on_ColorPickerButtonShadow_color_changed"] -[connection signal="value_changed" from="VBoxContainer/HBoxContainer2/Text/GridContainer/HBoxContainer/ShadowOffsetX" to="." method="_on_ShadowOffset_value_changed"] -[connection signal="value_changed" from="VBoxContainer/HBoxContainer2/Text/GridContainer/HBoxContainer/ShadowOffsetY" to="." method="_on_ShadowOffset_value_changed"] -[connection signal="value_changed" from="VBoxContainer/HBoxContainer2/Text/GridContainer/TextSpeed" to="." method="_on_textSpeed_value_changed"] -[connection signal="item_selected" from="VBoxContainer/HBoxContainer2/Text/GridContainer/HBoxContainer3/Alignment" to="." method="_on_Alignment_item_selected"] -[connection signal="toggled" from="VBoxContainer/HBoxContainer2/Glossary/GridContainer2/HBoxContainer2/CheckBox" to="." method="_on_name_background_visible_toggled"] -[connection signal="color_changed" from="VBoxContainer/HBoxContainer2/Glossary/GridContainer2/HBoxContainer2/ColorPickerButton" to="." method="_on_name_background_color_changed"] -[connection signal="toggled" from="VBoxContainer/HBoxContainer2/Glossary/GridContainer2/HBoxContainer3/CheckBox" to="." method="_on_name_image_visible_toggled"] -[connection signal="pressed" from="VBoxContainer/HBoxContainer2/Glossary/GridContainer2/HBoxContainer3/BackgroundTextureButton" to="." method="_on_name_image_pressed"] -[connection signal="toggled" from="VBoxContainer/HBoxContainer2/Glossary/GridContainer2/HBoxContainer4/CheckBoxShadow" to="." method="_on_shadow_visible_toggled"] -[connection signal="color_changed" from="VBoxContainer/HBoxContainer2/Glossary/GridContainer2/HBoxContainer4/ColorPickerButtonShadow" to="." method="_on_name_shadow_color_changed"] -[connection signal="value_changed" from="VBoxContainer/HBoxContainer2/Glossary/GridContainer2/HBoxContainer/ShadowOffsetX" to="." method="_on_name_ShadowOffset_value_changed"] -[connection signal="value_changed" from="VBoxContainer/HBoxContainer2/Glossary/GridContainer2/HBoxContainer/ShadowOffsetY" to="." method="_on_name_ShadowOffset_value_changed"] -[connection signal="value_changed" from="VBoxContainer/HBoxContainer2/Glossary/GridContainer2/HBoxContainer5/BottomGap" to="." method="_on_name_BottomGap_value_changed"] -[connection signal="toggled" from="VBoxContainer/HBoxContainer2/Glossary/GridContainer2/CheckBox" to="." method="_on_name_auto_color_toggled"] -[connection signal="pressed" from="VBoxContainer/HBoxContainer2/Glossary/GridContainer/FontButton" to="." method="_on_GlossaryFontButton_pressed"] -[connection signal="color_changed" from="VBoxContainer/HBoxContainer2/Glossary/GridContainer/ColorPickerButton" to="." method="_on_GlossaryColorPicker_color_changed"] -[connection signal="toggled" from="VBoxContainer/HBoxContainer2/Glossary/GridContainer/HBoxContainer2/CheckBoxShadow" to="." method="_on_CheckBoxShadow_toggled"] -[connection signal="color_changed" from="VBoxContainer/HBoxContainer2/Glossary/GridContainer/HBoxContainer2/ColorPickerButtonShadow" to="." method="_on_ColorPickerButtonShadow_color_changed"] -[connection signal="value_changed" from="VBoxContainer/HBoxContainer2/Glossary/GridContainer/HBoxContainer/ShadowOffsetX" to="." method="_on_ShadowOffset_value_changed"] -[connection signal="value_changed" from="VBoxContainer/HBoxContainer2/Glossary/GridContainer/HBoxContainer/ShadowOffsetY" to="." method="_on_ShadowOffset_value_changed"] -[connection signal="toggled" from="VBoxContainer/HBoxContainer2/DialogBox/GridContainer/HBoxContainer2/CheckBox" to="." method="_on_BackgroundColor_CheckBox_toggled"] -[connection signal="color_changed" from="VBoxContainer/HBoxContainer2/DialogBox/GridContainer/HBoxContainer2/ColorPickerButton" to="." method="_on_BackgroundColor_ColorPickerButton_color_changed"] -[connection signal="toggled" from="VBoxContainer/HBoxContainer2/DialogBox/GridContainer/HBoxContainer3/CheckBox" to="." method="_on_BackgroundTexture_CheckBox_toggled"] -[connection signal="pressed" from="VBoxContainer/HBoxContainer2/DialogBox/GridContainer/HBoxContainer3/BackgroundTextureButton" to="." method="_on_BackgroundTextureButton_pressed"] -[connection signal="pressed" from="VBoxContainer/HBoxContainer2/DialogBox/GridContainer/NextIndicatorButton" to="." method="_on_NextIndicatorButton_pressed"] -[connection signal="item_selected" from="VBoxContainer/HBoxContainer2/DialogBox/GridContainer/NextAnimation" to="." method="_on_NextAnimation_item_selected"] -[connection signal="value_changed" from="VBoxContainer/HBoxContainer2/DialogBox/GridContainer/HBoxContainer/TextOffsetV" to="." method="_on_TextMargin_value_changed"] -[connection signal="value_changed" from="VBoxContainer/HBoxContainer2/DialogBox/GridContainer/HBoxContainer/TextOffsetH" to="." method="_on_TextMargin_value_changed"] -[connection signal="value_changed" from="VBoxContainer/HBoxContainer2/DialogBox/GridContainer/HBoxContainer4/BoxSizeW" to="." method="_on_BoxSize_value_changed"] -[connection signal="value_changed" from="VBoxContainer/HBoxContainer2/DialogBox/GridContainer/HBoxContainer4/BoxSizeH" to="." method="_on_BoxSize_value_changed"] -[connection signal="value_changed" from="VBoxContainer/HBoxContainer2/DialogBox/GridContainer/HBoxContainer5/BottomGap" to="." method="_on_BottomGap_value_changed"] -[connection signal="item_selected" from="VBoxContainer/HBoxContainer2/DialogBox/GridContainer/BoxContainer/ActionOptionButton" to="." method="_on_ActionOptionButton_item_selected"] -[connection signal="pressed" from="VBoxContainer/HBoxContainer2/DialogBox/GridContainer/BoxContainer/ActionOptionButton" to="." method="_on_ActionOptionButton_pressed"] -[connection signal="toggled" from="VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer/HBoxContainer4/CheckBox2" to="." method="_on_Custom_Button_Color_toggled"] -[connection signal="color_changed" from="VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer/HBoxContainer4/ButtonTextColor" to="." method="_on_ButtonTextColor_color_changed"] -[connection signal="toggled" from="VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer/HBoxContainer2/CheckBox" to="." method="_on_button_background_visible_toggled"] -[connection signal="color_changed" from="VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer/HBoxContainer2/ColorPickerButton" to="." method="_on_button_background_color_color_changed"] -[connection signal="toggled" from="VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer/HBoxContainer3/CheckBox" to="." method="_on_button_texture_toggled"] -[connection signal="pressed" from="VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer/HBoxContainer3/BackgroundTextureButton" to="." method="_on_ButtonTextureButton_pressed"] -[connection signal="value_changed" from="VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer/HBoxContainer/TextOffsetV" to="." method="_on_ButtonOffset_value_changed"] -[connection signal="value_changed" from="VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer/HBoxContainer/TextOffsetH" to="." method="_on_ButtonOffset_value_changed"] -[connection signal="value_changed" from="VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer/VerticalSeparation" to="." method="_on_VerticalSeparation_value_changed"] [connection signal="pressed" from="VBoxContainer/HBoxContainer3/PreviewButton" to="." method="_on_PreviewButton_pressed"] [connection signal="text_changed" from="VBoxContainer/HBoxContainer3/TextEdit" to="." method="_on_Preview_text_changed"] +[connection signal="pressed" from="VBoxContainer/TabContainer/Text/Column/GridContainer/FontButton" to="." method="_on_FontButton_pressed"] +[connection signal="color_changed" from="VBoxContainer/TabContainer/Text/Column/GridContainer/ColorPickerButton" to="." method="_on_ColorPickerButton_color_changed"] +[connection signal="toggled" from="VBoxContainer/TabContainer/Text/Column/GridContainer/HBoxContainer2/CheckBoxShadow" to="." method="_on_CheckBoxShadow_toggled"] +[connection signal="color_changed" from="VBoxContainer/TabContainer/Text/Column/GridContainer/HBoxContainer2/ColorPickerButtonShadow" to="." method="_on_ColorPickerButtonShadow_color_changed"] +[connection signal="value_changed" from="VBoxContainer/TabContainer/Text/Column/GridContainer/HBoxContainer/ShadowOffsetX" to="." method="_on_ShadowOffset_value_changed"] +[connection signal="value_changed" from="VBoxContainer/TabContainer/Text/Column/GridContainer/HBoxContainer/ShadowOffsetY" to="." method="_on_ShadowOffset_value_changed"] +[connection signal="value_changed" from="VBoxContainer/TabContainer/Text/Column/GridContainer/TextSpeed" to="." method="_on_textSpeed_value_changed"] +[connection signal="item_selected" from="VBoxContainer/TabContainer/Text/Column/GridContainer/HBoxContainer3/Alignment" to="." method="_on_Alignment_item_selected"] +[connection signal="toggled" from="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer2/CheckBox" to="." method="_on_BackgroundColor_CheckBox_toggled"] +[connection signal="color_changed" from="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer2/ColorPickerButton" to="." method="_on_BackgroundColor_ColorPickerButton_color_changed"] +[connection signal="toggled" from="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer3/CheckBox" to="." method="_on_BackgroundTexture_CheckBox_toggled"] +[connection signal="pressed" from="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer3/BackgroundTextureButton" to="." method="_on_BackgroundTextureButton_pressed"] +[connection signal="toggled" from="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer6/CheckBox" to="." method="_on_BackgroundTexture_Modulation_toggled"] +[connection signal="color_changed" from="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer6/ColorPickerButton" to="." method="_on_ColorPicker_Background_texture_modulation_color_changed"] +[connection signal="pressed" from="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/NextIndicatorButton" to="." method="_on_NextIndicatorButton_pressed"] +[connection signal="item_selected" from="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/NextAnimation" to="." method="_on_NextAnimation_item_selected"] +[connection signal="value_changed" from="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer/TextOffsetV" to="." method="_on_TextMargin_value_changed"] +[connection signal="value_changed" from="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer/TextOffsetH" to="." method="_on_TextMargin_value_changed"] +[connection signal="value_changed" from="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer4/BoxSizeW" to="." method="_on_BoxSize_value_changed"] +[connection signal="value_changed" from="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer4/BoxSizeH" to="." method="_on_BoxSize_value_changed"] +[connection signal="value_changed" from="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer5/BottomGap" to="." method="_on_BottomGap_value_changed"] +[connection signal="item_selected" from="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/BoxContainer/ActionOptionButton" to="." method="_on_ActionOptionButton_item_selected"] +[connection signal="pressed" from="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/BoxContainer/ActionOptionButton" to="." method="_on_ActionOptionButton_pressed"] +[connection signal="toggled" from="VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer/HBoxContainer4/CheckBox2" to="." method="_on_Custom_Button_Color_toggled"] +[connection signal="color_changed" from="VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer/HBoxContainer4/ButtonTextColor" to="." method="_on_ButtonTextColor_color_changed"] +[connection signal="toggled" from="VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer/HBoxContainer2/CheckBox" to="." method="_on_button_background_visible_toggled"] +[connection signal="color_changed" from="VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer/HBoxContainer2/ColorPickerButton" to="." method="_on_button_background_color_color_changed"] +[connection signal="toggled" from="VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer/HBoxContainer3/CheckBox" to="." method="_on_button_texture_toggled"] +[connection signal="pressed" from="VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer/HBoxContainer3/BackgroundTextureButton" to="." method="_on_ButtonTextureButton_pressed"] +[connection signal="value_changed" from="VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer/HBoxContainer/TextOffsetV" to="." method="_on_ButtonOffset_value_changed"] +[connection signal="value_changed" from="VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer/HBoxContainer/TextOffsetH" to="." method="_on_ButtonOffset_value_changed"] +[connection signal="value_changed" from="VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer/VerticalSeparation" to="." method="_on_VerticalSeparation_value_changed"] +[connection signal="toggled" from="VBoxContainer/TabContainer/Name Label/Column/GridContainer/HBoxContainer2/CheckBox" to="." method="_on_name_background_visible_toggled"] +[connection signal="color_changed" from="VBoxContainer/TabContainer/Name Label/Column/GridContainer/HBoxContainer2/ColorPickerButton" to="." method="_on_name_background_color_changed"] +[connection signal="toggled" from="VBoxContainer/TabContainer/Name Label/Column/GridContainer/HBoxContainer3/CheckBox" to="." method="_on_name_image_visible_toggled"] +[connection signal="pressed" from="VBoxContainer/TabContainer/Name Label/Column/GridContainer/HBoxContainer3/BackgroundTextureButton" to="." method="_on_name_image_pressed"] +[connection signal="toggled" from="VBoxContainer/TabContainer/Name Label/Column/GridContainer/HBoxContainer4/CheckBoxShadow" to="." method="_on_shadow_visible_toggled"] +[connection signal="color_changed" from="VBoxContainer/TabContainer/Name Label/Column/GridContainer/HBoxContainer4/ColorPickerButtonShadow" to="." method="_on_name_shadow_color_changed"] +[connection signal="value_changed" from="VBoxContainer/TabContainer/Name Label/Column/GridContainer/HBoxContainer/ShadowOffsetX" to="." method="_on_name_ShadowOffset_value_changed"] +[connection signal="value_changed" from="VBoxContainer/TabContainer/Name Label/Column/GridContainer/HBoxContainer/ShadowOffsetY" to="." method="_on_name_ShadowOffset_value_changed"] +[connection signal="value_changed" from="VBoxContainer/TabContainer/Name Label/Column/GridContainer/HBoxContainer5/BottomGap" to="." method="_on_name_BottomGap_value_changed"] +[connection signal="toggled" from="VBoxContainer/TabContainer/Name Label/Column/GridContainer/CheckBox" to="." method="_on_name_auto_color_toggled"] +[connection signal="pressed" from="VBoxContainer/TabContainer/Glossary/Column/GridContainer/FontButton" to="." method="_on_GlossaryFontButton_pressed"] +[connection signal="color_changed" from="VBoxContainer/TabContainer/Glossary/Column/GridContainer/ColorPickerButton" to="." method="_on_GlossaryColorPicker_color_changed"] +[connection signal="toggled" from="VBoxContainer/TabContainer/Glossary/Column/GridContainer/HBoxContainer2/CheckBoxShadow" to="." method="_on_CheckBoxShadow_toggled"] +[connection signal="color_changed" from="VBoxContainer/TabContainer/Glossary/Column/GridContainer/HBoxContainer2/ColorPickerButtonShadow" to="." method="_on_ColorPickerButtonShadow_color_changed"] +[connection signal="value_changed" from="VBoxContainer/TabContainer/Glossary/Column/GridContainer/HBoxContainer/ShadowOffsetX" to="." method="_on_ShadowOffset_value_changed"] +[connection signal="value_changed" from="VBoxContainer/TabContainer/Glossary/Column/GridContainer/HBoxContainer/ShadowOffsetY" to="." method="_on_ShadowOffset_value_changed"] diff --git a/addons/dialogic/Editor/TimelineEditor/EventButton.gd b/addons/dialogic/Editor/TimelineEditor/EventButton.gd new file mode 100644 index 0000000..9b1d721 --- /dev/null +++ b/addons/dialogic/Editor/TimelineEditor/EventButton.gd @@ -0,0 +1,16 @@ +tool +extends Button + +export (String) var EventName = '' + +func get_drag_data(position): + var preview_label = Label.new() + + if (self.text != ''): + preview_label.text = text + else: + preview_label.text = 'Add Event %s' % [ EventName ] + + set_drag_preview(preview_label) + + return { "source": "EventButton", "event_name": EventName } diff --git a/addons/dialogic/Editor/TimelineEditor/TimelineArea.gd b/addons/dialogic/Editor/TimelineEditor/TimelineArea.gd new file mode 100644 index 0000000..622184f --- /dev/null +++ b/addons/dialogic/Editor/TimelineEditor/TimelineArea.gd @@ -0,0 +1,139 @@ +tool +extends ScrollContainer + +var _drag_drop_indicator = null +# store last attempts since godot sometimes misses drop events +var _is_drag_receiving = false +var _last_event_button_drop_attempt = '' +var _mouse_exited = false + +func _ready(): + connect("mouse_entered", self, '_on_mouse_entered') + connect("mouse_exited", self, '_on_mouse_exited') + connect("gui_input", self, '_on_gui_input') + + +func can_drop_data(position, data): + if (data != null and data is Dictionary and data.has("source")): + if (data["source"] == "EventButton"): + # position drop indicator + _set_indicator_position(position) + _is_drag_receiving = true + _last_event_button_drop_attempt = data["event_name"] + return true + + _remove_drop_indicator() + return false + + +func cancel_drop(): + _is_drag_receiving = false + _last_event_button_drop_attempt = '' + _remove_drop_indicator() + pass + + +func drop_data(position, data): + # todo, getting timeline like this is prone to fail someday + var timeline_editor = get_parent() + + # add event + if (data["source"] == "EventButton"): + var piece = timeline_editor.create_event(data["event_name"]) + if (piece != null and _drag_drop_indicator != null): + var parent = piece.get_parent() + if (parent != null): + parent.remove_child(piece) + parent.add_child_below_node(_drag_drop_indicator, piece) + timeline_editor.indent_events() + # @todo _select_item seems to be a "private" function + # maybe expose it as "public" or add a public helper function + # to TimelineEditor.gd + timeline_editor._select_item(piece) + + _is_drag_receiving = false + _last_event_button_drop_attempt = '' + _remove_drop_indicator() + + +func _on_mouse_exited(): + _mouse_exited = true + + +func _on_mouse_entered(): + _mouse_exited = false + + +func _input(event): + if (event is InputEventMouseButton and is_visible_in_tree() and event.button_index == BUTTON_LEFT): + if (_mouse_exited and _is_drag_receiving): + cancel_drop() + + +func _on_gui_input(event): + # godot sometimes misses drop events + if (event is InputEventMouseButton and event.button_index == BUTTON_LEFT): + if (_is_drag_receiving): + if (_last_event_button_drop_attempt != ''): + drop_data(Vector2.ZERO, { "source": "EventButton", "event_name": _last_event_button_drop_attempt} ) + _is_drag_receiving = false + _remove_drop_indicator() + pass + + +func _create_drop_indicator(): + _remove_drop_indicator() + + var timeline = get_child(0) + if (timeline == null): + return + + var indicator = ColorRect.new() + indicator.name = "DropIndicator" + indicator.rect_size.y = 100 + indicator.rect_min_size.y = 100 + indicator.color = Color(0.35, 0.37, 0.44) # default editor light blue + indicator.mouse_filter = MOUSE_FILTER_IGNORE + + # add indent node like the other scene nodes have + var indent = Control.new() + indent.rect_min_size.x = 25 + indent.visible = false + indent.name = "Indent" + indicator.add_child(indent) + + var label = Label.new() + label.text = "Drop here" + indicator.add_child(label) + + timeline.add_child(indicator) + + _drag_drop_indicator = indicator + + +func _remove_drop_indicator(): + if (_drag_drop_indicator != null): + _drag_drop_indicator.get_parent().remove_child(_drag_drop_indicator) + _drag_drop_indicator.queue_free() + + _drag_drop_indicator = null + + +func _set_indicator_position(position): + var timeline = get_child(0) + if (timeline == null): + return + + if (_drag_drop_indicator == null): + _create_drop_indicator() + + var highest_index = 0 + var index = 0 + for child in timeline.get_children(): + if child.get_local_mouse_position().y > 0 and index > highest_index: + highest_index = index + index += 1 + + if (_drag_drop_indicator.is_inside_tree()): + timeline.move_child(_drag_drop_indicator, max(0, highest_index)) + pass diff --git a/addons/dialogic/Editor/TimelineEditor/TimelineEditor.gd b/addons/dialogic/Editor/TimelineEditor/TimelineEditor.gd index c1bcb54..7a2b9bc 100644 --- a/addons/dialogic/Editor/TimelineEditor/TimelineEditor.gd +++ b/addons/dialogic/Editor/TimelineEditor/TimelineEditor.gd @@ -6,7 +6,7 @@ var timeline_name: String = '' var timeline_file: String = '' var current_timeline: Dictionary = {} -onready var master_tree = get_node('../MasterTree') +onready var master_tree = get_node('../MasterTreeContainer/MasterTree') onready var timeline = $TimelineArea/TimeLine onready var events_warning = $ScrollContainer/EventContainer/EventsWarning @@ -18,8 +18,26 @@ var selected_item : Node var moving_piece = null +var piece_was_dragged = false func _ready(): + var modifier = '' + var _scale = get_constant("inspector_margin", "Editor") + _scale = _scale * 0.125 + $ScrollContainer.rect_min_size.x = 180 + if _scale == 1.25: + modifier = '-1.25' + $ScrollContainer.rect_min_size.x = 200 + if _scale == 1.5: + modifier = '-1.25' + $ScrollContainer.rect_min_size.x = 200 + if _scale == 1.75: + modifier = '-1.25' + $ScrollContainer.rect_min_size.x = 390 + if _scale == 2: + modifier = '-2' + $ScrollContainer.rect_min_size.x = 390 + # We connect all the event buttons to the event creation functions for b in $ScrollContainer/EventContainer.get_children(): if b is Button: @@ -34,6 +52,136 @@ func _ready(): style.set('bg_color', get_color("dark_color_1", "Editor")) +func delete_event(): + # get next element + var next = min(timeline.get_child_count() - 1, selected_item.get_index() + 1) + var next_node = timeline.get_child(next) + if (next_node == selected_item): + next_node = null + + # remove current + selected_item.get_parent().remove_child(selected_item) + selected_item.queue_free() + selected_item = null + + # select next + if (next_node != null): + _select_item(next_node) + else: + if (timeline.get_child_count() > 0): + next_node = timeline.get_child(max(0, timeline.get_child_count() - 1)) + if (next_node != null): + _select_item(next_node) + + indent_events() + +func _input(event): + # some shortcuts need to get handled in the common input event + # especially CTRL-based + # because certain godot controls swallow events (like textedit) + # we protect this with is_visible_in_tree to not + # invoke a shortcut by accident + if (event is InputEventKey and event is InputEventWithModifiers and is_visible_in_tree()): + # CTRL UP + if (event.pressed + and event.alt == false + and event.shift == false + and event.control == true + and event.scancode == KEY_UP + and event.echo == false + ): + # select previous + if (selected_item != null): + var prev = max(0, selected_item.get_index() - 1) + var prev_node = timeline.get_child(prev) + if (prev_node != selected_item): + _select_item(prev_node) + get_tree().set_input_as_handled() + + pass + + # CTRL DOWN + if (event.pressed + and event.alt == false + and event.shift == false + and event.control == true + and event.scancode == KEY_DOWN + and event.echo == false + ): + # select next + if (selected_item != null): + var next = min(timeline.get_child_count() - 1, selected_item.get_index() + 1) + var next_node = timeline.get_child(next) + if (next_node != selected_item): + _select_item(next_node) + get_tree().set_input_as_handled() + + pass + + # CTRL DELETE + if (event.pressed + and event.alt == false + and event.shift == false + and event.control == true + and event.scancode == KEY_DELETE + and event.echo == false + ): + if (selected_item != null): + delete_event() + get_tree().set_input_as_handled() + pass + + # CTRL T + if (event.pressed + and event.alt == false + and event.shift == false + and event.control == true + and event.scancode == KEY_T + and event.echo == false + ): + var new_text = create_event("TextBlock") + _select_item(new_text) + indent_events() + get_tree().set_input_as_handled() + pass + + +func _unhandled_key_input(event): + if (event is InputEventWithModifiers): + # ALT UP + if (event.pressed + and event.alt == true + and event.shift == false + and event.control == false + and event.scancode == KEY_UP + and event.echo == false + ): + # move selected up + if (selected_item != null): + move_block(selected_item, "up") + indent_events() + get_tree().set_input_as_handled() + + pass + + # ALT DOWN + if (event.pressed + and event.alt == true + and event.shift == false + and event.control == false + and event.scancode == KEY_DOWN + and event.echo == false + ): + # move selected down + if (selected_item != null): + move_block(selected_item, "down") + indent_events() + get_tree().set_input_as_handled() + + pass + + pass + func _process(delta): if moving_piece != null: var current_position = get_global_mouse_position() @@ -45,10 +193,12 @@ func _process(delta): up_offset = (up_offset / 2) + 5 if current_position.y < node_position - up_offset: move_block(moving_piece, 'up') + piece_was_dragged = true if down_offset != null: down_offset = height + (down_offset / 2) + 5 if current_position.y > node_position + down_offset: move_block(moving_piece, 'down') + piece_was_dragged = true func _clear_selection(): @@ -56,6 +206,7 @@ func _clear_selection(): var selected_panel: PanelContainer = selected_item.get_node("PanelContainer") if selected_panel != null: selected_panel.set('custom_styles/panel', saved_style) + selected_item = null saved_style = null @@ -75,18 +226,28 @@ func _select_item(item: Node): panel.set('custom_styles/panel', selected_style_text) else: panel.set('custom_styles/panel', selected_style) + # allow event panels to do additional operation when getting selected + if (selected_item.has_method("on_timeline_selected")): + selected_item.on_timeline_selected() else: _clear_selection() func _on_gui_input(event, item: Node): if event is InputEventMouseButton and event.button_index == 1: - if event.is_pressed(): + if (not event.is_pressed()): + if (not piece_was_dragged and moving_piece != null): + _clear_selection() + if (moving_piece != null): + indent_events() + moving_piece = null + elif event.is_pressed(): + moving_piece = item if not _is_item_selected(item): _select_item(item) - moving_piece = item - else: - moving_piece = null + piece_was_dragged = true + else: + piece_was_dragged = false # Event Creation signal for buttons @@ -154,8 +315,14 @@ func indent_events() -> void: for event in event_list: var indent_node = event.get_node("Indent") indent_node.visible = false + # Adding new indents for event in event_list: + # since there are indicators now, not all elements + # in this list have an event_data property + if (not "event_data" in event): + continue + if event.event_data.has('question') or event.event_data.has('condition'): indent += 1 starter = true @@ -186,8 +353,8 @@ func indent_events() -> void: func load_timeline(filename: String): - print('---------------------------') - print('Loading: ', filename) + #print('---------------------------') + #print('Loading: ', filename) clear_timeline() var start_time = OS.get_system_time_msecs() timeline_file = filename @@ -234,6 +401,8 @@ func load_timeline(filename: String): create_event("SetValue", i) {'set_theme'}: create_event("SetTheme", i) + {'call_node'}: + create_event("CallNode", i) if data.size() < 1: events_warning.visible = true @@ -243,7 +412,7 @@ func load_timeline(filename: String): #fold_all_nodes() var elapsed_time = (OS.get_system_time_msecs() - start_time) * 0.001 - editor_reference.dprint("Loading time: " + str(elapsed_time)) + #editor_reference.dprint("Loading time: " + str(elapsed_time)) func clear_timeline(): @@ -317,6 +486,9 @@ func generate_save_data(): 'events': [] } for event in timeline.get_children(): + # check that event has event_data (e.g. drag drop indicators) + if (not "event_data" in event): + continue if event.is_queued_for_deletion() == false: # Checking that the event is not waiting to be removed info_to_save['events'].append(event.event_data) return info_to_save diff --git a/addons/dialogic/Editor/TimelineEditor/TimelineEditor.tscn b/addons/dialogic/Editor/TimelineEditor/TimelineEditor.tscn index b377d42..bceb82f 100644 --- a/addons/dialogic/Editor/TimelineEditor/TimelineEditor.tscn +++ b/addons/dialogic/Editor/TimelineEditor/TimelineEditor.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=22 format=2] +[gd_scene load_steps=25 format=2] [ext_resource path="res://addons/dialogic/Images/character-join.svg" type="Texture" id=1] [ext_resource path="res://addons/dialogic/Images/dialog.svg" type="Texture" id=2] @@ -19,6 +19,9 @@ [ext_resource path="res://addons/dialogic/Editor/TimelineEditor/TimelineEditor.gd" type="Script" id=17] [ext_resource path="res://addons/dialogic/Images/theme.svg" type="Texture" id=18] [ext_resource path="res://addons/dialogic/Images/Events/background-music.svg" type="Texture" id=19] +[ext_resource path="res://addons/dialogic/Images/Script.svg" type="Texture" id=20] +[ext_resource path="res://addons/dialogic/Editor/TimelineEditor/EventButton.gd" type="Script" id=21] +[ext_resource path="res://addons/dialogic/Editor/TimelineEditor/TimelineArea.gd" type="Script" id=22] [sub_resource type="StyleBoxFlat" id=1] content_margin_left = 5.0 @@ -48,7 +51,6 @@ anchor_bottom = 1.0 margin_bottom = 138.0 size_flags_horizontal = 3 size_flags_vertical = 3 -custom_constants/separation = 0 split_offset = 7 script = ExtResource( 17 ) __meta__ = { @@ -56,11 +58,12 @@ __meta__ = { } [node name="TimelineArea" type="ScrollContainer" parent="."] -margin_right = 816.0 +margin_right = 836.0 margin_bottom = 738.0 size_flags_horizontal = 3 size_flags_vertical = 3 custom_styles/bg = SubResource( 1 ) +script = ExtResource( 22 ) __meta__ = { "_edit_use_anchors_": false } @@ -68,7 +71,7 @@ __meta__ = { [node name="TimeLine" type="VBoxContainer" parent="TimelineArea"] margin_left = 5.0 margin_top = 5.0 -margin_right = 811.0 +margin_right = 831.0 margin_bottom = 733.0 grow_horizontal = 2 grow_vertical = 2 @@ -76,13 +79,13 @@ size_flags_horizontal = 3 size_flags_vertical = 3 [node name="ScrollContainer" type="ScrollContainer" parent="."] -margin_left = 824.0 +margin_left = 844.0 margin_right = 1024.0 margin_bottom = 738.0 -rect_min_size = Vector2( 200, 0 ) +rect_min_size = Vector2( 180, 0 ) [node name="EventContainer" type="VBoxContainer" parent="ScrollContainer"] -margin_right = 200.0 +margin_right = 180.0 margin_bottom = 738.0 size_flags_horizontal = 3 size_flags_vertical = 3 @@ -91,14 +94,14 @@ __meta__ = { } [node name="EventsWarning" type="PanelContainer" parent="ScrollContainer/EventContainer"] -margin_right = 200.0 -margin_bottom = 60.0 +margin_right = 180.0 +margin_bottom = 68.0 custom_styles/panel = SubResource( 2 ) [node name="HBoxContainer" type="HBoxContainer" parent="ScrollContainer/EventContainer/EventsWarning"] margin_top = 10.0 -margin_right = 194.0 -margin_bottom = 50.0 +margin_right = 174.0 +margin_bottom = 58.0 size_flags_horizontal = 3 size_flags_vertical = 3 __meta__ = { @@ -107,15 +110,15 @@ __meta__ = { [node name="TextureRect" type="TextureRect" parent="ScrollContainer/EventContainer/EventsWarning/HBoxContainer"] margin_right = 40.0 -margin_bottom = 40.0 +margin_bottom = 48.0 rect_min_size = Vector2( 40, 40 ) texture = ExtResource( 13 ) stretch_mode = 4 [node name="Label" type="Label" parent="ScrollContainer/EventContainer/EventsWarning/HBoxContainer"] margin_left = 44.0 -margin_right = 194.0 -margin_bottom = 40.0 +margin_right = 174.0 +margin_bottom = 48.0 rect_min_size = Vector2( 100, 0 ) size_flags_horizontal = 3 size_flags_vertical = 1 @@ -124,9 +127,9 @@ text = "Add an event to start building your timeline" autowrap = true [node name="HBoxContainer6" type="HBoxContainer" parent="ScrollContainer/EventContainer"] -margin_top = 64.0 -margin_right = 200.0 -margin_bottom = 78.0 +margin_top = 72.0 +margin_right = 180.0 +margin_bottom = 86.0 [node name="Label" type="Label" parent="ScrollContainer/EventContainer/HBoxContainer6"] margin_right = 77.0 @@ -135,38 +138,44 @@ text = "Main Events" [node name="HSeparator2" type="HSeparator" parent="ScrollContainer/EventContainer/HBoxContainer6"] margin_left = 81.0 -margin_right = 200.0 +margin_right = 180.0 margin_bottom = 14.0 size_flags_horizontal = 3 [node name="TextBlock" type="Button" parent="ScrollContainer/EventContainer"] -margin_top = 82.0 -margin_right = 200.0 -margin_bottom = 110.0 +margin_top = 90.0 +margin_right = 180.0 +margin_bottom = 118.0 text = " Text Event" icon = ExtResource( 2 ) align = 0 +script = ExtResource( 21 ) +EventName = "TextBlock" [node name="CharacterJoinBlock" type="Button" parent="ScrollContainer/EventContainer"] -margin_top = 114.0 -margin_right = 200.0 -margin_bottom = 142.0 +margin_top = 122.0 +margin_right = 180.0 +margin_bottom = 150.0 text = " Character Join" icon = ExtResource( 1 ) align = 0 +script = ExtResource( 21 ) +EventName = "CharacterJoinBlock" [node name="CharacterLeaveBlock" type="Button" parent="ScrollContainer/EventContainer"] -margin_top = 146.0 -margin_right = 200.0 -margin_bottom = 174.0 +margin_top = 154.0 +margin_right = 180.0 +margin_bottom = 182.0 text = " Character Leave" icon = ExtResource( 7 ) align = 0 +script = ExtResource( 21 ) +EventName = "CharacterLeaveBlock" [node name="HBoxContainer5" type="HBoxContainer" parent="ScrollContainer/EventContainer"] -margin_top = 178.0 -margin_right = 200.0 -margin_bottom = 192.0 +margin_top = 186.0 +margin_right = 180.0 +margin_bottom = 200.0 [node name="Label" type="Label" parent="ScrollContainer/EventContainer/HBoxContainer5"] margin_right = 33.0 @@ -175,54 +184,64 @@ text = "Logic" [node name="HSeparator2" type="HSeparator" parent="ScrollContainer/EventContainer/HBoxContainer5"] margin_left = 37.0 -margin_right = 200.0 +margin_right = 180.0 margin_bottom = 14.0 size_flags_horizontal = 3 [node name="ButtonQuestion" type="Button" parent="ScrollContainer/EventContainer"] -margin_top = 196.0 -margin_right = 200.0 -margin_bottom = 224.0 +margin_top = 204.0 +margin_right = 180.0 +margin_bottom = 232.0 text = " Question" icon = ExtResource( 8 ) align = 0 +script = ExtResource( 21 ) +EventName = "Question" [node name="Choice" type="Button" parent="ScrollContainer/EventContainer"] -margin_top = 228.0 -margin_right = 200.0 -margin_bottom = 256.0 +margin_top = 236.0 +margin_right = 180.0 +margin_bottom = 264.0 text = " Choice" icon = ExtResource( 12 ) align = 0 +script = ExtResource( 21 ) +EventName = "Choice" [node name="IfCondition" type="Button" parent="ScrollContainer/EventContainer"] -margin_top = 260.0 -margin_right = 200.0 -margin_bottom = 288.0 +margin_top = 268.0 +margin_right = 180.0 +margin_bottom = 296.0 text = " Condition" icon = ExtResource( 5 ) align = 0 +script = ExtResource( 21 ) +EventName = "IfCondition" [node name="EndBranch" type="Button" parent="ScrollContainer/EventContainer"] -margin_top = 292.0 -margin_right = 200.0 -margin_bottom = 320.0 +margin_top = 300.0 +margin_right = 180.0 +margin_bottom = 328.0 text = " End Branch" icon = ExtResource( 9 ) align = 0 +script = ExtResource( 21 ) +EventName = "EndBranch" [node name="SetValue" type="Button" parent="ScrollContainer/EventContainer"] -margin_top = 324.0 -margin_right = 200.0 -margin_bottom = 352.0 +margin_top = 332.0 +margin_right = 180.0 +margin_bottom = 354.0 text = " Set Value" icon = ExtResource( 11 ) align = 0 +script = ExtResource( 21 ) +EventName = "SetValue" [node name="HBoxContainer3" type="HBoxContainer" parent="ScrollContainer/EventContainer"] -margin_top = 356.0 -margin_right = 200.0 -margin_bottom = 370.0 +margin_top = 358.0 +margin_right = 180.0 +margin_bottom = 372.0 [node name="Label" type="Label" parent="ScrollContainer/EventContainer/HBoxContainer3"] margin_right = 56.0 @@ -231,55 +250,65 @@ text = "Timeline" [node name="HSeparator2" type="HSeparator" parent="ScrollContainer/EventContainer/HBoxContainer3"] margin_left = 60.0 -margin_right = 200.0 +margin_right = 180.0 margin_bottom = 14.0 size_flags_horizontal = 3 [node name="ChangeTimeline" type="Button" parent="ScrollContainer/EventContainer"] -margin_top = 374.0 -margin_right = 200.0 -margin_bottom = 402.0 +margin_top = 376.0 +margin_right = 180.0 +margin_bottom = 404.0 hint_tooltip = "This will instantly teleport you to the start of the desired timeline." text = " Change Timeline" icon = ExtResource( 10 ) align = 0 +script = ExtResource( 21 ) +EventName = "ChangeTimeline" [node name="SceneEvent" type="Button" parent="ScrollContainer/EventContainer"] -margin_top = 406.0 -margin_right = 200.0 -margin_bottom = 434.0 +margin_top = 408.0 +margin_right = 180.0 +margin_bottom = 436.0 text = " Scene Event" icon = ExtResource( 4 ) align = 0 +script = ExtResource( 21 ) +EventName = "SceneEvent" [node name="CloseDialog" type="Button" parent="ScrollContainer/EventContainer"] -margin_top = 438.0 -margin_right = 200.0 -margin_bottom = 466.0 +margin_top = 440.0 +margin_right = 180.0 +margin_bottom = 468.0 text = " Close Dialog" icon = ExtResource( 6 ) align = 0 +script = ExtResource( 21 ) +EventName = "CloseDialog" [node name="WaitSeconds" type="Button" parent="ScrollContainer/EventContainer"] -margin_top = 470.0 -margin_right = 200.0 -margin_bottom = 498.0 +margin_top = 472.0 +margin_right = 180.0 +margin_bottom = 500.0 text = " Wait Seconds" icon = ExtResource( 14 ) align = 0 +script = ExtResource( 21 ) +EventName = "WaitSeconds" [node name="SetTheme" type="Button" parent="ScrollContainer/EventContainer"] -margin_top = 502.0 -margin_right = 200.0 -margin_bottom = 530.0 +margin_top = 504.0 +margin_right = 180.0 +margin_bottom = 532.0 text = " Set Theme" icon = ExtResource( 18 ) align = 0 +script = ExtResource( 21 ) +EventName = "SetTheme" [node name="HBoxContainer4" type="HBoxContainer" parent="ScrollContainer/EventContainer"] -margin_top = 534.0 -margin_right = 200.0 -margin_bottom = 548.0 +margin_top = 536.0 +margin_right = 180.0 +margin_bottom = 550.0 [node name="Label" type="Label" parent="ScrollContainer/EventContainer/HBoxContainer4"] margin_right = 37.0 @@ -288,30 +317,34 @@ text = "Audio" [node name="HSeparator2" type="HSeparator" parent="ScrollContainer/EventContainer/HBoxContainer4"] margin_left = 41.0 -margin_right = 200.0 +margin_right = 180.0 margin_bottom = 14.0 size_flags_horizontal = 3 [node name="AudioBlock" type="Button" parent="ScrollContainer/EventContainer"] -margin_top = 552.0 -margin_right = 200.0 -margin_bottom = 580.0 +margin_top = 554.0 +margin_right = 180.0 +margin_bottom = 582.0 text = " Audio Event" icon = ExtResource( 3 ) align = 0 +script = ExtResource( 21 ) +EventName = "AudioBlock" [node name="BackgroundMusic" type="Button" parent="ScrollContainer/EventContainer"] -margin_top = 584.0 -margin_right = 200.0 -margin_bottom = 612.0 +margin_top = 586.0 +margin_right = 180.0 +margin_bottom = 614.0 text = " Background Music" icon = ExtResource( 19 ) align = 0 +script = ExtResource( 21 ) +EventName = "BackgroundMusic" [node name="HBoxContainer" type="HBoxContainer" parent="ScrollContainer/EventContainer"] -margin_top = 616.0 -margin_right = 200.0 -margin_bottom = 630.0 +margin_top = 618.0 +margin_right = 180.0 +margin_bottom = 632.0 [node name="Label" type="Label" parent="ScrollContainer/EventContainer/HBoxContainer"] margin_right = 39.0 @@ -320,24 +353,38 @@ text = "Godot" [node name="HSeparator2" type="HSeparator" parent="ScrollContainer/EventContainer/HBoxContainer"] margin_left = 43.0 -margin_right = 200.0 +margin_right = 180.0 margin_bottom = 14.0 size_flags_horizontal = 3 [node name="EmitSignal" type="Button" parent="ScrollContainer/EventContainer"] -margin_top = 634.0 -margin_right = 200.0 -margin_bottom = 662.0 +margin_top = 636.0 +margin_right = 180.0 +margin_bottom = 664.0 text = " Emit Signal" icon = ExtResource( 16 ) align = 0 +script = ExtResource( 21 ) +EventName = "EmitSignal" [node name="ChangeScene" type="Button" parent="ScrollContainer/EventContainer"] -margin_top = 666.0 -margin_right = 200.0 -margin_bottom = 694.0 +margin_top = 668.0 +margin_right = 180.0 +margin_bottom = 696.0 hint_tooltip = "This will instantly change the current scene." text = " Change Scene" icon = ExtResource( 15 ) align = 0 +script = ExtResource( 21 ) +EventName = "ChangeScene" + +[node name="CallNode" type="Button" parent="ScrollContainer/EventContainer"] +margin_top = 700.0 +margin_right = 180.0 +margin_bottom = 728.0 +text = " Call Node" +icon = ExtResource( 20 ) +align = 0 +script = ExtResource( 21 ) +EventName = "CallNode" diff --git a/addons/dialogic/Images/Resources/character-1.25.svg b/addons/dialogic/Images/Resources/character-1.25.svg new file mode 100644 index 0000000..28ff003 --- /dev/null +++ b/addons/dialogic/Images/Resources/character-1.25.svg @@ -0,0 +1,4 @@ + + + + diff --git a/addons/dialogic/Images/Resources/character-1.25.svg.import b/addons/dialogic/Images/Resources/character-1.25.svg.import new file mode 100644 index 0000000..95c11e6 --- /dev/null +++ b/addons/dialogic/Images/Resources/character-1.25.svg.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/character-1.25.svg-f8560c64a6c9ea126837d22490545cc1.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Images/Resources/character-1.25.svg" +dest_files=[ "res://.import/character-1.25.svg-f8560c64a6c9ea126837d22490545cc1.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/addons/dialogic/Images/Resources/character-2.svg b/addons/dialogic/Images/Resources/character-2.svg new file mode 100644 index 0000000..abcc1ab --- /dev/null +++ b/addons/dialogic/Images/Resources/character-2.svg @@ -0,0 +1,4 @@ + + + + diff --git a/addons/dialogic/Images/Resources/character-2.svg.import b/addons/dialogic/Images/Resources/character-2.svg.import new file mode 100644 index 0000000..04728d7 --- /dev/null +++ b/addons/dialogic/Images/Resources/character-2.svg.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/character-2.svg-6a7c147375663e487c6aad504c0ac5e9.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Images/Resources/character-2.svg" +dest_files=[ "res://.import/character-2.svg-6a7c147375663e487c6aad504c0ac5e9.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/addons/dialogic/Images/Resources/character.svg b/addons/dialogic/Images/Resources/character.svg new file mode 100644 index 0000000..8871f5e --- /dev/null +++ b/addons/dialogic/Images/Resources/character.svg @@ -0,0 +1,4 @@ + + + + diff --git a/addons/dialogic/Images/icon.svg.import b/addons/dialogic/Images/Resources/character.svg.import similarity index 67% rename from addons/dialogic/Images/icon.svg.import rename to addons/dialogic/Images/Resources/character.svg.import index 27fadb6..b8d82a5 100644 --- a/addons/dialogic/Images/icon.svg.import +++ b/addons/dialogic/Images/Resources/character.svg.import @@ -2,15 +2,15 @@ importer="texture" type="StreamTexture" -path="res://.import/icon.svg-ea02ac3b105238214f20335b7e707d35.stex" +path="res://.import/character.svg-dce8982b5c5669e98479bbff64aab08f.stex" metadata={ "vram_texture": false } [deps] -source_file="res://addons/dialogic/Images/icon.svg" -dest_files=[ "res://.import/icon.svg-ea02ac3b105238214f20335b7e707d35.stex" ] +source_file="res://addons/dialogic/Images/Resources/character.svg" +dest_files=[ "res://.import/character.svg-dce8982b5c5669e98479bbff64aab08f.stex" ] [params] diff --git a/addons/dialogic/Images/Resources/definition-1.25.svg b/addons/dialogic/Images/Resources/definition-1.25.svg new file mode 100644 index 0000000..ed40659 --- /dev/null +++ b/addons/dialogic/Images/Resources/definition-1.25.svg @@ -0,0 +1,3 @@ + + + diff --git a/addons/dialogic/Images/Resources/definition-1.25.svg.import b/addons/dialogic/Images/Resources/definition-1.25.svg.import new file mode 100644 index 0000000..4bb82ea --- /dev/null +++ b/addons/dialogic/Images/Resources/definition-1.25.svg.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/definition-1.25.svg-7298ef82f76fa611485bd53d1f0aebe0.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Images/Resources/definition-1.25.svg" +dest_files=[ "res://.import/definition-1.25.svg-7298ef82f76fa611485bd53d1f0aebe0.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/addons/dialogic/Images/Resources/definition-2.svg b/addons/dialogic/Images/Resources/definition-2.svg new file mode 100644 index 0000000..6fca867 --- /dev/null +++ b/addons/dialogic/Images/Resources/definition-2.svg @@ -0,0 +1,3 @@ + + + diff --git a/addons/dialogic/Images/Resources/definition-2.svg.import b/addons/dialogic/Images/Resources/definition-2.svg.import new file mode 100644 index 0000000..3bc9276 --- /dev/null +++ b/addons/dialogic/Images/Resources/definition-2.svg.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/definition-2.svg-533f2834cedbb3e21c178f7a40ec34a3.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Images/Resources/definition-2.svg" +dest_files=[ "res://.import/definition-2.svg-533f2834cedbb3e21c178f7a40ec34a3.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/addons/dialogic/Images/Resources/definition.svg b/addons/dialogic/Images/Resources/definition.svg index ed40659..236ca35 100644 --- a/addons/dialogic/Images/Resources/definition.svg +++ b/addons/dialogic/Images/Resources/definition.svg @@ -1,3 +1,3 @@ - - + + diff --git a/addons/dialogic/Images/Resources/glossary-1.25.svg b/addons/dialogic/Images/Resources/glossary-1.25.svg new file mode 100644 index 0000000..78ceada --- /dev/null +++ b/addons/dialogic/Images/Resources/glossary-1.25.svg @@ -0,0 +1,3 @@ + + + diff --git a/addons/dialogic/Images/Resources/glossary-1.25.svg.import b/addons/dialogic/Images/Resources/glossary-1.25.svg.import new file mode 100644 index 0000000..b89b72f --- /dev/null +++ b/addons/dialogic/Images/Resources/glossary-1.25.svg.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/glossary-1.25.svg-853d6e210a417c56901de57c59157131.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Images/Resources/glossary-1.25.svg" +dest_files=[ "res://.import/glossary-1.25.svg-853d6e210a417c56901de57c59157131.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/addons/dialogic/Images/Resources/glossary-2.svg b/addons/dialogic/Images/Resources/glossary-2.svg new file mode 100644 index 0000000..e5d55fa --- /dev/null +++ b/addons/dialogic/Images/Resources/glossary-2.svg @@ -0,0 +1,3 @@ + + + diff --git a/addons/dialogic/Images/Resources/glossary-2.svg.import b/addons/dialogic/Images/Resources/glossary-2.svg.import new file mode 100644 index 0000000..175f075 --- /dev/null +++ b/addons/dialogic/Images/Resources/glossary-2.svg.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/glossary-2.svg-6efb4c020432fe8dab1483fce35f5665.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Images/Resources/glossary-2.svg" +dest_files=[ "res://.import/glossary-2.svg-6efb4c020432fe8dab1483fce35f5665.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/addons/dialogic/Images/Resources/glossary.svg b/addons/dialogic/Images/Resources/glossary.svg index 78ceada..14d1240 100644 --- a/addons/dialogic/Images/Resources/glossary.svg +++ b/addons/dialogic/Images/Resources/glossary.svg @@ -1,3 +1,3 @@ - - + + diff --git a/addons/dialogic/Images/Resources/theme-1.25.svg b/addons/dialogic/Images/Resources/theme-1.25.svg new file mode 100644 index 0000000..e21235f --- /dev/null +++ b/addons/dialogic/Images/Resources/theme-1.25.svg @@ -0,0 +1,4 @@ + + + + diff --git a/addons/dialogic/Images/Resources/theme-1.25.svg.import b/addons/dialogic/Images/Resources/theme-1.25.svg.import new file mode 100644 index 0000000..c6c2886 --- /dev/null +++ b/addons/dialogic/Images/Resources/theme-1.25.svg.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/theme-1.25.svg-77e4506f492a590268d4307cdc31e4f8.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Images/Resources/theme-1.25.svg" +dest_files=[ "res://.import/theme-1.25.svg-77e4506f492a590268d4307cdc31e4f8.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/addons/dialogic/Images/Resources/theme-2.svg b/addons/dialogic/Images/Resources/theme-2.svg new file mode 100644 index 0000000..1638601 --- /dev/null +++ b/addons/dialogic/Images/Resources/theme-2.svg @@ -0,0 +1,4 @@ + + + + diff --git a/addons/dialogic/Images/Tools.svg.import b/addons/dialogic/Images/Resources/theme-2.svg.import similarity index 68% rename from addons/dialogic/Images/Tools.svg.import rename to addons/dialogic/Images/Resources/theme-2.svg.import index e7c5dbf..c45a7be 100644 --- a/addons/dialogic/Images/Tools.svg.import +++ b/addons/dialogic/Images/Resources/theme-2.svg.import @@ -2,15 +2,15 @@ importer="texture" type="StreamTexture" -path="res://.import/Tools.svg-55329d2aaa20f24bd86cd6875ebc09c7.stex" +path="res://.import/theme-2.svg-17486fa9879ca7d5056e82b248808b3d.stex" metadata={ "vram_texture": false } [deps] -source_file="res://addons/dialogic/Images/Tools.svg" -dest_files=[ "res://.import/Tools.svg-55329d2aaa20f24bd86cd6875ebc09c7.stex" ] +source_file="res://addons/dialogic/Images/Resources/theme-2.svg" +dest_files=[ "res://.import/theme-2.svg-17486fa9879ca7d5056e82b248808b3d.stex" ] [params] diff --git a/addons/dialogic/Images/Resources/theme.svg b/addons/dialogic/Images/Resources/theme.svg index e21235f..c6fd1ef 100644 --- a/addons/dialogic/Images/Resources/theme.svg +++ b/addons/dialogic/Images/Resources/theme.svg @@ -1,4 +1,4 @@ - - - + + + diff --git a/addons/dialogic/Images/Resources/timeline-1.25.svg b/addons/dialogic/Images/Resources/timeline-1.25.svg new file mode 100644 index 0000000..daaf48b --- /dev/null +++ b/addons/dialogic/Images/Resources/timeline-1.25.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/addons/dialogic/Images/Resources/timeline-1.25.svg.import b/addons/dialogic/Images/Resources/timeline-1.25.svg.import new file mode 100644 index 0000000..5f36d02 --- /dev/null +++ b/addons/dialogic/Images/Resources/timeline-1.25.svg.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/timeline-1.25.svg-1c9e495370ebe35a5587d303d470cad6.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Images/Resources/timeline-1.25.svg" +dest_files=[ "res://.import/timeline-1.25.svg-1c9e495370ebe35a5587d303d470cad6.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/addons/dialogic/Images/Resources/timeline-2.svg b/addons/dialogic/Images/Resources/timeline-2.svg new file mode 100644 index 0000000..732fecd --- /dev/null +++ b/addons/dialogic/Images/Resources/timeline-2.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/addons/dialogic/Images/Resources/timeline-2.svg.import b/addons/dialogic/Images/Resources/timeline-2.svg.import new file mode 100644 index 0000000..eff6e1c --- /dev/null +++ b/addons/dialogic/Images/Resources/timeline-2.svg.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/timeline-2.svg-48d1e0a121d5a544a47b67fe1241eed2.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Images/Resources/timeline-2.svg" +dest_files=[ "res://.import/timeline-2.svg-48d1e0a121d5a544a47b67fe1241eed2.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/addons/dialogic/Images/Resources/timeline.svg b/addons/dialogic/Images/Resources/timeline.svg new file mode 100644 index 0000000..a22928f --- /dev/null +++ b/addons/dialogic/Images/Resources/timeline.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/addons/dialogic/Images/logo.png.import b/addons/dialogic/Images/Resources/timeline.svg.import similarity index 67% rename from addons/dialogic/Images/logo.png.import rename to addons/dialogic/Images/Resources/timeline.svg.import index cc734ed..c159ed4 100644 --- a/addons/dialogic/Images/logo.png.import +++ b/addons/dialogic/Images/Resources/timeline.svg.import @@ -2,15 +2,15 @@ importer="texture" type="StreamTexture" -path="res://.import/logo.png-f156ce86697c9eb967d19393aa69e86f.stex" +path="res://.import/timeline.svg-4646668e3960b7f37ecffae1640eccc7.stex" metadata={ "vram_texture": false } [deps] -source_file="res://addons/dialogic/Images/logo.png" -dest_files=[ "res://.import/logo.png-f156ce86697c9eb967d19393aa69e86f.stex" ] +source_file="res://addons/dialogic/Images/Resources/timeline.svg" +dest_files=[ "res://.import/timeline.svg-4646668e3960b7f37ecffae1640eccc7.stex" ] [params] diff --git a/addons/dialogic/Images/Toolbar/add-character-1.25.svg b/addons/dialogic/Images/Toolbar/add-character-1.25.svg new file mode 100644 index 0000000..da2fd66 --- /dev/null +++ b/addons/dialogic/Images/Toolbar/add-character-1.25.svg @@ -0,0 +1,4 @@ + + + + diff --git a/addons/dialogic/Images/Toolbar/add-character-1.25.svg.import b/addons/dialogic/Images/Toolbar/add-character-1.25.svg.import new file mode 100644 index 0000000..1b85976 --- /dev/null +++ b/addons/dialogic/Images/Toolbar/add-character-1.25.svg.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/add-character-1.25.svg-3c1ef7e0cdcd97fe5a24f5d6eb32b444.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Images/Toolbar/add-character-1.25.svg" +dest_files=[ "res://.import/add-character-1.25.svg-3c1ef7e0cdcd97fe5a24f5d6eb32b444.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/addons/dialogic/Images/Toolbar/add-character-2.svg b/addons/dialogic/Images/Toolbar/add-character-2.svg new file mode 100644 index 0000000..03137b5 --- /dev/null +++ b/addons/dialogic/Images/Toolbar/add-character-2.svg @@ -0,0 +1,4 @@ + + + + diff --git a/addons/dialogic/Images/Toolbar/add-character-2.svg.import b/addons/dialogic/Images/Toolbar/add-character-2.svg.import new file mode 100644 index 0000000..a367394 --- /dev/null +++ b/addons/dialogic/Images/Toolbar/add-character-2.svg.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/add-character-2.svg-9c2d45663361c0aec7fda875cb579ae0.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Images/Toolbar/add-character-2.svg" +dest_files=[ "res://.import/add-character-2.svg-9c2d45663361c0aec7fda875cb579ae0.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/addons/dialogic/Images/Toolbar/add-character.svg b/addons/dialogic/Images/Toolbar/add-character.svg index 4010c28..9a42063 100644 --- a/addons/dialogic/Images/Toolbar/add-character.svg +++ b/addons/dialogic/Images/Toolbar/add-character.svg @@ -1,4 +1,4 @@ - - - + + + diff --git a/addons/dialogic/Images/Toolbar/add-definition-1.25.svg b/addons/dialogic/Images/Toolbar/add-definition-1.25.svg new file mode 100644 index 0000000..89b70b1 --- /dev/null +++ b/addons/dialogic/Images/Toolbar/add-definition-1.25.svg @@ -0,0 +1,4 @@ + + + + diff --git a/addons/dialogic/Images/Toolbar/add-definition-1.25.svg.import b/addons/dialogic/Images/Toolbar/add-definition-1.25.svg.import new file mode 100644 index 0000000..8428c12 --- /dev/null +++ b/addons/dialogic/Images/Toolbar/add-definition-1.25.svg.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/add-definition-1.25.svg-4ebed8c9b38e990b8d2551e3cef70881.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Images/Toolbar/add-definition-1.25.svg" +dest_files=[ "res://.import/add-definition-1.25.svg-4ebed8c9b38e990b8d2551e3cef70881.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/addons/dialogic/Images/Toolbar/add-definition-2.svg b/addons/dialogic/Images/Toolbar/add-definition-2.svg new file mode 100644 index 0000000..ec25605 --- /dev/null +++ b/addons/dialogic/Images/Toolbar/add-definition-2.svg @@ -0,0 +1,4 @@ + + + + diff --git a/addons/dialogic/Images/Toolbar/add-definition-2.svg.import b/addons/dialogic/Images/Toolbar/add-definition-2.svg.import new file mode 100644 index 0000000..b0fadc9 --- /dev/null +++ b/addons/dialogic/Images/Toolbar/add-definition-2.svg.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/add-definition-2.svg-454918059b27eb1572e6513a053c2567.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Images/Toolbar/add-definition-2.svg" +dest_files=[ "res://.import/add-definition-2.svg-454918059b27eb1572e6513a053c2567.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/addons/dialogic/Images/Toolbar/add-definition.svg b/addons/dialogic/Images/Toolbar/add-definition.svg index 3a95fbf..23fbfed 100644 --- a/addons/dialogic/Images/Toolbar/add-definition.svg +++ b/addons/dialogic/Images/Toolbar/add-definition.svg @@ -1,4 +1,4 @@ - - - + + + diff --git a/addons/dialogic/Images/Toolbar/add-glossary-1.25.svg b/addons/dialogic/Images/Toolbar/add-glossary-1.25.svg new file mode 100644 index 0000000..ca3cd08 --- /dev/null +++ b/addons/dialogic/Images/Toolbar/add-glossary-1.25.svg @@ -0,0 +1,4 @@ + + + + diff --git a/addons/dialogic/Images/Toolbar/add-glossary-1.25.svg.import b/addons/dialogic/Images/Toolbar/add-glossary-1.25.svg.import new file mode 100644 index 0000000..38563b4 --- /dev/null +++ b/addons/dialogic/Images/Toolbar/add-glossary-1.25.svg.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/add-glossary-1.25.svg-2a0f52cc956c5e96cc6cd47ec2e7c9fc.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Images/Toolbar/add-glossary-1.25.svg" +dest_files=[ "res://.import/add-glossary-1.25.svg-2a0f52cc956c5e96cc6cd47ec2e7c9fc.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/addons/dialogic/Images/Toolbar/add-glossary-2.svg b/addons/dialogic/Images/Toolbar/add-glossary-2.svg new file mode 100644 index 0000000..e2bac55 --- /dev/null +++ b/addons/dialogic/Images/Toolbar/add-glossary-2.svg @@ -0,0 +1,4 @@ + + + + diff --git a/addons/dialogic/Images/Toolbar/add-glossary-2.svg.import b/addons/dialogic/Images/Toolbar/add-glossary-2.svg.import new file mode 100644 index 0000000..aa5acdc --- /dev/null +++ b/addons/dialogic/Images/Toolbar/add-glossary-2.svg.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/add-glossary-2.svg-df70e38f107b9fc6109af658c7e14964.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Images/Toolbar/add-glossary-2.svg" +dest_files=[ "res://.import/add-glossary-2.svg-df70e38f107b9fc6109af658c7e14964.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/addons/dialogic/Images/Toolbar/add-glossary.svg b/addons/dialogic/Images/Toolbar/add-glossary.svg new file mode 100644 index 0000000..9293f3f --- /dev/null +++ b/addons/dialogic/Images/Toolbar/add-glossary.svg @@ -0,0 +1,4 @@ + + + + diff --git a/addons/dialogic/Images/Toolbar/add-glossary.svg.import b/addons/dialogic/Images/Toolbar/add-glossary.svg.import new file mode 100644 index 0000000..65b337b --- /dev/null +++ b/addons/dialogic/Images/Toolbar/add-glossary.svg.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/add-glossary.svg-ca3a2211ead16a8ddd6c7fce1fbd838d.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Images/Toolbar/add-glossary.svg" +dest_files=[ "res://.import/add-glossary.svg-ca3a2211ead16a8ddd6c7fce1fbd838d.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/addons/dialogic/Images/Toolbar/add-theme-1.25.svg b/addons/dialogic/Images/Toolbar/add-theme-1.25.svg new file mode 100644 index 0000000..97c347e --- /dev/null +++ b/addons/dialogic/Images/Toolbar/add-theme-1.25.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/addons/dialogic/Images/Toolbar/add-theme-1.25.svg.import b/addons/dialogic/Images/Toolbar/add-theme-1.25.svg.import new file mode 100644 index 0000000..8c12b48 --- /dev/null +++ b/addons/dialogic/Images/Toolbar/add-theme-1.25.svg.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/add-theme-1.25.svg-4a12f9dc653eaf7ddeb686d60e81dccd.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Images/Toolbar/add-theme-1.25.svg" +dest_files=[ "res://.import/add-theme-1.25.svg-4a12f9dc653eaf7ddeb686d60e81dccd.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/addons/dialogic/Images/Toolbar/add-theme-2.svg b/addons/dialogic/Images/Toolbar/add-theme-2.svg new file mode 100644 index 0000000..c94ae67 --- /dev/null +++ b/addons/dialogic/Images/Toolbar/add-theme-2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/addons/dialogic/Images/Toolbar/add-theme-2.svg.import b/addons/dialogic/Images/Toolbar/add-theme-2.svg.import new file mode 100644 index 0000000..9ebb4e3 --- /dev/null +++ b/addons/dialogic/Images/Toolbar/add-theme-2.svg.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/add-theme-2.svg-c08a48497308cf495f82550c69ecc0ef.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Images/Toolbar/add-theme-2.svg" +dest_files=[ "res://.import/add-theme-2.svg-c08a48497308cf495f82550c69ecc0ef.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/addons/dialogic/Images/Toolbar/add-theme.svg b/addons/dialogic/Images/Toolbar/add-theme.svg index ede9be4..3e21c7a 100644 --- a/addons/dialogic/Images/Toolbar/add-theme.svg +++ b/addons/dialogic/Images/Toolbar/add-theme.svg @@ -1,5 +1,5 @@ - - - - + + + + diff --git a/addons/dialogic/Images/Toolbar/add-timeline-1.25.svg b/addons/dialogic/Images/Toolbar/add-timeline-1.25.svg new file mode 100644 index 0000000..42852f5 --- /dev/null +++ b/addons/dialogic/Images/Toolbar/add-timeline-1.25.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/addons/dialogic/Images/Toolbar/add-timeline-1.25.svg.import b/addons/dialogic/Images/Toolbar/add-timeline-1.25.svg.import new file mode 100644 index 0000000..b4c4169 --- /dev/null +++ b/addons/dialogic/Images/Toolbar/add-timeline-1.25.svg.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/add-timeline-1.25.svg-67e7c82a2cbaaed1f1477d82ecb8ce71.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Images/Toolbar/add-timeline-1.25.svg" +dest_files=[ "res://.import/add-timeline-1.25.svg-67e7c82a2cbaaed1f1477d82ecb8ce71.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/addons/dialogic/Images/Toolbar/add-timeline-2.svg b/addons/dialogic/Images/Toolbar/add-timeline-2.svg new file mode 100644 index 0000000..031a108 --- /dev/null +++ b/addons/dialogic/Images/Toolbar/add-timeline-2.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/addons/dialogic/Images/Toolbar/add-timeline-2.svg.import b/addons/dialogic/Images/Toolbar/add-timeline-2.svg.import new file mode 100644 index 0000000..d33eac9 --- /dev/null +++ b/addons/dialogic/Images/Toolbar/add-timeline-2.svg.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/add-timeline-2.svg-00b3bf905c7bd2ca1fece872d753dfef.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Images/Toolbar/add-timeline-2.svg" +dest_files=[ "res://.import/add-timeline-2.svg-00b3bf905c7bd2ca1fece872d753dfef.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/addons/dialogic/Images/Toolbar/add-timeline.svg b/addons/dialogic/Images/Toolbar/add-timeline.svg index 26685bd..5fa7ac1 100644 --- a/addons/dialogic/Images/Toolbar/add-timeline.svg +++ b/addons/dialogic/Images/Toolbar/add-timeline.svg @@ -1,7 +1,7 @@ - - - - - - + + + + + + diff --git a/addons/dialogic/Images/Tools.svg b/addons/dialogic/Images/Tools.svg deleted file mode 100644 index 81e7385..0000000 --- a/addons/dialogic/Images/Tools.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/addons/dialogic/Images/icon.svg b/addons/dialogic/Images/icon.svg deleted file mode 100644 index 871c9e2..0000000 --- a/addons/dialogic/Images/icon.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/addons/dialogic/Images/logo.png b/addons/dialogic/Images/logo.png deleted file mode 100644 index 673465a996524418669f3df426feb3fb8354ac84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4914 zcmb_gcQ_l|_YY#WMvE$?_H0${P1ULqsa=XtRBd99M5Du7eH*i8#cHWhdo=YX(t(LeA!1(HKr3-vgaCoky3$ro33#b_oTsa>AeGEVb06=}pg<}s! z0N`?$nUR5AG~LD|2ukeaWu~ah`ecA|U~+ziI4bMKf^%V{FdJ=p2oyY5+-V(8XBFnSHSd{YwB7q_%BH*yw!0|KGB5d*>DE zckG{rt;BO+} zEfP`X`au=Cwr9ud~o#TaqDlQdpDT;bkNony#B^9pGS zxn!QE=0$Eh@y5vsl*@Hi%Lvqt3_CO9vVo27YbDW<@3(t=N&b-4uxKy<5GKaU^||nx zF3fv+uj$iK?#bqhlQwlC-VN-Z=#)+xgPx);0dRt$d!#56@s$V}-GZ>sYDG5yC7|(( zF9yWv0DVqLcX%+MEcQfowYmsVO%r40l2%xE8Ac$nu0u*a1=o5f0D7z*X#-5X2Ae@O z0}C#g|6s!1*bD-34-<$gG`cs9D|;>REb$lSqTSZ{zj8vkW1l)ftREexGOXW)y21Re zA}4B_eS~lM&d`tb$0e3}k%#w?VW%$v&~F=v;D%(jfGN67bV0nS^9pfvZHh~0>@2WQdG4q-pPtoqf|9)VJ zmu$NDm<6HWzIv;ZN;B6rqdaVlw_lOF*oNdPAM! zL$8;93=7pb7NA!}i3;n?;e7Ujzi*`5sd=1fzvqlZ*S*aPdT2FXuhq;g=SFi7+c~}0q+Wbg*1`~hu#(jIDzH7gBT0zIv0rBw ziBs1%^V23s$)Edan{*LolA3>%wU8|4G0fT${z~diM3oB?_&Zoev28cS?W0Q^?gDDf?wryBq4)hLjrC7;8A&POv{RhfSZ; zLQ?2U)PvfRq`fKYnhSC7By+Ab$3Q1f?lR-bJXv$+iRu<&m2aWHpWUfHzzumQWtR zz4T791aMnGHn`_y1bw26mm;A=e5g$O``Mdr^H$N=;LpdL9M>;6sUe7eh z*{i%Ys(*7Qvg6H6%Q&%I9RojjNNHpyJIDQ31rOQjo7 zr?__f368tiLUg4@Nd;V2A}o^K@%Oj{;atBZS>f?GT-WC2S_{!*BB1 z`3-M08>MZj8vg*BBHWJ>R4Ku0^D|tS6*^%NN`GYs?sR;I6rkr>1m0sP zHpwG_w0cZhppp16d@z&-rCvL`Y3UML8Ggu7?F&k)Z*Pnk4bycbf~R+T>(hQ1*joyw zdwKD+3HPrB;DufXpfPqpMDSm1M<6Y3m2VY0^fRCg*z+- zVh8KX>Bi4OV!>%!&k-r0z;9(wjMIqMjY$2%oW!Gl-#d;_BD zt2&fnVkGs5Ug>KW|Go(yX8hWuv;*nF$xELR+x6Y%0RQy!%UV-DjF^C~GcBkH62{vc ztQbNyt_Es8>V7^s^~vXstTDl%tpFE?tgRduc_J?0u)J49Gg2!n~Dlm%HTNnRHD9)V}7T$;zyS>&}YgCqoN z1a~&u!beq~>k5w{YX9}^EYaENa`VIneS3d3{MVG7SZKkHcCuw+Aqrl`Xh`a{UHr^Uq#Q?v(P?L`BYC`KlI1CdV*IhD8!fp6QO?hSh=-pcy>*7Et zfU!K`=#e4To5o$mls*MnOg6&1KFm7#SNDcq$nU!a!!iP0z`tgh>OtvqB<*%voj${{ z!9hXDN^Y%&K{nJONK*KP=Ttg(y_qP*yA#{Ar+c%codwUBM97n@P2;n$`0(#M=eMlK z^vN$-8H*J=%CUmWFe^!6wf!4iVnD1>mLAszPxH>B3%W8_cHn(_H!JBhcyke!FsNU( zc9Ophec_sxtx6xV&ycuFz?RMMYOvvt{d+9dqssrrbbV|xXPcea3>r@v%I;BhN zJCJ0CKe&CF9^%G^kFV(GuY8luNPvU1<^uIbDmzEDAz{q!*CIPJO8O)r)kVJhUw*7*ieE_E zsnBOx$riWY@6eAz=rGv??oD5wVAXcZk`$R+sucLAAwj=T&Uy=!vCxpI{m|9S%RXT22z6GK18;jUbOt|NTHQ%^$7<+oQ@@(J`<&gIcFepQXVSMAEnas7C*)Y8 zr8QHa$GU`MRh!5s;h|fJm+J{uE&YFDro*16O_qNxrk^XKf6Bg(NBdiibuHw2x|v-{ z);tJReooYKi8k?Vw!hzI7Cpe6@oq}^Nkm%%-r`_nICAqVCjw8ly(W;C0}Aam#J{b| zS6cpn?S51X8B!tSnm-B9F+MGm_e4V@>jhqnO|NV&YZ#%i>)QV*QFx6vpHsf(%=V{z z$(#!CIg#yRkcWM5UTPjf@bm!yjN)b}+>>DRIYby;PG1yr8eS#G2g4@~k39>o9qm zO8}`6VbUBA$|CPZO^;{e89OGE7N2->VBb zJq9#*nvYe)WcATV<_YpF?6>GL?9tT0r*y~8HUBh3ig2ZEl%)Dcmzy>cBF!7~9y=xE z7d{LHBN7;QTLubdGG!5DpI)&D`)ESsLwLWygm%V`HoUQ_aBfquAKeGJ!|MGc<=B|d z@^d)D<4y}R^!M#2VV`_Oy0jP4EfcHWM`wDXBxDw%3;H!#{@@&dSS2lHhx(JZk-l{` zKP7s!U4!k#9-<&#wAR=~YK=NY`Y^D3uW9|1uf0P~F6FWD1&`Nci5KFWxWw7COq;iH zvO>MQx=p4wJPzqG(J3qW(A#m(dKv1LDG_K*a;J`9AVq;5BD+fsY}~40*HeNTj^=j> z_fzhR5trkR`pURhYsTZ9vQUP@F;h(`a~jzBXd2tr+BTIBa;zH}94dZ7%J z>~)XsrKl(O?K*3mJ`V9lbCCD-Hik`I?M}&~kWxYJdEpleW-g!%2!b3cQsj!gXBkI~?O(3ZfPau{nfdJ&q_)}U5}sG}nvip! zGRc7x1tDBe!J6pAwNw!Mw~F-`qYf2hsRc)Cp#B%B$S>(jRwH4bo)PnjiBn?9S`$Qo z&7`Yd)ofaW^VB+Z%V_0IpHIyp#U1>dTYy2F+}xS%*wvADp+;V@hp3q z`hBoOO05)pk92V%+3VUhCFAN(yzq4`$lx3->rr;PWhivQLn!(BR7_Un7fu)Do`H1y zVT5SHp4=kZC&N!)`mCs0&wlGzil*0Gzx4hTDJyy4`fSR6^`x4~z@a%}^ewG1hCFtb zz*nWFrmu3UUw#@psSZ-q zS4_q!N9dayj^^4zR1Iir)LTU}PDT96KjUHYuY@$GcMlnMjUs)eS?>hfN(V{o!``PT z25exX5c9^QYTd z3;>C*WnbI<`m7uX_$vjQg0H2jn%QFRkQkoYxfth3ez4bCELOX%lZaymRLFGwH?pyZ zqQ=ENwVLu+{OcaCFrS{+DdCmem2Assc$3Nv^+v@%wQ!1^f(NwzWz1r@J$}e87 z4zkh<11yt;I} Dictionary: var parsed_dialog: Dictionary = unparsed_dialog_script var new_events: Array = [] - var alignment = 'Left' var split_new_lines = true var remove_empty_messages = true @@ -142,10 +146,6 @@ func parse_text_lines(unparsed_dialog_script: Dictionary) -> Dictionary: if settings.has_section_key('dialog', 'new_lines'): split_new_lines = settings.get_value('dialog', 'new_lines') - if current_theme != null: - alignment = current_theme.get_value('text', 'alignment', 'Left') - - dprint('preview ', preview) # Parsing for event in unparsed_dialog_script['events']: if event.has('text') and event.has('character') and event.has('portrait'): @@ -155,24 +155,14 @@ func parse_text_lines(unparsed_dialog_script: Dictionary) -> Dictionary: var lines = event['text'].split('\n') var i = 0 for line in lines: - var text = lines[i] - if alignment == 'Center': - text = '[center]' + lines[i] + '[/center]' - elif alignment == 'Right': - text = '[right]' + lines[i] + '[/right]' var _e = { - 'text': text, + 'text': lines[i], 'character': event['character'], 'portrait': event['portrait'] } new_events.append(_e) i += 1 else: - var text = event['text'] - if alignment == 'Center': - event['text'] = '[center]' + text + '[/center]' - elif alignment == 'Right': - event['text'] = '[right]' + text + '[/right]' new_events.append(event) else: new_events.append(event) @@ -182,6 +172,16 @@ func parse_text_lines(unparsed_dialog_script: Dictionary) -> Dictionary: return parsed_dialog +func parse_alignment(text): + var alignment = current_theme.get_value('text', 'alignment', 'Left') + var fname = current_theme.get_value('settings', 'name', 'none') + if alignment == 'Center': + text = '[center]' + text + '[/center]' + elif alignment == 'Right': + text = '[right]' + text + '[/right]' + return text + + func parse_branches(dialog_script: Dictionary) -> Dictionary: questions = [] # Resetting the questions @@ -228,15 +228,16 @@ func parse_branches(dialog_script: Dictionary) -> Dictionary: return dialog_script -func parse_definitions(text: String): - var words = [] +func parse_definitions(text: String, variables: bool = true, glossary: bool = true): if Engine.is_editor_hint(): # Loading variables again to avoid issues in the preview dialog load_config_files() - var final_text: String; - final_text = _insert_variable_definitions(text) - final_text = _insert_glossary_definitions(final_text) + var final_text: String = text + if variables: + final_text = _insert_variable_definitions(text) + if glossary: + final_text = _insert_glossary_definitions(final_text) return final_text @@ -249,7 +250,7 @@ func _insert_variable_definitions(text: String): func _insert_glossary_definitions(text: String): - var color = self.current_theme.get_value('definitions', 'color', '#ffbebebe') + var color = current_theme.get_value('definitions', 'color', '#ffbebebe') var final_text := text; # I should use regex here, but this is way easier :) for d in definitions['glossary']: @@ -273,9 +274,9 @@ func _process(delta): func _input(event: InputEvent) -> void: if not Engine.is_editor_hint() and event.is_action_pressed(input_next) and not waiting: - if $TextBubble/Tween.is_active(): + if tween_node.is_active(): # Skip to end if key is pressed during the text animation - $TextBubble/Tween.seek(999) + tween_node.seek(999) finished = true else: if waiting_for_answer == false and waiting_for_input == false: @@ -290,14 +291,8 @@ func show_dialog(): visible = true -func start_text_tween(): - # This will start the animation that makes the text appear letter by letter - var tween_duration = text_speed * $TextBubble/RichTextLabel.get_total_character_count() - $TextBubble/Tween.interpolate_property( - $TextBubble/RichTextLabel, "percent_visible", 0, 1, tween_duration, - Tween.TRANS_LINEAR, Tween.EASE_IN_OUT - ) - $TextBubble/Tween.start() +func _on_Tween_tween_completed(object, key): + finished = true func update_name(character, color: Color = Color.white) -> void: @@ -308,20 +303,22 @@ func update_name(character, color: Color = Color.white) -> void: parsed_name = character['display_name'] if character.has('color'): color = character['color'] - parsed_name = parse_definitions(parsed_name) + parsed_name = parse_definitions(parsed_name, true, false) $TextBubble/NameLabel.visible = true # Hack to reset the size $TextBubble/NameLabel.rect_min_size = Vector2(0, 0) $TextBubble/NameLabel.rect_size = Vector2(-1, 40) # Setting the color and text $TextBubble/NameLabel.text = parsed_name - $TextBubble/NameLabel.set('custom_colors/font_color', color) + if current_theme.get_value('name', 'auto_color', true): + $TextBubble/NameLabel.set('custom_colors/font_color', color) else: $TextBubble/NameLabel.visible = false func update_text(text): # Updating the text and starting the animation from 0 + text = parse_alignment(text) $TextBubble/RichTextLabel.bbcode_text = parse_definitions(text) $TextBubble/RichTextLabel.percent_visible = 0 @@ -331,6 +328,16 @@ func update_text(text): return true +func start_text_tween(): + # This will start the animation that makes the text appear letter by letter + var tween_duration = text_speed * $TextBubble/RichTextLabel.get_total_character_count() + tween_node.interpolate_property( + $TextBubble/RichTextLabel, "percent_visible", 0, 1, tween_duration, + Tween.TRANS_LINEAR, Tween.EASE_IN_OUT + ) + tween_node.start() + + func on_timeline_start(): if not Engine.is_editor_hint(): DialogicSingleton.save_definitions() @@ -360,7 +367,9 @@ func load_dialog(skip_add = false): # This will load the next entry in the dialog_script array. if dialog_script.has('events'): if dialog_index < dialog_script['events'].size(): - event_handler(dialog_script['events'][dialog_index]) + var func_state = event_handler(dialog_script['events'][dialog_index]) + if (func_state is GDScriptFunctionState): + yield(func_state, "completed") else: if Engine.is_editor_hint() == false: queue_free() @@ -426,8 +435,7 @@ func event_handler(event: Dictionary): emit_signal("event_start", "action", event) if event['action'] == 'leaveall': if event['character'] == '[All]': - for p in $Portraits.get_children(): - p.fade_out() + characters_leave_all() else: for p in $Portraits.get_children(): if p.character_data['file'] == event['character']: @@ -455,7 +463,18 @@ func event_handler(event: Dictionary): {'background'}: emit_signal("event_start", "background", event) $Background.visible = true - $Background.texture = load(event['background']) + $Background.texture = null + if ($Background.get_child_count() > 0): + for c in $Background.get_children(): + c.get_parent().remove_child(c) + c.queue_free() + if (event['background'].ends_with('.tscn')): + var bg_scene = load(event['background']) + if (bg_scene): + bg_scene = bg_scene.instance() + $Background.add_child(bg_scene) + elif (event['background'] != ''): + $Background.texture = load(event['background']) go_to_next_event() {'audio'}, {'audio', 'file'}: emit_signal("event_start", "audio", event) @@ -483,8 +502,7 @@ func event_handler(event: Dictionary): go_to_next_event() {'close_dialog'}: emit_signal("event_start", "close_dialog", event) - on_timeline_end() - queue_free() + close_dialog_event() {'set_theme'}: emit_signal("event_start", "set_theme", event) if event['set_theme'] != '': @@ -524,6 +542,31 @@ func event_handler(event: Dictionary): operation = event["operation"] DialogicSingleton.set_variable_from_id(event['definition'], event['set_value'], operation) go_to_next_event() + {'call_node', ..}: + dprint('[!] Call Node signal: dialogic_signal(call_node) ', var2str(event['call_node'])) + emit_signal("event_start", "call_node", event) + $TextBubble.visible = false + waiting = true + var target = get_node_or_null(event['call_node']['target_node_path']) + var method_name = event['call_node']['method_name'] + var args = event['call_node']['arguments'] + if (not args is Array): + args = [] + + if (target != null): + if (target.has_method(method_name)): + if (args.empty()): + var func_result = target.call(method_name) + if (func_result is GDScriptFunctionState): + yield(func_result, "completed") + else: + var func_result = target.call(method_name, args) + if (func_result is GDScriptFunctionState): + yield(func_result, "completed") + + waiting = false + $TextBubble.visible = true + go_to_next_event() _: visible = false dprint('Other event. ', event) @@ -621,11 +664,6 @@ func _on_option_selected(option, variable, value): dprint('[!] Option selected: ', option.text, ' value= ' , value) -func _on_Tween_tween_completed(object, key): - #$TextBubble/RichTextLabel.meta_underlined = true - finished = true - - func _on_TextInputDialog_confirmed(): pass # Replace with function body. @@ -638,15 +676,22 @@ func go_to_next_event(): func grab_portrait_focus(character_data, event: Dictionary = {}) -> bool: var exists = false + var visually_focus = true + if settings.has_section_key('dialog', 'dim_characters'): + visually_focus = settings.get_value('dialog', 'dim_characters') + for portrait in $Portraits.get_children(): if portrait.character_data == character_data: exists = true - portrait.focus() + + if visually_focus: + portrait.focus() if event.has('portrait'): if event['portrait'] != '': portrait.set_portrait(event['portrait']) else: - portrait.focusout() + if visually_focus: + portrait.focusout() return exists @@ -712,6 +757,11 @@ func load_theme(filename): $TextBubble/TextureRect.texture = load(theme.get_value('background','image', "res://addons/dialogic/Images/background/background-2.png")) $TextBubble/ColorRect.color = Color(theme.get_value('background','color', "#ff000000")) + if theme.get_value('background', 'modulation', false) == true: + $TextBubble/TextureRect.modulate = Color(theme.get_value('background', 'modulation_color', '#ffffffff')) + else: + $TextBubble/TextureRect.modulate = Color('#ffffffff') + $TextBubble/ColorRect.visible = theme.get_value('background', 'use_color', false) $TextBubble/TextureRect.visible = theme.get_value('background', 'use_image', true) @@ -731,7 +781,7 @@ func load_theme(filename): $TextBubble/NameLabel/TextureRect.visible = theme.get_value('name', 'image_visible', false) $TextBubble/NameLabel/TextureRect.texture = load(theme.get_value('name','image', "res://addons/dialogic/Images/background/background-2.png")) var name_shadow_offset = theme.get_value('name', 'shadow_offset', Vector2(2,2)) - if theme.get_value('name', 'shadow_visible', false): + if theme.get_value('name', 'shadow_visible', true): $TextBubble/NameLabel.set('custom_colors/font_color_shadow', Color(theme.get_value('name', 'shadow', '#9e000000'))) $TextBubble/NameLabel.set('custom_constants/shadow_offset_x', name_shadow_offset.x) $TextBubble/NameLabel.set('custom_constants/shadow_offset_y', name_shadow_offset.y) @@ -758,7 +808,7 @@ func _on_RichTextLabel_meta_hover_started(meta): 'color': current_theme.get_value('definitions', 'color', '#ffbebebe'), }) correct_type = true - print(d) + dprint(d) if correct_type: definition_visible = true @@ -802,6 +852,11 @@ func dprint(string, arg1='', arg2='', arg3='', arg4='' ): func _compare_definitions(def_value: String, event_value: String, condition: String): var condition_met = false; if def_value != null and event_value != null: + # check if event_value equals a definition name and use that instead + for d in definitions['variables']: + if (d['name'] != '' and d['name'] == event_value): + event_value = d['value'] + break; var converted_def_value = def_value var converted_event_value = event_value if def_value.is_valid_float() and event_value.is_valid_float(): @@ -821,3 +876,27 @@ func _compare_definitions(def_value: String, event_value: String, condition: Str "<=": condition_met = converted_def_value <= converted_event_value return condition_met + + +func characters_leave_all(): + for p in $Portraits.get_children(): + p.fade_out() + + +func close_dialog_event(): + var tween = Tween.new() + add_child(tween) + tween.interpolate_property($TextBubble, "modulate", + $TextBubble.modulate, Color('#00ffffff'), 1, + Tween.TRANS_LINEAR, Tween.EASE_IN_OUT) + tween.start() + var close_dialog_timer = Timer.new() + close_dialog_timer.connect("timeout", self, '_on_close_dialog_timeout') + add_child(close_dialog_timer) + close_dialog_timer.start(2) + characters_leave_all() + + +func _on_close_dialog_timeout(): + on_timeline_end() + queue_free() diff --git a/addons/dialogic/Other/DialogicResources.gd b/addons/dialogic/Other/DialogicResources.gd index b69be38..7e3c336 100644 --- a/addons/dialogic/Other/DialogicResources.gd +++ b/addons/dialogic/Other/DialogicResources.gd @@ -164,7 +164,34 @@ static func create_empty_file(path): file.open(path, File.WRITE) file.store_string('') file.close() - + + +static func copy_file(path_from, path_to): + if (path_from == ''): + push_error("[Dialogic] Could not copy empty filename") + return ERR_FILE_BAD_PATH + + if (path_to == ''): + push_error("[Dialogic] Could not copy to empty filename") + return ERR_FILE_BAD_PATH + + var dir = Directory.new() + if (not dir.file_exists(path_from)): + push_error("[Dialogic] Could not copy file %s, File does not exists" % [ path_from ]) + return ERR_FILE_NOT_FOUND + + if (dir.file_exists(path_to)): + push_error("[Dialogic] Could not copy file to %s, file already exists" % [ path_to ]) + return ERR_ALREADY_EXISTS + + var error = dir.copy(path_from, path_to) + if (error): + push_error("[Dialogic] Error while copying %s to %s" % [ path_from, path_to ]) + push_error(error) + return error + + return OK + pass # CONFIG UTIL @@ -184,7 +211,12 @@ static func get_config(id: String) -> ConfigFile: static func remove_file(path: String): var dir = Directory.new() - dir.remove(path) + var _err = dir.remove(path) + + if _err != OK: + print("[D] There was an error when deleting file at {filepath}. Error: {error}".format( + {"filepath":path,"error":_err} + )) # JSON UTIL @@ -264,6 +296,10 @@ static func add_theme(filename: String): static func delete_theme(filename: String): remove_file(get_path('THEME_DIR', filename)) + + +static func duplicate_theme(from_filename: String, to_filename: String): + copy_file(get_path('THEME_DIR', from_filename), get_path('THEME_DIR', to_filename)) # SETTINGS # Can only be edited in the editor diff --git a/addons/dialogic/Other/inspector_timeline_picker.gd b/addons/dialogic/Other/inspector_timeline_picker.gd index 726501a..418ba7a 100644 --- a/addons/dialogic/Other/inspector_timeline_picker.gd +++ b/addons/dialogic/Other/inspector_timeline_picker.gd @@ -1,6 +1,8 @@ extends EditorInspectorPlugin var TimelinePicker = preload("res://addons/dialogic/Other/timeline_picker.gd") +var dialogic_editor_plugin = null +var dialogic_editor_view = null func can_handle(object): @@ -15,8 +17,21 @@ func parse_property(object, type, path, hint, hint_text, usage): if type == TYPE_STRING: # Create an instance of the custom property editor and register # it to a specific property path. - add_property_editor(path, TimelinePicker.new()) + var picker = TimelinePicker.new() + picker.editor_inspector_plugin = self + add_property_editor(path, picker) # Inform the editor to remove the default property editor for # this property type. return true return false + + +func switch_to_dialogic_timeline(timeline: String): + prints("switchting", timeline, dialogic_editor_plugin, dialogic_editor_view) + if (dialogic_editor_plugin != null): + dialogic_editor_plugin.get_editor_interface().set_main_screen_editor("Dialogic") + + if (dialogic_editor_view != null and dialogic_editor_view.master_tree != null): + dialogic_editor_view.master_tree.show_timeline_editor() + dialogic_editor_view.master_tree.select_timeline_item(timeline) + pass diff --git a/addons/dialogic/Other/timeline_picker.gd b/addons/dialogic/Other/timeline_picker.gd index 80e3627..c4cd778 100644 --- a/addons/dialogic/Other/timeline_picker.gd +++ b/addons/dialogic/Other/timeline_picker.gd @@ -1,23 +1,49 @@ tool extends EditorProperty - -# The main control for editing the property. +# The main controls for editing the property. var timelines_dropdown = MenuButton.new() +var container = HBoxContainer.new() +var edit_button = Button.new() + +# reference to the inspector plugin +var editor_inspector_plugin = null + # An internal value of the property. var current_value = '' # A guard against internal changes when the property is updated. var updating = false +# @Override +func get_tooltip_text(): + return "Click to select a Dialogic timeline.\nPress the tool button to directly switch to the editor" + + +func _ready(): + edit_button.icon = get_icon("Tools", "EditorIcons") + func _init(): - # Add the control as a direct child of EditorProperty node. - add_child(timelines_dropdown) + # setup controls + timelines_dropdown.rect_min_size.x = 80 + timelines_dropdown.set_h_size_flags(SIZE_EXPAND_FILL) + timelines_dropdown.clip_text = true + container.add_child(timelines_dropdown) + container.add_child(edit_button) + edit_button.flat = true + edit_button.hint_tooltip = "Edit Timeline" + edit_button.disabled = true + + # Add the container as a direct child + add_child(container) + # Make sure the control is able to retain the focus. add_focusable(timelines_dropdown) + # Setup the initial state and connect to the signal to track changes. timelines_dropdown.connect("about_to_show", self, "_about_to_show_menu") timelines_dropdown.get_popup().connect("index_pressed", self, '_on_timeline_selected') + edit_button.connect("pressed", self, "_on_editTimelineButton_pressed") func _about_to_show_menu(): @@ -33,25 +59,51 @@ func _about_to_show_menu(): timelines_dropdown.get_popup().set_item_metadata(index, {'file': c['file'], 'color': c['color']}) index += 1 + func _on_timeline_selected(index): var text = timelines_dropdown.get_popup().get_item_text(index) var metadata = timelines_dropdown.get_popup().get_item_metadata(index) current_value = metadata['file'] timelines_dropdown.text = text + timelines_dropdown.hint_tooltip = text + _update_edit_button(current_value) emit_changed(get_edited_property(), current_value) + + +func _on_editTimelineButton_pressed(): + if (current_value != '' and editor_inspector_plugin != null): + editor_inspector_plugin.switch_to_dialogic_timeline(current_value) func update_property(): # Read the current value from the property. var new_value = get_edited_object()[get_edited_property()] + _update_edit_button(new_value) + if (new_value == current_value): return - + # Update the control with the new value. updating = true current_value = new_value # Checking for the display name + timelines_dropdown.text = '' + + if (current_value == ''): + timelines_dropdown.hint_tooltip = 'Click to select a timeline' + for c in DialogicUtil.get_timeline_list(): if c['file'] == current_value: timelines_dropdown.text = c['name'] + timelines_dropdown.hint_tooltip = c['name'] + updating = false + + _update_edit_button(current_value) + + +func _update_edit_button(value): + if (value == ''): + edit_button.disabled = true + else: + edit_button.disabled = false diff --git a/addons/dialogic/dialogic.gd b/addons/dialogic/dialogic.gd index 93d7a50..f3218a0 100644 --- a/addons/dialogic/dialogic.gd +++ b/addons/dialogic/dialogic.gd @@ -17,6 +17,8 @@ func _enter_tree() -> void: _add_custom_editor_view() get_editor_interface().get_editor_viewport().add_child(_editor_view) make_visible(false) + _parts_inspector.dialogic_editor_plugin = self + _parts_inspector.dialogic_editor_view = _editor_view func _ready(): diff --git a/addons/dialogic/plugin.cfg b/addons/dialogic/plugin.cfg index 2b10c19..90102ad 100644 --- a/addons/dialogic/plugin.cfg +++ b/addons/dialogic/plugin.cfg @@ -4,5 +4,5 @@ name="Dialogic" description="Create dialogs, characters and scenes to display conversations in your Godot games. https://github.com/coppolaemilio/dialogic" author="Emilio Coppola" -version="1.0" +version="1.1" script="dialogic.gd" diff --git a/dialogic/characters/character-1616658471.json b/dialogic/characters/character-1616658471.json index 13276e6..bbbe23d 100644 --- a/dialogic/characters/character-1616658471.json +++ b/dialogic/characters/character-1616658471.json @@ -1 +1 @@ -{"color":"#ff1b2f99","default_speaker":false,"description":"bip bip nouveau mail","display_name":"","display_name_bool":false,"id":"character-1616658471.json","name":"Mail","offset_x":0,"offset_y":-100,"portraits":[{"name":"Default","path":"res://characters/mail.png"}],"scale":100} +{"color":"#ff1b5899","default_speaker":false,"description":"bip bip nouveau mail","display_name":"","display_name_bool":false,"id":"character-1616658471.json","name":"Mail","offset_x":0,"offset_y":-100,"portraits":[{"name":"Default","path":"res://characters/mail.png"}],"scale":100} diff --git a/dialogic/timelines/timeline-1616656510.json b/dialogic/timelines/timeline-1616656510.json index 8ac1835..7f716e6 100644 --- a/dialogic/timelines/timeline-1616656510.json +++ b/dialogic/timelines/timeline-1616656510.json @@ -1 +1 @@ -{"events":[{"background":"res://backgrounds/bureauGroupe-2.jpg"},{"set_theme":"theme-1616657657.cfg"},{"options":[],"question":"Il est 10 heures, ce ne serait pas l'heure de la pause ?"},{"choice":"oui, j'ai soif !"},{"choice":"un petit café ne me ferait pas de mal"},{"choice":"Je vais voir mes merveilleux collègues !"},{"endbranch":""},{"change_timeline":"timeline-1616657347.json"}],"metadata":{"dialogic-version":"1.0","file":"timeline-1616656510.json","name":"question-cafe"}} +{"events":[{"background":"res://backgrounds/bureauGroupe-2.jpg"},{"set_theme":"theme-1616657657.cfg"},{"options":[],"question":"Il est 10 heures, ce ne serait pas l'heure de la pause ?"},{"choice":"oui, j'ai soif !"},{"choice":"un petit café ne me ferait pas de mal"},{"choice":"Je vais voir mes merveilleux collègues !"},{"endbranch":""},{"change_timeline":"timeline-1616657347.json"}],"metadata":{"dialogic-version":"1.1","file":"timeline-1616656510.json","name":"question-cafe"}} diff --git a/dialogic/timelines/timeline-1616657347.json b/dialogic/timelines/timeline-1616657347.json index 4669b50..22d456c 100644 --- a/dialogic/timelines/timeline-1616657347.json +++ b/dialogic/timelines/timeline-1616657347.json @@ -1 +1 @@ -{"events":[{"background":"res://backgrounds/coffeeRoom.jpg"},{"action":"join","character":"character-1616658373.json","portrait":"","position":{"0":false,"1":true,"2":false,"3":false,"4":false}},{"character":"","portrait":"","text":"Vous arrivez à la machine à café, Evelyne est déjà là"},{"definition":"1616657225-648","set_value":"5"},{"emit_signal":"value increment 10"},{"character":"character-1616658373.json","portrait":"","text":"Coucou !\nMoi c’est Evelyne, je suis dans ton service!\nJ’ai hâte de travailler avec toi, nous allons faire de belles choses ensemble !\nJ’ai entendu que le boss t’avais mis sur le projet du nouveau téléphone.\nC’est un gros projet pour commencer."},{"character":"character-1616658355.json","portrait":"","text":"Ouais c’est super mais ça me met la pression.\nEn plus je dois essayer de me démarquer des téléphones des autres entreprises en ajoutant de nouvelles fonctionnalités."},{"character":"character-1616658373.json","portrait":"","text":"Justement je voulais te parler d’un truc que j’ai en tête depuis un moment, je n’ai jamais eu l’occasion de le mettre en application, mais ton projet est parfait pour ça.\nAs-tu déjà entendu parlé du recyclage de pièces de téléphone ?"},{"options":[],"question":"Le recyclage, ça vous dit quelquechose ?"},{"choice":"Très brièvement…"},{"choice":"On m'en a parlé un peu"},{"character":"character-1616658355.json","portrait":"","text":"Quelqu’un m’en a parlé il y a longtemps mais je ne m’en souviens pas vraiment … "},{"endbranch":""},{"character":"character-1616658373.json","portrait":"","text":"En gros, contrairement aux derniers modèles de téléphones, le principe est que ton téléphone est démontable.\nDu coup, si tu as un problème sur une certaine pièce, comme la batterie, tu peux simplement la changer.\nÇa évite de devoir faire réparer ton téléphone entier ou d’en racheter un nouveau.\nTu peux imaginer l’économie que tu fais non seulement pour ton porte-monnaie, mais aussi pour la planète.\nSi tu l’appliques pour ton projet ça permettrait de donner une image éco-responsable de l’entreprise mais aussi de te démarquer de toutes ces marques qui poussent à la surconsommation."},{"options":[],"question":"Qu'en pensez vous ?"},{"choice":"C’est vrai que c’est intéressant je vais y réfléchir!"},{"character":"character-1616658373.json","portrait":"","text":"Super !"},{"choice":"Mouais…"},{"character":"character-1616658373.json","portrait":"","text":"Réfléchis-y, c'est important !"},{"endbranch":""},{"character":"character-1616658373.json","portrait":"","text":"Bon courage et à une prochaine pause café !"},{"action":"leaveall","character":"[All]"},{"wait_seconds":0},{"change_timeline":"timeline-1616659153.json"}],"metadata":{"dialogic-version":"1.0","file":"timeline-1616657347.json","name":"info-evelyne"}} +{"events":[{"background":"res://backgrounds/coffeeRoom.jpg"},{"action":"join","character":"character-1616658373.json","portrait":"","position":{"0":false,"1":true,"2":false,"3":false,"4":false}},{"character":"","portrait":"","text":"Vous arrivez à la machine à café, Evelyne est déjà là"},{"definition":"1616657225-648","set_value":"5"},{"emit_signal":"value increment 10"},{"character":"character-1616658373.json","portrait":"","text":"Coucou !\nMoi c’est Evelyne, je suis dans ton service!\nJ’ai hâte de travailler avec toi, nous allons faire de belles choses ensemble !\nJ’ai entendu que le boss t’avais mis sur le projet du nouveau téléphone.\nC’est un gros projet pour commencer."},{"character":"character-1616658355.json","portrait":"","text":"Ouais c’est super mais ça me met la pression.\nEn plus je dois essayer de me démarquer des téléphones des autres entreprises en ajoutant de nouvelles fonctionnalités."},{"character":"character-1616658373.json","portrait":"","text":"Justement je voulais te parler d’un truc que j’ai en tête depuis un moment, je n’ai jamais eu l’occasion de le mettre en application, mais ton projet est parfait pour ça.\nAs-tu déjà entendu parlé du recyclage de pièces de téléphone ?"},{"options":[],"question":"Le recyclage, ça vous dit quelquechose ?"},{"choice":"Très brièvement…"},{"choice":"On m'en a parlé un peu"},{"character":"character-1616658355.json","portrait":"","text":"Quelqu’un m’en a parlé il y a longtemps mais je ne m’en souviens pas vraiment … "},{"endbranch":""},{"character":"character-1616658373.json","portrait":"","text":"En gros, contrairement aux derniers modèles de téléphones, le principe est que ton téléphone est démontable.\nDu coup, si tu as un problème sur une certaine pièce, comme la batterie, tu peux simplement la changer.\nÇa évite de devoir faire réparer ton téléphone entier ou d’en racheter un nouveau.\nTu peux imaginer l’économie que tu fais non seulement pour ton porte-monnaie, mais aussi pour la planète.\nSi tu l’appliques pour ton projet ça permettrait de donner une image éco-responsable de l’entreprise mais aussi de te démarquer de toutes ces marques qui poussent à la surconsommation."},{"options":[],"question":"Qu'en pensez vous ?"},{"choice":"C’est vrai que c’est intéressant je vais y réfléchir!"},{"character":"character-1616658373.json","portrait":"","text":"Super !"},{"choice":"Mouais…"},{"character":"character-1616658373.json","portrait":"","text":"Réfléchis-y, c'est important !"},{"endbranch":""},{"character":"character-1616658373.json","portrait":"","text":"Bon courage et à une prochaine pause café !"},{"action":"leaveall","character":"[All]"},{"wait_seconds":0},{"change_timeline":"timeline-1616659153.json"}],"metadata":{"dialogic-version":"1.1","file":"timeline-1616657347.json","name":"info-evelyne"}} diff --git a/dialogic/timelines/timeline-1616659153.json b/dialogic/timelines/timeline-1616659153.json index e45735d..1ad397c 100644 --- a/dialogic/timelines/timeline-1616659153.json +++ b/dialogic/timelines/timeline-1616659153.json @@ -1 +1 @@ -{"events":[{"background":"res://backgrounds/bureauGroupe-2.jpg"},{"character":"","portrait":"","text":"Vous vous dirigez vers votre bureau"},{"action":"join","character":"character-1616658435.json","portrait":"","position":{"0":false,"1":false,"2":false,"3":true,"4":false}},{"character":"character-1616658435.json","portrait":"","text":"Salut toi ! Bienvenue parmi nous. Tu viens d’où mon ami ?"},{"character":"character-1616658355.json","portrait":"","text":"Oh rien d’original je viens de région parisienne et toi ?"},{"character":"character-1616658435.json","portrait":"","text":"Alors … C’est compliqué … Je crois que je suis suisse."},{"character":"character-1616658355.json","portrait":"","text":"Tu crois ?"},{"character":"character-1616658435.json","portrait":"","text":"Je ne suis pas sûr … Bisous ! Bienvenue parmi nous"},{"action":"leaveall","character":"[All]"},{"change_timeline":"timeline-1616659608.json"}],"metadata":{"dialogic-version":"1.0","file":"timeline-1616659153.json","name":"merde-patrick-1"}} +{"events":[{"background":"res://backgrounds/bureauGroupe-2.jpg"},{"character":"","portrait":"","text":"Vous vous dirigez vers votre bureau"},{"action":"join","character":"character-1616658435.json","portrait":"","position":{"0":false,"1":false,"2":false,"3":true,"4":false}},{"character":"character-1616658435.json","portrait":"","text":"Salut toi ! Bienvenue parmi nous. Tu viens d’où mon ami ?"},{"character":"character-1616658355.json","portrait":"","text":"Oh rien d’original je viens de région parisienne et toi ?"},{"character":"character-1616658435.json","portrait":"","text":"Alors … C’est compliqué … Je crois que je suis suisse."},{"character":"character-1616658355.json","portrait":"","text":"Tu crois ?"},{"character":"character-1616658435.json","portrait":"","text":"Je ne suis pas sûr … Bisous ! Bienvenue parmi nous"},{"action":"leaveall","character":"[All]"},{"change_timeline":"timeline-1616659608.json"}],"metadata":{"dialogic-version":"1.1","file":"timeline-1616659153.json","name":"merde-patrick-1"}} diff --git a/dialogic/timelines/timeline-1616659306.json b/dialogic/timelines/timeline-1616659306.json index 9ec4c68..b6ac879 100644 --- a/dialogic/timelines/timeline-1616659306.json +++ b/dialogic/timelines/timeline-1616659306.json @@ -1 +1 @@ -{"events":[{"change_timeline":"timeline-1616656510.json"}],"metadata":{"dialogic-version":"1.0","file":"timeline-1616659306.json","name":"_start"}} +{"events":[{"change_timeline":"timeline-1616656510.json"}],"metadata":{"dialogic-version":"1.1","file":"timeline-1616659306.json","name":"_start"}} diff --git a/dialogic/timelines/timeline-1616659917.json b/dialogic/timelines/timeline-1616659917.json index 66a1c61..0a1d4e2 100644 --- a/dialogic/timelines/timeline-1616659917.json +++ b/dialogic/timelines/timeline-1616659917.json @@ -1 +1 @@ -{"events":[{"background":"res://backgrounds/bureauPerso.jpg"},{"action":"join","character":"character-1616658435.json","portrait":"","position":{"0":false,"1":true,"2":false,"3":false,"4":false}},{"character":"character-1616658435.json","portrait":"","text":"Tu savais que l’escargot le plus gros du monde peut peser jusqu’à 1,5 kg ?"},{"character":"character-1616658355.json","portrait":"","text":"Oh c’est toi ! Tu m’as fait peur... Mais non je ne savais pas c’est impressionnant !"},{"character":"character-1616658435.json","portrait":"","text":"Tu te coucheras moins bête ce soir !\nBisous !\nÀ plus dans le bus !"},{"action":"leaveall","character":"[All]"},{"wait_seconds":1},{"character":"character-1616658355.json","portrait":"","text":"Étrange collègue ce Patrick."},{"change_timeline":"timeline-1616660188.json"}],"metadata":{"dialogic-version":"1.0","file":"timeline-1616659917.json","name":"merde-patrick-2"}} +{"events":[{"background":"res://backgrounds/bureauPerso.jpg"},{"action":"join","character":"character-1616658435.json","portrait":"","position":{"0":false,"1":true,"2":false,"3":false,"4":false}},{"character":"character-1616658435.json","portrait":"","text":"Tu savais que l’escargot le plus gros du monde peut peser jusqu’à 1,5 kg ?"},{"character":"character-1616658355.json","portrait":"","text":"Oh c’est toi ! Tu m’as fait peur... Mais non je ne savais pas c’est impressionnant !"},{"character":"character-1616658435.json","portrait":"","text":"Tu te coucheras moins bête ce soir !\nBisous !\nÀ plus dans le bus !"},{"action":"leaveall","character":"[All]"},{"wait_seconds":1},{"character":"character-1616658355.json","portrait":"","text":"Étrange collègue ce Patrick."},{"change_timeline":"timeline-1616660188.json"}],"metadata":{"dialogic-version":"1.1","file":"timeline-1616659917.json","name":"merde-patrick-2"}} diff --git a/dialogic/timelines/timeline-1616660188.json b/dialogic/timelines/timeline-1616660188.json index 555f88a..8c95e02 100644 --- a/dialogic/timelines/timeline-1616660188.json +++ b/dialogic/timelines/timeline-1616660188.json @@ -1 +1 @@ -{"events":[{"background":"res://backgrounds/bureauPerso.jpg"},{"action":"join","character":"character-1616660196.json","portrait":"","position":{"0":false,"1":false,"2":true,"3":false,"4":false}},{"character":"","portrait":"","text":"Vous avez reçu une notification d’un article parlant du recyclage des pièces en cas de panne des téléphones."},{"character":"character-1616660196.json","portrait":"","text":"Le dépannage représente également une alternative idéale au gaspillage généré par la consommation excessive d’appareils électroniques.\nDe plus en plus d’enseignes se consacrent à la réparation de smartphones et/ou commercialisent des pièces de rechange.\n Si auparavant, la plupart des utilisateurs de smartphones laissaient leur appareil à l’abandon suite à une panne quelconque, le constat n’est plus le même aujourd’hui.\nEn effet, les pièces de rechange, majoritairement issus du processus de recyclage, sont vendues à des prix très abordables.\nFace à la concurrence grandissante dans le domaine du dépannage de mobile, le coût des services est à la baisse.\nAu plus grand profit des utilisateurs de smartphones.\nFaire réparer son smartphone constitue une alternative plus économique que d’investir dans l’acquisition d’un nouvel appareil. "},{"action":"leaveall","character":"[All]"},{"change_timeline":"timeline-1616660446.json"}],"metadata":{"dialogic-version":"1.0","file":"timeline-1616660188.json","name":"notification-1"}} +{"events":[{"background":"res://backgrounds/bureauPerso.jpg"},{"action":"join","character":"character-1616660196.json","portrait":"","position":{"0":false,"1":false,"2":true,"3":false,"4":false}},{"character":"","portrait":"","text":"Vous avez reçu une notification d’un article parlant du recyclage des pièces en cas de panne des téléphones."},{"character":"character-1616660196.json","portrait":"","text":"Le dépannage représente également une alternative idéale au gaspillage généré par la consommation excessive d’appareils électroniques.\nDe plus en plus d’enseignes se consacrent à la réparation de smartphones et/ou commercialisent des pièces de rechange.\n Si auparavant, la plupart des utilisateurs de smartphones laissaient leur appareil à l’abandon suite à une panne quelconque, le constat n’est plus le même aujourd’hui.\nEn effet, les pièces de rechange, majoritairement issus du processus de recyclage, sont vendues à des prix très abordables.\nFace à la concurrence grandissante dans le domaine du dépannage de mobile, le coût des services est à la baisse.\nAu plus grand profit des utilisateurs de smartphones.\nFaire réparer son smartphone constitue une alternative plus économique que d’investir dans l’acquisition d’un nouvel appareil. "},{"action":"leaveall","character":"[All]"},{"change_timeline":"timeline-1616660446.json"}],"metadata":{"dialogic-version":"1.1","file":"timeline-1616660188.json","name":"notification-1"}} diff --git a/dialogic/timelines/timeline-1616660446.json b/dialogic/timelines/timeline-1616660446.json index b854a2c..4baf44c 100644 --- a/dialogic/timelines/timeline-1616660446.json +++ b/dialogic/timelines/timeline-1616660446.json @@ -1 +1 @@ -{"events":[{"background":"res://backgrounds/bureauPerso.jpg"},{"action":"join","character":"character-1616658403.json","portrait":"","position":{"0":false,"1":true,"2":false,"3":false,"4":false}},{"character":"","portrait":"","text":"Une personne rentre dans votre bureau..."},{"character":"character-1616658403.json","portrait":"","text":"Salut ça va ?\n Bienvenue !\nJe m’appelle Jean-Michel.\nDis moi, t'as déjà une idée de design pour le téléphone ?"},{"options":[],"question":"Avez vous une idée ?"},{"choice":"Pas vraiment"},{"choice":"Quelques unes"},{"endbranch":""},{"character":"character-1616658403.json","portrait":"","text":"De mon côté j’ai plein d’idées de designs vraiment cools qui pourraient plaire à tout le monde.\nEn plus, ça prendrait en compte toutes les fonctionnalités que le téléphone aura, comme un lecteur d’empreintes digitales."},{"character":"character-1616658355.json","portrait":"","text":"Super !\nPar contre, Evelyne m’a parlé d’une idée qui me plait et je sais pas si ça serait compatible avec tes designs."},{"character":"character-1616658403.json","portrait":"","text":"Houla !\nC’est quoi cette idée encore ?"},{"character":"character-1616658355.json","portrait":"","text":"Elle m’a parlé du fait de pouvoir ouvrir le téléphone et donc que la coque soit amovible..."},{"character":"character-1616658403.json","portrait":"","text":"Mais tu ne peux pas faire ça !\nLes designs différents c’est ce qui fera que le téléphone se distinguera des autres.\nPareil pour les fonctionnalités !\nToutes les marques concurrentes ont un lecteur d’empreintes.\nAvec cette modification, impossible de faire ça, et les utilisateurs diront que nous sommes à la traîne au niveau des technologies utilisées."},{"options":[],"question":"Qu'en pensez vous ?"},{"choice":"Tu n’as pas tord"},{"choice":"Je n’y ai pas encore réfléchi"},{"endbranch":""},{"character":"character-1616658403.json","portrait":"","text":"Fais attention des décisions comme celles-ci pourraient avoir de grandes conséquences pour l’entreprise…\nBonnes ou mauvaises !"},{"action":"leaveall","character":"[All]"},{"wait_seconds":0},{"change_timeline":"timeline-1616660984.json"}],"metadata":{"dialogic-version":"1.0","file":"timeline-1616660446.json","name":"info-jm"}} +{"events":[{"background":"res://backgrounds/bureauPerso.jpg"},{"action":"join","character":"character-1616658403.json","portrait":"","position":{"0":false,"1":true,"2":false,"3":false,"4":false}},{"character":"","portrait":"","text":"Une personne rentre dans votre bureau..."},{"character":"character-1616658403.json","portrait":"","text":"Salut ça va ?\n Bienvenue !\nJe m’appelle Jean-Michel.\nDis moi, t'as déjà une idée de design pour le téléphone ?"},{"options":[],"question":"Avez vous une idée ?"},{"choice":"Pas vraiment"},{"choice":"Quelques unes"},{"endbranch":""},{"character":"character-1616658403.json","portrait":"","text":"De mon côté j’ai plein d’idées de designs vraiment cools qui pourraient plaire à tout le monde.\nEn plus, ça prendrait en compte toutes les fonctionnalités que le téléphone aura, comme un lecteur d’empreintes digitales."},{"character":"character-1616658355.json","portrait":"","text":"Super !\nPar contre, Evelyne m’a parlé d’une idée qui me plait et je sais pas si ça serait compatible avec tes designs."},{"character":"character-1616658403.json","portrait":"","text":"Houla !\nC’est quoi cette idée encore ?"},{"character":"character-1616658355.json","portrait":"","text":"Elle m’a parlé du fait de pouvoir ouvrir le téléphone et donc que la coque soit amovible..."},{"character":"character-1616658403.json","portrait":"","text":"Mais tu ne peux pas faire ça !\nLes designs différents c’est ce qui fera que le téléphone se distinguera des autres.\nPareil pour les fonctionnalités !\nToutes les marques concurrentes ont un lecteur d’empreintes.\nAvec cette modification, impossible de faire ça, et les utilisateurs diront que nous sommes à la traîne au niveau des technologies utilisées."},{"options":[],"question":"Qu'en pensez vous ?"},{"choice":"Tu n’as pas tord"},{"choice":"Je n’y ai pas encore réfléchi"},{"endbranch":""},{"character":"character-1616658403.json","portrait":"","text":"Fais attention des décisions comme celles-ci pourraient avoir de grandes conséquences pour l’entreprise…\nBonnes ou mauvaises !"},{"action":"leaveall","character":"[All]"},{"wait_seconds":0},{"change_timeline":"timeline-1616660984.json"}],"metadata":{"dialogic-version":"1.1","file":"timeline-1616660446.json","name":"info-jm"}} diff --git a/dialogic/timelines/timeline-1616660984.json b/dialogic/timelines/timeline-1616660984.json index 8190e06..19e25a3 100644 --- a/dialogic/timelines/timeline-1616660984.json +++ b/dialogic/timelines/timeline-1616660984.json @@ -1 +1 @@ -{"events":[{"background":"res://backgrounds/bureauPerso.jpg"},{"action":"join","character":"character-1616658471.json","portrait":"","position":{"0":false,"1":false,"2":true,"3":false,"4":false}},{"character":"","portrait":"","text":"Vous avez reçu un mail !"},{"character":"character-1616658471.json","portrait":"","text":"Bravo !\nVous êtes le gagnant de la tombola de l’école maternelle des coquelicots en fleurs !\nVous avez gagné un jambon entier félicitations ! \nPour récupérer votre prix, veuillez vous présenter au bureau de la directrice.\nL’association des parents d’élèves des coquelicots."},{"options":[],"question":"..."},{"choice":"C'est dommage je suis végétarien..."},{"character":"character-1616658355.json","portrait":"","text":"J'en parlerai à la directrice."},{"choice":"Miam !"},{"character":"character-1616658355.json","portrait":"","text":"Tous ces apéros en perspective !\nJe vais me régaler."},{"endbranch":""},{"action":"leaveall","character":"[All]"},{"wait_seconds":1},{"change_timeline":"timeline-1616661304.json"}],"metadata":{"dialogic-version":"1.0","file":"timeline-1616660984.json","name":"merde-mail-1"}} +{"events":[{"background":"res://backgrounds/bureauPerso.jpg"},{"action":"join","character":"character-1616658471.json","portrait":"","position":{"0":false,"1":false,"2":true,"3":false,"4":false}},{"character":"","portrait":"","text":"Vous avez reçu un mail !"},{"character":"character-1616658471.json","portrait":"","text":"Bravo !\nVous êtes le gagnant de la tombola de l’école maternelle des coquelicots en fleurs !\nVous avez gagné un jambon entier félicitations ! \nPour récupérer votre prix, veuillez vous présenter au bureau de la directrice.\nL’association des parents d’élèves des coquelicots."},{"options":[],"question":"..."},{"choice":"C'est dommage je suis végétarien..."},{"character":"character-1616658355.json","portrait":"","text":"J'en parlerai à la directrice."},{"choice":"Miam !"},{"character":"character-1616658355.json","portrait":"","text":"Tous ces apéros en perspective !\nJe vais me régaler."},{"endbranch":""},{"action":"leaveall","character":"[All]"},{"wait_seconds":1},{"change_timeline":"timeline-1616661304.json"}],"metadata":{"dialogic-version":"1.1","file":"timeline-1616660984.json","name":"merde-mail-1"}} diff --git a/dialogic/timelines/timeline-1616661304.json b/dialogic/timelines/timeline-1616661304.json index c64fa5e..ea1fcb0 100644 --- a/dialogic/timelines/timeline-1616661304.json +++ b/dialogic/timelines/timeline-1616661304.json @@ -1 +1 @@ -{"events":[{"background":"res://backgrounds/bureauPerso.jpg"},{"character":"","portrait":"","text":"C'est l'heure de passer au travail !\nIl est temps de décider du design du téléphone.\nVoulez vous permettre l'ouverture du téléphone ?\nOu plutot le verrouiller ? "},{"options":[],"question":"Téléphone verrouillé ou ouvert ?"},{"choice":"Ouvert"},{"character":"character-1616658355.json","portrait":"","text":"Un téléphone ouvert me semble être la meilleure solution.\nJe vais voir ce que mes collègues en pensent, je suis sûr qu'Evelyne me soutiendra !"},{"definition":"1616657225-648","set_value":"1"},{"choice":"Verrouillé"},{"character":"character-1616658355.json","portrait":"","text":"Un téléphone verrouillé me semble être la meilleure solution.\nJe vais voir ce que mes collègues en pensent, je suis sûr que Jean-Michel sera ravi !"},{"definition":"1616657225-648","set_value":"0"},{"endbranch":""},{"character":"","portrait":"","text":"Vous annoncez votre décision par mail à vos collègues.\nVous les rejoignez ensuite dans la salle de réunion."},{"wait_seconds":1},{"condition":"==","definition":"1616657225-648","value":"1"},{"change_timeline":"timeline-1616661658.json"},{"endbranch":""},{"condition":"==","definition":"1616657225-648","value":"0"},{"change_timeline":"timeline-1616661685.json"},{"endbranch":""}],"metadata":{"dialogic-version":"1.0","file":"timeline-1616661304.json","name":"question-tel-ouvert"}} +{"events":[{"background":"res://backgrounds/bureauPerso.jpg"},{"character":"","portrait":"","text":"C'est l'heure de passer au travail !\nIl est temps de décider du design du téléphone.\nVoulez vous permettre l'ouverture du téléphone ?\nOu plutot le verrouiller ? "},{"options":[],"question":"Téléphone verrouillé ou ouvert ?"},{"choice":"Ouvert"},{"character":"character-1616658355.json","portrait":"","text":"Un téléphone ouvert me semble être la meilleure solution.\nJe vais voir ce que mes collègues en pensent, je suis sûr qu'Evelyne me soutiendra !"},{"definition":"1616657225-648","set_value":"1"},{"choice":"Verrouillé"},{"character":"character-1616658355.json","portrait":"","text":"Un téléphone verrouillé me semble être la meilleure solution.\nJe vais voir ce que mes collègues en pensent, je suis sûr que Jean-Michel sera ravi !"},{"definition":"1616657225-648","set_value":"0"},{"endbranch":""},{"character":"","portrait":"","text":"Vous annoncez votre décision par mail à vos collègues.\nVous les rejoignez ensuite dans la salle de réunion."},{"wait_seconds":1},{"condition":"==","definition":"1616657225-648","value":"1"},{"change_timeline":"timeline-1616661658.json"},{"endbranch":""},{"condition":"==","definition":"1616657225-648","value":"0"},{"change_timeline":"timeline-1616661685.json"},{"endbranch":""}],"metadata":{"dialogic-version":"1.1","file":"timeline-1616661304.json","name":"question-tel-ouvert"}} diff --git a/dialogic/timelines/timeline-1616661658.json b/dialogic/timelines/timeline-1616661658.json index 8834ffa..9631f4b 100644 --- a/dialogic/timelines/timeline-1616661658.json +++ b/dialogic/timelines/timeline-1616661658.json @@ -1 +1 @@ -{"events":[{"background":"res://backgrounds/meetingRoom.jpg"},{"action":"join","character":"character-1616658403.json","portrait":"","position":{"0":false,"1":true,"2":false,"3":false,"4":false}},{"character":"character-1616658403.json","portrait":"","text":"On peut discuter une minute ?"},{"character":"character-1616658355.json","portrait":"","text":"Euh oui pas de soucis qu’est ce qu’il se passe ?"},{"character":"character-1616658403.json","portrait":"","text":"Je viens d’apprendre que ton projet vient d’être validé mais que c’est le projet de développer un téléphone que l’utilisateur peut ouvrir !\nTu as une idée des répercussions sur l’entreprise que cela va avoir ?\nL’entreprise va perdre beaucoup d’argent à laisser la possibilité aux gens de réparer leurs téléphones en leur laissant l’accès aux composants !\nEt toutes les idées dont je t’avais parlé de technologies innovantes et de designs incroyables sont réduits à néant !\nFranchement je ne sais pas ce qui t’es passé par la tête mais ça me laisse sans voix …\nSur ce je n’ai plus rien à dire au revoir."},{"action":"leaveall","character":"[All]"},{"action":"join","character":"character-1616658373.json","portrait":"","position":{"0":false,"1":false,"2":false,"3":true,"4":false}},{"character":"character-1616658373.json","portrait":"","text":"Re-bonjour ! Quelle belle journée aujourd’hui !\nJ’ai appris que tu avais repris mon idée de pouvoir ouvrir le téléphone dans ton projet de développement.\nC’est une sage décision qui va engendrer tellement de choses positives pour l’entreprise.\nC’est le début d’une nouvelle ère technologique responsable, crois moi !\nOui au recyclage et oui à la seconde vie des appareils !"},{"character":"character-1616658355.json","portrait":"","text":"Je suis content que ce projet provoque un tel enthousiasme en toi !"},{"action":"join","character":"character-1616658435.json","portrait":"","position":{"0":true,"1":false,"2":false,"3":false,"4":false}},{"character":"character-1616658435.json","portrait":"","text":"Il se passe quoi ici ?"},{"character":"character-1616658355.json","portrait":"","text":"Tu n'as pas vu mon mail ?"},{"character":"character-1616658435.json","portrait":"","text":"Ah non.."},{"wait_seconds":1},{"character":"character-1616658435.json","portrait":"","text":"J'ai perdu mon mot de passe\n...\n..."},{"wait_seconds":1},{"action":"leaveall","character":"character-1616658435.json"},{"character":"character-1616658373.json","portrait":"","text":"...\nBon\nEn tout cas je suis ravie de ton choix !\nJe te laisse j’ai une réunion dans 10 min à bientôt !"},{"action":"leaveall","character":"[All]"},{"change_timeline":"timeline-1616662258.json"}],"metadata":{"dialogic-version":"1.0","file":"timeline-1616661658.json","name":"conseq-tel-ouvert-1"}} +{"events":[{"background":"res://backgrounds/meetingRoom.jpg"},{"action":"join","character":"character-1616658403.json","portrait":"","position":{"0":false,"1":true,"2":false,"3":false,"4":false}},{"character":"character-1616658403.json","portrait":"","text":"On peut discuter une minute ?"},{"character":"character-1616658355.json","portrait":"","text":"Euh oui pas de soucis qu’est ce qu’il se passe ?"},{"character":"character-1616658403.json","portrait":"","text":"Je viens d’apprendre que ton projet vient d’être validé mais que c’est le projet de développer un téléphone que l’utilisateur peut ouvrir !\nTu as une idée des répercussions sur l’entreprise que cela va avoir ?\nL’entreprise va perdre beaucoup d’argent à laisser la possibilité aux gens de réparer leurs téléphones en leur laissant l’accès aux composants !\nEt toutes les idées dont je t’avais parlé de technologies innovantes et de designs incroyables sont réduits à néant !\nFranchement je ne sais pas ce qui t’es passé par la tête mais ça me laisse sans voix …\nSur ce je n’ai plus rien à dire au revoir."},{"action":"leaveall","character":"[All]"},{"action":"join","character":"character-1616658373.json","portrait":"","position":{"0":false,"1":false,"2":false,"3":true,"4":false}},{"character":"character-1616658373.json","portrait":"","text":"Re-bonjour ! Quelle belle journée aujourd’hui !\nJ’ai appris que tu avais repris mon idée de pouvoir ouvrir le téléphone dans ton projet de développement.\nC’est une sage décision qui va engendrer tellement de choses positives pour l’entreprise.\nC’est le début d’une nouvelle ère technologique responsable, crois moi !\nOui au recyclage et oui à la seconde vie des appareils !"},{"character":"character-1616658355.json","portrait":"","text":"Je suis content que ce projet provoque un tel enthousiasme en toi !"},{"action":"join","character":"character-1616658435.json","portrait":"","position":{"0":true,"1":false,"2":false,"3":false,"4":false}},{"character":"character-1616658435.json","portrait":"","text":"Il se passe quoi ici ?"},{"character":"character-1616658355.json","portrait":"","text":"Tu n'as pas vu mon mail ?"},{"character":"character-1616658435.json","portrait":"","text":"Ah non.."},{"wait_seconds":1},{"character":"character-1616658435.json","portrait":"","text":"J'ai perdu mon mot de passe\n...\n..."},{"wait_seconds":1},{"action":"leaveall","character":"character-1616658435.json"},{"character":"character-1616658373.json","portrait":"","text":"...\nBon\nEn tout cas je suis ravie de ton choix !\nJe te laisse j’ai une réunion dans 10 min à bientôt !"},{"action":"leaveall","character":"[All]"},{"change_timeline":"timeline-1616662258.json"}],"metadata":{"dialogic-version":"1.1","file":"timeline-1616661658.json","name":"conseq-tel-ouvert-1"}} diff --git a/dialogic/timelines/timeline-1616661685.json b/dialogic/timelines/timeline-1616661685.json index 11bd8df..fe24aff 100644 --- a/dialogic/timelines/timeline-1616661685.json +++ b/dialogic/timelines/timeline-1616661685.json @@ -1 +1 @@ -{"events":[{"background":"res://backgrounds/meetingRoom.jpg"},{"action":"join","character":"character-1616658471.json","portrait":"","position":{"0":false,"1":false,"2":true,"3":false,"4":false}},{"character":"","portrait":"","text":"Vous avez reçu un mail du Boss !"},{"character":"character-1616658471.json","portrait":"","text":"Bonjour,\nJe souhaitais vous féliciter concernant votre projet de téléphone.\nJ’ai récemment appris que vous aviez hésité concernant la possibilité d’ouvrir le téléphone ou non.\nSachez que je suis plus que satisfait de votre choix.\nEn effet, le fait d’avoir fermé le téléphone nous permettra d’augmenter notre chiffre d’affaires de manière significative.\nD’une part grâce à de nouveaux designs innovants et attractifs, mais également grâce à une fidélisation de la clientèle, je ne peux qu’approuver votre choix.\nContinuez sur cette lancée !\nEn vous souhaitant une bonne journée.\nCordialement, The boss"},{"action":"leaveall","character":"character-1616658471.json"},{"wait_seconds":0},{"action":"join","character":"character-1616658373.json","portrait":"","position":{"0":false,"1":true,"2":false,"3":false,"4":false}},{"character":"character-1616658373.json","portrait":"","text":"Re\nJe croyais que tu avais compris ce que je t’avais dit concernant le recyclage des composants des téléphones.\nEn fermant le téléphone, tu condamnes les utilisateurs à devoir changer leur téléphone au moindre problème.\nEn faisant ceci, tu deviens partisan de la surconsommation et donc de la pollution de notre planète.\nTu crois que le chiffre d’affaires de l’entreprise importera quand nous n’aurons même plus un endroit où vivre ?"},{"action":"join","character":"character-1616658403.json","portrait":"","position":{"0":false,"1":false,"2":false,"3":true,"4":false}},{"character":"character-1616658403.json","portrait":"","text":"Hey !\nUn petit golf samedi ?"},{"character":"character-1616658373.json","portrait":"","text":"Tu permets ?\nNous sommes en pleine discussion."},{"character":"character-1616658403.json","portrait":"","text":"Okay, faut pas être tendue comme ça..."},{"action":"leaveall","character":"character-1616658403.json"},{"character":"character-1616658373.json","portrait":"","text":"Bref\nJe te laisse réfléchir à ça je dois y aller il me reste 1h de pause je vais aller courir un peu…"},{"action":"leaveall","character":"[All]"},{"change_timeline":"timeline-1616662258.json"}],"metadata":{"dialogic-version":"1.0","file":"timeline-1616661685.json","name":"conseq-tel-ouvert-2"}} +{"events":[{"background":"res://backgrounds/meetingRoom.jpg"},{"action":"join","character":"character-1616658471.json","portrait":"","position":{"0":false,"1":false,"2":true,"3":false,"4":false}},{"character":"","portrait":"","text":"Vous avez reçu un mail du Boss !"},{"character":"character-1616658471.json","portrait":"","text":"Bonjour,\nJe souhaitais vous féliciter concernant votre projet de téléphone.\nJ’ai récemment appris que vous aviez hésité concernant la possibilité d’ouvrir le téléphone ou non.\nSachez que je suis plus que satisfait de votre choix.\nEn effet, le fait d’avoir fermé le téléphone nous permettra d’augmenter notre chiffre d’affaires de manière significative.\nD’une part grâce à de nouveaux designs innovants et attractifs, mais également grâce à une fidélisation de la clientèle, je ne peux qu’approuver votre choix.\nContinuez sur cette lancée !\nEn vous souhaitant une bonne journée.\nCordialement, The boss"},{"action":"leaveall","character":"character-1616658471.json"},{"wait_seconds":0},{"action":"join","character":"character-1616658373.json","portrait":"","position":{"0":false,"1":true,"2":false,"3":false,"4":false}},{"character":"character-1616658373.json","portrait":"","text":"Re\nJe croyais que tu avais compris ce que je t’avais dit concernant le recyclage des composants des téléphones.\nEn fermant le téléphone, tu condamnes les utilisateurs à devoir changer leur téléphone au moindre problème.\nEn faisant ceci, tu deviens partisan de la surconsommation et donc de la pollution de notre planète.\nTu crois que le chiffre d’affaires de l’entreprise importera quand nous n’aurons même plus un endroit où vivre ?"},{"action":"join","character":"character-1616658403.json","portrait":"","position":{"0":false,"1":false,"2":false,"3":true,"4":false}},{"character":"character-1616658403.json","portrait":"","text":"Hey !\nUn petit golf samedi ?"},{"character":"character-1616658373.json","portrait":"","text":"Tu permets ?\nNous sommes en pleine discussion."},{"character":"character-1616658403.json","portrait":"","text":"Okay, faut pas être tendue comme ça..."},{"action":"leaveall","character":"character-1616658403.json"},{"character":"character-1616658373.json","portrait":"","text":"Bref\nJe te laisse réfléchir à ça je dois y aller il me reste 1h de pause je vais aller courir un peu…"},{"action":"leaveall","character":"[All]"},{"change_timeline":"timeline-1616662258.json"}],"metadata":{"dialogic-version":"1.1","file":"timeline-1616661685.json","name":"conseq-tel-ouvert-2"}} diff --git a/dialogic/timelines/timeline-1616662258.json b/dialogic/timelines/timeline-1616662258.json index 979b2ad..ec58bf4 100644 --- a/dialogic/timelines/timeline-1616662258.json +++ b/dialogic/timelines/timeline-1616662258.json @@ -1 +1 @@ -{"events":[{"wait_seconds":1},{"character":"","portrait":"","text":"Fin de la démo, merci d'avoir joué !"},{"action":"join","character":"character-1616658435.json","portrait":"","position":{"0":false,"1":false,"2":false,"3":false,"4":true}},{"character":"character-1616658435.json","portrait":"","text":"À bientôt dans l'métro !"},{"action":"leaveall","character":"[All]"}],"metadata":{"dialogic-version":"1.0","file":"timeline-1616662258.json","name":"_end"}} +{"events":[{"wait_seconds":1},{"character":"","portrait":"","text":"Fin de la démo, merci d'avoir joué !"},{"action":"join","character":"character-1616658435.json","portrait":"","position":{"0":false,"1":false,"2":false,"3":false,"4":true}},{"character":"character-1616658435.json","portrait":"","text":"À bientôt dans l'métro !"},{"action":"leaveall","character":"[All]"}],"metadata":{"dialogic-version":"1.1","file":"timeline-1616662258.json","name":"_end"}}