From aea5158d6e1dcbf6fe4b190d4ce9037dcd2a740b Mon Sep 17 00:00:00 2001 From: Dominic Masters Date: Sun, 31 Aug 2025 17:53:17 -0500 Subject: [PATCH] prog --- addons/madtalk/components/BtnTip.gd | 13 + addons/madtalk/components/BtnTip.gd.uid | 1 + addons/madtalk/components/BtnTip.tscn | 20 + addons/madtalk/components/CheckBoxLocale.gd | 3 + .../madtalk/components/CheckBoxLocale.gd.uid | 1 + addons/madtalk/components/CheckBoxLocale.tscn | 12 + addons/madtalk/components/DialogNode.gd | 311 ++++ addons/madtalk/components/DialogNode.gd.uid | 1 + addons/madtalk/components/DialogNode.tscn | 159 ++ .../components/DialogNodeItem_condition.gd | 230 +++ .../DialogNodeItem_condition.gd.uid | 1 + .../components/DialogNodeItem_condition.tscn | 61 + .../components/DialogNodeItem_effect.gd | 217 +++ .../components/DialogNodeItem_effect.gd.uid | 1 + .../components/DialogNodeItem_effect.tscn | 48 + .../components/DialogNodeItem_message.gd | 242 +++ .../components/DialogNodeItem_message.gd.uid | 1 + .../components/DialogNodeItem_message.tscn | 232 +++ .../components/DialogNodeItem_option.gd | 12 + .../components/DialogNodeItem_option.gd.uid | 1 + .../components/DialogNodeItem_option.tscn | 47 + .../components/DialogNodeOptionsButton.gd | 36 + .../components/DialogNodeOptionsButton.gd.uid | 1 + .../components/DialogNodeOptionsButton.tscn | 305 ++++ .../components/DialogNode_DialogOptions.gd | 258 +++ .../DialogNode_DialogOptions.gd.uid | 1 + .../components/DialogNode_DialogOptions.tscn | 252 +++ .../DialogSearchInspectorSheetIDField.tscn | 29 + .../madtalk/components/DialogSearchSheet.tscn | 102 ++ .../components/DialogSearchSheetItem.tscn | 63 + .../components/Export_SheetListItem.tscn | 62 + addons/madtalk/components/ImportBar.gd | 26 + addons/madtalk/components/ImportBar.gd.uid | 1 + addons/madtalk/components/ImportBar.tscn | 40 + addons/madtalk/components/ImportExport.gd | 34 + addons/madtalk/components/ImportExport.gd.uid | 1 + .../components/InspectorPluginSheetIDField.gd | 18 + .../InspectorPluginSheetIDField.gd.uid | 1 + .../InspectorPluginSheetIDFieldItem.gd | 102 ++ .../InspectorPluginSheetIDFieldItem.gd.uid | 1 + addons/madtalk/components/MTDefs.gd | 461 ++++++ addons/madtalk/components/MTDefs.gd.uid | 1 + .../components/MainEditor_DialogExport.gd | 157 ++ .../components/MainEditor_DialogExport.gd.uid | 1 + .../components/MainEditor_DialogExport.tscn | 315 ++++ .../components/MainEditor_DialogImport.gd | 760 +++++++++ .../components/MainEditor_DialogImport.gd.uid | 1 + .../components/MainEditor_DialogImport.tscn | 228 +++ .../components/MainEditor_DialogSheetEdit.gd | 30 + .../MainEditor_DialogSheetEdit.gd.uid | 1 + .../MainEditor_DialogSheetEdit.tscn | 153 ++ .../madtalk/components/MessageCodeParser.gd | 189 +++ .../components/MessageCodeParser.gd.uid | 1 + .../components/MessageEditorWithLocales.gd | 147 ++ .../MessageEditorWithLocales.gd.uid | 1 + .../components/MessageEditorWithLocales.tscn | 247 +++ addons/madtalk/components/SideBar.gd | 22 + addons/madtalk/components/SideBar.gd.uid | 1 + addons/madtalk/components/SideBar.tscn | 37 + .../madtalk/components/SideBar_SheetItem.tscn | 81 + .../popups/Condition_DialogEdit.tscn | 939 +++++++++++ .../popups/DialogNodeItem_PopupMenu.tscn | 31 + .../components/popups/Effect_DialogEdit.tscn | 641 ++++++++ .../popups/Messages_DialogEdit.tscn | 269 ++++ .../popups/Messages_VoiceClipDialog.tscn | 12 + .../components/resources/ButtonStyle.tres | 12 + .../components/resources/DialogData.gd | 31 + .../components/resources/DialogData.gd.uid | 1 + .../components/resources/DialogNodeData.gd | 17 + .../resources/DialogNodeData.gd.uid | 1 + .../resources/DialogNodeItemData.gd | 73 + .../resources/DialogNodeItemData.gd.uid | 1 + .../resources/DialogNodeOptionData.gd | 57 + .../resources/DialogNodeOptionData.gd.uid | 1 + .../components/resources/DialogSheetData.gd | 22 + .../resources/DialogSheetData.gd.uid | 1 + .../components/resources/GraphStyle.tres | 10 + .../components/resources/InputDarkStyle.tres | 12 + .../components/resources/InputStyle_grey.tres | 10 + .../components/resources/NodeStyle.tres | 16 + .../components/resources/PanelStyle.tres | 10 + .../resources/RichLabelPreviewAlphaStyle.tres | 4 + .../resources/RichLabelPreviewStyle.tres | 4 + .../components/resources/SheetItemStyle.tres | 14 + addons/madtalk/fonts/FreeSans.tres | 10 + addons/madtalk/fonts/FreeSans.ttf | Bin 0 -> 264072 bytes addons/madtalk/fonts/FreeSans.ttf.import | 35 + addons/madtalk/fonts/FreeSansBold.ttf | Bin 0 -> 359272 bytes addons/madtalk/fonts/FreeSansBold.ttf.import | 35 + addons/madtalk/fonts/FreeSansBoldOblique.ttf | Bin 0 -> 301188 bytes .../fonts/FreeSansBoldOblique.ttf.import | 35 + addons/madtalk/fonts/FreeSansBold_tiny.tres | 10 + addons/madtalk/fonts/FreeSansOblique.ttf | Bin 0 -> 441432 bytes .../madtalk/fonts/FreeSansOblique.ttf.import | 35 + addons/madtalk/fonts/FreeSans_bold_small.tres | 11 + .../fonts/FreeSans_bolditalic_small.tres | 11 + .../madtalk/fonts/FreeSans_italic_small.tres | 11 + addons/madtalk/fonts/FreeSans_smal.tres | 56 + addons/madtalk/fonts/FreeSans_tiny.tres | 210 +++ addons/madtalk/fonts/MessagePreview.tres | 8 + .../madtalk/fonts/droid-sans-mono.LICENSE.txt | 202 +++ .../madtalk/fonts/droid-sans-mono.regular.ttf | Bin 0 -> 117072 bytes .../fonts/droid-sans-mono.regular.ttf.import | 35 + addons/madtalk/images/header_condition.png | Bin 0 -> 2624 bytes .../images/header_condition.png.import | 34 + .../madtalk/images/header_condition_arrow.png | Bin 0 -> 7713 bytes .../images/header_condition_arrow.png.import | 34 + addons/madtalk/images/header_effect.png | Bin 0 -> 1935 bytes .../madtalk/images/header_effect.png.import | 34 + addons/madtalk/images/header_option.png | Bin 0 -> 1371 bytes .../madtalk/images/header_option.png.import | 34 + .../images/header_option_condition.png | Bin 0 -> 1152 bytes .../images/header_option_condition.png.import | 34 + addons/madtalk/images/icon_condition.png | Bin 0 -> 2456 bytes .../madtalk/images/icon_condition.png.import | 34 + addons/madtalk/images/icon_down.png | Bin 0 -> 349 bytes addons/madtalk/images/icon_down.png.import | 34 + addons/madtalk/images/icon_edit.png | Bin 0 -> 391 bytes addons/madtalk/images/icon_edit.png.import | 34 + addons/madtalk/images/icon_effect.png | Bin 0 -> 1649 bytes addons/madtalk/images/icon_effect.png.import | 34 + addons/madtalk/images/icon_message.png | Bin 0 -> 1060 bytes addons/madtalk/images/icon_message.png.import | 34 + addons/madtalk/images/icon_opt_condition.png | Bin 0 -> 2574 bytes .../images/icon_opt_condition.png.import | 34 + addons/madtalk/images/icon_options.png | Bin 0 -> 245 bytes addons/madtalk/images/icon_options.png.import | 34 + addons/madtalk/images/icon_plus.png | Bin 0 -> 326 bytes addons/madtalk/images/icon_plus.png.import | 34 + addons/madtalk/images/icon_question.png | Bin 0 -> 369 bytes .../madtalk/images/icon_question.png.import | 34 + addons/madtalk/images/icon_search.png | Bin 0 -> 950 bytes addons/madtalk/images/icon_search.png.import | 34 + addons/madtalk/images/icon_up.png | Bin 0 -> 338 bytes addons/madtalk/images/icon_up.png.import | 34 + addons/madtalk/images/icon_x.png | Bin 0 -> 338 bytes addons/madtalk/images/icon_x.png.import | 34 + .../madtalk/images/madtalk_viewport_icon.png | Bin 0 -> 339 bytes .../images/madtalk_viewport_icon.png.import | 34 + addons/madtalk/images/panel_bg.png | Bin 0 -> 9747 bytes addons/madtalk/images/panel_bg.png.import | 34 + addons/madtalk/importers/exp_text.gd | 127 ++ addons/madtalk/importers/exp_text.gd.uid | 1 + addons/madtalk/importers/imp_text.gd | 329 ++++ addons/madtalk/importers/imp_text.gd.uid | 1 + addons/madtalk/madtalk.gd | 69 + addons/madtalk/madtalk.gd.uid | 1 + addons/madtalk/madtalk_editor.gd | 591 +++++++ addons/madtalk/madtalk_editor.gd.uid | 1 + addons/madtalk/madtalk_editor.tres | 8 + addons/madtalk/madtalk_editor.tscn | 341 ++++ .../madtalk/madtalk_viewport_icon.png.import | 34 + addons/madtalk/plugin.cfg | 7 + addons/madtalk/runtime/CharacterData.gd | 9 + addons/madtalk/runtime/CharacterData.gd.uid | 1 + addons/madtalk/runtime/MadTalkGlobals.gd | 307 ++++ addons/madtalk/runtime/MadTalkGlobals.gd.uid | 1 + addons/madtalk/runtime/MadTalkGlobals.tscn | 6 + addons/madtalk/runtime/madtalk_data.tres | 912 +++++++++++ addons/madtalk/runtime/madtalk_runtime.gd | 1377 +++++++++++++++++ addons/madtalk/runtime/madtalk_runtime.gd.uid | 1 + 161 files changed, 13444 insertions(+) create mode 100644 addons/madtalk/components/BtnTip.gd create mode 100644 addons/madtalk/components/BtnTip.gd.uid create mode 100644 addons/madtalk/components/BtnTip.tscn create mode 100644 addons/madtalk/components/CheckBoxLocale.gd create mode 100644 addons/madtalk/components/CheckBoxLocale.gd.uid create mode 100644 addons/madtalk/components/CheckBoxLocale.tscn create mode 100644 addons/madtalk/components/DialogNode.gd create mode 100644 addons/madtalk/components/DialogNode.gd.uid create mode 100644 addons/madtalk/components/DialogNode.tscn create mode 100644 addons/madtalk/components/DialogNodeItem_condition.gd create mode 100644 addons/madtalk/components/DialogNodeItem_condition.gd.uid create mode 100644 addons/madtalk/components/DialogNodeItem_condition.tscn create mode 100644 addons/madtalk/components/DialogNodeItem_effect.gd create mode 100644 addons/madtalk/components/DialogNodeItem_effect.gd.uid create mode 100644 addons/madtalk/components/DialogNodeItem_effect.tscn create mode 100644 addons/madtalk/components/DialogNodeItem_message.gd create mode 100644 addons/madtalk/components/DialogNodeItem_message.gd.uid create mode 100644 addons/madtalk/components/DialogNodeItem_message.tscn create mode 100644 addons/madtalk/components/DialogNodeItem_option.gd create mode 100644 addons/madtalk/components/DialogNodeItem_option.gd.uid create mode 100644 addons/madtalk/components/DialogNodeItem_option.tscn create mode 100644 addons/madtalk/components/DialogNodeOptionsButton.gd create mode 100644 addons/madtalk/components/DialogNodeOptionsButton.gd.uid create mode 100644 addons/madtalk/components/DialogNodeOptionsButton.tscn create mode 100644 addons/madtalk/components/DialogNode_DialogOptions.gd create mode 100644 addons/madtalk/components/DialogNode_DialogOptions.gd.uid create mode 100644 addons/madtalk/components/DialogNode_DialogOptions.tscn create mode 100644 addons/madtalk/components/DialogSearchInspectorSheetIDField.tscn create mode 100644 addons/madtalk/components/DialogSearchSheet.tscn create mode 100644 addons/madtalk/components/DialogSearchSheetItem.tscn create mode 100644 addons/madtalk/components/Export_SheetListItem.tscn create mode 100644 addons/madtalk/components/ImportBar.gd create mode 100644 addons/madtalk/components/ImportBar.gd.uid create mode 100644 addons/madtalk/components/ImportBar.tscn create mode 100644 addons/madtalk/components/ImportExport.gd create mode 100644 addons/madtalk/components/ImportExport.gd.uid create mode 100644 addons/madtalk/components/InspectorPluginSheetIDField.gd create mode 100644 addons/madtalk/components/InspectorPluginSheetIDField.gd.uid create mode 100644 addons/madtalk/components/InspectorPluginSheetIDFieldItem.gd create mode 100644 addons/madtalk/components/InspectorPluginSheetIDFieldItem.gd.uid create mode 100644 addons/madtalk/components/MTDefs.gd create mode 100644 addons/madtalk/components/MTDefs.gd.uid create mode 100644 addons/madtalk/components/MainEditor_DialogExport.gd create mode 100644 addons/madtalk/components/MainEditor_DialogExport.gd.uid create mode 100644 addons/madtalk/components/MainEditor_DialogExport.tscn create mode 100644 addons/madtalk/components/MainEditor_DialogImport.gd create mode 100644 addons/madtalk/components/MainEditor_DialogImport.gd.uid create mode 100644 addons/madtalk/components/MainEditor_DialogImport.tscn create mode 100644 addons/madtalk/components/MainEditor_DialogSheetEdit.gd create mode 100644 addons/madtalk/components/MainEditor_DialogSheetEdit.gd.uid create mode 100644 addons/madtalk/components/MainEditor_DialogSheetEdit.tscn create mode 100644 addons/madtalk/components/MessageCodeParser.gd create mode 100644 addons/madtalk/components/MessageCodeParser.gd.uid create mode 100644 addons/madtalk/components/MessageEditorWithLocales.gd create mode 100644 addons/madtalk/components/MessageEditorWithLocales.gd.uid create mode 100644 addons/madtalk/components/MessageEditorWithLocales.tscn create mode 100644 addons/madtalk/components/SideBar.gd create mode 100644 addons/madtalk/components/SideBar.gd.uid create mode 100644 addons/madtalk/components/SideBar.tscn create mode 100644 addons/madtalk/components/SideBar_SheetItem.tscn create mode 100644 addons/madtalk/components/popups/Condition_DialogEdit.tscn create mode 100644 addons/madtalk/components/popups/DialogNodeItem_PopupMenu.tscn create mode 100644 addons/madtalk/components/popups/Effect_DialogEdit.tscn create mode 100644 addons/madtalk/components/popups/Messages_DialogEdit.tscn create mode 100644 addons/madtalk/components/popups/Messages_VoiceClipDialog.tscn create mode 100644 addons/madtalk/components/resources/ButtonStyle.tres create mode 100644 addons/madtalk/components/resources/DialogData.gd create mode 100644 addons/madtalk/components/resources/DialogData.gd.uid create mode 100644 addons/madtalk/components/resources/DialogNodeData.gd create mode 100644 addons/madtalk/components/resources/DialogNodeData.gd.uid create mode 100644 addons/madtalk/components/resources/DialogNodeItemData.gd create mode 100644 addons/madtalk/components/resources/DialogNodeItemData.gd.uid create mode 100644 addons/madtalk/components/resources/DialogNodeOptionData.gd create mode 100644 addons/madtalk/components/resources/DialogNodeOptionData.gd.uid create mode 100644 addons/madtalk/components/resources/DialogSheetData.gd create mode 100644 addons/madtalk/components/resources/DialogSheetData.gd.uid create mode 100644 addons/madtalk/components/resources/GraphStyle.tres create mode 100644 addons/madtalk/components/resources/InputDarkStyle.tres create mode 100644 addons/madtalk/components/resources/InputStyle_grey.tres create mode 100644 addons/madtalk/components/resources/NodeStyle.tres create mode 100644 addons/madtalk/components/resources/PanelStyle.tres create mode 100644 addons/madtalk/components/resources/RichLabelPreviewAlphaStyle.tres create mode 100644 addons/madtalk/components/resources/RichLabelPreviewStyle.tres create mode 100644 addons/madtalk/components/resources/SheetItemStyle.tres create mode 100644 addons/madtalk/fonts/FreeSans.tres create mode 100644 addons/madtalk/fonts/FreeSans.ttf create mode 100644 addons/madtalk/fonts/FreeSans.ttf.import create mode 100644 addons/madtalk/fonts/FreeSansBold.ttf create mode 100644 addons/madtalk/fonts/FreeSansBold.ttf.import create mode 100644 addons/madtalk/fonts/FreeSansBoldOblique.ttf create mode 100644 addons/madtalk/fonts/FreeSansBoldOblique.ttf.import create mode 100644 addons/madtalk/fonts/FreeSansBold_tiny.tres create mode 100644 addons/madtalk/fonts/FreeSansOblique.ttf create mode 100644 addons/madtalk/fonts/FreeSansOblique.ttf.import create mode 100644 addons/madtalk/fonts/FreeSans_bold_small.tres create mode 100644 addons/madtalk/fonts/FreeSans_bolditalic_small.tres create mode 100644 addons/madtalk/fonts/FreeSans_italic_small.tres create mode 100644 addons/madtalk/fonts/FreeSans_smal.tres create mode 100644 addons/madtalk/fonts/FreeSans_tiny.tres create mode 100644 addons/madtalk/fonts/MessagePreview.tres create mode 100644 addons/madtalk/fonts/droid-sans-mono.LICENSE.txt create mode 100644 addons/madtalk/fonts/droid-sans-mono.regular.ttf create mode 100644 addons/madtalk/fonts/droid-sans-mono.regular.ttf.import create mode 100644 addons/madtalk/images/header_condition.png create mode 100644 addons/madtalk/images/header_condition.png.import create mode 100644 addons/madtalk/images/header_condition_arrow.png create mode 100644 addons/madtalk/images/header_condition_arrow.png.import create mode 100644 addons/madtalk/images/header_effect.png create mode 100644 addons/madtalk/images/header_effect.png.import create mode 100644 addons/madtalk/images/header_option.png create mode 100644 addons/madtalk/images/header_option.png.import create mode 100644 addons/madtalk/images/header_option_condition.png create mode 100644 addons/madtalk/images/header_option_condition.png.import create mode 100644 addons/madtalk/images/icon_condition.png create mode 100644 addons/madtalk/images/icon_condition.png.import create mode 100644 addons/madtalk/images/icon_down.png create mode 100644 addons/madtalk/images/icon_down.png.import create mode 100644 addons/madtalk/images/icon_edit.png create mode 100644 addons/madtalk/images/icon_edit.png.import create mode 100644 addons/madtalk/images/icon_effect.png create mode 100644 addons/madtalk/images/icon_effect.png.import create mode 100644 addons/madtalk/images/icon_message.png create mode 100644 addons/madtalk/images/icon_message.png.import create mode 100644 addons/madtalk/images/icon_opt_condition.png create mode 100644 addons/madtalk/images/icon_opt_condition.png.import create mode 100644 addons/madtalk/images/icon_options.png create mode 100644 addons/madtalk/images/icon_options.png.import create mode 100644 addons/madtalk/images/icon_plus.png create mode 100644 addons/madtalk/images/icon_plus.png.import create mode 100644 addons/madtalk/images/icon_question.png create mode 100644 addons/madtalk/images/icon_question.png.import create mode 100644 addons/madtalk/images/icon_search.png create mode 100644 addons/madtalk/images/icon_search.png.import create mode 100644 addons/madtalk/images/icon_up.png create mode 100644 addons/madtalk/images/icon_up.png.import create mode 100644 addons/madtalk/images/icon_x.png create mode 100644 addons/madtalk/images/icon_x.png.import create mode 100644 addons/madtalk/images/madtalk_viewport_icon.png create mode 100644 addons/madtalk/images/madtalk_viewport_icon.png.import create mode 100644 addons/madtalk/images/panel_bg.png create mode 100644 addons/madtalk/images/panel_bg.png.import create mode 100644 addons/madtalk/importers/exp_text.gd create mode 100644 addons/madtalk/importers/exp_text.gd.uid create mode 100644 addons/madtalk/importers/imp_text.gd create mode 100644 addons/madtalk/importers/imp_text.gd.uid create mode 100644 addons/madtalk/madtalk.gd create mode 100644 addons/madtalk/madtalk.gd.uid create mode 100644 addons/madtalk/madtalk_editor.gd create mode 100644 addons/madtalk/madtalk_editor.gd.uid create mode 100644 addons/madtalk/madtalk_editor.tres create mode 100644 addons/madtalk/madtalk_editor.tscn create mode 100644 addons/madtalk/madtalk_viewport_icon.png.import create mode 100644 addons/madtalk/plugin.cfg create mode 100644 addons/madtalk/runtime/CharacterData.gd create mode 100644 addons/madtalk/runtime/CharacterData.gd.uid create mode 100644 addons/madtalk/runtime/MadTalkGlobals.gd create mode 100644 addons/madtalk/runtime/MadTalkGlobals.gd.uid create mode 100644 addons/madtalk/runtime/MadTalkGlobals.tscn create mode 100644 addons/madtalk/runtime/madtalk_data.tres create mode 100644 addons/madtalk/runtime/madtalk_runtime.gd create mode 100644 addons/madtalk/runtime/madtalk_runtime.gd.uid diff --git a/addons/madtalk/components/BtnTip.gd b/addons/madtalk/components/BtnTip.gd new file mode 100644 index 0000000..135b147 --- /dev/null +++ b/addons/madtalk/components/BtnTip.gd @@ -0,0 +1,13 @@ +@tool +extends Button + +@export var tip_title: String = "" +@export_multiline var tip_text: String = "" # (String, MULTILINE) + +@onready var tip_dialog = get_node("TipDialog") + + +func _on_BtnTip_pressed(): + tip_dialog.title = tip_title + tip_dialog.dialog_text = tip_text + tip_dialog.popup_centered() diff --git a/addons/madtalk/components/BtnTip.gd.uid b/addons/madtalk/components/BtnTip.gd.uid new file mode 100644 index 0000000..56482cb --- /dev/null +++ b/addons/madtalk/components/BtnTip.gd.uid @@ -0,0 +1 @@ +uid://degiqbehoikc5 diff --git a/addons/madtalk/components/BtnTip.tscn b/addons/madtalk/components/BtnTip.tscn new file mode 100644 index 0000000..c303cd4 --- /dev/null +++ b/addons/madtalk/components/BtnTip.tscn @@ -0,0 +1,20 @@ +[gd_scene load_steps=3 format=3 uid="uid://dyepkyvo6sodg"] + +[ext_resource type="Texture2D" uid="uid://cae7h22m1o7aw" path="res://addons/madtalk/images/icon_question.png" id="1"] +[ext_resource type="Script" uid="uid://degiqbehoikc5" path="res://addons/madtalk/components/BtnTip.gd" id="2"] + +[node name="BtnTip" type="Button"] +offset_right = 28.0 +offset_bottom = 26.0 +focus_mode = 0 +icon = ExtResource("1") +flat = true +script = ExtResource("2") + +[node name="TipDialog" type="AcceptDialog" parent="."] +initial_position = 2 +size = Vector2i(650, 200) +popup_window = true +dialog_autowrap = true + +[connection signal="pressed" from="." to="." method="_on_BtnTip_pressed"] diff --git a/addons/madtalk/components/CheckBoxLocale.gd b/addons/madtalk/components/CheckBoxLocale.gd new file mode 100644 index 0000000..1bac0ea --- /dev/null +++ b/addons/madtalk/components/CheckBoxLocale.gd @@ -0,0 +1,3 @@ +extends CheckBox + +@export var locale: String = "" diff --git a/addons/madtalk/components/CheckBoxLocale.gd.uid b/addons/madtalk/components/CheckBoxLocale.gd.uid new file mode 100644 index 0000000..24ae0aa --- /dev/null +++ b/addons/madtalk/components/CheckBoxLocale.gd.uid @@ -0,0 +1 @@ +uid://7r6730p3jqi8 diff --git a/addons/madtalk/components/CheckBoxLocale.tscn b/addons/madtalk/components/CheckBoxLocale.tscn new file mode 100644 index 0000000..ae129d8 --- /dev/null +++ b/addons/madtalk/components/CheckBoxLocale.tscn @@ -0,0 +1,12 @@ +[gd_scene load_steps=2 format=3 uid="uid://cfxq3ddd234s5"] + +[ext_resource type="Script" uid="uid://7r6730p3jqi8" path="res://addons/madtalk/components/CheckBoxLocale.gd" id="1_nugbd"] + +[node name="CheckBoxLocale" type="CheckBox"] +theme_override_colors/font_color = Color(0.323181, 0.438824, 0, 1) +theme_override_colors/font_pressed_color = Color(0.509804, 1, 0, 1) +theme_override_font_sizes/font_size = 12 +button_pressed = true +text = "Default locale" +clip_text = true +script = ExtResource("1_nugbd") diff --git a/addons/madtalk/components/DialogNode.gd b/addons/madtalk/components/DialogNode.gd new file mode 100644 index 0000000..6170694 --- /dev/null +++ b/addons/madtalk/components/DialogNode.gd @@ -0,0 +1,311 @@ +@tool +extends GraphNode +class_name DialogGraphNode + +signal connections_changed + +# data is a live reference to the underlying data this GraphNode refers to +# changing properties in this script will affect the original data +@export var data: Resource + +var DialogOptions_template = preload("res://addons/madtalk/components/DialogNode_DialogOptions.tscn") + +var DialogNodeItem_message_template = preload("res://addons/madtalk/components/DialogNodeItem_message.tscn") +var DialogNodeItem_condition_template = preload("res://addons/madtalk/components/DialogNodeItem_condition.tscn") +var DialogNodeItem_effect_template = preload("res://addons/madtalk/components/DialogNodeItem_effect.tscn") +var DialogNodeItem_option_template = preload("res://addons/madtalk/components/DialogNodeItem_option.tscn") + +@onready var topbar = get_node("TopBar") +@onready var add_menu = get_node("TopBar/AddMenu") +@onready var dialog_remove = get_node("TopBar/DialogRemove") + +const COLOR_COND := Color(1.0, 0.5, 0.0, 1.0) +const COLOR_OPT := Color(0.0, 1.0, 1.0, 1.0) +const COLOR_CONT := Color(1.0, 1.0, 1.0, 1.0) + +# Stores a port_index -> data resource map +var port_data_map := {} + +# Stores a reference to the main editor +var main_editor: Control = null + +func _ready(): + if data: + update_from_data() + +func clear(): + var itemlist = get_children() + # Index 0 is always topbar, we ignore + itemlist.remove_at(0) + for item in itemlist: + item.hide() + item.queue_free() + custom_minimum_size.y = 1 + size.y = 1 + # Clears the port_index -> data resource map + port_data_map.clear() + +func update_from_data(): + if data == null: + return + + + # === Clear + clear() + + # === Header + if data.sequence_id == 0: + title = "ID: 0 START" + else: + title = "ID: %d" % data.sequence_id + + var i = 1 # Index 0 is topbar so we skip + var final_size = 24 # accumulation variable + var output_i = 0 + + # === Items + for item in data.items: + + # Type-specific actions: + var new_item = null + match item.item_type: + DialogNodeItemData.ItemTypes.Message: + item.port_index = -1 + + new_item = DialogNodeItem_message_template.instantiate() + clear_slot(i) + + DialogNodeItemData.ItemTypes.Condition: + item.port_index = output_i + port_data_map[output_i] = item + output_i += 1 + + new_item = DialogNodeItem_condition_template.instantiate() + clear_slot(i) + set_slot(i, # index + false, # bool enable_left + 0, # int type_left + Color.BLACK, # Color color_left + true, # bool enable_right + 0, # int type_right + COLOR_COND # Color color_right + #, Texture custom_left=null, Texture custom_right=null + ) + + DialogNodeItemData.ItemTypes.Effect: + item.port_index = -1 + + new_item = DialogNodeItem_effect_template.instantiate() + clear_slot(i) + + if new_item: + new_item.sequence_node = self + add_child(new_item) + new_item.remove_requested.connect(_on_Item_remove_requested) + new_item.move_up_requested.connect(_on_move_up_requested) + new_item.move_down_requested.connect(_on_move_down_requested) + new_item.mouse_entered.connect(main_editor._on_item_mouse_entered.bind(new_item)) + new_item.mouse_exited.connect(main_editor._on_item_mouse_exited.bind(new_item)) + new_item.drag_started.connect(main_editor._on_item_drag_started) + new_item.drag_ended.connect(main_editor._on_item_drag_ended) + new_item.set_data(item) + final_size += new_item.custom_minimum_size.y + + i += 1 + + # === Options + # If we have options + if data.options.size() > 0: + # Delete the continue connection as it is invalid + data.continue_sequence_id = -1 + data.continue_port_index = -1 + # Traverse options + for option in data.options: + option.port_index = output_i + port_data_map[output_i] = option + output_i += 1 + + var new_opt = DialogNodeItem_option_template.instantiate() + add_child(new_opt) + new_opt.text = option.text + new_opt.set_conditional(option.is_conditional) + set_slot(i, # index + false, # bool enable_left + 0, # int type_left + Color.BLACK, # Color color_left + true, # bool enable_right + 0, # int type_right + COLOR_OPT # Color color_right + #, Texture custom_left=null, Texture custom_right=null + ) + final_size += new_opt.custom_minimum_size.y + + i += 1 + + # If no options, continue is the single option + else: + data.continue_port_index = output_i + output_i += 1 + + var new_opt = DialogNodeItem_option_template.instantiate() + add_child(new_opt) + new_opt.text = "(Continue)" + set_slot(i, # index + false, # bool enable_left + 0, # int type_left + Color.BLACK, # Color color_left + true, # bool enable_right + 0, # int type_right + COLOR_CONT # Color color_right + #, Texture custom_left=null, Texture custom_right=null + ) + final_size += new_opt.custom_minimum_size.y + + i += 1 + + # === UPDATING SIZE + if is_inside_tree() and get_tree(): + # We yield one frame to allow all resizing methods to be called properly + # before we apply the final size to the node + await get_tree().process_frame + # This works fine when the MadTalk editor is exported in a project + # (such as in-game dialog editting) + size.y = final_size + + # However, if the MadTalk editor is running as a plugin in the Godot Editor + # (and only in this situation), waiting just one frame is not enough, and + # the node resizing suffers from random-like errors. If you ever find out + # the reason, please don't hesitate to send a PR. + # Currently we wait a second frame and then fix the size manually again + # A visual glitch can be seen for one frame + await get_tree().process_frame + + final_size = 0 + for item in get_children(): + final_size += item.size.y + + size.y = final_size + +# Given an output port index, returns the corresponding data resource +# return value can be either DialogNodeItemData or DialogNodeOptionData +func get_data_by_port(port_index: int) -> Resource: + # first check if this is a continue port + if port_index == data.continue_port_index: + return data + + # otherwise check if invalid port + if not port_index in port_data_map: + return null + + # Finally get the data for the port + return port_data_map[port_index] + +# ======================================= +# ADD MENU + +enum AddMenuItems { + Message, + Condition, + Effect +} + +func _on_BtnAdd_pressed(): + var cursor_position = get_viewport().get_mouse_position() if get_viewport().gui_embed_subwindows else DisplayServer.mouse_get_position() + add_menu.popup(Rect2(cursor_position, Vector2(1,1))) + +func _on_AddMenu_id_pressed(id): + match id: + AddMenuItems.Message: + var new_data_item = DialogNodeItemData.new() + new_data_item.resource_scene_unique_id = Resource.generate_scene_unique_id() + new_data_item.item_type = DialogNodeItemData.ItemTypes.Message + new_data_item.message_speaker_id = "" + new_data_item.message_text = "" + data.items.append(new_data_item) + update_from_data() + + AddMenuItems.Condition: + var new_data_item = DialogNodeItemData.new() + new_data_item.resource_scene_unique_id = Resource.generate_scene_unique_id() + new_data_item.item_type = DialogNodeItemData.ItemTypes.Condition + new_data_item.condition_type = MTDefs.ConditionTypes.Random + new_data_item.condition_values = [50] + data.items.append(new_data_item) + update_from_data() + + AddMenuItems.Effect: + var new_data_item = DialogNodeItemData.new() + new_data_item.resource_scene_unique_id = Resource.generate_scene_unique_id() + new_data_item.item_type = DialogNodeItemData.ItemTypes.Effect + new_data_item.effect_type = MTDefs.EffectTypes.ChangeSheet + new_data_item.effect_values = ["",0] + data.items.append(new_data_item) + update_from_data() + + # Adding items always causes connection rebuild since the options come + # after all the items (or the "Continue" if there are no options) + emit_signal("connections_changed") + +# ======================================= +# OPTION LIST + +func _on_BtnOptions_pressed(): + var dialog_opt = DialogOptions_template.instantiate() + + # has to be added to topbar and not to self, since all children + # added to self will be considered a connection in the node + topbar.add_child(dialog_opt) + dialog_opt.connect("saved", Callable(self, "_on_DialogOptions_saved")) + + dialog_opt.open(data) + +func _on_DialogOptions_saved(source_dialog): + update_from_data() + + # If options changed we have to rebuild connections + emit_signal("connections_changed") + + +# ======================================= +# MOVE UP/DOWN +func _on_move_up_requested(requester): + var cur_index = data.items.find(requester.data) + if cur_index > 0: + var item_data = data.items[cur_index] + data.items.remove_at(cur_index) + data.items.insert(cur_index-1, item_data) + update_from_data() + emit_signal("connections_changed") + +func _on_move_down_requested(requester): + var cur_index = data.items.find(requester.data) + if cur_index < (data.items.size()-1): + var item_data = data.items[cur_index] + data.items.remove_at(cur_index) + data.items.insert(cur_index+1, item_data) + update_from_data() + emit_signal("connections_changed") + +# ======================================= +# REMOVE BUTTON +var deleting_item = null +func _on_Item_remove_requested(requester): + deleting_item = requester + dialog_remove.popup_centered() + + + +func _on_DialogRemove_confirmed(): + if deleting_item: + data.items.erase(deleting_item.data) + deleting_item.data = null + update_from_data() + emit_signal("connections_changed") + + + +# ======================================= +# UI events + +func _on_DialogNode_dragged(from, to): + data.position = to diff --git a/addons/madtalk/components/DialogNode.gd.uid b/addons/madtalk/components/DialogNode.gd.uid new file mode 100644 index 0000000..4439213 --- /dev/null +++ b/addons/madtalk/components/DialogNode.gd.uid @@ -0,0 +1 @@ +uid://dw017cofkhu8c diff --git a/addons/madtalk/components/DialogNode.tscn b/addons/madtalk/components/DialogNode.tscn new file mode 100644 index 0000000..588bcaf --- /dev/null +++ b/addons/madtalk/components/DialogNode.tscn @@ -0,0 +1,159 @@ +[gd_scene load_steps=15 format=3 uid="uid://cp6hkrxr23xk6"] + +[ext_resource type="Script" uid="uid://dw017cofkhu8c" path="res://addons/madtalk/components/DialogNode.gd" id="1"] +[ext_resource type="PackedScene" uid="uid://sks6j6y53n1k" path="res://addons/madtalk/components/DialogNodeItem_message.tscn" id="2"] +[ext_resource type="Script" uid="uid://c2bv5lwcvdmrb" path="res://addons/madtalk/components/resources/DialogNodeItemData.gd" id="3"] +[ext_resource type="Texture2D" uid="uid://0l1emjk1cyiy" path="res://addons/madtalk/images/icon_options.png" id="4"] +[ext_resource type="Texture2D" uid="uid://xt0wkyrex027" path="res://addons/madtalk/images/icon_plus.png" id="5"] +[ext_resource type="PackedScene" uid="uid://y6s6jwiawub6" path="res://addons/madtalk/components/DialogNodeItem_option.tscn" id="8"] +[ext_resource type="PackedScene" uid="uid://bjmg67jkhsynh" path="res://addons/madtalk/components/DialogNodeItem_condition.tscn" id="9"] +[ext_resource type="PackedScene" uid="uid://vkj7uamlpxxp" path="res://addons/madtalk/components/DialogNodeItem_effect.tscn" id="10"] +[ext_resource type="Texture2D" uid="uid://dqt1wi0i1aqol" path="res://addons/madtalk/images/icon_effect.png" id="11"] +[ext_resource type="Texture2D" uid="uid://200bqpuqfn6m" path="res://addons/madtalk/images/icon_condition.png" id="12"] +[ext_resource type="Texture2D" uid="uid://dxgulu8lvnwrr" path="res://addons/madtalk/images/icon_x.png" id="13"] +[ext_resource type="Texture2D" uid="uid://u746x6ecjfx5" path="res://addons/madtalk/images/icon_message.png" id="14"] + +[sub_resource type="Theme" id="1"] +GraphNode/constants/title_offset = 22 +GraphNode/icons/close = ExtResource("13") + +[sub_resource type="Resource" id="2"] +script = ExtResource("3") +item_type = 0 +connected_to_id = -1 +message_speaker_id = "mr_name" +message_speaker_variant = "" +message_voice_clip = "" +message_text = "Hello world" +message_voice_clip_locales = {} +message_text_locales = {} +message_hide_on_end = 0 +condition_type = 0 +condition_values = [50] +effect_type = 0 +effect_values = [] + +[node name="DialogNode" type="GraphNode"] +offset_left = 250.0 +offset_top = 130.0 +offset_right = 610.0 +offset_bottom = 370.0 +theme = SubResource("1") +theme_override_colors/resizer_color = Color(1, 1, 1, 1) +theme_override_constants/separation = 0 +title = "0" +slot/0/left_enabled = true +slot/0/left_type = 0 +slot/0/left_color = Color(1, 1, 1, 1) +slot/0/left_icon = null +slot/0/right_enabled = false +slot/0/right_type = 0 +slot/0/right_color = Color(1, 1, 1, 1) +slot/0/right_icon = null +slot/0/draw_stylebox = true +slot/1/left_enabled = false +slot/1/left_type = 0 +slot/1/left_color = Color(1, 1, 1, 1) +slot/1/left_icon = null +slot/1/right_enabled = false +slot/1/right_type = 0 +slot/1/right_color = Color(1, 1, 1, 1) +slot/1/right_icon = null +slot/1/draw_stylebox = true +slot/2/left_enabled = false +slot/2/left_type = 0 +slot/2/left_color = Color(1, 1, 1, 1) +slot/2/left_icon = null +slot/2/right_enabled = true +slot/2/right_type = 0 +slot/2/right_color = Color(1, 0.501961, 0, 1) +slot/2/right_icon = null +slot/2/draw_stylebox = true +slot/3/left_enabled = false +slot/3/left_type = 0 +slot/3/left_color = Color(1, 1, 1, 1) +slot/3/left_icon = null +slot/3/right_enabled = false +slot/3/right_type = 0 +slot/3/right_color = Color(1, 1, 1, 1) +slot/3/right_icon = null +slot/3/draw_stylebox = true +slot/4/left_enabled = false +slot/4/left_type = 0 +slot/4/left_color = Color(1, 1, 1, 1) +slot/4/left_icon = null +slot/4/right_enabled = false +slot/4/right_type = 0 +slot/4/right_color = Color(1, 1, 1, 1) +slot/4/right_icon = null +slot/4/draw_stylebox = true +script = ExtResource("1") + +[node name="TopBar" type="Control" parent="."] +custom_minimum_size = Vector2(0, 24) +layout_mode = 2 + +[node name="BtnAdd" type="TextureButton" parent="TopBar"] +layout_mode = 0 +anchor_left = 1.0 +anchor_top = 0.5 +anchor_right = 1.0 +anchor_bottom = 0.5 +offset_left = -44.0 +offset_top = -8.0 +offset_right = -28.0 +offset_bottom = 8.0 +texture_normal = ExtResource("5") + +[node name="BtnOptions" type="TextureButton" parent="TopBar"] +layout_mode = 0 +anchor_left = 1.0 +anchor_top = 0.5 +anchor_right = 1.0 +anchor_bottom = 0.5 +offset_left = -20.0 +offset_top = -8.0 +offset_right = -4.0 +offset_bottom = 8.0 +texture_normal = ExtResource("4") + +[node name="AddMenu" type="PopupMenu" parent="TopBar"] +size = Vector2i(128, 100) +item_count = 3 +item_0/text = "Message" +item_0/icon = ExtResource("14") +item_0/id = 0 +item_1/text = "Condition" +item_1/icon = ExtResource("12") +item_1/id = 1 +item_2/text = "Effect" +item_2/icon = ExtResource("11") +item_2/id = 2 + +[node name="DialogRemove" type="ConfirmationDialog" parent="TopBar"] +initial_position = 2 +size = Vector2i(386, 109) +popup_window = true +min_size = Vector2i(386, 109) +dialog_text = " + Are you sure you want to remove this item? " + +[node name="DialogNodeItem_message" parent="." instance=ExtResource("2")] +custom_minimum_size = Vector2(0, 63) +layout_mode = 2 +data = SubResource("2") + +[node name="DialogNodeItem_condition" parent="." instance=ExtResource("9")] +layout_mode = 2 + +[node name="DialogNodeItem_effect" parent="." instance=ExtResource("10")] +layout_mode = 2 + +[node name="DialogNodeItem_option" parent="." instance=ExtResource("8")] +layout_mode = 2 + +[connection signal="dragged" from="." to="." method="_on_DialogNode_dragged"] +[connection signal="pressed" from="TopBar/BtnAdd" to="." method="_on_BtnAdd_pressed"] +[connection signal="pressed" from="TopBar/BtnOptions" to="." method="_on_BtnOptions_pressed"] +[connection signal="id_pressed" from="TopBar/AddMenu" to="." method="_on_AddMenu_id_pressed"] +[connection signal="confirmed" from="TopBar/DialogRemove" to="." method="_on_DialogRemove_confirmed"] diff --git a/addons/madtalk/components/DialogNodeItem_condition.gd b/addons/madtalk/components/DialogNodeItem_condition.gd new file mode 100644 index 0000000..8c5e4a6 --- /dev/null +++ b/addons/madtalk/components/DialogNodeItem_condition.gd @@ -0,0 +1,230 @@ +@tool +extends Control +class_name DialogNodeItem_condition + +signal remove_requested(requester) +signal move_up_requested(requester) +signal move_down_requested(requester) +signal drag_started(requester) +signal drag_ended(requester) + + + +@export var data: Resource + + +enum PopupOptions { + Edit, + MoveUp, + MoveDown, + Remove +} +#@onready var dialog_edit = get_node("DialogEdit") +var edit_condition_type +var edit_specificlist +var edit_btntip + +# names of the nodes holding the controls in edit box +const edit_specificlist_items = [ + "Random", + "VarBool", + "VarAtLeast", + "VarUnder", + "VarString", + "Time", + "DayWeek", + "DayMonth", + "Date", + "ElapsedVar", + "Custom" +] + +@onready var condition_conditionlabel = get_node("ConditionLabel") + +var template_DialogEdit: PackedScene = preload("res://addons/madtalk/components/popups/Condition_DialogEdit.tscn") +var dialog_edit: Window + +var template_PopupMenu: PackedScene = preload("res://addons/madtalk/components/popups/DialogNodeItem_PopupMenu.tscn") +var popup_menu: PopupMenu + +@onready var dragdrop_line := $DragDropLine + +var sequence_node = null + +func _ready(): + if data: + set_data(data) + +func set_data(new_data): + data = new_data + update_from_data() + +func update_from_data(): + if data: + var mtdefs = MTDefs.new() + condition_conditionlabel.text = mtdefs.Condition_PrintFail(data.condition_type, data.condition_values) + + + +func create_dialog_edit(): + if not dialog_edit: + dialog_edit = template_DialogEdit.instantiate() as Window + add_child(dialog_edit) + dialog_edit.get_node("Panel/BtnConditionType").item_selected.connect(_on_DialogEdit_BtnConditionType_item_selected) + dialog_edit.get_node("Panel/BottomBar/BtnSave").pressed.connect(_on_DialogEdit_BtnSave_pressed) + dialog_edit.get_node("Panel/BottomBar/BtnCancel").pressed.connect(_on_DialogEdit_BtnCancel_pressed) + + edit_condition_type = dialog_edit.get_node("Panel/BtnConditionType") + edit_specificlist = dialog_edit.get_node("Panel/SpecificFields") + edit_btntip = dialog_edit.get_node("Panel/BtnTip") + + for item in edit_specificlist.get_children(): + item.hide() + +func dispose_dialog_edit(): + if dialog_edit: + dialog_edit.queue_free() + dialog_edit = null + + +func create_popup_menu(): + if not popup_menu: + popup_menu = template_PopupMenu.instantiate() as PopupMenu + add_child(popup_menu) + popup_menu.id_pressed.connect(_on_PopupMenu_id_pressed) + +func dispose_popup_menu(): + if popup_menu: + popup_menu.queue_free() + popup_menu = null + + +func _on_DialogNodeItem_condition_gui_input(event): + if (event is InputEventMouseButton): + if (event.pressed): + if (event.button_index == MOUSE_BUTTON_LEFT): + if event.double_click: + _on_PopupMenu_id_pressed(PopupOptions.Edit) + else: + drag_started.emit(self) + + if (event.button_index == MOUSE_BUTTON_RIGHT): + var cursor_position = get_viewport().get_mouse_position() if get_viewport().gui_embed_subwindows else DisplayServer.mouse_get_position() + create_popup_menu() + popup_menu.popup(Rect2(cursor_position,Vector2(10,10))) + else: + if (event.button_index == MOUSE_BUTTON_LEFT): + drag_ended.emit(self) + + +func _on_PopupMenu_id_pressed(id): + dispose_popup_menu() + match id: + PopupOptions.Edit: + create_dialog_edit() + edit_condition_type.selected = data.condition_type + var values_size = data.condition_values.size() + # Nodes not commonly used so get_node is used directly for simplicity + # (They are only used here and when saving) + + + for j in range(edit_specificlist_items.size()): + var num_args = MTDefs.ConditionData[j]["num_args"] + var node_name = edit_specificlist_items[j] + + for i in range(num_args): + var data_type = MTDefs.ConditionData[j]["data_types"][i] + var print_type = MTDefs.ConditionData[j]["print_types"][i] if MTDefs.ConditionData[j]["print_types"].size() > i else TYPE_STRING + var value = data.condition_values[i] if (values_size > i) else MTDefs.ConditionData[j]["default"][i] + + if print_type == MTDefs.TYPE_WEEKDAY: + var node = get_node_or_null("DialogEdit/Panel/SpecificFields/%s/Option%d" % [node_name, i]) + if node: + value = int(value) + while value > 6: + value -= 7 + while value < 0: + value += 7 + node.select(int(value)) + elif print_type == MTDefs.TYPE_CHECK: + var node = get_node_or_null("DialogEdit/Panel/SpecificFields/%s/Option%d" % [node_name, i]) + if node: + value = float(value) + if value != 0: + node.select(0) + else: + node.select(1) + + elif print_type != null: + var node = get_node_or_null("DialogEdit/Panel/SpecificFields/%s/EditValue%d" % [node_name, i]) + if node: + node.text = str(value) + + update_DialogEdit_contents(data.condition_type) + dialog_edit.popup_centered() + + PopupOptions.MoveUp: + emit_signal("move_up_requested", self) + + PopupOptions.MoveDown: + emit_signal("move_down_requested", self) + + PopupOptions.Remove: + emit_signal("remove_requested", self) + + + + + +func _on_DialogEdit_BtnConditionType_item_selected(index): + update_DialogEdit_contents(edit_condition_type.selected) + +func _on_DialogEdit_BtnCancel_pressed(): + dispose_dialog_edit() + + +func _on_DialogEdit_BtnSave_pressed(): + data.condition_type = edit_condition_type.selected + + + var num_args = MTDefs.ConditionData[data.condition_type]["num_args"] + var node_name = edit_specificlist_items[data.condition_type] + data.condition_values.resize(num_args) + + for i in range(num_args): + var data_type = MTDefs.ConditionData[data.condition_type]["data_types"][i] + var print_type = MTDefs.ConditionData[data.condition_type]["print_types"][i] if MTDefs.ConditionData[data.condition_type]["print_types"].size() > i else TYPE_STRING + var value + if print_type == MTDefs.TYPE_WEEKDAY: + value = get_node("DialogEdit/Panel/SpecificFields/%s/Option%d" % [node_name, i]).selected + elif print_type == MTDefs.TYPE_CHECK: + value = 1 if get_node("DialogEdit/Panel/SpecificFields/%s/Option%d" % [node_name, i]).selected == 0 else 0 + else: + value = get_node("DialogEdit/Panel/SpecificFields/%s/EditValue%d" % [node_name, i]).text + + # Data type is not the same as print type + # data type is usually int, float or string, even if the print type is + # something else such as checks or day of week + # (as those are stored as integers) + match data_type: + TYPE_INT: + data.condition_values[i] = int(value) + TYPE_FLOAT: + data.condition_values[i] = float(value) + TYPE_STRING: + data.condition_values[i] = value + + update_from_data() + dispose_dialog_edit() + + + +func update_DialogEdit_contents(condition): + var fieldboxes = edit_specificlist.get_children() + for i in range(fieldboxes.size()): + if i == condition: + fieldboxes[i].show() + else: + fieldboxes[i].hide() + edit_btntip.tip_title = MTDefs.ConditionData[condition]["description"] #edit_condition_type.get_item_text(edit_condition_type.selected) + edit_btntip.tip_text = MTDefs.ConditionData[condition]["help"] diff --git a/addons/madtalk/components/DialogNodeItem_condition.gd.uid b/addons/madtalk/components/DialogNodeItem_condition.gd.uid new file mode 100644 index 0000000..2d8f767 --- /dev/null +++ b/addons/madtalk/components/DialogNodeItem_condition.gd.uid @@ -0,0 +1 @@ +uid://bkwtkyyvciuk0 diff --git a/addons/madtalk/components/DialogNodeItem_condition.tscn b/addons/madtalk/components/DialogNodeItem_condition.tscn new file mode 100644 index 0000000..60d11f5 --- /dev/null +++ b/addons/madtalk/components/DialogNodeItem_condition.tscn @@ -0,0 +1,61 @@ +[gd_scene load_steps=5 format=3 uid="uid://bjmg67jkhsynh"] + +[ext_resource type="Texture2D" uid="uid://kcw14ykn5tp" path="res://addons/madtalk/images/header_condition.png" id="1"] +[ext_resource type="Texture2D" uid="uid://b37ib00lc25o1" path="res://addons/madtalk/images/header_condition_arrow.png" id="2"] +[ext_resource type="FontFile" path="res://addons/madtalk/fonts/FreeSans_bold_small.tres" id="3"] +[ext_resource type="Script" uid="uid://bkwtkyyvciuk0" path="res://addons/madtalk/components/DialogNodeItem_condition.gd" id="4"] + +[node name="DialogNodeItem_condition" type="Control"] +custom_minimum_size = Vector2(0, 34) +layout_mode = 3 +anchors_preset = 0 +offset_left = 16.0 +offset_top = 130.0 +offset_right = 284.0 +offset_bottom = 164.0 +script = ExtResource("4") + +[node name="BG" type="TextureRect" parent="."] +layout_mode = 0 +offset_top = 1.0 +offset_right = 128.0 +offset_bottom = 33.0 +texture = ExtResource("1") + +[node name="BGArrow" type="TextureRect" parent="."] +layout_mode = 0 +anchor_left = 1.0 +anchor_top = 0.5 +anchor_right = 1.0 +anchor_bottom = 0.5 +offset_left = -96.0 +offset_top = -12.0 +offset_bottom = 12.0 +texture = ExtResource("2") + +[node name="ConditionLabel" type="Label" parent="."] +layout_mode = 0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = 29.0 +offset_top = 13.0 +offset_right = -38.0 +offset_bottom = -3.0 +theme_override_colors/font_color = Color(1, 0.501961, 0, 1) +theme_override_fonts/font = ExtResource("3") +theme_override_font_sizes/font_size = 12 +text = "Condition " +horizontal_alignment = 2 +clip_text = true + +[node name="DragDropLine" type="ColorRect" parent="."] +visible = false +layout_mode = 1 +anchors_preset = 10 +anchor_right = 1.0 +offset_top = -2.0 +offset_bottom = 2.0 +grow_horizontal = 2 +color = Color(1, 0, 0, 1) + +[connection signal="gui_input" from="." to="." method="_on_DialogNodeItem_condition_gui_input"] diff --git a/addons/madtalk/components/DialogNodeItem_effect.gd b/addons/madtalk/components/DialogNodeItem_effect.gd new file mode 100644 index 0000000..73e1e14 --- /dev/null +++ b/addons/madtalk/components/DialogNodeItem_effect.gd @@ -0,0 +1,217 @@ +@tool +extends Control +class_name DialogNodeItem_effect + +signal remove_requested(requester) +signal move_up_requested(requester) +signal move_down_requested(requester) +signal drag_started(requester) +signal drag_ended(requester) + + + +@export var data: Resource + + + +enum PopupOptions { + Edit, + MoveUp, + MoveDown, + Remove +} + +var edit_effect_type +var edit_specificlist +var edit_btntip + +# names of the nodes holding the controls in edit box +const edit_specificlist_items = [ + "ChangeSheet", + "SetVariable", + "AddVariable", + "RandomizeVariable", + "StampTime", + "SpendMinutes", + "SpendDays", + "SkipToTime", + "SkipToWeekday", + "WaitAnim", + "Custom", +] + +@onready var effect_effectlabel = get_node("EffectLabel") + +var template_DialogEdit: PackedScene = preload("res://addons/madtalk/components/popups/Effect_DialogEdit.tscn") +var dialog_edit: Window + +var template_PopupMenu: PackedScene = preload("res://addons/madtalk/components/popups/DialogNodeItem_PopupMenu.tscn") +var popup_menu: PopupMenu + +@onready var dragdrop_line := $DragDropLine + +var sequence_node = null + +func _ready(): + if data: + set_data(data) + +func set_data(new_data): + data = new_data + update_from_data() + +func update_from_data(): + if data: + var mtdefs = MTDefs.new() + effect_effectlabel.text = mtdefs.Effect_PrintShort(data.effect_type, data.effect_values) + #mtdefs.free() + + +func create_dialog_edit(): + if not dialog_edit: + dialog_edit = template_DialogEdit.instantiate() as Window + add_child(dialog_edit) + dialog_edit.get_node("Panel/BtnEffectType").item_selected.connect(_on_DialogEdit_BtnEffectType_item_selected) + dialog_edit.get_node("Panel/BottomBar/BtnSave").pressed.connect(_on_DialogEdit_BtnSave_pressed) + dialog_edit.get_node("Panel/BottomBar/BtnCancel").pressed.connect(_on_DialogEdit_BtnCancel_pressed) + + edit_effect_type = dialog_edit.get_node("Panel/BtnEffectType") + edit_specificlist = dialog_edit.get_node("Panel/SpecificFields") + edit_btntip = dialog_edit.get_node("Panel/BtnTip") + + for item in edit_specificlist.get_children(): + item.hide() + +func dispose_dialog_edit(): + if dialog_edit: + dialog_edit.queue_free() + dialog_edit = null + + +func create_popup_menu(): + if not popup_menu: + popup_menu = template_PopupMenu.instantiate() as PopupMenu + add_child(popup_menu) + popup_menu.id_pressed.connect(_on_PopupMenu_id_pressed) + +func dispose_popup_menu(): + if popup_menu: + popup_menu.queue_free() + popup_menu = null + + +func _on_DialogNodeItem_effect_gui_input(event): + if (event is InputEventMouseButton): + if (event.pressed): + if (event.button_index == MOUSE_BUTTON_LEFT): + if event.double_click: + _on_PopupMenu_id_pressed(PopupOptions.Edit) + else: + drag_started.emit(self) + + if (event.button_index == MOUSE_BUTTON_RIGHT): + var cursor_position = get_viewport().get_mouse_position() if get_viewport().gui_embed_subwindows else DisplayServer.mouse_get_position() + create_popup_menu() + popup_menu.popup(Rect2(cursor_position,Vector2(10,10))) + else: + if (event.button_index == MOUSE_BUTTON_LEFT): + drag_ended.emit(self) + + + + + +func _on_PopupMenu_id_pressed(id): + dispose_popup_menu() + match id: + PopupOptions.Edit: + create_dialog_edit() + edit_effect_type.selected = data.effect_type + var values_size = data.effect_values.size() + # Nodes not commonly used so get_node is used directly for simplicity + # (They are only used here and when saving) + + + for j in range(edit_specificlist_items.size()): + var num_args = MTDefs.EffectData[j]["num_args"] + var node_name = edit_specificlist_items[j] + + for i in range(num_args): + var data_type = MTDefs.EffectData[j]["data_types"][i] + var print_type = MTDefs.EffectData[j]["print_types"][i] if MTDefs.EffectData[j]["print_types"].size() > i else TYPE_STRING + var value = data.effect_values[i] if (values_size > i) else MTDefs.EffectData[j]["default"][i] + + if print_type == MTDefs.TYPE_WEEKDAY: + var node = get_node_or_null("DialogEdit/Panel/SpecificFields/%s/Option%d" % [node_name, i]) + if node: + value = int(value) + while value > 6: + value -= 7 + while value < 0: + value += 7 + node.select(int(value)) + elif print_type != null: + var node = get_node_or_null("DialogEdit/Panel/SpecificFields/%s/EditValue%d" % [node_name, i]) + if node: + node.text = str(value) + + update_DialogEdit_contents(data.effect_type) + dialog_edit.popup_centered() + + PopupOptions.MoveUp: + emit_signal("move_up_requested", self) + + PopupOptions.MoveDown: + emit_signal("move_down_requested", self) + + PopupOptions.Remove: + emit_signal("remove_requested", self) + + + + + +func _on_DialogEdit_BtnEffectType_item_selected(index): + update_DialogEdit_contents(edit_effect_type.selected) + +func _on_DialogEdit_BtnCancel_pressed(): + dispose_dialog_edit() + + +func _on_DialogEdit_BtnSave_pressed(): + data.effect_type = edit_effect_type.selected + + var num_args = MTDefs.EffectData[data.effect_type]["num_args"] + var node_name = edit_specificlist_items[data.effect_type] + data.effect_values.resize(num_args) + + for i in range(num_args): + var data_type = MTDefs.EffectData[data.effect_type]["data_types"][i] + var print_type = MTDefs.EffectData[data.effect_type]["print_types"][i] if MTDefs.EffectData[data.effect_type]["print_types"].size() > i else TYPE_STRING + var value + if print_type == MTDefs.TYPE_WEEKDAY: + value = get_node("DialogEdit/Panel/SpecificFields/%s/Option%d" % [node_name, i]).selected + else: + value = get_node("DialogEdit/Panel/SpecificFields/%s/EditValue%d" % [node_name, i]).text + + match data_type: + TYPE_INT: + data.effect_values[i] = int(value) + TYPE_FLOAT: + data.effect_values[i] = float(value) + TYPE_STRING: + data.effect_values[i] = value + + update_from_data() + dispose_dialog_edit() + + +func update_DialogEdit_contents(effect): + var fieldboxes = edit_specificlist.get_children() + for i in range(fieldboxes.size()): + if i == effect: + fieldboxes[i].show() + else: + fieldboxes[i].hide() + edit_btntip.tip_title = MTDefs.EffectData[effect]["description"] + edit_btntip.tip_text = MTDefs.EffectData[effect]["help"] diff --git a/addons/madtalk/components/DialogNodeItem_effect.gd.uid b/addons/madtalk/components/DialogNodeItem_effect.gd.uid new file mode 100644 index 0000000..73f15a6 --- /dev/null +++ b/addons/madtalk/components/DialogNodeItem_effect.gd.uid @@ -0,0 +1 @@ +uid://iqqxlumksl02 diff --git a/addons/madtalk/components/DialogNodeItem_effect.tscn b/addons/madtalk/components/DialogNodeItem_effect.tscn new file mode 100644 index 0000000..6d9e18f --- /dev/null +++ b/addons/madtalk/components/DialogNodeItem_effect.tscn @@ -0,0 +1,48 @@ +[gd_scene load_steps=4 format=3 uid="uid://vkj7uamlpxxp"] + +[ext_resource type="Script" uid="uid://iqqxlumksl02" path="res://addons/madtalk/components/DialogNodeItem_effect.gd" id="1"] +[ext_resource type="FontFile" path="res://addons/madtalk/fonts/FreeSans_bold_small.tres" id="8"] +[ext_resource type="Texture2D" uid="uid://cg463wmvppw0u" path="res://addons/madtalk/images/header_effect.png" id="14"] + +[node name="DialogNodeItem_effect" type="Control"] +custom_minimum_size = Vector2(0, 34) +layout_mode = 3 +anchors_preset = 0 +offset_left = 16.0 +offset_top = 165.0 +offset_right = 284.0 +offset_bottom = 199.0 +script = ExtResource("1") + +[node name="BG" type="TextureRect" parent="."] +layout_mode = 0 +offset_top = 1.0 +offset_right = 128.0 +offset_bottom = 33.0 +texture = ExtResource("14") + +[node name="EffectLabel" type="Label" parent="."] +layout_mode = 0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = 29.0 +offset_top = 13.0 +offset_right = -6.0 +offset_bottom = -3.0 +theme_override_colors/font_color = Color(0, 1, 1, 1) +theme_override_fonts/font = ExtResource("8") +theme_override_font_sizes/font_size = 12 +text = "Effect" +clip_text = true + +[node name="DragDropLine" type="ColorRect" parent="."] +visible = false +layout_mode = 1 +anchors_preset = 10 +anchor_right = 1.0 +offset_top = -2.0 +offset_bottom = 2.0 +grow_horizontal = 2 +color = Color(1, 0, 0, 1) + +[connection signal="gui_input" from="." to="." method="_on_DialogNodeItem_effect_gui_input"] diff --git a/addons/madtalk/components/DialogNodeItem_message.gd b/addons/madtalk/components/DialogNodeItem_message.gd new file mode 100644 index 0000000..9efdd06 --- /dev/null +++ b/addons/madtalk/components/DialogNodeItem_message.gd @@ -0,0 +1,242 @@ +@tool +extends Control +class_name DialogNodeItem_message + +signal remove_requested(requester) +signal move_up_requested(requester) +signal move_down_requested(requester) +signal drag_started(requester) +signal drag_ended(requester) + +@export var data: Resource + +#@onready var popup_menu = get_node("PopupMenu") +#@onready var dialog_edit = get_node("DialogEdit") +var edit_speaker_id +var edit_speaker_var +var edit_voiceclip +var edit_message_editor +var edit_preview +var edit_previewtimer +var edit_previewbg +var edit_btn_hide_on_end + +#@onready var dialog_voiceclip = get_node("VoiceClipDialog") + +var template_VoiceClipDialog: PackedScene = preload("res://addons/madtalk/components/popups/Messages_VoiceClipDialog.tscn") +var dialog_voiceclip: FileDialog + +var template_DialogEdit: PackedScene = preload("res://addons/madtalk/components/popups/Messages_DialogEdit.tscn") +var dialog_edit: Window + +var template_PopupMenu: PackedScene = preload("res://addons/madtalk/components/popups/DialogNodeItem_PopupMenu.tscn") +var popup_menu: PopupMenu + +enum PopupOptions { + Edit, + MoveUp, + MoveDown, + Remove +} + +@onready var box_height_margins = size.y - get_node("Panel/MessageLabel").size.y +@onready var dragdrop_line := $DragDropLine + +var sequence_node = null + +var message_speakervarlabel = null +var message_speakerlabel = null +var message_voicelabel = null +var message_msglabel = null +var message_hideonendlabel = null +var message_locale_list = null + + + +func _ready(): + if data: + set_data(data) + +func set_data(new_data): + data = new_data + message_speakerlabel = get_node("SpeakerNameLabel") + message_speakervarlabel = get_node("SpeakerVariantLabel") + message_voicelabel = get_node("VoiceFileLabel") + message_msglabel = get_node("Panel/MessageLabel") + message_hideonendlabel = get_node("HideOnEndLabel") + message_locale_list = get_node("LocalesLabel") + update_from_data() + +func update_height(): + if is_inside_tree(): + custom_minimum_size.y = min( + box_height_margins + message_msglabel.get_content_height(), + 120 + ) + +func update_from_data(): + if data: + message_speakerlabel.text = data.message_speaker_id + message_speakervarlabel.text = data.message_speaker_variant + message_voicelabel.text = data.message_voice_clip + if data.message_voice_clip_locales.size() > 0: + message_voicelabel.text += " (" + (",".join(data.message_voice_clip_locales.keys())) + ")" + if message_voicelabel.text.length() > 40: + message_voicelabel.text = "..." + message_voicelabel.text.right(40) + message_msglabel.text = data.message_text + message_hideonendlabel.visible = (data.message_hide_on_end != 0) + if data.message_text_locales.size() == 0: + message_locale_list.text = "" + else: + message_locale_list.text = ",".join(data.message_text_locales.keys()) + + var variant_title = get_node("SpeakerVarLabel") + variant_title.visible = (data.message_speaker_variant != "") + + var panel = get_node("Panel") + if message_voicelabel.text != "": + panel.offset_top = 40 + else: + panel.offset_top = 28 + + update_height() + +func create_dialog_edit(): + if not dialog_edit: + dialog_edit = template_DialogEdit.instantiate() as Window + add_child(dialog_edit) + dialog_edit.get_node("Panel/MessageEditor").tab_changed.connect(_on_DialogEdit_MessageEdit_text_changed) + dialog_edit.get_node("Panel/MessageEditor").voice_clip_dialog_requested.connect(_on_BtnSelectClip_pressed) + dialog_edit.get_node("Panel/MessageEditor/MessageEdit").text_changed.connect(_on_DialogEdit_MessageEdit_text_changed) + dialog_edit.get_node("Panel/BtnTextColor").color_changed.connect(_on_DialogEdit_BtnTextColor_color_changed) + dialog_edit.get_node("Panel/BtnBGColor").color_changed.connect(_on_DialogEdit_BtnBGColor_color_changed) + dialog_edit.get_node("Panel/PreviewBox/PreviewTimer").timeout.connect(_on_DialogEdit_PreviewTimer_timeout) + dialog_edit.get_node("Panel/BottomBar/BtnSave").pressed.connect(_on_DialogEdit_BtnSave_pressed) + dialog_edit.get_node("Panel/BottomBar/BtnCancel").pressed.connect(_on_DialogEdit_BtnCancel_pressed) + + edit_speaker_id = dialog_edit.get_node("Panel/SpeakerEdit") + edit_speaker_var = dialog_edit.get_node("Panel/VariantEdit") + #edit_voiceclip = dialog_edit.get_node("Panel/VoiceEdit") + edit_message_editor = dialog_edit.get_node("Panel/MessageEditor") + edit_preview = dialog_edit.get_node("Panel/PreviewBox/PreviewLabel") + edit_previewtimer = dialog_edit.get_node("Panel/PreviewBox/PreviewTimer") + edit_previewbg = dialog_edit.get_node("Panel/PreviewBox") + edit_btn_hide_on_end = dialog_edit.get_node("Panel/BtnHideOnEnd") + +func dispose_dialog_edit(): + if dialog_edit: + dialog_edit.queue_free() + dialog_edit = null + +func create_voice_clip_dialog(): + if not dialog_voiceclip: + dialog_voiceclip = template_VoiceClipDialog.instantiate() + add_child(dialog_voiceclip) + dialog_voiceclip.file_selected.connect(_on_FileDialog_voiceclip_selected) + +func dispose_voice_clip_dialog(): + if dialog_voiceclip: + dialog_voiceclip.queue_free() + dialog_voiceclip = null + + +func create_popup_menu(): + if not popup_menu: + popup_menu = template_PopupMenu.instantiate() as PopupMenu + add_child(popup_menu) + popup_menu.id_pressed.connect(_on_PopupMenu_id_pressed) + +func dispose_popup_menu(): + if popup_menu: + popup_menu.queue_free() + popup_menu = null + + + +func _on_DialogNodeItem_gui_input(event): + if (event is InputEventMouseButton): + if (event.pressed): + if (event.button_index == MOUSE_BUTTON_LEFT): + if event.double_click: + _on_PopupMenu_id_pressed(PopupOptions.Edit) + else: + drag_started.emit(self) + + if (event.button_index == MOUSE_BUTTON_RIGHT): + var cursor_position = get_viewport().get_mouse_position() if get_viewport().gui_embed_subwindows else DisplayServer.mouse_get_position() + create_popup_menu() + popup_menu.popup(Rect2(cursor_position,Vector2(10,10))) + else: + if (event.button_index == MOUSE_BUTTON_LEFT): + drag_ended.emit(self) + + + + +func _on_PopupMenu_id_pressed(id): + dispose_popup_menu() # Handles null gracefully + match id: + PopupOptions.Edit: + create_dialog_edit() + edit_speaker_id.text = data.message_speaker_id + edit_speaker_var.text = data.message_speaker_variant + edit_message_editor.setup(data.message_text, data.message_text_locales, data.message_voice_clip, data.message_voice_clip_locales) + edit_btn_hide_on_end.button_pressed = (data.message_hide_on_end != 0) + _on_DialogEdit_PreviewTimer_timeout() + dialog_edit.popup_centered() + + PopupOptions.MoveUp: + emit_signal("move_up_requested", self) + + PopupOptions.MoveDown: + emit_signal("move_down_requested", self) + + PopupOptions.Remove: + emit_signal("remove_requested", self) + + + +func _on_DialogEdit_BtnCancel_pressed(): + dispose_dialog_edit() + + +func _on_DialogEdit_BtnSave_pressed(): + data.message_speaker_id = edit_speaker_id.text + data.message_speaker_variant = edit_speaker_var.text + + edit_message_editor.finalize_editor() + data.message_text = edit_message_editor.get_default_locale_message() + data.message_text_locales = edit_message_editor.get_locale_messages_without_default() + data.message_voice_clip = edit_message_editor.get_default_locale_voiceclip() + data.message_voice_clip_locales = edit_message_editor.get_locale_voiceclips_without_default() + + data.message_hide_on_end = 1 if edit_btn_hide_on_end.button_pressed else 0 + update_from_data() + dispose_dialog_edit() + + + +func _on_DialogEdit_PreviewTimer_timeout(): + edit_preview.text = edit_message_editor.message_edit.text + + +func _on_DialogEdit_MessageEdit_text_changed(): + edit_previewtimer.start(1.0) + + +func _on_DialogEdit_BtnTextColor_color_changed(color): + edit_preview.set("theme_override_colors/default_color", color) + + +func _on_DialogEdit_BtnBGColor_color_changed(color): + edit_previewbg.color = color + + +func _on_BtnSelectClip_pressed(): + create_voice_clip_dialog() + dialog_voiceclip.popup_centered() + + +func _on_FileDialog_voiceclip_selected(path): + edit_message_editor.set_voice_clip(path) + dispose_voice_clip_dialog() diff --git a/addons/madtalk/components/DialogNodeItem_message.gd.uid b/addons/madtalk/components/DialogNodeItem_message.gd.uid new file mode 100644 index 0000000..b00b060 --- /dev/null +++ b/addons/madtalk/components/DialogNodeItem_message.gd.uid @@ -0,0 +1 @@ +uid://338g851v1cl diff --git a/addons/madtalk/components/DialogNodeItem_message.tscn b/addons/madtalk/components/DialogNodeItem_message.tscn new file mode 100644 index 0000000..978848e --- /dev/null +++ b/addons/madtalk/components/DialogNodeItem_message.tscn @@ -0,0 +1,232 @@ +[gd_scene load_steps=12 format=3 uid="uid://sks6j6y53n1k"] + +[ext_resource type="Script" uid="uid://338g851v1cl" path="res://addons/madtalk/components/DialogNodeItem_message.gd" id="1"] +[ext_resource type="Texture2D" uid="uid://dgal43srcee1q" path="res://addons/madtalk/images/panel_bg.png" id="2"] +[ext_resource type="FontFile" uid="uid://bhcws34lw0ak5" path="res://addons/madtalk/fonts/FreeSans_tiny.tres" id="3"] +[ext_resource type="FontFile" path="res://addons/madtalk/fonts/FreeSans_italic_small.tres" id="5"] +[ext_resource type="FontVariation" uid="uid://18mk4r2e01la" path="res://addons/madtalk/fonts/MessagePreview.tres" id="5_c4t4d"] +[ext_resource type="FontFile" path="res://addons/madtalk/fonts/FreeSans_bolditalic_small.tres" id="6"] +[ext_resource type="FontFile" path="res://addons/madtalk/fonts/FreeSans_bold_small.tres" id="7"] +[ext_resource type="StyleBox" path="res://addons/madtalk/components/resources/RichLabelPreviewStyle.tres" id="15"] +[ext_resource type="FontFile" path="res://addons/madtalk/fonts/FreeSansBold_tiny.tres" id="17"] + +[sub_resource type="StyleBoxFlat" id="1"] +bg_color = Color(0.741176, 0.741176, 0.741176, 1) +border_width_left = 1 +border_width_top = 1 +border_width_right = 1 +border_width_bottom = 1 +border_color = Color(0.486275, 0.486275, 0.486275, 1) + +[sub_resource type="FontVariation" id="FontVariation_wa622"] + +[node name="DialogNodeItem" type="Control"] +custom_minimum_size = Vector2(0, 100) +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1") + +[node name="NinePatchRect" type="NinePatchRect" parent="."] +layout_mode = 0 +anchor_right = 1.0 +anchor_bottom = 1.0 +texture = ExtResource("2") +patch_margin_left = 10 +patch_margin_top = 10 +patch_margin_right = 10 +patch_margin_bottom = 10 + +[node name="TitleLine" type="ColorRect" parent="."] +layout_mode = 1 +anchors_preset = 10 +anchor_right = 1.0 +offset_left = 8.0 +offset_top = 14.0 +offset_right = -8.0 +offset_bottom = 15.0 +grow_horizontal = 2 +mouse_filter = 2 +color = Color(0.282353, 0.258824, 0.301961, 1) + +[node name="TitleLabel" type="Label" parent="."] +layout_mode = 0 +offset_left = 4.0 +offset_top = 1.0 +offset_right = 49.0 +offset_bottom = 20.0 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_fonts/font = ExtResource("3") +theme_override_font_sizes/font_size = 9 +text = "Message" + +[node name="LocalesLabel" type="Label" parent="."] +layout_mode = 1 +anchors_preset = 10 +anchor_right = 1.0 +offset_left = 63.0 +offset_right = -6.0 +offset_bottom = 16.0 +grow_horizontal = 2 +theme_override_colors/font_color = Color(0, 0.192157, 0.223529, 1) +theme_override_fonts/font = ExtResource("3") +theme_override_font_sizes/font_size = 9 +text = "de,en,es,jp,pt,ru" +horizontal_alignment = 2 + +[node name="SpeakerLabel" type="Label" parent="."] +layout_mode = 0 +offset_left = 12.0 +offset_top = 11.0 +offset_right = 61.0 +offset_bottom = 31.0 +theme_override_colors/font_color = Color(0.2, 0.2, 0.2, 1) +theme_override_fonts/font = ExtResource("3") +theme_override_font_sizes/font_size = 10 +text = "Speaker:" + +[node name="SpeakerNameLabel" type="Label" parent="."] +layout_mode = 1 +anchors_preset = -1 +anchor_right = 0.5 +offset_left = 60.0 +offset_top = 12.0 +offset_right = 24.0 +offset_bottom = 31.0 +theme_override_colors/font_color = Color(0, 0.192157, 0.223529, 1) +theme_override_fonts/font = ExtResource("17") +theme_override_font_sizes/font_size = 12 +text = "Speaker" + +[node name="SpeakerVarLabel" type="Label" parent="."] +layout_mode = 1 +anchors_preset = 5 +anchor_left = 0.5 +anchor_right = 0.5 +offset_left = 32.0 +offset_top = 11.0 +offset_right = 81.0 +offset_bottom = 31.0 +grow_horizontal = 2 +theme_override_colors/font_color = Color(0.2, 0.2, 0.2, 1) +theme_override_fonts/font = ExtResource("3") +theme_override_font_sizes/font_size = 10 +text = "Variant:" + +[node name="SpeakerVariantLabel" type="Label" parent="."] +layout_mode = 1 +anchors_preset = -1 +anchor_left = 0.5 +anchor_right = 1.0 +offset_left = 70.0 +offset_top = 9.5796 +offset_right = -12.0 +offset_bottom = 32.5796 +theme_override_colors/font_color = Color(0, 0.192157, 0.223529, 1) +theme_override_fonts/font = ExtResource("3") +theme_override_font_sizes/font_size = 12 +text = "Variant" + +[node name="VoiceLabel" type="Label" parent="."] +layout_mode = 0 +offset_left = 12.0 +offset_top = 24.0 +offset_right = 61.0 +offset_bottom = 44.0 +theme_override_colors/font_color = Color(0.2, 0.2, 0.2, 1) +theme_override_fonts/font = ExtResource("3") +theme_override_font_sizes/font_size = 10 +text = "Voice clip:" + +[node name="VoiceFileLabel" type="Label" parent="."] +layout_mode = 1 +anchors_preset = 10 +anchor_right = 1.0 +offset_left = 60.0 +offset_top = 24.0 +offset_right = -16.0 +offset_bottom = 44.0 +grow_horizontal = 2 +theme_override_colors/font_color = Color(0.2, 0.373333, 0.4, 1) +theme_override_fonts/font = ExtResource("3") +theme_override_font_sizes/font_size = 10 +text = "Speaker" + +[node name="Panel" type="Panel" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = 5.0 +offset_top = 41.0 +offset_right = -5.0 +offset_bottom = -5.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +theme_override_styles/panel = SubResource("1") + +[node name="MessageLabel" type="RichTextLabel" parent="Panel"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = 2.0 +offset_top = 2.0 +offset_right = -2.0 +offset_bottom = -2.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +theme_override_colors/default_color = Color(0, 0, 0, 1) +theme_override_fonts/normal_font = ExtResource("5_c4t4d") +theme_override_fonts/italics_font = ExtResource("5") +theme_override_fonts/bold_italics_font = ExtResource("6") +theme_override_fonts/bold_font = ExtResource("7") +theme_override_font_sizes/bold_italics_font_size = 12 +theme_override_font_sizes/italics_font_size = 10 +theme_override_font_sizes/mono_font_size = 10 +theme_override_font_sizes/normal_font_size = 10 +theme_override_font_sizes/bold_font_size = 12 +theme_override_styles/focus = ExtResource("15") +theme_override_styles/normal = ExtResource("15") +bbcode_enabled = true +text = "Lorem ipsum +more lore ipsum +Lorem ipsum for the whole family!" + +[node name="HideOnEndLabel" type="Label" parent="."] +layout_mode = 1 +anchors_preset = 3 +anchor_left = 1.0 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = -57.0 +offset_top = -18.0 +offset_right = -6.0 +offset_bottom = 2.0 +grow_horizontal = 0 +grow_vertical = 0 +theme_override_colors/font_color = Color(0.2, 0.2, 0.2, 1) +theme_override_fonts/font = SubResource("FontVariation_wa622") +theme_override_font_sizes/font_size = 9 +text = "Hide after" +horizontal_alignment = 2 + +[node name="DragDropLine" type="ColorRect" parent="."] +visible = false +layout_mode = 1 +anchors_preset = 10 +anchor_right = 1.0 +offset_top = -2.0 +offset_bottom = 2.0 +grow_horizontal = 2 +color = Color(1, 0, 0, 1) + +[connection signal="gui_input" from="." to="." method="_on_DialogNodeItem_gui_input"] +[connection signal="mouse_entered" from="." to="." method="_on_mouse_entered"] +[connection signal="mouse_exited" from="." to="." method="_on_mouse_exited"] diff --git a/addons/madtalk/components/DialogNodeItem_option.gd b/addons/madtalk/components/DialogNodeItem_option.gd new file mode 100644 index 0000000..98920b0 --- /dev/null +++ b/addons/madtalk/components/DialogNodeItem_option.gd @@ -0,0 +1,12 @@ +@tool +extends Control +class_name DialogNodeItem_option + +@export var text: String = "": set = text_set + +func text_set(value: String) -> void: + text = value + get_node("OptionLabel").text = value + +func set_conditional(is_conditional: bool) -> void: + get_node("Condition").visible = is_conditional diff --git a/addons/madtalk/components/DialogNodeItem_option.gd.uid b/addons/madtalk/components/DialogNodeItem_option.gd.uid new file mode 100644 index 0000000..e0ece9c --- /dev/null +++ b/addons/madtalk/components/DialogNodeItem_option.gd.uid @@ -0,0 +1 @@ +uid://djr5ixsiysemo diff --git a/addons/madtalk/components/DialogNodeItem_option.tscn b/addons/madtalk/components/DialogNodeItem_option.tscn new file mode 100644 index 0000000..598b942 --- /dev/null +++ b/addons/madtalk/components/DialogNodeItem_option.tscn @@ -0,0 +1,47 @@ +[gd_scene load_steps=5 format=3 uid="uid://y6s6jwiawub6"] + +[ext_resource type="FontFile" path="res://addons/madtalk/fonts/FreeSans_bold_small.tres" id="1"] +[ext_resource type="Texture2D" uid="uid://3tpmqrmfqg6t" path="res://addons/madtalk/images/header_option.png" id="2"] +[ext_resource type="Script" uid="uid://djr5ixsiysemo" path="res://addons/madtalk/components/DialogNodeItem_option.gd" id="3"] +[ext_resource type="Texture2D" uid="uid://7ohtlu4cvfph" path="res://addons/madtalk/images/header_option_condition.png" id="4"] + +[node name="DialogNodeItem_option" type="Control"] +custom_minimum_size = Vector2(0, 34) +layout_mode = 3 +anchors_preset = 0 +offset_left = 16.0 +offset_top = 150.0 +offset_right = 284.0 +offset_bottom = 184.0 +script = ExtResource("3") + +[node name="BG" type="TextureRect" parent="."] +layout_mode = 0 +offset_top = 1.0 +offset_right = 128.0 +offset_bottom = 33.0 +texture = ExtResource("2") + +[node name="OptionLabel" type="Label" parent="."] +auto_translate_mode = 2 +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = 29.0 +offset_top = 14.0 +offset_right = -2.0 +offset_bottom = -1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_fonts/font = ExtResource("1") +theme_override_font_sizes/font_size = 12 + +[node name="Condition" type="TextureRect" parent="."] +visible = false +layout_mode = 0 +offset_left = 9.0 +offset_top = 18.0 +offset_right = 21.0 +offset_bottom = 30.0 +texture = ExtResource("4") diff --git a/addons/madtalk/components/DialogNodeOptionsButton.gd b/addons/madtalk/components/DialogNodeOptionsButton.gd new file mode 100644 index 0000000..3c7ea05 --- /dev/null +++ b/addons/madtalk/components/DialogNodeOptionsButton.gd @@ -0,0 +1,36 @@ +@tool +extends Control + +const MIN_SIZE_CLOSED := 36 +const MIN_SIZE_OPEN := 160 + +var connected_id = -1 + +var item_data = null # Reference, not a copy - DO NOT MODIFY IN THIS SCRIPT (use as if read-only) + +@onready var cond_panel = $Condition +@onready var cond_op_button = $Condition/ButtonOperation +@onready var cond_auto_disable = $Condition/BtnOptionAutodisable +@onready var inactive_mode = $Condition/BtnOptionInactiveMode + +func _ready(): + cond_panel.visible = false + update_condition_visible() + +func _on_BtnOptionCondition_pressed() -> void: + cond_panel.visible = not cond_panel.visible + update_condition_visible() + +func update_condition_visible() -> void: + custom_minimum_size.y = MIN_SIZE_OPEN if cond_panel.visible else MIN_SIZE_CLOSED + size.y = custom_minimum_size.y + +func select_operator(op_text: String) -> void: + for i in range(cond_op_button.get_item_count()): + if cond_op_button.get_item_text(i) == op_text: + cond_op_button.select(i) + return + cond_op_button.select(0) + +func get_selected_operator() -> String: + return cond_op_button.get_item_text(cond_op_button.selected) diff --git a/addons/madtalk/components/DialogNodeOptionsButton.gd.uid b/addons/madtalk/components/DialogNodeOptionsButton.gd.uid new file mode 100644 index 0000000..826e5e7 --- /dev/null +++ b/addons/madtalk/components/DialogNodeOptionsButton.gd.uid @@ -0,0 +1 @@ +uid://h51781skrpvi diff --git a/addons/madtalk/components/DialogNodeOptionsButton.tscn b/addons/madtalk/components/DialogNodeOptionsButton.tscn new file mode 100644 index 0000000..96e6275 --- /dev/null +++ b/addons/madtalk/components/DialogNodeOptionsButton.tscn @@ -0,0 +1,305 @@ +[gd_scene load_steps=11 format=3 uid="uid://c5mhhbui1jcfd"] + +[ext_resource type="FontFile" uid="uid://b38okvijpcxmv" path="res://addons/madtalk/fonts/FreeSans_smal.tres" id="1"] +[ext_resource type="Texture2D" uid="uid://dgal43srcee1q" path="res://addons/madtalk/images/panel_bg.png" id="2"] +[ext_resource type="StyleBox" uid="uid://dk8cb0qbpag2d" path="res://addons/madtalk/components/resources/InputStyle_grey.tres" id="3"] +[ext_resource type="Texture2D" uid="uid://dxgulu8lvnwrr" path="res://addons/madtalk/images/icon_x.png" id="4"] +[ext_resource type="Texture2D" uid="uid://6iclvaqbm5dl" path="res://addons/madtalk/images/icon_up.png" id="5"] +[ext_resource type="Texture2D" uid="uid://c4xg8811uuoq6" path="res://addons/madtalk/images/icon_down.png" id="6"] +[ext_resource type="Script" uid="uid://h51781skrpvi" path="res://addons/madtalk/components/DialogNodeOptionsButton.gd" id="7"] +[ext_resource type="FontFile" path="res://addons/madtalk/fonts/FreeSans.tres" id="8"] +[ext_resource type="Texture2D" uid="uid://cxwd6i3apjou8" path="res://addons/madtalk/images/icon_opt_condition.png" id="9"] +[ext_resource type="FontFile" path="res://addons/madtalk/fonts/FreeSans_bold_small.tres" id="9_4brdj"] + +[node name="DialogNodeOptionsButton" type="Control"] +clip_contents = true +custom_minimum_size = Vector2(0, 160) +layout_mode = 3 +anchors_preset = 0 +offset_right = 486.0 +offset_bottom = 36.0 +script = ExtResource("7") + +[node name="Panel" type="NinePatchRect" parent="."] +layout_mode = 1 +anchors_preset = 10 +anchor_right = 1.0 +offset_bottom = 36.0 +grow_horizontal = 2 +texture = ExtResource("2") +patch_margin_left = 12 +patch_margin_top = 12 +patch_margin_right = 12 +patch_margin_bottom = 12 + +[node name="ButtonTextEdit" type="LineEdit" parent="Panel"] +layout_mode = 0 +anchor_right = 1.0 +offset_left = 42.0 +offset_top = 5.0 +offset_right = -77.0 +offset_bottom = 31.0 +theme_override_colors/font_color = Color(0, 0.160784, 0.180392, 1) +theme_override_fonts/font = ExtResource("1") +theme_override_font_sizes/font_size = 12 +theme_override_styles/focus = ExtResource("3") +theme_override_styles/normal = ExtResource("3") +placeholder_text = "Type button text here" + +[node name="BtnUp" type="TextureButton" parent="Panel"] +modulate = Color(0.207843, 0.207843, 0.207843, 1) +layout_mode = 0 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = -73.0 +offset_top = 9.0 +offset_right = -57.0 +offset_bottom = 25.0 +texture_normal = ExtResource("5") + +[node name="BtnDown" type="TextureButton" parent="Panel"] +modulate = Color(0.207843, 0.207843, 0.207843, 1) +layout_mode = 0 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = -53.0 +offset_top = 10.0 +offset_right = -37.0 +offset_bottom = 26.0 +texture_normal = ExtResource("6") + +[node name="BtnRemove" type="TextureButton" parent="Panel"] +modulate = Color(0.207843, 0.207843, 0.207843, 1) +layout_mode = 0 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = -25.0 +offset_top = 10.0 +offset_right = -9.0 +offset_bottom = 26.0 +texture_normal = ExtResource("4") + +[node name="Condition" type="NinePatchRect" parent="."] +layout_mode = 1 +anchors_preset = 10 +anchor_right = 1.0 +offset_top = 33.0 +offset_bottom = 159.0 +grow_horizontal = 2 +texture = ExtResource("2") +region_rect = Rect2(0, 4, 128, 124) +patch_margin_left = 12 +patch_margin_top = 12 +patch_margin_right = 12 +patch_margin_bottom = 12 + +[node name="Label" type="Label" parent="Condition"] +layout_mode = 0 +offset_left = 8.0 +offset_top = 1.0 +offset_right = 148.0 +offset_bottom = 16.0 +theme_override_colors/font_color = Color(0.32, 0.32, 0.32, 1) +theme_override_fonts/font = ExtResource("9_4brdj") +theme_override_font_sizes/font_size = 11 +text = "When is this option active?" + +[node name="BtnOptionAutodisable" type="OptionButton" parent="Condition"] +layout_mode = 1 +anchors_preset = 1 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = -297.0 +offset_top = 53.0 +offset_right = -17.0 +offset_bottom = 81.0 +grow_horizontal = 0 +theme_override_colors/font_color = Color(0.195545, 0.195545, 0.195545, 1) +theme_override_fonts/font = ExtResource("8") +theme_override_font_sizes/font_size = 12 +flat = true +selected = 0 +item_count = 3 +popup/item_0/text = "Do not auto-disable" +popup/item_0/id = 0 +popup/item_1/text = "Auto-disable, reset when starting new dialog" +popup/item_1/id = 1 +popup/item_2/text = "Auto-disable permanently" +popup/item_2/id = 2 +metadata/_edit_group_ = true + +[node name="Panel" type="Panel" parent="Condition/BtnOptionAutodisable"] +show_behind_parent = true +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +theme_override_styles/panel = ExtResource("3") + +[node name="Label5" type="Label" parent="Condition/BtnOptionAutodisable"] +layout_mode = 0 +offset_left = -173.0 +offset_top = -1.0 +offset_right = -3.0 +offset_bottom = 29.0 +theme_override_colors/font_color = Color(0.32, 0.32, 0.32, 1) +theme_override_constants/line_spacing = -8 +theme_override_fonts/font = ExtResource("1") +theme_override_font_sizes/font_size = 11 +text = "Automatically disable after this +option is selected:" +vertical_alignment = 1 + +[node name="VariableEdit" type="LineEdit" parent="Condition"] +layout_mode = 1 +anchors_preset = 10 +anchor_right = 1.0 +offset_left = 118.0 +offset_top = 21.0 +offset_right = -225.0 +offset_bottom = 48.0 +grow_horizontal = 2 +theme_override_colors/font_color = Color(0, 0.160784, 0.180392, 1) +theme_override_fonts/font = ExtResource("1") +theme_override_font_sizes/font_size = 11 +theme_override_styles/focus = ExtResource("3") +theme_override_styles/normal = ExtResource("3") +placeholder_text = "Type variable name here" + +[node name="Label2" type="Label" parent="Condition/VariableEdit"] +layout_mode = 0 +offset_left = -102.0 +offset_top = -1.0 +offset_right = -1.0 +offset_bottom = 18.0 +theme_override_colors/font_color = Color(0.32, 0.32, 0.32, 1) +theme_override_fonts/font = ExtResource("1") +theme_override_font_sizes/font_size = 11 +text = "Variable condition:" + +[node name="Label3" type="Label" parent="Condition/VariableEdit/Label2"] +layout_mode = 0 +offset_top = 12.0 +offset_right = 101.0 +offset_bottom = 31.0 +theme_override_colors/font_color = Color(0.32, 0.32, 0.32, 1) +theme_override_fonts/font = ExtResource("1") +theme_override_font_sizes/font_size = 9 +text = "(leave blank for always)" + +[node name="ButtonOperation" type="OptionButton" parent="Condition"] +layout_mode = 1 +anchors_preset = 1 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = -219.0 +offset_top = 20.0 +offset_right = -168.0 +offset_bottom = 48.0 +grow_horizontal = 0 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_fonts/font = ExtResource("8") +theme_override_font_sizes/font_size = 12 +flat = true +selected = 0 +item_count = 6 +popup/item_0/text = "=" +popup/item_0/id = 0 +popup/item_1/text = "!=" +popup/item_1/id = 1 +popup/item_2/text = ">" +popup/item_2/id = 2 +popup/item_3/text = ">=" +popup/item_3/id = 3 +popup/item_4/text = "<" +popup/item_4/id = 4 +popup/item_5/text = "<=" +popup/item_5/id = 5 + +[node name="ValueEdit" type="LineEdit" parent="Condition"] +layout_mode = 1 +anchors_preset = 1 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = -166.0 +offset_top = 21.0 +offset_right = -17.0 +offset_bottom = 48.0 +grow_horizontal = 0 +theme_override_colors/font_color = Color(0, 0.160784, 0.180392, 1) +theme_override_fonts/font = ExtResource("1") +theme_override_font_sizes/font_size = 11 +theme_override_styles/focus = ExtResource("3") +theme_override_styles/normal = ExtResource("3") +placeholder_text = "Value or variable name" + +[node name="BtnOptionInactiveMode" type="OptionButton" parent="Condition"] +layout_mode = 1 +anchors_preset = 1 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = -297.0 +offset_top = 90.0 +offset_right = -17.0 +offset_bottom = 118.0 +grow_horizontal = 0 +theme_override_colors/font_color = Color(0.195545, 0.195545, 0.195545, 1) +theme_override_fonts/font = ExtResource("8") +theme_override_font_sizes/font_size = 12 +flat = true +selected = 0 +item_count = 2 +popup/item_0/text = "Show as a disabled item" +popup/item_0/id = 0 +popup/item_1/text = "Hide the item entirely" +popup/item_1/id = 1 +metadata/_edit_group_ = true + +[node name="Panel" type="Panel" parent="Condition/BtnOptionInactiveMode"] +show_behind_parent = true +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +theme_override_styles/panel = ExtResource("3") + +[node name="Label4" type="Label" parent="Condition/BtnOptionInactiveMode"] +layout_mode = 0 +offset_left = -174.0 +offset_top = 7.0 +offset_right = -11.0 +offset_bottom = 22.0 +theme_override_colors/font_color = Color(0.32, 0.32, 0.32, 1) +theme_override_fonts/font = ExtResource("9_4brdj") +theme_override_font_sizes/font_size = 11 +text = "When this option is NOT active:" + +[node name="SeparatorLine" type="ColorRect" parent="Condition"] +modulate = Color(1, 1, 1, 0.301961) +layout_mode = 1 +anchors_preset = 10 +anchor_right = 1.0 +offset_left = 8.0 +offset_top = 85.0 +offset_right = -8.0 +offset_bottom = 86.0 +grow_horizontal = 2 +mouse_filter = 2 +color = Color(0.282353, 0.258824, 0.301961, 1) + +[node name="BtnOptionCondition" type="Button" parent="."] +layout_mode = 0 +offset_left = 7.0 +offset_top = 6.0 +offset_right = 35.0 +offset_bottom = 28.0 +icon = ExtResource("9") +flat = true + +[connection signal="pressed" from="BtnOptionCondition" to="." method="_on_BtnOptionCondition_pressed"] diff --git a/addons/madtalk/components/DialogNode_DialogOptions.gd b/addons/madtalk/components/DialogNode_DialogOptions.gd new file mode 100644 index 0000000..dc8b321 --- /dev/null +++ b/addons/madtalk/components/DialogNode_DialogOptions.gd @@ -0,0 +1,258 @@ +@tool +extends Window + +signal saved(source_dialog) +signal tab_changed + +const DEFAULT_TAB_TITLE = "Default" + +var button_template = preload("res://addons/madtalk/components/DialogNodeOptionsButton.tscn") + +@onready var buttonlist = get_node("Panel/ScrollContainer/VBox") + +@onready var locale_bar := $Panel/LocaleBar +@onready var panel_new_locale := $Panel/PanelNewLocale +@onready var locale_edit := $Panel/PanelNewLocale/LocaleEdit + +var data_resource # holds reference to the node data + +# This is a Dictonary of Dictionaries +# btn_temporary_locales { +# button_node: { +# "": "default text", +# "locale": "text", +# ... +# } +# } +var btn_temporary_locales: Dictionary = {} +var locale_list: Array = [] + +var current_locale := "" + +var is_updating_tabs := false + +func _ready() -> void: + pass + # Hides the close button + #get_close_button().hide() + +func open(data: DialogNodeData) -> void: + is_updating_tabs = true + + data_resource = data + btn_temporary_locales.clear() + locale_list.clear() + locale_list.append("") + + # Remove previous items + var old_items = buttonlist.get_children() + for item in old_items: + buttonlist.remove_child(item) + item.queue_free() + + # Add new items + for item in data.options: + add_item(item) + for locale in item.text_locales: + if not locale in locale_list: + locale_list.append(locale) + + locale_bar.clear_tabs() + locale_bar.add_tab(DEFAULT_TAB_TITLE) + for tab_name in locale_list: + if tab_name != "": + locale_bar.add_tab(tab_name) + locale_bar.current_tab = 0 + + current_locale = "" + + is_updating_tabs = false + + popup_centered() + + + +func add_item(item_data: DialogNodeOptionData) -> void: + var new_btn = button_template.instantiate() + new_btn.item_data = item_data # Should be used as read-only there + buttonlist.add_child(new_btn) + + btn_temporary_locales[new_btn] = { + "": item_data.text + } + for locale in item_data.text_locales: + btn_temporary_locales[new_btn][locale] = item_data.text_locales[locale] + + new_btn.connected_id = item_data.connected_to_id + new_btn.get_node("Panel/ButtonTextEdit").text = item_data.text + new_btn.get_node("Condition").visible = item_data.is_conditional + new_btn.update_condition_visible() + if item_data.is_conditional: + new_btn.get_node("Condition/VariableEdit").text = item_data.condition_variable + new_btn.get_node("Condition/ValueEdit").text = item_data.condition_value + new_btn.select_operator(item_data.condition_operator) + new_btn.get_node("Condition/BtnOptionAutodisable").selected = int(item_data.autodisable_mode) + new_btn.get_node("Condition/BtnOptionInactiveMode").selected = int(item_data.inactive_mode) + else: + new_btn.get_node("Condition/VariableEdit").text = "" + new_btn.get_node("Condition/ValueEdit").text = "" + new_btn.select_operator("=") + new_btn.get_node("Condition/BtnOptionAutodisable").selected = 0 + new_btn.get_node("Condition/BtnOptionInactiveMode").selected = 0 + + + new_btn.get_node("Panel/BtnUp").connect("pressed", Callable(self, "_on_Button_BtnUp").bind(new_btn)) + new_btn.get_node("Panel/BtnDown").connect("pressed", Callable(self, "_on_Button_BtnDown").bind(new_btn)) + new_btn.get_node("Panel/BtnRemove").connect("pressed", Callable(self, "_on_Button_BtnRemove").bind(new_btn)) + + +func load_items_from_locale(locale: String): + var items = buttonlist.get_children() + for btn_item in items: + if btn_item in btn_temporary_locales: + var locale_data = btn_temporary_locales[btn_item] + + if locale in locale_data: + btn_item.get_node("Panel/ButtonTextEdit").text = locale_data[locale] + else: + btn_item.get_node("Panel/ButtonTextEdit").text = "" + + else: + btn_item.get_node("Panel/ButtonTextEdit").text = "" + + +func store_items_into_locale(locale: String): + var items = buttonlist.get_children() + for btn_item in items: + if not btn_item in btn_temporary_locales: + btn_temporary_locales[btn_item] = {"":""} + + btn_temporary_locales[btn_item][locale] = btn_item.get_node("Panel/ButtonTextEdit").text + + +func get_used_locales() -> Array: + # Operates on temporary storage + var used_locales := [""] # default can never be erased + var items = buttonlist.get_children() + for btn_item in items: + if btn_item in btn_temporary_locales: + for locale in btn_temporary_locales[btn_item]: + if btn_temporary_locales[btn_item][locale] != "": + if not locale in used_locales: + used_locales.append(locale) + + return used_locales + + +func save_button_locale_data(): + store_items_into_locale(current_locale) + locale_list.clear() + var used_locales: Array = get_used_locales() + + var items = buttonlist.get_children() + for btn_item in items: + if btn_item in btn_temporary_locales: + btn_item.item_data.text = btn_temporary_locales[btn_item][""] + var locale_dict := {} + for locale in btn_temporary_locales[btn_item]: + if locale in used_locales: + locale_dict[locale] = btn_temporary_locales[btn_item][locale] + if not locale in locale_list: + locale_list.append(locale) + btn_item.item_data.text_locales = locale_dict + + + +func _on_BtnAdd_pressed() -> void: + add_item(DialogNodeOptionData.new()) + + +func _on_Button_BtnUp(button) -> void: + var current_order = button.get_index() + if current_order > 0: + buttonlist.move_child(button, current_order-1) + +func _on_Button_BtnDown(button) -> void: + var current_order = button.get_index() + buttonlist.move_child(button, current_order+1) + +func _on_Button_BtnRemove(button) -> void: + button.hide() + button.queue_free() + + + +func _on_BtnCancel_pressed() -> void: + hide() + queue_free() + + +func _on_BtnSave_pressed() -> void: + save_button_locale_data() # Updates locale_list + + var new_items = buttonlist.get_children() + + # If we reduced the number of options, delete unused resources + #if new_items.size() < data_resource.options.size(): + #data_resource.options.resize(new_items.size()) + # + # # If we increased the number of options, create new resources + #while new_items.size() > data_resource.options.size(): + #data_resource.options.append( DialogNodeOptionData.new() ) + + data_resource.options = [] + + # Set resource to new data + for i in range(new_items.size()): + var item: DialogNodeOptionData = new_items[i].item_data + item.connected_to_id = new_items[i].connected_id + item.is_conditional = new_items[i].get_node("Condition").visible + if item.is_conditional: + item.condition_variable = new_items[i].get_node("Condition/VariableEdit").text + item.condition_operator = new_items[i].get_selected_operator() + item.condition_value = new_items[i].get_node("Condition/ValueEdit").text + item.autodisable_mode = new_items[i].get_node("Condition/BtnOptionAutodisable").selected + item.inactive_mode = new_items[i].get_node("Condition/BtnOptionInactiveMode").selected + else: + item.condition_variable = "" + item.condition_operator = "=" + item.condition_value = "" + item.autodisable_mode = item.AutodisableModes.NEVER + item.inactive_mode = item.InactiveMode.DISABLED + + data_resource.options.append(item) + + + emit_signal("saved", self) + hide() + queue_free() + + +func _on_locale_bar_tab_changed(tab: int) -> void: + if is_updating_tabs: + return + + store_items_into_locale(current_locale) + current_locale = locale_bar.get_tab_title(tab) + if current_locale == DEFAULT_TAB_TITLE: + current_locale = "" + load_items_from_locale(current_locale) + + tab_changed.emit() + + +func _on_btn_locale_new_pressed() -> void: + locale_edit.text = "" + panel_new_locale.show() + + +func _on_btn_locale_new_cancel_pressed() -> void: + panel_new_locale.hide() + + +func _on_btn_locale_new_confirm_pressed() -> void: + var new_locale = locale_edit.text + if not new_locale in locale_list: + locale_list.append(new_locale) + locale_bar.add_tab(new_locale) + panel_new_locale.hide() diff --git a/addons/madtalk/components/DialogNode_DialogOptions.gd.uid b/addons/madtalk/components/DialogNode_DialogOptions.gd.uid new file mode 100644 index 0000000..9cfc993 --- /dev/null +++ b/addons/madtalk/components/DialogNode_DialogOptions.gd.uid @@ -0,0 +1 @@ +uid://dg6brgs82d11e diff --git a/addons/madtalk/components/DialogNode_DialogOptions.tscn b/addons/madtalk/components/DialogNode_DialogOptions.tscn new file mode 100644 index 0000000..af2015d --- /dev/null +++ b/addons/madtalk/components/DialogNode_DialogOptions.tscn @@ -0,0 +1,252 @@ +[gd_scene load_steps=8 format=3 uid="uid://bwa38eqib7e25"] + +[ext_resource type="FontFile" uid="uid://b38okvijpcxmv" path="res://addons/madtalk/fonts/FreeSans_smal.tres" id="1"] +[ext_resource type="Script" uid="uid://dg6brgs82d11e" path="res://addons/madtalk/components/DialogNode_DialogOptions.gd" id="2"] +[ext_resource type="Texture2D" uid="uid://xt0wkyrex027" path="res://addons/madtalk/images/icon_plus.png" id="3"] +[ext_resource type="StyleBox" path="res://addons/madtalk/components/resources/ButtonStyle.tres" id="4_lns1l"] +[ext_resource type="PackedScene" uid="uid://c5mhhbui1jcfd" path="res://addons/madtalk/components/DialogNodeOptionsButton.tscn" id="5"] +[ext_resource type="PackedScene" uid="uid://dyepkyvo6sodg" path="res://addons/madtalk/components/BtnTip.tscn" id="5_jiu2v"] +[ext_resource type="StyleBox" path="res://addons/madtalk/components/resources/PanelStyle.tres" id="7_m44w6"] + +[node name="DialogOptions" type="Window"] +initial_position = 2 +size = Vector2i(650, 450) +transient = true +exclusive = true +popup_window = true +script = ExtResource("2") + +[node name="Panel" type="Panel" parent="."] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="HelpLabel" type="Label" parent="Panel"] +layout_mode = 0 +offset_left = 16.0 +offset_top = 11.0 +offset_right = 616.0 +offset_bottom = 91.0 +theme_override_constants/line_spacing = 0 +theme_override_fonts/font = ExtResource("1") +theme_override_font_sizes/font_size = 12 +text = "Options below will be presented as buttons in the end of this dialog sequence. + +If option buttons are not desired, just leave this list empty. A dialog sequence without buttons will have a default leaving output. If the default leaving output is not connected, the dialog will end." +autowrap_mode = 3 + +[node name="TitleLabel" type="Label" parent="Panel"] +layout_mode = 0 +offset_left = 16.0 +offset_top = 105.55 +offset_right = 57.0 +offset_bottom = 125.55 +theme_override_fonts/font = ExtResource("1") +theme_override_font_sizes/font_size = 12 +text = "Buttons" + +[node name="BtnAdd" type="TextureButton" parent="Panel"] +layout_mode = 1 +anchors_preset = 1 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = -38.875 +offset_top = 105.55 +offset_right = -22.875 +offset_bottom = 121.55 +grow_horizontal = 0 +texture_normal = ExtResource("3") + +[node name="LabelLocale" type="Label" parent="Panel"] +modulate = Color(1, 1, 1, 0.501961) +layout_mode = 0 +offset_left = 24.13 +offset_top = 136.205 +offset_right = 63.13 +offset_bottom = 159.205 +theme_override_fonts/font = ExtResource("1") +theme_override_font_sizes/font_size = 10 +text = "Locale:" + +[node name="LocaleBar" type="TabBar" parent="Panel"] +layout_mode = 1 +anchors_preset = 10 +anchor_right = 1.0 +offset_left = 62.095 +offset_top = 134.045 +offset_right = -123.905 +offset_bottom = 156.045 +grow_horizontal = 2 +focus_mode = 0 +theme_override_font_sizes/font_size = 10 +current_tab = 0 +tab_count = 1 +tab_0/title = "Default" +tab_0/tooltip = "Default locale. Will also be used if the user's locale is not in this list." + +[node name="BtnLocaleNew" type="Button" parent="Panel"] +layout_mode = 1 +anchors_preset = 1 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = -122.0 +offset_top = 133.92 +offset_right = -44.0 +offset_bottom = 155.92 +grow_horizontal = 0 +focus_mode = 0 +theme_override_fonts/font = ExtResource("1") +theme_override_font_sizes/font_size = 10 +theme_override_styles/normal = ExtResource("4_lns1l") +text = "New Locale" + +[node name="TipLocale" parent="Panel" instance=ExtResource("5_jiu2v")] +layout_mode = 1 +anchors_preset = 1 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = -36.0627 +offset_top = 130.965 +offset_right = -8.06274 +offset_bottom = 154.965 +grow_horizontal = 0 +tip_title = "Message Locale" +tip_text = "You can optionally specify different option titles for internationalization. MadTalk does not use Godot's CSV system for localizing dialog messages because it would be very confusing to edit dialog diagrams seeing message IDs instead of actual text, and also allows exporting and importing dialog text from other formats. + +Creating locale versions is optional and is done PER ITEM. The default tab should be the main language of your game, and other tabs are alternate (localized) translations. If a specific option title doesn't have a version for the locale the player is using, the default one is used. You don't have to create any lists of available locales anywhere. To remove a locale tab from a message, simply erase the text under all items in that tab and save. + +To configure which locale MadTalk will use, see the help message for localizing message items." + +[node name="ScrollContainer" type="ScrollContainer" parent="Panel"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = 12.0 +offset_top = 156.0 +offset_right = -12.0 +offset_bottom = -39.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="VBox" type="VBoxContainer" parent="Panel/ScrollContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="DialogNodeOptionsButton2" parent="Panel/ScrollContainer/VBox" instance=ExtResource("5")] +custom_minimum_size = Vector2(0, 36) +layout_mode = 2 + +[node name="PanelNewLocale" type="Panel" parent="Panel"] +visible = false +layout_mode = 1 +anchors_preset = 1 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = -211.0 +offset_top = 133.855 +offset_right = -4.0 +offset_bottom = 228.855 +grow_horizontal = 0 +theme_override_styles/panel = ExtResource("7_m44w6") + +[node name="Label" type="Label" parent="Panel/PanelNewLocale"] +layout_mode = 0 +offset_left = 7.0 +offset_top = 2.0 +offset_right = 76.0 +offset_bottom = 25.0 +theme_override_fonts/font = ExtResource("1") +theme_override_font_sizes/font_size = 12 +text = "Create new locale for this menu:" + +[node name="LocaleEdit" type="LineEdit" parent="Panel/PanelNewLocale"] +layout_mode = 1 +anchors_preset = -1 +anchor_right = 0.5 +offset_left = 8.0 +offset_top = 24.0 +offset_right = 93.5 +offset_bottom = 55.0 +theme_override_colors/font_placeholder_color = Color(0.299547, 0.299547, 0.299547, 1) +theme_override_fonts/font = ExtResource("1") +theme_override_font_sizes/font_size = 14 +placeholder_text = "locale (e.g. \"es\")" + +[node name="BtnLocaleNewConfirm" type="Button" parent="Panel/PanelNewLocale"] +layout_mode = 1 +anchors_preset = 1 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = -152.0 +offset_top = 63.0 +offset_right = -82.0 +offset_bottom = 87.0 +grow_horizontal = 0 +focus_mode = 0 +theme_override_fonts/font = ExtResource("1") +theme_override_font_sizes/font_size = 12 +theme_override_styles/normal = ExtResource("4_lns1l") +text = "Create" + +[node name="BtnLocaleNewCancel" type="Button" parent="Panel/PanelNewLocale"] +layout_mode = 1 +anchors_preset = 1 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = -77.0 +offset_top = 63.0 +offset_right = -7.0 +offset_bottom = 87.0 +grow_horizontal = 0 +focus_mode = 0 +theme_override_fonts/font = ExtResource("1") +theme_override_font_sizes/font_size = 12 +theme_override_styles/normal = ExtResource("4_lns1l") +text = "Cancel" + +[node name="BottomBar" type="Control" parent="."] +layout_mode = 3 +anchors_preset = 12 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_top = -35.0 +offset_bottom = -11.0 +grow_horizontal = 2 +grow_vertical = 0 + +[node name="BtnSave" type="Button" parent="BottomBar"] +layout_mode = 0 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -100.5 +offset_top = -10.0 +offset_right = -59.5 +offset_bottom = 10.0 +focus_mode = 0 +text = "OK" + +[node name="BtnCancel" type="Button" parent="BottomBar"] +layout_mode = 0 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = 53.0 +offset_top = -10.0 +offset_right = 107.0 +offset_bottom = 10.0 +focus_mode = 0 +text = "Cancel" + +[connection signal="pressed" from="Panel/BtnAdd" to="." method="_on_BtnAdd_pressed"] +[connection signal="tab_changed" from="Panel/LocaleBar" to="." method="_on_locale_bar_tab_changed"] +[connection signal="pressed" from="Panel/BtnLocaleNew" to="." method="_on_btn_locale_new_pressed"] +[connection signal="pressed" from="Panel/PanelNewLocale/BtnLocaleNewConfirm" to="." method="_on_btn_locale_new_confirm_pressed"] +[connection signal="pressed" from="Panel/PanelNewLocale/BtnLocaleNewCancel" to="." method="_on_btn_locale_new_cancel_pressed"] +[connection signal="pressed" from="BottomBar/BtnSave" to="." method="_on_BtnSave_pressed"] +[connection signal="pressed" from="BottomBar/BtnCancel" to="." method="_on_BtnCancel_pressed"] diff --git a/addons/madtalk/components/DialogSearchInspectorSheetIDField.tscn b/addons/madtalk/components/DialogSearchInspectorSheetIDField.tscn new file mode 100644 index 0000000..cc7e3b6 --- /dev/null +++ b/addons/madtalk/components/DialogSearchInspectorSheetIDField.tscn @@ -0,0 +1,29 @@ +[gd_scene load_steps=0 format=3 uid="uid://b7ojwbheitven"] + +[node name="DialogSearchInspectorSheetIDField" type="Control"] +custom_minimum_size = Vector2(0, 24) +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="ValueLineEdit" type="LineEdit" parent="."] +layout_mode = 0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_right = -26.0 +text = "dfgsdfgs" +placeholder_text = "MadTalk Sheet ID" +editable = false +caret_blink = true +caret_blink_interval = 0.5 + +[node name="BtnSearch" type="Button" parent="."] +layout_mode = 0 +anchor_left = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = -24.0 +text = "..." diff --git a/addons/madtalk/components/DialogSearchSheet.tscn b/addons/madtalk/components/DialogSearchSheet.tscn new file mode 100644 index 0000000..5c59aca --- /dev/null +++ b/addons/madtalk/components/DialogSearchSheet.tscn @@ -0,0 +1,102 @@ +[gd_scene load_steps=6 format=3 uid="uid://yyd1a2x4mmop"] + +[ext_resource type="FontFile" uid="uid://b38okvijpcxmv" path="res://addons/madtalk/fonts/FreeSans_smal.tres" id="2"] +[ext_resource type="StyleBox" path="res://addons/madtalk/components/resources/PanelStyle.tres" id="4"] +[ext_resource type="PackedScene" uid="uid://bxm7bq8a3137t" path="res://addons/madtalk/components/DialogSearchSheetItem.tscn" id="5"] +[ext_resource type="StyleBox" path="res://addons/madtalk/components/resources/SheetItemStyle.tres" id="7"] + +[sub_resource type="StyleBoxFlat" id="1"] +bg_color = Color(0.186, 0.172, 0.2, 1) +border_width_left = 1 +border_width_top = 1 +border_width_right = 1 +border_width_bottom = 1 +border_color = Color(0.06, 0.06, 0.06, 1) +border_blend = true + +[node name="DialogSearchSheet" type="Window"] +initial_position = 2 +size = Vector2i(600, 400) +visible = false +transient = true +exclusive = true +popup_window = true + +[node name="Panel" type="Panel" parent="."] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +theme_override_styles/panel = ExtResource("4") + +[node name="SearchEdit" type="LineEdit" parent="Panel"] +layout_mode = 0 +anchor_right = 1.0 +offset_left = 8.0 +offset_top = 5.0 +offset_right = -8.0 +offset_bottom = 29.0 +theme_override_fonts/font = ExtResource("2") +theme_override_font_sizes/font_size = 12 +theme_override_styles/normal = ExtResource("7") +placeholder_text = "Search ID or description" + +[node name="IDLabel" type="Label" parent="Panel"] +layout_mode = 0 +offset_left = 12.0 +offset_top = 36.0 +offset_right = 69.0 +offset_bottom = 50.0 +theme_override_font_sizes/font_size = 12 +text = "Sheet ID" + +[node name="DescLabel" type="Label" parent="Panel"] +layout_mode = 0 +offset_left = 144.0 +offset_top = 36.0 +offset_right = 253.0 +offset_bottom = 50.0 +theme_override_font_sizes/font_size = 12 +text = "Short description" + +[node name="SearchResultsPanel" type="Panel" parent="Panel"] +layout_mode = 0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = 8.0 +offset_top = 52.0 +offset_right = -8.0 +offset_bottom = -30.0 +theme_override_styles/panel = SubResource("1") + +[node name="Scroll" type="ScrollContainer" parent="Panel/SearchResultsPanel"] +layout_mode = 0 +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="VBoxResults" type="VBoxContainer" parent="Panel/SearchResultsPanel/Scroll"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="DialogSearchSheetItem" parent="Panel/SearchResultsPanel/Scroll/VBoxResults" instance=ExtResource("5")] +layout_mode = 2 + +[node name="BottomBar" type="Control" parent="Panel"] +anchors_preset = 0 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_top = -24.0 + +[node name="BtnCancel" type="Button" parent="Panel/BottomBar"] +layout_mode = 0 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -27.0 +offset_top = -10.0 +offset_right = 27.0 +offset_bottom = 10.0 +focus_mode = 0 +text = "Cancel" diff --git a/addons/madtalk/components/DialogSearchSheetItem.tscn b/addons/madtalk/components/DialogSearchSheetItem.tscn new file mode 100644 index 0000000..923ea6e --- /dev/null +++ b/addons/madtalk/components/DialogSearchSheetItem.tscn @@ -0,0 +1,63 @@ +[gd_scene load_steps=6 format=3 uid="uid://bxm7bq8a3137t"] + +[ext_resource type="FontFile" uid="uid://b38okvijpcxmv" path="res://addons/madtalk/fonts/FreeSans_smal.tres" id="1"] +[ext_resource type="FontFile" path="res://addons/madtalk/fonts/FreeSans_bold_small.tres" id="2"] +[ext_resource type="FontFile" uid="uid://bhcws34lw0ak5" path="res://addons/madtalk/fonts/FreeSans_tiny.tres" id="3"] +[ext_resource type="StyleBox" path="res://addons/madtalk/components/resources/ButtonStyle.tres" id="4"] +[ext_resource type="StyleBox" path="res://addons/madtalk/components/resources/SheetItemStyle.tres" id="5"] + +[node name="DialogSearchSheetItem" type="Panel"] +custom_minimum_size = Vector2(0, 48) +offset_right = 437.0 +offset_bottom = 48.0 +theme_override_styles/panel = ExtResource("5") + +[node name="SheetIDLabel" type="Label" parent="."] +layout_mode = 1 +anchors_preset = 9 +anchor_bottom = 1.0 +offset_left = 9.0 +offset_top = 10.0 +offset_right = 172.0 +offset_bottom = -10.0 +grow_vertical = 2 +theme_override_colors/font_color = Color(0.470588, 0.898039, 1, 1) +theme_override_fonts/font = ExtResource("2") +theme_override_font_sizes/font_size = 12 +text = "sheet_id" +vertical_alignment = 1 +autowrap_mode = 1 +clip_text = true + +[node name="DescLabel" type="Label" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = 180.0 +offset_top = 2.0 +offset_right = -50.0 +offset_bottom = -3.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_colors/font_color = Color(0.772549, 0.772549, 0.772549, 1) +theme_override_fonts/font = ExtResource("3") +theme_override_font_sizes/font_size = 12 +text = "Simple decription text" +vertical_alignment = 1 +autowrap_mode = 3 +clip_text = true + +[node name="BtnPick" type="Button" parent="."] +layout_mode = 0 +anchor_left = 1.0 +anchor_top = 0.5 +anchor_right = 1.0 +anchor_bottom = 0.5 +offset_left = -45.0 +offset_top = -11.0 +offset_right = -3.0 +offset_bottom = 9.0 +theme_override_fonts/font = ExtResource("1") +theme_override_styles/normal = ExtResource("4") +text = "Pick" diff --git a/addons/madtalk/components/Export_SheetListItem.tscn b/addons/madtalk/components/Export_SheetListItem.tscn new file mode 100644 index 0000000..96f90ff --- /dev/null +++ b/addons/madtalk/components/Export_SheetListItem.tscn @@ -0,0 +1,62 @@ +[gd_scene load_steps=6 format=3 uid="uid://c1a8yn1guaowt"] + +[ext_resource type="StyleBox" path="res://addons/madtalk/components/resources/SheetItemStyle.tres" id="1_w11ta"] +[ext_resource type="FontFile" path="res://addons/madtalk/fonts/FreeSans_bold_small.tres" id="2_oqjov"] +[ext_resource type="FontFile" uid="uid://bhcws34lw0ak5" path="res://addons/madtalk/fonts/FreeSans_tiny.tres" id="3_rgkct"] +[ext_resource type="FontFile" uid="uid://b38okvijpcxmv" path="res://addons/madtalk/fonts/FreeSans_smal.tres" id="4_i0ry5"] +[ext_resource type="StyleBox" path="res://addons/madtalk/components/resources/ButtonStyle.tres" id="5_en1rw"] + +[node name="ExportSheetListItem" type="Panel"] +custom_minimum_size = Vector2(0, 48) +theme_override_styles/panel = ExtResource("1_w11ta") + +[node name="SheetIDLabel" type="Label" parent="."] +layout_mode = 1 +anchors_preset = 9 +anchor_bottom = 1.0 +offset_left = 39.0 +offset_top = 10.0 +offset_right = 241.0 +offset_bottom = -10.0 +grow_vertical = 2 +theme_override_colors/font_color = Color(0.470588, 0.898039, 1, 1) +theme_override_fonts/font = ExtResource("2_oqjov") +theme_override_font_sizes/font_size = 12 +text = "sheet_id" +vertical_alignment = 1 +autowrap_mode = 1 +clip_text = true + +[node name="DescLabel" type="Label" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = 250.0 +offset_top = 2.0 +offset_right = -10.0 +offset_bottom = -3.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_colors/font_color = Color(0.772549, 0.772549, 0.772549, 1) +theme_override_fonts/font = ExtResource("3_rgkct") +theme_override_font_sizes/font_size = 12 +text = "Simple decription text" +vertical_alignment = 1 +autowrap_mode = 3 +clip_text = true + +[node name="BtnSelect" type="CheckBox" parent="."] +layout_mode = 1 +anchors_preset = 4 +anchor_top = 0.5 +anchor_bottom = 0.5 +offset_left = 8.0 +offset_top = -15.0 +offset_right = 28.0 +offset_bottom = 16.0 +grow_vertical = 2 +theme_override_fonts/font = ExtResource("4_i0ry5") +theme_override_styles/normal = ExtResource("5_en1rw") +flat = true +icon_alignment = 2 diff --git a/addons/madtalk/components/ImportBar.gd b/addons/madtalk/components/ImportBar.gd new file mode 100644 index 0000000..554351f --- /dev/null +++ b/addons/madtalk/components/ImportBar.gd @@ -0,0 +1,26 @@ +@tool +extends Panel + + +@export var SizeClosed: int = 24 +@export var SizeOpen: int = 200 + +@onready var content = get_node_or_null("Content") + +func _ready(): + size.y = SizeClosed + if content: + content.hide() + +func _on_BtnTogglePanel_pressed(): + if (size.y == SizeClosed): + # Open: + size.y = SizeOpen + if content: + content.show() + else: + # Close: + size.y = SizeClosed + if content: + content.hide() + diff --git a/addons/madtalk/components/ImportBar.gd.uid b/addons/madtalk/components/ImportBar.gd.uid new file mode 100644 index 0000000..e939c3d --- /dev/null +++ b/addons/madtalk/components/ImportBar.gd.uid @@ -0,0 +1 @@ +uid://brqywa4kaelfg diff --git a/addons/madtalk/components/ImportBar.tscn b/addons/madtalk/components/ImportBar.tscn new file mode 100644 index 0000000..901ed88 --- /dev/null +++ b/addons/madtalk/components/ImportBar.tscn @@ -0,0 +1,40 @@ +[gd_scene load_steps=5 format=3 uid="uid://cx148tfhw6ida"] + +[ext_resource type="StyleBox" path="res://addons/madtalk/components/resources/PanelStyle.tres" id="1_0agko"] +[ext_resource type="Script" uid="uid://brqywa4kaelfg" path="res://addons/madtalk/components/ImportBar.gd" id="2_vberv"] +[ext_resource type="FontFile" uid="uid://b38okvijpcxmv" path="res://addons/madtalk/fonts/FreeSans_smal.tres" id="2_xeiq2"] +[ext_resource type="Texture2D" uid="uid://c4xg8811uuoq6" path="res://addons/madtalk/images/icon_down.png" id="3_vberv"] + +[node name="ImportBar" type="Panel"] +anchors_preset = 1 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = -424.0 +offset_top = 16.0 +offset_right = -224.0 +offset_bottom = 216.0 +grow_horizontal = 0 +theme_override_styles/panel = ExtResource("1_0agko") +script = ExtResource("2_vberv") + +[node name="TitleLabel" type="Label" parent="."] +layout_mode = 0 +offset_left = 3.0 +offset_right = 177.0 +offset_bottom = 20.0 +theme_override_fonts/font = ExtResource("2_xeiq2") +theme_override_font_sizes/font_size = 12 +text = "Import / Export" + +[node name="BtnTogglePanel" type="TextureButton" parent="."] +layout_mode = 1 +anchors_preset = 1 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = -24.0 +offset_bottom = 24.0 +grow_horizontal = 0 +texture_normal = ExtResource("3_vberv") +stretch_mode = 3 + +[connection signal="pressed" from="BtnTogglePanel" to="." method="_on_BtnTogglePanel_pressed"] diff --git a/addons/madtalk/components/ImportExport.gd b/addons/madtalk/components/ImportExport.gd new file mode 100644 index 0000000..cdc8b85 --- /dev/null +++ b/addons/madtalk/components/ImportExport.gd @@ -0,0 +1,34 @@ +@tool +class_name MadTalkImportExport +extends Node + +const IMP_EXP_PATH := "res://addons/madtalk/importers/" + +var importers_list := {} +var exporters_list := {} + +func refresh_list_importers(): + importers_list.clear() + exporters_list.clear() + + var dir = DirAccess.open(IMP_EXP_PATH) + if dir: + dir.list_dir_begin() + var file_name = dir.get_next() + while file_name != "": + if (not dir.current_is_dir()) and (file_name.ends_with(".gd")): + var full_path: String = IMP_EXP_PATH + file_name + var script_instance = load(full_path).new() + + if file_name.begins_with("imp_"): + importers_list[full_path] = script_instance.name + elif file_name.begins_with("exp_"): + exporters_list[full_path] = script_instance.name + + + else: + pass # Subdirs are ignored + + file_name = dir.get_next() + else: + print("Error refreshing importers/exporters") diff --git a/addons/madtalk/components/ImportExport.gd.uid b/addons/madtalk/components/ImportExport.gd.uid new file mode 100644 index 0000000..8284c7b --- /dev/null +++ b/addons/madtalk/components/ImportExport.gd.uid @@ -0,0 +1 @@ +uid://bhvx2fvu7waxi diff --git a/addons/madtalk/components/InspectorPluginSheetIDField.gd b/addons/madtalk/components/InspectorPluginSheetIDField.gd new file mode 100644 index 0000000..caedaac --- /dev/null +++ b/addons/madtalk/components/InspectorPluginSheetIDField.gd @@ -0,0 +1,18 @@ +extends EditorInspectorPlugin + +func can_handle(object): + # We don't know the class of the node since it will be defined by user + # so we just accept anything + return true + +func parse_property(object, type, path, hint, hint_text, usage): + # This component is used in String fields starting with "madtalk_sheet_id" + if (type == TYPE_STRING) and (path.begins_with("madtalk_sheet_id")): + # Register *an instance* of the custom property editor that we'll define next. + add_property_editor(path, InspectorPluginSheetIDFieldItem.new()) + # We return `true` to notify the inspector that we'll be handling + # this property, so it doesn't need to parse other plugins + # (including built-in ones) for an appropriate editor. + return true + else: + return false diff --git a/addons/madtalk/components/InspectorPluginSheetIDField.gd.uid b/addons/madtalk/components/InspectorPluginSheetIDField.gd.uid new file mode 100644 index 0000000..d527802 --- /dev/null +++ b/addons/madtalk/components/InspectorPluginSheetIDField.gd.uid @@ -0,0 +1 @@ +uid://61pqdj3pwedn diff --git a/addons/madtalk/components/InspectorPluginSheetIDFieldItem.gd b/addons/madtalk/components/InspectorPluginSheetIDFieldItem.gd new file mode 100644 index 0000000..d3216de --- /dev/null +++ b/addons/madtalk/components/InspectorPluginSheetIDFieldItem.gd @@ -0,0 +1,102 @@ +extends EditorProperty +class_name InspectorPluginSheetIDFieldItem + +signal sheet_selected(sheet_id) + +var search_box_template = preload("res://addons/madtalk/components/DialogSearchSheet.tscn") +var search_item_template = preload("res://addons/madtalk/components/DialogSearchSheetItem.tscn") + +var property_editor_object = preload("res://addons/madtalk/components/DialogSearchInspectorSheetIDField.tscn").instantiate() + +var dialog_data : Resource = preload("res://addons/madtalk/runtime/madtalk_data.tres") + +var updating = false + +func _init(): + add_child(property_editor_object) + # To remember focus when selected back: + add_focusable(property_editor_object.get_node("ValueLineEdit")) + property_editor_object.get_node("ValueLineEdit").connect("text_changed", Callable(self, "_on_text_changed")) + property_editor_object.get_node("BtnSearch").connect("pressed", Callable(self, "_on_search_requested")) + + +func _on_text_changed(text): + if (updating): + return + emit_changed(get_edited_property(), text) + +func update_property(): + var new_text = get_edited_object()[get_edited_property()] + updating = true + property_editor_object.get_node("ValueLineEdit").set_text(new_text) + updating = false + +func _on_search_requested(): + var text = get_edited_object()[get_edited_property()] + var new_search_box = set_search_window(text) + + new_search_box.popup_centered() + search(text, new_search_box) + + var result = await self.sheet_selected + if result and (result is String): + updating = true + property_editor_object.get_node("ValueLineEdit").set_text(result) + emit_changed(get_edited_property(), result) + updating = false + +func set_search_window(text): + var new_search_box = search_box_template.instantiate() + add_child(new_search_box) + new_search_box.get_node("Panel/BottomBar/BtnCancel").connect("pressed", Callable(self, "_on_BtnCancel_pressed").bind(new_search_box)) + new_search_box.get_node("Panel/SearchEdit").connect("text_changed", Callable(self, "search").bind(new_search_box)) + + new_search_box.get_node("Panel/SearchEdit").text = text + + return new_search_box + + + +func add_item(sheet_id, window_object): + if not sheet_id in dialog_data.sheets: + return + if not window_object: + return + + var new_item = search_item_template.instantiate() + window_object.get_node("Panel/SearchResultsPanel/Scroll/VBoxResults").add_child(new_item) + + new_item.get_node("SheetIDLabel").text = sheet_id + new_item.get_node("DescLabel").text = dialog_data.sheets[sheet_id].sheet_description + new_item.get_node("BtnPick").connect("pressed", Callable(self, "_on_SheetItem_pick").bind(sheet_id, window_object)) + + +func _on_SheetItem_pick(sheet_id, window_object): + if not window_object: + return + + window_object.hide() + emit_signal("sheet_selected", sheet_id) + window_object.queue_free() + +func _on_BtnCancel_pressed(window_object): + if not window_object: + return + + window_object.hide() + emit_signal("sheet_selected", null) + window_object.queue_free() + +func search(search_term, window_object): + var vbox_results = window_object.get_node("Panel/SearchResultsPanel/Scroll/VBoxResults") + + var old_items = vbox_results.get_children() + for item in old_items: + vbox_results.remove_child(item) + item.queue_free() + + for this_sheet_id in dialog_data.sheets: + var desc = dialog_data.sheets[this_sheet_id].sheet_description + # If there is no search, or search shows up in eiter id or description: + if (search_term == "") or (search_term.is_subsequence_ofi(this_sheet_id)) or (search_term.is_subsequence_ofi(desc)): + add_item(this_sheet_id, window_object) diff --git a/addons/madtalk/components/InspectorPluginSheetIDFieldItem.gd.uid b/addons/madtalk/components/InspectorPluginSheetIDFieldItem.gd.uid new file mode 100644 index 0000000..cb4c196 --- /dev/null +++ b/addons/madtalk/components/InspectorPluginSheetIDFieldItem.gd.uid @@ -0,0 +1 @@ +uid://dgkuy71epsgj5 diff --git a/addons/madtalk/components/MTDefs.gd b/addons/madtalk/components/MTDefs.gd new file mode 100644 index 0000000..dd86cc0 --- /dev/null +++ b/addons/madtalk/components/MTDefs.gd @@ -0,0 +1,461 @@ +@tool +# This file is used for global defintions used across the MadTalk plugin +class_name MTDefs +extends RefCounted + +const WeekdayNames = { + 0: "Sunday", + 1: "Monday", + 2: "Tuesday", + 3: "Wednesday", + 4: "Thursday", + 5: "Friday", + 6: "Saturday" +} +const WeekdayNamesShort = { + 0: "Sun", + 1: "Mon", + 2: "Tue", + 3: "Wed", + 4: "Thu", + 5: "Fri", + 6: "Sat" +} + +const MonthNames = { + 1: "January", + 2: "February", + 3: "March", + 4: "April", + 5: "May", + 6: "June", + 7: "July", + 8: "August", + 9: "September", + 10: "October", + 11: "November", + 12: "December" +} + +const MonthNamesShort = { + 1: "Jan", + 2: "Feb", + 3: "Mar", + 4: "Apr", + 5: "May", + 6: "Jun", + 7: "Jul", + 8: "Aug", + 9: "Sep", + 10: "Oct", + 11: "Nov", + 12: "Dec" +} + +func zero_pad(value, num_digits) -> String: + var res = str(value) + while res.length() < num_digits: + res = "0"+res + return res + +func zero_unpad(value) -> String: + if float(value) == 0: + return "0" + if float(value) == 1: + return "1" + + if value.find('.') > -1: + value = value.rstrip('0') + if value.ends_with('.'): + value += "0" + value = value.lstrip('0') + return value + +func ShowFloat(value) -> String: + return zero_unpad("%f" % float(value)) + +################################################################################ +# CONDITIONS +# ============================================================================== + + +enum ConditionTypes { # arguments: + Random, # float percentage of change (0.0 - 100.0) + VarBool, # "var_name", bool value + VarAtLeast, # "var_name", float min value (inclusive) + VarUnder, # "var_name", float max value (not inclusive) + VarString, # "var_name", string value (comparison) + + Time, # time min, time max (inclusive, format "HH:mm") + DayOfWeek, # day min, day max (inclusive, int 0-6) + DayOfMonth, # day min, day max (inclusive, int 1-31) + Date, # date min, date max (inclusive, format DD/MM) + + ElapsedFromVar, # variable name, number of minutes + + Custom # custom ID, newline separated string list + # (converted to array of string in callback) +} + +const TYPE_RANDOM = 1000 +const TYPE_WEEKDAY = 1001 +const TYPE_CHECK = 1002 +const TYPE_STRING_SHORT = 1003 + +const ConditionData = { + ConditionTypes.Random: { + "num_args": 1, + "default": [50], + "data_types": [TYPE_FLOAT], + "print_types": [TYPE_RANDOM], + "description": "Random", + "print_text": "Random chance %s %%", + "print_short": "Random %s%%", + "print_short_fail": "Random %s%%", + "help": "Percentage of chance to continue (branching when fails), as float.\n\nExample: for 30% chance, use 30.0 (and not 0.3)." + }, + ConditionTypes.VarBool: { + "num_args": 2, + "default": ["", 1], + "data_types": [TYPE_STRING, TYPE_INT], + "print_types": [TYPE_STRING, TYPE_CHECK], + "description": "Variable check", + "print_text": "Variable [color=yellow]%s[/color] is [color=aqua]%s[/color]", + "print_short": "%s", + "print_short_fail": "%s", + "help": "Continues if variable is equal to a target boolean value, branching otherwise." + + }, + ConditionTypes.VarAtLeast: { + "num_args": 2, + "default": ["", 0], + "data_types": [TYPE_STRING, TYPE_FLOAT], + "print_types": [TYPE_STRING, TYPE_FLOAT], + "description": "Variable at least", + "print_text": "Variable [color=yellow]%s[/color] >= [color=aqua]%s[/color]", + "print_short": "%s >= %s", + "print_short_fail": "%s < %s", + "help": "Continues if variable is equal or larger than a target value (as float), branching otherwise." + + }, + ConditionTypes.VarUnder: { + "num_args": 2, + "default": ["", 0], + "data_types": [TYPE_STRING, TYPE_FLOAT], + "print_types": [TYPE_STRING, TYPE_FLOAT], + "description": "Variable under", + "print_text": "Variable [color=yellow]%s[/color] < [color=aqua]%s[/color]", + "print_short": "%s < %s", + "print_short_fail": "%s >= %s", + "help": "Continues if variable is lower (and not equal) than a target value (as float), branching otherwise." + }, + + ConditionTypes.VarString: { + "num_args": 2, + "default": ["",""], + "data_types": [TYPE_STRING, TYPE_STRING], + "print_types": [TYPE_STRING, TYPE_STRING], + "description": "Variable equals", + "print_text": "Variable [color=yellow]%s[/color] equals \"[color=aqua]%s[/color]\"", + "print_short": "%s = \"%s\"", + "print_short_fail": "%s != \"%s\"", + "help": "Continues if a variable contains an exact string (case sensitive), branching otherwise." + }, + + ConditionTypes.Time: { + "num_args": 2, + "default": ["07:00","08:00"], + "data_types": [TYPE_STRING, TYPE_STRING], + "print_types": [TYPE_STRING, TYPE_STRING], + "description": "Time range", + "print_text": "Time between \"[color=blue]%s[/color]\" and [color=blue]%s[/color]", + "print_short": "Time [%s - %s]", + "print_short_fail": "Time not [%s - %s]", + "help": "Continues if current in-game time is within a given range (inclusive), branching otherwise. Format is \"HH:mm\".\n\nExample, for an event valid in range [6 PM, 7 PM) (that is, including 6PM, not including 7 PM), use:\"18:00\" and \"18:59\"." + }, + ConditionTypes.DayOfWeek: { + "num_args": 2, + "default": [1,5], + "data_types": [TYPE_INT, TYPE_INT], + "print_types": [TYPE_WEEKDAY, TYPE_WEEKDAY], + "description": "Day of Week Range", + "print_text": "Day of Week between \"[color=blue]%s[/color]\" and [color=blue]%s[/color]", + "print_short": "W.Day [%s - %s]", + "print_short_fail": "W.Day not [%s - %s]", + "help": "Continues if current in-game day of week is within a given range (inclusive), branching otherwise." # Week starts on 0 = Sunday and goes to 6 = Saturday, but repeats indefinitely (2 = 9 = 16 = Tuesday). Week days:\n0 = Sunday\n1 = Monday\n2 = Tuesday\n3 = Wednesday\n4 = Thursday\n5 = Friday\n6 = Saturday\n7 = Also Sunday\n\nExample, for an event valid in week days, use:\n1\n5\n\nFor an event valid from Friday to Tuesday, use:\n5\n9" + }, + ConditionTypes.DayOfMonth: { + "num_args": 2, + "default": [1,1], + "data_types": [TYPE_INT, TYPE_INT], + "print_types": [TYPE_INT, TYPE_INT], + "description": "Day of Month Range", + "print_text": "Day of Month between \"[color=blue]%s[/color]\" and [color=blue]%s[/color]", + "print_short": "Day [%s - %s]", + "print_short_fail": "Day not [%s - %s]", + "help": "Continues if current in-game day of month is within a given range (inclusive), branching otherwise." + }, + ConditionTypes.Date: { + "num_args": 2, + "default": ["01/01","01/01"], + "data_types": [TYPE_STRING, TYPE_STRING], + "print_types": [TYPE_STRING, TYPE_STRING], + "description": "Date range", + "print_text": "Date between \"[color=blue]%s[/color]\" and [color=blue]%s[/color]", + "print_short": "Date [%s - %s]", + "print_short_fail": "Date not [%s - %s]", + "help": "Continues if current in-game date is within a given range (inclusive), branching otherwise. Does not include the year, which means the range is valid in any year of in-game date.\n\nFormat \"DD/MM\". Example, for an event taking place between 25 Feb and 02 Mar (inclusive), use \"25/02\" and \"02/03\"" + }, + + ConditionTypes.ElapsedFromVar: { + "num_args": 2, + "default": [0, ""], + "data_types": [TYPE_FLOAT, TYPE_STRING], + "print_types": [TYPE_FLOAT, TYPE_STRING], + "description": "Minutes elapsed since variable", + "print_text": "Elapsed [color=blue]%s[/color] minutes after time stamped in variable [color=yellow]%s[/color]", + "print_short": "%s mins after var %s", + "print_short_fail": "Until %s mins after var %s", + "help": "Continues if current in-game time is equal or later than a given number of minutes, when compared to a variable, branching otherwise. Used in conjunction with timestamping effects.", + }, + + ConditionTypes.Custom: { + "num_args": 2, + "default": ["",""], + "data_types": [TYPE_STRING, TYPE_STRING], + "print_types": [TYPE_STRING], + "description": "Custom condition", + "print_text": "Custom condition [color=yellow]%s[/color] successful", + "print_short": "%s successful", + "print_short_fail": "%s fails", + "help": "Continues if a custom condition (implemented in user code) evaluates as true, branching otherwise.\n\nA custom ID is passed to the callback (to be used as condition type, e.g. \"combat\", \"inventory\", \"char\", or anything representable with a single string), as well as a list of strings separated here by line breaks (to be used as general purpose fixed data, e.g. item id, monster id, etc). The list of strings will be passed to the callback as Array of Strings.\n\nThe callback is whatever is connected to the \"evaluate_custom_condition\" signal in the MadTalk node. If more than one method is connected, only the first one is used.", + } +} + + + +func Condition_PrintFail(condition: int, values: Array) -> String: + var text_items = [] + + # Bool condition is an exception + if condition == ConditionTypes.VarBool: + # Bool has 2 arguments: variable name and a boolean value represented as + # float (where anything non-zero is true) + # however the boolean value is not printed. Instead the word "not" is + # prepended. Hence the separated logic + if (values[1] == 0): + # A successful check is false, therefore the fail message is true + text_items.append(values[0]) + else: + # A successful check is true, therefore the fail message is false + text_items.append("not "+values[0]) + + + else: + var types = ConditionData[condition]["print_types"] + for i in range(types.size()): + match types[i]: + TYPE_RANDOM: + text_items.append(str(100.0 - values[i])) + TYPE_INT: + text_items.append(str(values[i])) + TYPE_FLOAT: + text_items.append(ShowFloat(values[i])) + TYPE_WEEKDAY: + var wday = values[i] + while wday > 6: + wday -= 7 + text_items.append(WeekdayNamesShort[wday]) + TYPE_STRING: + text_items.append(values[i]) + + + + return ConditionData[condition]["print_short_fail"] % text_items + +################################################################################ +# EFFECTS +# ============================================================================== + + +enum EffectTypes { # arguments: + ChangeSheet, # "sheet_id" sequence_id=0 + SetVariable, # "var_name", value + AddVariable, # "var_name" value + RandomizeVariable, # "var_name", value_min, value_max + StampTime, # "var_name" + SpendMinutes, # value_minutes + SpendDays, # value_days + SkipToTime, # value_time + SkipToWeekDay, # value_weekday + WaitAnim, # Animation name + Custom # "effect_id", newline separated string list + # (converted to array of string in callback) +} + +const EffectData = { + EffectTypes.ChangeSheet: { + "num_args": 2, + "default": ["",0], + "data_types": [TYPE_STRING, TYPE_INT], + "print_types": [TYPE_STRING, TYPE_INT], + "description": "Change Sheet", + "print_text": "Change dialog to sheet \"%s\", sequence ID %s", + "print_short": "Sheet %s (ID %s)", + "help": "Abandons this dialog (items in this sequence below this effect are not executed) and runs dialog in another sheet.\n\nDefault starting point is ID 0, but a custom ID can be set instead." + }, + EffectTypes.SetVariable: { + "num_args": 2, + "default": ["",0.0], + "data_types": [TYPE_STRING, TYPE_FLOAT], + "print_types": [TYPE_STRING, TYPE_FLOAT], + "description": "Set Variable", + "print_text": "Set the variable %s to the value %s", + "print_short": "Set %s = %s", + "help": "Sets the internal variable to a predefined value. If you want to use it in true/false checks, use zero for false, any other number for true.\n\nThis variable is stored inside MadTalk subsystem, and is not a GDScript variable. (It can be accessed from GDScript if required.)" + }, + EffectTypes.AddVariable: { + "num_args": 2, + "default": ["",0.0], + "data_types": [TYPE_STRING, TYPE_FLOAT], + "print_types": [TYPE_STRING, TYPE_FLOAT], + "description": "Add Value to Variable", + "print_text": "Add to the variable %s a value of %s", + "print_short": "To %s, add %s", + "help": "Adds to the internal variable a given value.\n\nThis can be used to make counters (e.g. how many times the player has spoken to this NPC), to subtract money (e.g. in shops) using negative values, etc.\n\nThis variable is stored inside MadTalk subsystem, and is not a GDScript variable. (It can be accessed from GDScript if required.)" + }, + EffectTypes.RandomizeVariable: { + "num_args": 3, + "default": ["",0.0, 1.0], + "data_types": [TYPE_STRING, TYPE_FLOAT, TYPE_FLOAT], + "print_types": [TYPE_STRING, TYPE_FLOAT, TYPE_FLOAT], + "description": "Randomizes Variable", + "print_text": "Set the variable %s to a random value between %s and %s", + "print_short": "Set %s = rand(%s, %s)", + "help": "Sets the internal variable to a random value, withing the given range (inclusive).\n\nThis can be used to generate random scenarios which will remain the same during the gameplay until randomized again (unlike a random condition, which is randomized again every time the sequence runs and the result is not accessible anywhere else).\n\nThis variable is stored inside MadTalk subsystem, and is not a GDScript variable. (It can be accessed from GDScript if required.)" + }, + EffectTypes.StampTime: { + "num_args": 1, + "default": [""], + "data_types": [TYPE_STRING], + "print_types": [TYPE_STRING], + "description": "Stamp Current Time to Variable", + "print_text": "Set the variable %s to current timestamp", + "print_short": "Var %s = timestamp", + "help": "Stores the current in-game timestamp into the internal variable.\n\nThis should be used in conjunction with the timestamp condition to make dialog behavior dependent on a time window since this effect (e.g. a branch is only accessible during some minutes after talking to some NPC).\n\nThis variable is stored inside MadTalk subsystem as number of in-game seconds elapsed since start of gameplay, and is not a GDScript variable. (It can be accessed from GDScript if required.)" + }, + EffectTypes.SpendMinutes: { + "num_args": 1, + "default": [0], + "data_types": [TYPE_FLOAT], + "print_types": [TYPE_FLOAT], + "description": "Advance Minutes in In-Game Time", + "print_text": "Add %s minutes to current in-game time", + "print_short": "Spend %s minutes", + "help": "Adds the specified number of minutes to the in-game time variable. Use this in conjunction with time-checking conditions to cause events to only happen in certain time windows (e.g. a shop keeper only sells during the day on business days)." + }, + EffectTypes.SpendDays: { + "num_args": 1, + "default": [0], + "data_types": [TYPE_FLOAT], + "print_types": [TYPE_FLOAT], + "description": "Advance Days in In-Game Time", + "print_text": "Add %s days to current in-game time", + "print_short": "Spend %s day(s)", + "help": "Adds the specified number of days to the in-game time variable. Use this in conjunction with time-checking conditions to cause events to only happen in certain date ranges (e.g. an event is only available during weekends)." + }, + + EffectTypes.SkipToTime: { + "num_args": 1, + "default": ["07:00"], + "data_types": [TYPE_STRING], + "print_types": [TYPE_STRING], + "description": "Skip until a certain time", + "print_text": "Advances time until in-game time is %s", + "print_short": "Skip to %s", + "help": "Spends time until the next time the in-game time is at the specified value (in 24h format, e.g. \"07:00\").\n\nExample: if current in-game time is Wed 18:35, an effect to skip to \"07:00\" will spend time until the in-game time is at Thu 07:00.", + }, + + EffectTypes.SkipToWeekDay: { + "num_args": 1, + "default": [0], + "data_types": [TYPE_INT], + "print_types": [TYPE_WEEKDAY], + "description": "Skip time until a certain weekday", + "print_text": "Advances time until in-game weekday is %s midnight", + "print_short": "Skip to %s 00:00", + "help": "Spends time until the next day the in-game time is at the specified value. Time will be set to midnight (00:00) at the beginning of the given day." + }, + + EffectTypes.WaitAnim: { + "num_args": 1, + "default": [""], + "data_types": [TYPE_STRING], + "print_types": [TYPE_STRING], + "description": "Play and wait for an animation", + "print_text": "Play animation \"%s\" and wait for it to finish", + "print_short": "Play \"%s\"", + "help": "Plays the specified animation in the AnimationPlayer set in the MadTalk node, and holds the dialog until it completes." + }, + EffectTypes.Custom: { + "num_args": 2, + "default": ["",""], + "data_types": [TYPE_STRING, TYPE_STRING], + "print_types": [TYPE_STRING, TYPE_STRING_SHORT], + "description": "Custom Effect", + "print_text": "Custom effect [color=yellow]%s[/color] (data: %s)", + "print_short": "%s (%s)", + "help": "Calls a custom effect (implemented in user code).\n\nA custom ID is passed to the callback (to be used as effect type, e.g. \"give_item\", \"teleport_player\", \"game_over\", or anything representable with a single string), as well as a list of strings separated here by line breaks (to be used as general purpose fixed data, e.g. item id, room id, etc). The list of strings will be passed to the callback as Array of Strings.\n\nThe callback is whatever is connected to the \"activate_custom_effect\" signal in the MadTalk node. If more than one method is connected, only the first one is used." + } +} + +func Effect_PrintShort(effect: int, values: Array) -> String: + var text_items = [] + var types = EffectData[effect]["print_types"] + for i in range(types.size()): + match types[i]: + TYPE_RANDOM: + text_items.append(str(100.0 - values[i])) + TYPE_INT: + text_items.append(str(values[i])) + TYPE_FLOAT: + text_items.append(ShowFloat(values[i])) + TYPE_WEEKDAY: + var wday = values[i] + while wday > 6: + wday -= 7 + text_items.append(WeekdayNamesShort[wday]) + TYPE_STRING: + text_items.append(values[i]) + TYPE_STRING_SHORT: + var text = values[i].replace("\n", " ") + if text.length() > 20: + text = text.left(17) + "..." + text_items.append(text) + + + return EffectData[effect]["print_short"] % text_items + +func debug_resource(res: Resource, indent = ""): + if res == null: + return + + var list = res.get_property_list() + print(indent+"> %s - %s" % [str(res),str(res.resource_path)]) + for item in list: + match item.type: + TYPE_INT: + print(indent+" %s = %s" % [str(item.name), str(res[item.name])]) + TYPE_STRING: + if not item.name in ["resource_name","resource_path"]: + print(indent+" %s = \"%s\"" % [str(item.name), str(res[item.name])]) + TYPE_ARRAY: + print(indent+" %s:" % str(item.name)) + for a_item in res[item.name]: + #print(" %s" % str(a_item)) + debug_resource(a_item, indent+" ") + TYPE_DICTIONARY: + print(indent+" %s:" % str(item.name)) + for a_item in res[item.name]: + print(" [%s]:" % str(a_item)) + debug_resource(res[item.name][a_item], indent+" ") diff --git a/addons/madtalk/components/MTDefs.gd.uid b/addons/madtalk/components/MTDefs.gd.uid new file mode 100644 index 0000000..48bd495 --- /dev/null +++ b/addons/madtalk/components/MTDefs.gd.uid @@ -0,0 +1 @@ +uid://cqhu373l1hvet diff --git a/addons/madtalk/components/MainEditor_DialogExport.gd b/addons/madtalk/components/MainEditor_DialogExport.gd new file mode 100644 index 0000000..6074045 --- /dev/null +++ b/addons/madtalk/components/MainEditor_DialogExport.gd @@ -0,0 +1,157 @@ +@tool +extends Window + + +var mt_ie := MadTalkImportExport.new() +var dialog_data: DialogData +var current_sheet_id: String = "" + +var template_ExportSheetListItem := preload("res://addons/madtalk/components/Export_SheetListItem.tscn") + +@onready var panel_options := $PanelOptions +@onready var panel_sheets := $PanelSheets +@onready var panel_output := $PanelOutput + +@onready var btn_exporter := $PanelOptions/BtnExporter +@onready var exporter_desc := $PanelOptions/ExporterDesc +@onready var panel_locales := $PanelOptions/LocalesPanel +@onready var locales_edit := $PanelOptions/LocalesPanel/LocalesEdit +@onready var output_edit := $PanelOutput/OutputEdit +@onready var label_sheets := $PanelOptions/LabelSheets +@onready var sheet_list := $PanelSheets/SheetScroll/VBox + +var export_sheets := [] + +func setup(data: DialogData, sheet_id: String): + dialog_data = data + current_sheet_id = sheet_id + export_sheets = [sheet_id] + update_exported_sheets() + + mt_ie.refresh_list_importers() + + # mt_ie.exporters_list = { "absolute path to .gd": "Friendly Name", } + + btn_exporter.clear() + for path in mt_ie.exporters_list: + btn_exporter.add_item(mt_ie.exporters_list[path]) + btn_exporter.select(-1) + + panel_options.show() + panel_sheets.hide() + panel_output.hide() + +func set_current_sheet(sheet: String, reset_export_sheet: bool = false): + current_sheet_id = sheet + if reset_export_sheet: + export_sheets = [current_sheet_id] + update_exported_sheets() + +func _on_btn_close_pressed() -> void: + hide() + +# ------------------------------------------ + +func extract_locales() -> Array: + var a := Array(locales_edit.text.split("\n")) + var result := [] + for i in range(a.size()): + var locale: String = a[i].strip_edges() + if locale.length() > 0: + result.append(locale) + return result + + +func export(): + if (not dialog_data) or (btn_exporter.selected < 0) or (btn_exporter.selected >= mt_ie.exporters_list.size()): + print("MadTalk exporter error") + return + + var exporter_script = mt_ie.exporters_list.keys()[ btn_exporter.selected ] + var exporter = load(exporter_script).new() + var locales: Array = extract_locales() if panel_locales.visible else [] + + var result := "" + for sheet_id: String in export_sheets: + if (not sheet_id in dialog_data.sheets): + continue + + if result.length() > 0: + result += "\n\n" + + result += exporter.export(dialog_data.sheets[sheet_id], locales) + + + output_edit.text = result + + panel_options.hide() + panel_sheets.hide() + panel_output.show() + + output_edit.select_all() + output_edit.grab_focus() + + +func refresh_export_sheet_list(): + for child in sheet_list.get_children(): + child.queue_free() + + for sheet_id in dialog_data.sheets: + var sheet_data: DialogSheetData = dialog_data.sheets[sheet_id] + + var new_item := template_ExportSheetListItem.instantiate() + sheet_list.add_child(new_item) + new_item.get_node("SheetIDLabel").text = sheet_id + new_item.get_node("DescLabel").text = sheet_data.sheet_description + new_item.get_node("BtnSelect").button_pressed = (sheet_id in export_sheets) + + +func update_exported_sheets(load_from_list: bool = false): + if load_from_list: + export_sheets.clear() + for item in sheet_list.get_children(): + if item.get_node("BtnSelect").button_pressed: + export_sheets.append(item.get_node("SheetIDLabel").text) + + var s := "" + for sheet_id in export_sheets: + s += "[color=#ffcc55][b]%s[/b][/color]\n" % sheet_id + label_sheets.text = s + + +func _on_btn_exporter_item_selected(index: int) -> void: + if (btn_exporter.selected < 0) or (btn_exporter.selected >= mt_ie.exporters_list.size()): + print("MadTalk exporter error") + return + + var exporter_script = mt_ie.exporters_list.keys()[ btn_exporter.selected ] + var exporter = load(exporter_script).new() + exporter_desc.text = exporter.description + + +func _on_btn_force_locales_toggled(toggled_on: bool) -> void: + panel_locales.visible = toggled_on + + +func _on_btn_back_pressed() -> void: + panel_output.hide() + panel_sheets.hide() + panel_options.show() + + +func _on_btn_export_pressed() -> void: + export() + + +func _on_btn_manage_sheets_pressed() -> void: + refresh_export_sheet_list() + panel_options.hide() + panel_sheets.show() + panel_output.hide() + + +func _on_sheets_to_export_btn_ok_pressed() -> void: + update_exported_sheets(true) + panel_options.show() + panel_sheets.hide() + panel_output.hide() diff --git a/addons/madtalk/components/MainEditor_DialogExport.gd.uid b/addons/madtalk/components/MainEditor_DialogExport.gd.uid new file mode 100644 index 0000000..f707b3a --- /dev/null +++ b/addons/madtalk/components/MainEditor_DialogExport.gd.uid @@ -0,0 +1 @@ +uid://bokaxoyjm2ddg diff --git a/addons/madtalk/components/MainEditor_DialogExport.tscn b/addons/madtalk/components/MainEditor_DialogExport.tscn new file mode 100644 index 0000000..54ad9ef --- /dev/null +++ b/addons/madtalk/components/MainEditor_DialogExport.tscn @@ -0,0 +1,315 @@ +[gd_scene load_steps=5 format=3 uid="uid://difhfxods7ra3"] + +[ext_resource type="Script" uid="uid://bokaxoyjm2ddg" path="res://addons/madtalk/components/MainEditor_DialogExport.gd" id="1_0m3dk"] +[ext_resource type="StyleBox" path="res://addons/madtalk/components/resources/PanelStyle.tres" id="1_gyveq"] +[ext_resource type="StyleBox" path="res://addons/madtalk/components/resources/ButtonStyle.tres" id="2_0m3dk"] +[ext_resource type="PackedScene" uid="uid://c1a8yn1guaowt" path="res://addons/madtalk/components/Export_SheetListItem.tscn" id="4_4xg1u"] + +[node name="DialogExport" type="Window"] +auto_translate_mode = 1 +title = "Export Dialog Sheet" +position = Vector2i(0, 36) +size = Vector2i(700, 500) +transient = true +exclusive = true +popup_window = true +script = ExtResource("1_0m3dk") + +[node name="PanelOptions" type="Panel" parent="."] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_styles/panel = ExtResource("1_gyveq") + +[node name="BottomBar" type="Control" parent="PanelOptions"] +layout_mode = 1 +anchors_preset = 12 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_top = -36.0 +offset_bottom = -1.0 +grow_horizontal = 2 +grow_vertical = 0 + +[node name="BtnClose" type="Button" parent="PanelOptions/BottomBar"] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -28.0 +offset_top = -13.5 +offset_right = 28.0 +offset_bottom = 13.5 +grow_horizontal = 2 +grow_vertical = 2 +focus_mode = 0 +theme_override_styles/focus = ExtResource("2_0m3dk") +theme_override_styles/hover = ExtResource("2_0m3dk") +theme_override_styles/normal = ExtResource("2_0m3dk") +text = "Close" + +[node name="BtnExporter" type="OptionButton" parent="PanelOptions"] +layout_mode = 0 +offset_left = 16.0 +offset_top = 32.0 +offset_right = 276.0 +offset_bottom = 52.0 + +[node name="Label" type="Label" parent="PanelOptions/BtnExporter"] +layout_mode = 0 +offset_top = -22.0 +offset_right = 87.0 +offset_bottom = -5.0 +theme_override_font_sizes/font_size = 12 +text = "Export Format:" + +[node name="CaptionSheets" type="Label" parent="PanelOptions"] +layout_mode = 0 +offset_left = 16.0 +offset_top = 68.0 +offset_right = 274.0 +offset_bottom = 85.0 +theme_override_font_sizes/font_size = 12 +text = "Sheets to export:" + +[node name="BtnManageSheets" type="Button" parent="PanelOptions/CaptionSheets"] +layout_mode = 1 +anchors_preset = 6 +anchor_left = 1.0 +anchor_top = 0.5 +anchor_right = 1.0 +anchor_bottom = 0.5 +offset_left = -32.0 +offset_top = -11.5 +offset_bottom = 15.5 +grow_horizontal = 0 +grow_vertical = 2 +focus_mode = 0 +theme_override_styles/focus = ExtResource("2_0m3dk") +theme_override_styles/hover = ExtResource("2_0m3dk") +theme_override_styles/normal = ExtResource("2_0m3dk") +text = "..." + +[node name="LabelSheets" type="RichTextLabel" parent="PanelOptions"] +layout_mode = 0 +offset_left = 16.0 +offset_top = 90.0 +offset_right = 276.0 +offset_bottom = 212.0 +theme_override_font_sizes/bold_italics_font_size = 12 +theme_override_font_sizes/italics_font_size = 12 +theme_override_font_sizes/mono_font_size = 12 +theme_override_font_sizes/normal_font_size = 12 +theme_override_font_sizes/bold_font_size = 12 +bbcode_enabled = true +text = "sheet name" + +[node name="ExporterDesc" type="RichTextLabel" parent="PanelOptions"] +layout_mode = 0 +offset_left = 308.0 +offset_top = 24.0 +offset_right = 687.0 +offset_bottom = 435.0 +bbcode_enabled = true + +[node name="BtnForceLocales" type="CheckButton" parent="PanelOptions"] +layout_mode = 0 +offset_left = 21.0 +offset_top = 232.0 +offset_right = 281.0 +offset_bottom = 257.0 +theme_override_font_sizes/font_size = 12 +text = "Force Locales" + +[node name="LocalesPanel" type="Control" parent="PanelOptions"] +visible = false +anchors_preset = 0 +offset_left = 21.0 +offset_top = 263.0 +offset_right = 281.0 +offset_bottom = 455.0 + +[node name="Label" type="Label" parent="PanelOptions/LocalesPanel"] +layout_mode = 1 +anchors_preset = 10 +anchor_right = 1.0 +offset_bottom = 71.0 +grow_horizontal = 2 +theme_override_colors/font_color = Color(0.617455, 0.617455, 0.617455, 1) +theme_override_font_sizes/font_size = 10 +text = "Messages will include only and exactly the locales listed below. If there is no content for them yet, a blank line will be included. (This is meant to be sent to translators, so they fill the blank items.)" +autowrap_mode = 3 + +[node name="Label2" type="Label" parent="PanelOptions/LocalesPanel"] +layout_mode = 1 +offset_left = 8.0 +offset_top = 83.0 +offset_right = 128.0 +offset_bottom = 97.0 +theme_override_colors/font_color = Color(0.617455, 0.617455, 0.617455, 1) +theme_override_font_sizes/font_size = 10 +text = "Enter one locale per line." +horizontal_alignment = 1 + +[node name="LocalesEdit" type="TextEdit" parent="PanelOptions/LocalesPanel"] +layout_mode = 0 +offset_left = 8.0 +offset_top = 103.0 +offset_right = 248.0 +offset_bottom = 180.0 +theme_override_colors/font_placeholder_color = Color(1, 1, 1, 0.184314) +theme_override_font_sizes/font_size = 12 +placeholder_text = "es +pt +jp" + +[node name="BtnExport" type="Button" parent="PanelOptions"] +layout_mode = 1 +offset_left = 485.0 +offset_top = 466.0 +offset_right = 685.0 +offset_bottom = 493.0 +focus_mode = 0 +theme_override_styles/focus = ExtResource("2_0m3dk") +theme_override_styles/hover = ExtResource("2_0m3dk") +theme_override_styles/normal = ExtResource("2_0m3dk") +text = "Export" + +[node name="PanelSheets" type="Panel" parent="."] +visible = false +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_styles/panel = ExtResource("1_gyveq") + +[node name="BottomBar" type="Control" parent="PanelSheets"] +layout_mode = 1 +anchors_preset = 12 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_top = -36.0 +offset_bottom = -1.0 +grow_horizontal = 2 +grow_vertical = 0 + +[node name="BtnOk" type="Button" parent="PanelSheets/BottomBar"] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -28.0 +offset_top = -13.5 +offset_right = 28.0 +offset_bottom = 13.5 +grow_horizontal = 2 +grow_vertical = 2 +focus_mode = 0 +theme_override_styles/focus = ExtResource("2_0m3dk") +theme_override_styles/hover = ExtResource("2_0m3dk") +theme_override_styles/normal = ExtResource("2_0m3dk") +text = "OK" + +[node name="Label" type="Label" parent="PanelSheets"] +layout_mode = 0 +offset_left = 20.0 +offset_top = 12.0 +offset_right = 152.0 +offset_bottom = 35.0 +text = "Sheets to export:" + +[node name="SheetScroll" type="ScrollContainer" parent="PanelSheets"] +layout_mode = 0 +offset_left = 23.0 +offset_top = 53.0 +offset_right = 678.0 +offset_bottom = 443.0 + +[node name="VBox" type="VBoxContainer" parent="PanelSheets/SheetScroll"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="ExportSheetListItem" parent="PanelSheets/SheetScroll/VBox" instance=ExtResource("4_4xg1u")] +layout_mode = 2 + +[node name="PanelOutput" type="Panel" parent="."] +visible = false +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_styles/panel = ExtResource("1_gyveq") + +[node name="BottomBar" type="Control" parent="PanelOutput"] +layout_mode = 1 +anchors_preset = 12 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_top = -36.0 +offset_bottom = -1.0 +grow_horizontal = 2 +grow_vertical = 0 + +[node name="BtnBack" type="Button" parent="PanelOutput/BottomBar"] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -28.0 +offset_top = -13.5 +offset_right = 28.0 +offset_bottom = 13.5 +grow_horizontal = 2 +grow_vertical = 2 +focus_mode = 0 +theme_override_styles/focus = ExtResource("2_0m3dk") +theme_override_styles/hover = ExtResource("2_0m3dk") +theme_override_styles/normal = ExtResource("2_0m3dk") +text = "Back" + +[node name="OutputEdit" type="TextEdit" parent="PanelOutput"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_top = 34.0 +offset_bottom = -38.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_font_sizes/font_size = 12 +editable = false +emoji_menu_enabled = false +deselect_on_focus_loss_enabled = false +drag_and_drop_selection_enabled = false +middle_mouse_paste_enabled = false +draw_tabs = true +draw_spaces = true + +[node name="Label" type="Label" parent="PanelOutput"] +layout_mode = 0 +offset_left = 4.0 +offset_top = 4.0 +offset_right = 136.0 +offset_bottom = 27.0 +text = "Exported output:" + +[connection signal="pressed" from="PanelOptions/BottomBar/BtnClose" to="." method="_on_btn_close_pressed"] +[connection signal="item_selected" from="PanelOptions/BtnExporter" to="." method="_on_btn_exporter_item_selected"] +[connection signal="pressed" from="PanelOptions/CaptionSheets/BtnManageSheets" to="." method="_on_btn_manage_sheets_pressed"] +[connection signal="toggled" from="PanelOptions/BtnForceLocales" to="." method="_on_btn_force_locales_toggled"] +[connection signal="pressed" from="PanelOptions/BtnExport" to="." method="_on_btn_export_pressed"] +[connection signal="pressed" from="PanelSheets/BottomBar/BtnOk" to="." method="_on_sheets_to_export_btn_ok_pressed"] +[connection signal="pressed" from="PanelOutput/BottomBar/BtnBack" to="." method="_on_btn_back_pressed"] diff --git a/addons/madtalk/components/MainEditor_DialogImport.gd b/addons/madtalk/components/MainEditor_DialogImport.gd new file mode 100644 index 0000000..b85a70c --- /dev/null +++ b/addons/madtalk/components/MainEditor_DialogImport.gd @@ -0,0 +1,760 @@ +@tool +extends Window + +signal import_executed(destination_sheet: String) # destination_sheet = "" when not collapsing + +var mt_ie := MadTalkImportExport.new() +var dialog_data: DialogData +var current_sheet_id: String = "" + +var template_CheckBoxLocale := preload("res://addons/madtalk/components/CheckBoxLocale.tscn") + +@onready var panel_input := $PanelInput +@onready var panel_options := $PanelOptions + +@onready var btn_importer := $PanelInput/BtnImporter +@onready var input_edit := $PanelInput/InputEdit +@onready var importer_desc := $PanelInput/ImporterDesc + +@onready var import_summary := $PanelOptions/ImportSummary + +@onready var btn_destination := $PanelOptions/BtnDestination +@onready var label_sheets := $PanelOptions/BtnDestination/LabelSheets +@onready var locale_listbox := $PanelOptions/LocaleListScroll/LocaleList + +var prepared_data := {} +var resource_map := {} +var sheet_info := {} + +func setup(data: DialogData, sheet_id: String): + dialog_data = data + current_sheet_id = sheet_id + + mt_ie.refresh_list_importers() + + # mt_ie.importers_list = { "absolute path to .gd": "Friendly Name", } + + btn_importer.clear() + for path in mt_ie.importers_list: + btn_importer.add_item(mt_ie.importers_list[path]) + btn_importer.select(-1) + + resource_map.clear() + sheet_info.clear() + + input_edit.text = "" + panel_input.show() + panel_options.hide() + + +func set_current_sheet(sheet: String): + current_sheet_id = sheet + update_resource_map() + + +func reset_and_show(): + panel_input.show() + panel_options.hide() + popup_centered() + + +func update_resource_map(extra_sheets: Array = []): + resource_map.clear() + sheet_info.clear() + + if (not dialog_data): + return + + var sheet_list := [current_sheet_id] + sheet_list.append_array(extra_sheets) + + for sheet_id in sheet_list: + if sheet_id in dialog_data.sheets: + var sheet_data = dialog_data.sheets[sheet_id] + resource_map[sheet_id] = {} + sheet_info[sheet_id] = {} + + for dialog_node: DialogNodeData in sheet_data.nodes: + resource_map[sheet_id][dialog_node.resource_scene_unique_id] = dialog_node + sheet_info[sheet_id][dialog_node.resource_scene_unique_id] = { + "type": "sequence", + "sequence_id": dialog_node.sequence_id + } + + for item_index in range(dialog_node.items.size()): + var dialog_item: DialogNodeItemData = dialog_node.items[item_index] + + if dialog_item.item_type == DialogNodeItemData.ItemTypes.Message: + resource_map[sheet_id][dialog_item.resource_scene_unique_id] = dialog_item + sheet_info[sheet_id][dialog_item.resource_scene_unique_id] = { + "type": "message", + "item_index": item_index, + "sequence_id": dialog_node.sequence_id, + } + + +func _resource_map_append_sheet(sheet_id: String): + # Only appends the sheet itself, not the contents + var sheet_data = dialog_data.sheets[sheet_id] + resource_map[sheet_id] = {} + sheet_info[sheet_id] = {} + + +func _resource_map_append_sequence(sheet_id: String, dialog_node: DialogNodeData): + # Only appends the sequence itself, not the items + resource_map[sheet_id][dialog_node.resource_scene_unique_id] = dialog_node + sheet_info[sheet_id][dialog_node.resource_scene_unique_id] = { + "type": "sequence", + "sequence_id": dialog_node.sequence_id + } + + +func _resource_map_append_message(sheet_id: String, sequence_uid: String, item_index: int, dialog_item: DialogNodeItemData): + if not sequence_uid in resource_map[sheet_id]: + return + + if not dialog_item.item_type == DialogNodeItemData.ItemTypes.Message: + return + + var dialog_node: DialogNodeData = resource_map[sheet_id][sequence_uid] + + resource_map[sheet_id][dialog_item.resource_scene_unique_id] = dialog_item + sheet_info[sheet_id][dialog_item.resource_scene_unique_id] = { + "type": "message", + "item_index": item_index, + "sequence_id": dialog_node.sequence_id, + } + + + +func _on_btn_close_pressed() -> void: + hide() + +# --------------------------------------- + + +func _mark_locale_as_mentioned(locale: String): + if not locale in prepared_data["locales_mentioned"]: + prepared_data["locales_mentioned"].append(locale) + + +func _refresh_locale_listbox(locales: Array): + for child in locale_listbox.get_children(): + child.queue_free() + + # Default is always included + var new_checkbox := template_CheckBoxLocale.instantiate() + new_checkbox.locale = "" + new_checkbox.text = "Default locale" + locale_listbox.add_child(new_checkbox) + new_checkbox.toggled.connect(_on_check_box_locale_toggled) + + for locale in locales: + if locale != "": + new_checkbox = template_CheckBoxLocale.instantiate() + new_checkbox.locale = locale + new_checkbox.text = locale + locale_listbox.add_child(new_checkbox) + new_checkbox.toggled.connect(_on_check_box_locale_toggled) + + + +func prepare(text: String, restricted_locales: Array = []): + var restrict_locales: bool = (restricted_locales.size() > 0) + prepared_data.clear() + + if (not dialog_data) or (not current_sheet_id in dialog_data.sheets) or (btn_importer.selected < 0) or (btn_importer.selected >= mt_ie.importers_list.size()): + print("MadTalk importer error") + return false + + var importer_script = mt_ie.importers_list.keys()[ btn_importer.selected ] + var importer = load(importer_script).new() + + var imported_data = importer.import(dialog_data, text) + + if (not "status" in imported_data) or (imported_data["status"] != importer.ImportResults.OK): + print("MadTalk importer error") + return false + + # Sort destination sheets and make sure they exist + var collapse_destination := false + var destination_sheet := "" # Only used if sollapsing destination + var destination_desc := "" + match btn_destination.selected: + 0: + # Respect original sheets + collapse_destination = false + 1: + collapse_destination = true + destination_sheet = current_sheet_id + 2: + collapse_destination = true + destination_sheet = _make_sheet_name() + destination_desc = "(Sheet created while importing dialog data - please rename and change description)" + _: + return false + + prepared_data["collapse_destination"] = collapse_destination + prepared_data["destination_sheet"] = destination_sheet + prepared_data["to_modify"] = {} # sheet_id: { sequence_uid: { message_uid: message_item, ... } } + prepared_data["to_append"] = {} # sheet_id: { sequence_uid: [ message_item, message_item, ... ] } + prepared_data["new"] = {} # sheet_id: { array (sequence) of array (message) } + prepared_data["stats"] = { + "modified_sequences": 0, + "modified_messages": 0, + "appended_sequences": 0, + "appended_messages": 0, + "new_sequences": 0, + "new_messages": 0, + "missing_sequences": 0, + "missing_messages": 0, + } + prepared_data["locales_mentioned"] = [] + prepared_data["affected_sheets"] = [] + prepared_data["sheet_info"] = {} + + var original_sheet_list: Array = imported_data["sheets"].keys().duplicate() + + if collapse_destination: + prepared_data["affected_sheets"] = [destination_sheet] + prepared_data["sheet_info"] = { destination_sheet: { + "sheet_id": destination_sheet, + "sheet_desc": destination_desc, + }} + + else: + prepared_data["affected_sheets"] = original_sheet_list + for sheet_id in imported_data["sheets"]: + prepared_data["sheet_info"][sheet_id] = { + "sheet_id": imported_data["sheets"][sheet_id]["sheet_id"], + "sheet_desc": imported_data["sheets"][sheet_id]["sheet_desc"] + } + + update_resource_map(prepared_data["affected_sheets"]) + + if collapse_destination: + if not destination_sheet in resource_map: + resource_map[destination_sheet] = {} # Just so key access doesn't crash - it's ok to be empty + if not destination_sheet in prepared_data["to_modify"]: + prepared_data["to_modify"][destination_sheet] = {} + if not destination_sheet in prepared_data["to_append"]: + prepared_data["to_append"][destination_sheet] = {} + if not destination_sheet in prepared_data["new"]: + prepared_data["new"][destination_sheet] = [] + + + for source_sheet_id in imported_data["sheets"]: + var sheet_id: String = destination_sheet if collapse_destination else source_sheet_id + # source_sheet_id is used when reading source (imported_data) + # sheet_id is used when writing to prepateddata or checking resource_map + + if not collapse_destination: + if not sheet_id in resource_map: + resource_map[sheet_id] = {} # Just so key access doesn't crash - it's ok to be empty + if not sheet_id in prepared_data["to_modify"]: + prepared_data["to_modify"][sheet_id] = {} + if not sheet_id in prepared_data["to_append"]: + prepared_data["to_append"][sheet_id] = {} + if not sheet_id in prepared_data["new"]: + prepared_data["new"][sheet_id] = [] + + for node: Dictionary in imported_data["sheets"][source_sheet_id]["nodes"]: + if (node["sequence_uid"] != ""): + if node["sequence_uid"] in resource_map[sheet_id]: + node["sequence_resource"] = resource_map[sheet_id][node["sequence_uid"]] + #prepared_data["stats"]["modified_sequences"] += 1 + else: + node["sequence_uid"] = "" + prepared_data["stats"]["missing_sequences"] += 1 + + + # Existing sequence + if (node["sequence_uid"] != "") and (node["sequence_uid"] in resource_map[sheet_id]): + # Sequence exists in this sheet + prepared_data["to_modify"][sheet_id][node["sequence_uid"]] = {} + prepared_data["to_append"][sheet_id][node["sequence_uid"]] = [] + + var sequence_message_modified_count := 0 + for item: Dictionary in node["items"]: + # Locales mentioned is recorded even if message is discarded + for locale in item["locales"]: + _mark_locale_as_mentioned(locale) + + if restrict_locales and (not "" in restricted_locales): + var has_at_least_one_locale := false + for locale in restricted_locales: + if locale in item["locales"]: + has_at_least_one_locale = true + break + if not has_at_least_one_locale: + continue + + # Delete unwanted locales - except default + if restrict_locales: + item = item.duplicate(true) + var orig_locales = item["locales"].keys().duplicate() + for locale in orig_locales: + if not locale in restricted_locales: + item["locales"].erase(locale) + + if (item["message_uid"] != ""): + if item["message_uid"] in resource_map[sheet_id]: + item["message_resource"] = resource_map[sheet_id][item["message_uid"]] + prepared_data["stats"]["modified_messages"] += 1 + prepared_data["to_modify"][sheet_id][node["sequence_uid"]][item["message_uid"]] = item + + else: + item["message_uid"] = "" + prepared_data["stats"]["missing_messages"] += 1 + prepared_data["stats"]["new_messages"] += 1 + prepared_data["to_append"][sheet_id][node["sequence_uid"]].append(item) + + else: + prepared_data["stats"]["new_messages"] += 1 + prepared_data["to_append"][sheet_id][node["sequence_uid"]].append(item) + + sequence_message_modified_count += 1 + + if sequence_message_modified_count > 0: + prepared_data["stats"]["modified_sequences"] += 1 + + # New sequence + else: + # Either it's a new sequence, or the sequence was specified, but not found + # this happens when importing a file exported from a different sheet + # should be treated as a new sequence + var new_sequence_array := [] + for item: Dictionary in node["items"]: + # Locales mentioned is recorded even if message is discarded + for locale in item["locales"]: + _mark_locale_as_mentioned(locale) + + if restrict_locales and (not "" in restricted_locales): + var has_at_least_one_locale := false + for locale in restricted_locales: + if locale in item["locales"]: + has_at_least_one_locale = true + break + if not has_at_least_one_locale: + continue + + if restrict_locales: + item = item.duplicate(true) + var orig_locales = item["locales"].keys().duplicate() + for locale in orig_locales: + if not locale in restricted_locales: + item["locales"].erase(locale) + + prepared_data["stats"]["new_messages"] += 1 + new_sequence_array.append(item) + + if new_sequence_array.size() > 0: + prepared_data["new"][sheet_id].append(new_sequence_array) + prepared_data["stats"]["new_sequences"] += 1 + + # Sanitize empty lists: + var sheet_ids = prepared_data["to_modify"].keys() + for sheet_id in sheet_ids: + var seq_ids: Array = prepared_data["to_modify"][sheet_id].keys() + for sequence_uid: String in seq_ids: + if prepared_data["to_modify"][sheet_id][sequence_uid].size() == 0: + prepared_data["to_modify"][sheet_id].erase(sequence_uid) + if prepared_data["to_modify"][sheet_id].size() == 0: + prepared_data["to_modify"].erase(sheet_id) + + sheet_ids = prepared_data["to_append"].keys() + for sheet_id in sheet_ids: + var seq_ids: Array = prepared_data["to_append"][sheet_id].keys() + for sequence_uid: String in seq_ids: + if prepared_data["to_append"][sheet_id][sequence_uid].size() == 0: + prepared_data["to_append"][sheet_id].erase(sequence_uid) + if prepared_data["to_append"][sheet_id].size() == 0: + prepared_data["to_append"].erase(sheet_id) + + sheet_ids = prepared_data["new"].keys() + for sheet_id in sheet_ids: + if prepared_data["new"][sheet_id].size() == 0: + prepared_data["new"].erase(sheet_id) + + import_summary.text = generate_summary(restricted_locales) + + +func reload(restrict_locales: bool = false): + if restrict_locales: + var restricted_locales := [] + var is_restricted := false + for checkbox in locale_listbox.get_children(): + if checkbox.button_pressed: + restricted_locales.append(checkbox.locale) + else: + is_restricted = true + if not is_restricted: + restricted_locales.clear() + + prepare(input_edit.text, restricted_locales) + else: + prepare(input_edit.text) + + _update_destination_text(btn_destination.selected) + + + +func _cardinal_number(value: int) -> String: + match value: + 0: + return "1st" + 1: + return "2nd" + 2: + return "3rd" + _: + return str(value)+"th" + + +func _print_message_item(item: Dictionary, show_default_locale: bool = true) -> String: + var result := "" + + result += "Speaker: \"[color=#ff9955]%s[/color]\" Variant: \"[color=#ff9955]%s[/color]\"\nText:\n" % [item["speaker_id"], item["variant"]] + if show_default_locale: + result += " [color=#aacc55][lb]default locale[rb][/color]\n" + result += " [color=#55ffff]%s[/color]\n" % item["message_text"] + for locale in item["locales"]: + result += " [color=#aacc55][lb]%s[rb][/color]\n" % locale + result += " [color=#55ffff]%s[/color]\n" % item["locales"][locale] + + return result + + +func generate_summary(restricted_locales: Array = []) -> String: + var show_default_locale: bool = (restricted_locales.size() == 0) or ("" in restricted_locales) + + var result := "[color=#ff3333][b]=== WARNING: THERE IS NO UNDO ===[/b][/color]\n\n" + + if prepared_data["stats"]["modified_sequences"] > 0: + result += "[color=#ff5555][b]%d sequence(s) will be modified[/b][/color]\n" % prepared_data["stats"]["modified_sequences"] + + if prepared_data["stats"]["modified_messages"] > 0: + result += "[color=#ff5555][b]%d message(s) items will be modified[/b][/color]\n" % prepared_data["stats"]["modified_messages"] + + if prepared_data["stats"]["appended_sequences"] > 0: + result += "[color=#ff5555][b]%d sequence(s) will have new messages appended[/b][/color]\n" % prepared_data["stats"]["appended_sequences"] + + if prepared_data["stats"]["appended_messages"] > 0: + result += "[color=#ff5555][b]%d message(s) items will be appended to existing sequences[/b][/color]\n" % prepared_data["stats"]["appended_messages"] + + if prepared_data["stats"]["missing_sequences"] > 0: + result += "[color=#ffbb55][b]%d sequence(s) were supposed to be modified, but the codes they refer to were not found. They will be inserted as new sequences instead.[/b][/color]\n" % prepared_data["stats"]["missing_sequences"] + + if prepared_data["stats"]["missing_messages"] > 0: + result += "[color=#ffbb55][b]%d message(s) items were supposed to be modified, but the codes they refer to were not found. They will be inserted as new messages instead.[/b][/color]\n" % prepared_data["stats"]["missing_messages"] + + if prepared_data["stats"]["new_sequences"] > 0: + result += "[color=#55ff55][b]%d new sequence(s) will be created[/b][/color]\n" % prepared_data["stats"]["new_sequences"] + + if prepared_data["stats"]["new_messages"] > 0: + result += "[color=#55ff55][b]%d new messages will be created[/b][/color]\n" % prepared_data["stats"]["new_messages"] + + + # Modified messages: + if prepared_data["stats"]["modified_messages"] > 0: + result += "\n========================================================\n" + result += "SEQUENCES/MESSAGES TO BE MODIFIED\n" + result += "--------------------------------------------------------\n\n" + + for sheet_id in prepared_data["to_modify"]: + if prepared_data["to_modify"][sheet_id].size() == 0: + continue + + result += "[color=#9999ff]Sheet ID: [b]%s[/b][/color]\n\n" % (sheet_id if (sheet_id != "") else "(not specified)") + + for sequence_uid: String in prepared_data["to_modify"][sheet_id]: + var node: Dictionary = prepared_data["to_modify"][sheet_id][sequence_uid] + var node_resource: DialogNodeData = resource_map[sheet_id][sequence_uid] + + result += " === Sequence ID [b]%d[/b] ===\n\n" % node_resource.sequence_id + + for message_uid: String in node: + var item: Dictionary = node[message_uid] + var message_info: Dictionary = sheet_info[sheet_id][message_uid] + + result += "--- Item index %d (the %s item in the sequence) ---\n" % [ + message_info["item_index"], + _cardinal_number(message_info["item_index"]) + ] + result += _print_message_item(item, show_default_locale) + result += "\n---\n\n" + + + if prepared_data["to_append"].size() > 0: + result += "\n========================================================\n" + result += "SEQUENCES TO HAVE MESSAGES APPENDED\n" + result += "--------------------------------------------------------\n\n" + + for sheet_id in prepared_data["to_append"]: + if prepared_data["to_append"][sheet_id].size() == 0: + continue + + result += "[color=#9999ff]Sheet ID: [b]%s[/b][/color]\n\n" % (sheet_id if (sheet_id != "") else "(not specified)") + + for sequence_uid: String in prepared_data["to_append"][sheet_id]: + var node: Array = prepared_data["to_append"][sheet_id][sequence_uid] + var node_resource: DialogNodeData = resource_map[sheet_id][sequence_uid] + + result += " === Sequence ID [b]%d[/b] ===\n\n" % node_resource.sequence_id + + for item: Dictionary in node: + result += _print_message_item(item, show_default_locale) + result += "\n---\n\n" + + if prepared_data["new"].size() > 0: + result += "\n========================================================\n" + result += "NEW SEQUENCES/MESSAGES\n" + result += "--------------------------------------------------------\n\n" + + for sheet_id in prepared_data["new"]: + if prepared_data["new"][sheet_id].size() == 0: + continue + + result += "[color=#9999ff]Sheet ID: [b]%s[/b][/color]\n\n" % (sheet_id if (sheet_id != "") else "(not specified)") + + for node: Array in prepared_data["new"][sheet_id]: + result += " === New sequence ===\n\n" + + for item: Dictionary in node: + result += _print_message_item(item, show_default_locale) + result += "\n---\n\n" + + + return result + + +func execute(restricted_locales: Array = []) -> bool: + var include_default_locale: bool = (restricted_locales.size() == 0) or ("" in restricted_locales) + + if prepared_data["stats"]["modified_messages"] > 0: + for sheet_id in prepared_data["to_modify"]: + for sequence_uid: String in prepared_data["to_modify"][sheet_id]: + var node: Dictionary = prepared_data["to_modify"][sheet_id][sequence_uid] + + for message_uid: String in node: + var item: Dictionary = node[message_uid] + _execute_modify_message(sheet_id, sequence_uid, message_uid, item, include_default_locale) + + if prepared_data["to_append"].size() > 0: + for sheet_id in prepared_data["to_append"]: + for sequence_uid: String in prepared_data["to_append"][sheet_id]: + var node: Array = prepared_data["to_append"][sheet_id][sequence_uid] + + for item: Dictionary in node: + _execute_create_message(sheet_id, sequence_uid, item, include_default_locale) + + if prepared_data["new"].size() > 0: + for sheet_id in prepared_data["new"]: + var sheet_desc: String = prepared_data["sheet_info"][sheet_id]["sheet_desc"] if sheet_id in prepared_data["sheet_info"] else "" + _execute_create_sheet_if_needed(sheet_id, sheet_desc, false) + + for node: Array in prepared_data["new"][sheet_id]: + var dialog_node: DialogNodeData = _execute_create_sequence(sheet_id, false) + var sequence_uid: String = dialog_node.resource_scene_unique_id + + for item: Dictionary in node: + _execute_create_message(sheet_id, sequence_uid, item, include_default_locale) + + var signal_sheet_id := "" + if prepared_data["collapse_destination"]: + signal_sheet_id = prepared_data["destination_sheet"] + + import_executed.emit(signal_sheet_id) + + return true + + +func _make_sheet_name() -> String: + var sheet_num = 1 + var new_sheet_name = "new_imported_sheet_1" + while new_sheet_name in dialog_data.sheets: + sheet_num += 1 + new_sheet_name = "new_imported_sheet_%d" % sheet_num + return new_sheet_name + + +func _execute_create_sheet_if_needed(sheet_id: String, desc: String = "", create_id_zero: bool = true) -> DialogSheetData: + if not sheet_id in dialog_data.sheets: + var new_sheet_data = DialogSheetData.new() # default next_sequence_id=0 + new_sheet_data.resource_scene_unique_id = Resource.generate_scene_unique_id() + new_sheet_data.sheet_id = sheet_id + new_sheet_data.sheet_description = desc + new_sheet_data.nodes = [] # Forces a new array to avoid reference sharing + dialog_data.sheets[sheet_id] = new_sheet_data + _resource_map_append_sheet(sheet_id) + + if create_id_zero: + # Sequence MUST have ID 0 + # this can only be bypassed if the code invoking this method + # will take care of creating it externally + _execute_create_sequence(sheet_id, false) + + return dialog_data.sheets[sheet_id] + + +func _execute_create_sequence(sheet_id: String, create_sheet_if_needed: bool = true) -> DialogNodeData: + var sheet_data: DialogSheetData + if create_sheet_if_needed: + sheet_data = _execute_create_sheet_if_needed(sheet_id, "", false) + elif sheet_id in dialog_data.sheets: + sheet_data = dialog_data.sheets[sheet_id] + else: + return null + + # Find next available sequence id + var next_available_id = sheet_data.next_sequence_id + for this_node in sheet_data.nodes: + if this_node.sequence_id >= next_available_id: + next_available_id = this_node.sequence_id+1 + + var new_data = DialogNodeData.new() + new_data.resource_scene_unique_id = Resource.generate_scene_unique_id() + new_data.position = Vector2(30,30) * next_available_id + new_data.sequence_id = next_available_id + new_data.items = [] # New Array to avoid sharing references + new_data.options = [] # New Array to avoid sharing references + + _resource_map_append_sequence(sheet_id, new_data) + + sheet_data.nodes.append(new_data) + sheet_data.next_sequence_id = next_available_id+1 + + return new_data + + +func _execute_create_message(sheet_id: String, sequence_uid: String, dict: Dictionary = {}, include_default_locale: bool = true) -> DialogNodeItemData: + if not sheet_id in dialog_data.sheets: + return null + + if not sequence_uid in resource_map[sheet_id]: + return null + + var sheet_data: DialogSheetData = dialog_data.sheets[sheet_id] + var dialog_node: DialogNodeData = resource_map[sheet_id][sequence_uid] + + var new_data_item = DialogNodeItemData.new() + new_data_item.resource_scene_unique_id = Resource.generate_scene_unique_id() + new_data_item.item_type = DialogNodeItemData.ItemTypes.Message + if dict.size() == 0: + new_data_item.message_speaker_id = "" + new_data_item.message_text = "" + else: + new_data_item.message_speaker_id = dict["speaker_id"] + new_data_item.message_speaker_variant = dict["variant"] + + if include_default_locale: + new_data_item.message_text = dict["message_text"] + + for locale in dict["locales"]: + new_data_item.message_text_locales[locale] = dict["locales"][locale] + + dialog_node.items.append(new_data_item) + + var item_index = dialog_node.items.find(new_data_item) + + _resource_map_append_message(sheet_id, sequence_uid, item_index, new_data_item) + + return new_data_item + + + + +func _execute_modify_message(sheet_id: String, sequence_uid: String, message_uid: String, dict: Dictionary, include_default_locale: bool = true): + if not sheet_id in dialog_data.sheets: + return null + + if not sequence_uid in resource_map[sheet_id]: + return null + + if not message_uid in resource_map[sheet_id]: + return null + + var sheet_data: DialogSheetData = dialog_data.sheets[sheet_id] + var dialog_node: DialogNodeData = resource_map[sheet_id][sequence_uid] + var dialog_item: DialogNodeItemData = resource_map[sheet_id][message_uid] + + dialog_item.message_speaker_id = dict["speaker_id"] + dialog_item.message_speaker_variant = dict["variant"] + + if include_default_locale: + dialog_item.message_text = dict["message_text"] + + for locale in dict["locales"]: + dialog_item.message_text_locales[locale] = dict["locales"][locale] + + + +# --------------------------------------- + + +func _on_btn_importer_item_selected(index: int) -> void: + if (btn_importer.selected < 0) or (btn_importer.selected >= mt_ie.importers_list.size()): + print("MadTalk importer error") + return + + var importer_script = mt_ie.importers_list.keys()[ btn_importer.selected ] + var importer = load(importer_script).new() + importer_desc.text = importer.description + + +func _on_btn_load_pressed() -> void: + btn_destination.select(0) + reload() + _refresh_locale_listbox(prepared_data["locales_mentioned"]) + panel_input.hide() + panel_options.show() + + +func _on_options_btn_back_pressed() -> void: + panel_input.show() + panel_options.hide() + import_summary.text = "" + prepared_data.clear() + + +func _on_btn_destination_item_selected(index: int) -> void: + reload(true) + + +func _update_destination_text(index: int): + var s := "" + match index: + 0: + s = "Destination sheets from the imported data will be respected. Messages with unspecified sheet ID will affect currenty selected sheet ([color=#ffcc55]%s[/color]).\n\nThe following sheets will be affected:\n" % current_sheet_id + for sheet_id in prepared_data["affected_sheets"]: + s += "[color=#ffcc55][b]%s[/b][/color]\n" % (sheet_id if sheet_id != "" else ("Current sheet (%s)" % current_sheet_id)) + + 1: + s = "All content will be imported into current sheet ([color=#ffcc55]%s[/color]), ignoring the sheets mentioned in imported data.\n\nThe following sheets will be affected:\n" % current_sheet_id + s += "[color=#ffcc55][b]%s[/b][/color]\n" % current_sheet_id + + 2: + s = "All content will be imported into a brand new sheet, ignoring the sheets mentioned in imported data.\n\nThe following sheets will be affected:\n" + s += "[color=#ffcc55][b](new sheet will be created)[/b][/color]\n" + + + label_sheets.text = s + + +func _on_check_box_locale_toggled(_toggled_on: bool) -> void: + reload(true) + + +func _on_btn_import_pressed() -> void: + var restricted_locales := [] + var is_restricted := false + for checkbox in locale_listbox.get_children(): + if checkbox.button_pressed: + restricted_locales.append(checkbox.locale) + else: + is_restricted = true + if not is_restricted: + restricted_locales.clear() + + execute(restricted_locales) + hide() diff --git a/addons/madtalk/components/MainEditor_DialogImport.gd.uid b/addons/madtalk/components/MainEditor_DialogImport.gd.uid new file mode 100644 index 0000000..d6e7aa4 --- /dev/null +++ b/addons/madtalk/components/MainEditor_DialogImport.gd.uid @@ -0,0 +1 @@ +uid://cix5fmirlacwr diff --git a/addons/madtalk/components/MainEditor_DialogImport.tscn b/addons/madtalk/components/MainEditor_DialogImport.tscn new file mode 100644 index 0000000..4d39c44 --- /dev/null +++ b/addons/madtalk/components/MainEditor_DialogImport.tscn @@ -0,0 +1,228 @@ +[gd_scene load_steps=6 format=3 uid="uid://b22lta4yhfhgu"] + +[ext_resource type="Script" uid="uid://cix5fmirlacwr" path="res://addons/madtalk/components/MainEditor_DialogImport.gd" id="1_8rwin"] +[ext_resource type="FontFile" uid="uid://dp7os1mai8le8" path="res://addons/madtalk/fonts/droid-sans-mono.regular.ttf" id="4_gx77l"] +[ext_resource type="PackedScene" uid="uid://cfxq3ddd234s5" path="res://addons/madtalk/components/CheckBoxLocale.tscn" id="5_ll683"] +[ext_resource type="StyleBox" path="res://addons/madtalk/components/resources/ButtonStyle.tres" id="8_0k7gi"] +[ext_resource type="StyleBox" path="res://addons/madtalk/components/resources/PanelStyle.tres" id="13_45pmk"] + +[node name="DialogImport" type="Window"] +auto_translate_mode = 1 +title = "Import Dialog Sheet" +position = Vector2i(0, 36) +size = Vector2i(700, 500) +transient = true +exclusive = true +popup_window = true +script = ExtResource("1_8rwin") + +[node name="PanelInput" type="Panel" parent="."] +visible = false +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_styles/panel = ExtResource("13_45pmk") + +[node name="BtnImporter" type="OptionButton" parent="PanelInput"] +layout_mode = 0 +offset_left = 122.0 +offset_top = 16.0 +offset_right = 330.0 +offset_bottom = 36.0 + +[node name="Label" type="Label" parent="PanelInput/BtnImporter"] +layout_mode = 1 +anchors_preset = 4 +anchor_top = 0.5 +anchor_bottom = 0.5 +offset_left = -104.0 +offset_top = -8.5 +offset_right = -15.0 +offset_bottom = 8.5 +grow_vertical = 2 +theme_override_font_sizes/font_size = 12 +text = "Import Format:" + +[node name="Label" type="Label" parent="PanelInput"] +layout_mode = 0 +offset_left = 16.0 +offset_top = 52.0 +offset_right = 164.0 +offset_bottom = 69.0 +theme_override_font_sizes/font_size = 12 +text = "Paste content to import:" + +[node name="InputEdit" type="TextEdit" parent="PanelInput"] +layout_mode = 1 +offset_left = 8.0 +offset_top = 72.0 +offset_right = 356.0 +offset_bottom = 461.0 +theme_override_font_sizes/font_size = 12 +emoji_menu_enabled = false +deselect_on_focus_loss_enabled = false +draw_tabs = true +draw_spaces = true + +[node name="BtnLoad" type="Button" parent="PanelInput"] +layout_mode = 1 +anchors_preset = 7 +anchor_left = 0.5 +anchor_top = 1.0 +anchor_right = 0.5 +anchor_bottom = 1.0 +offset_left = -52.0 +offset_top = -32.0 +offset_right = 4.0 +offset_bottom = -5.0 +grow_horizontal = 2 +grow_vertical = 0 +focus_mode = 0 +theme_override_styles/focus = ExtResource("8_0k7gi") +theme_override_styles/hover = ExtResource("8_0k7gi") +theme_override_styles/normal = ExtResource("8_0k7gi") +text = "Load" + +[node name="ImporterDesc" type="RichTextLabel" parent="PanelInput"] +layout_mode = 0 +offset_left = 374.0 +offset_top = 17.0 +offset_right = 689.0 +offset_bottom = 436.0 +bbcode_enabled = true + +[node name="PanelOptions" type="Panel" parent="."] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_styles/panel = ExtResource("13_45pmk") + +[node name="ImportSummary" type="RichTextLabel" parent="PanelOptions"] +layout_mode = 0 +offset_left = 307.0 +offset_top = 24.0 +offset_right = 687.0 +offset_bottom = 435.0 +theme_override_fonts/normal_font = ExtResource("4_gx77l") +bbcode_enabled = true + +[node name="BtnDestination" type="OptionButton" parent="PanelOptions"] +layout_mode = 0 +offset_left = 10.0 +offset_top = 46.0 +offset_right = 295.0 +offset_bottom = 66.0 +theme_override_font_sizes/font_size = 12 +selected = 0 +item_count = 3 +popup/item_0/text = "Sheets mentioned in imported data" +popup/item_0/id = 0 +popup/item_1/text = "Current editting sheet" +popup/item_1/id = 1 +popup/item_2/text = "A brand new sheet" +popup/item_2/id = 2 + +[node name="Label" type="Label" parent="PanelOptions/BtnDestination"] +layout_mode = 0 +offset_top = -24.0 +offset_right = 169.0 +offset_bottom = -7.0 +theme_override_font_sizes/font_size = 12 +text = "Import sequences into:" + +[node name="LabelSheets" type="RichTextLabel" parent="PanelOptions/BtnDestination"] +layout_mode = 0 +offset_top = 36.0 +offset_right = 284.0 +offset_bottom = 199.0 +theme_override_font_sizes/bold_italics_font_size = 10 +theme_override_font_sizes/italics_font_size = 10 +theme_override_font_sizes/mono_font_size = 10 +theme_override_font_sizes/normal_font_size = 10 +theme_override_font_sizes/bold_font_size = 10 +bbcode_enabled = true +text = "Destination sheets from the imported data will be respected. The following sheets will be affected:" + +[node name="BtnImport" type="Button" parent="PanelOptions"] +layout_mode = 1 +offset_left = 21.0 +offset_top = 398.0 +offset_right = 221.0 +offset_bottom = 425.0 +focus_mode = 0 +theme_override_styles/focus = ExtResource("8_0k7gi") +theme_override_styles/hover = ExtResource("8_0k7gi") +theme_override_styles/normal = ExtResource("8_0k7gi") +text = "Import" + +[node name="BtnBack" type="Button" parent="PanelOptions"] +layout_mode = 1 +anchors_preset = 7 +anchor_left = 0.5 +anchor_top = 1.0 +anchor_right = 0.5 +anchor_bottom = 1.0 +offset_left = -332.0 +offset_top = -32.0 +offset_right = -276.0 +offset_bottom = -5.0 +grow_horizontal = 2 +grow_vertical = 0 +focus_mode = 0 +theme_override_styles/focus = ExtResource("8_0k7gi") +theme_override_styles/hover = ExtResource("8_0k7gi") +theme_override_styles/normal = ExtResource("8_0k7gi") +text = "Back" + +[node name="LabelLocales" type="Label" parent="PanelOptions"] +layout_mode = 2 +offset_left = 10.0 +offset_top = 250.0 +offset_right = 144.0 +offset_bottom = 267.0 +theme_override_font_sizes/font_size = 12 +text = "Locales to import:" + +[node name="LocaleListScroll" type="ScrollContainer" parent="PanelOptions"] +layout_mode = 0 +offset_left = 10.0 +offset_top = 274.0 +offset_right = 294.0 +offset_bottom = 382.0 + +[node name="LocaleList" type="VBoxContainer" parent="PanelOptions/LocaleListScroll"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="CheckBoxLocale" parent="PanelOptions/LocaleListScroll/LocaleList" instance=ExtResource("5_ll683")] +layout_mode = 2 + +[node name="BtnClose" type="Button" parent="."] +anchors_preset = 3 +anchor_left = 1.0 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = -64.0 +offset_top = -32.0 +offset_right = -8.0 +offset_bottom = -5.0 +grow_horizontal = 0 +grow_vertical = 0 +focus_mode = 0 +theme_override_styles/focus = ExtResource("8_0k7gi") +theme_override_styles/hover = ExtResource("8_0k7gi") +theme_override_styles/normal = ExtResource("8_0k7gi") +text = "Close" + +[connection signal="item_selected" from="PanelInput/BtnImporter" to="." method="_on_btn_importer_item_selected"] +[connection signal="pressed" from="PanelInput/BtnLoad" to="." method="_on_btn_load_pressed"] +[connection signal="item_selected" from="PanelOptions/BtnDestination" to="." method="_on_btn_destination_item_selected"] +[connection signal="pressed" from="PanelOptions/BtnImport" to="." method="_on_btn_import_pressed"] +[connection signal="pressed" from="PanelOptions/BtnBack" to="." method="_on_options_btn_back_pressed"] +[connection signal="toggled" from="PanelOptions/LocaleListScroll/LocaleList/CheckBoxLocale" to="." method="_on_check_box_locale_toggled"] +[connection signal="pressed" from="BtnClose" to="." method="_on_btn_close_pressed"] diff --git a/addons/madtalk/components/MainEditor_DialogSheetEdit.gd b/addons/madtalk/components/MainEditor_DialogSheetEdit.gd new file mode 100644 index 0000000..be7103e --- /dev/null +++ b/addons/madtalk/components/MainEditor_DialogSheetEdit.gd @@ -0,0 +1,30 @@ +@tool +extends Window + +signal sheet_saved(sheet_id, sheet_desc, delete_word) + +@onready var sheet_id_edit = get_node("Panel/SheetIDEdit") +@onready var sheet_desc_edit = get_node("Panel/SheedDescEdit") +@onready var sheet_delete_word = get_node("Panel/SheetDeleteEdit") + +func _ready(): + pass + # Hides the close button + #get_close_button().hide() + + +func open(data): + sheet_id_edit.text = data.sheet_id + sheet_desc_edit.text = data.sheet_description + sheet_delete_word.text = "" + popup_centered() + + +func _on_BtnSave_pressed(): + # We do not hide the window here as the parent takes care of it + # since a renaming collision raises a warning instead of closing it + emit_signal("sheet_saved", sheet_id_edit.text, sheet_desc_edit.text, sheet_delete_word.text) + + +func _on_BtnCancel_pressed(): + hide() diff --git a/addons/madtalk/components/MainEditor_DialogSheetEdit.gd.uid b/addons/madtalk/components/MainEditor_DialogSheetEdit.gd.uid new file mode 100644 index 0000000..09d8921 --- /dev/null +++ b/addons/madtalk/components/MainEditor_DialogSheetEdit.gd.uid @@ -0,0 +1 @@ +uid://x2ao4uxl8x3o diff --git a/addons/madtalk/components/MainEditor_DialogSheetEdit.tscn b/addons/madtalk/components/MainEditor_DialogSheetEdit.tscn new file mode 100644 index 0000000..0f8c4ba --- /dev/null +++ b/addons/madtalk/components/MainEditor_DialogSheetEdit.tscn @@ -0,0 +1,153 @@ +[gd_scene load_steps=6 format=3 uid="uid://cc7b2xbic6kf8"] + +[ext_resource type="StyleBox" path="res://addons/madtalk/components/resources/PanelStyle.tres" id="1"] +[ext_resource type="FontFile" uid="uid://b38okvijpcxmv" path="res://addons/madtalk/fonts/FreeSans_smal.tres" id="2"] +[ext_resource type="Script" uid="uid://x2ao4uxl8x3o" path="res://addons/madtalk/components/MainEditor_DialogSheetEdit.gd" id="3"] +[ext_resource type="StyleBox" path="res://addons/madtalk/components/resources/InputDarkStyle.tres" id="4"] +[ext_resource type="StyleBox" path="res://addons/madtalk/components/resources/ButtonStyle.tres" id="5"] + +[node name="DialogSheetEdit" type="Window"] +size = Vector2i(600, 300) +transient = true +exclusive = true +popup_window = true +script = ExtResource("3") + +[node name="Panel" type="Panel" parent="."] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +theme_override_styles/panel = ExtResource("1") + +[node name="BottomBar" type="Control" parent="Panel"] +layout_mode = 1 +anchors_preset = 12 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_top = -36.0 +offset_bottom = -1.0 +grow_horizontal = 2 +grow_vertical = 0 + +[node name="BtnSave" type="Button" parent="Panel/BottomBar"] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -100.5 +offset_top = -14.0 +offset_right = -59.5 +offset_bottom = 13.0 +grow_horizontal = 2 +grow_vertical = 2 +focus_mode = 0 +theme_override_styles/focus = ExtResource("5") +theme_override_styles/hover = ExtResource("5") +theme_override_styles/normal = ExtResource("5") +text = "OK" + +[node name="BtnCancel" type="Button" parent="Panel/BottomBar"] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = 53.0 +offset_top = -14.0 +offset_right = 109.0 +offset_bottom = 13.0 +grow_horizontal = 2 +grow_vertical = 2 +focus_mode = 0 +theme_override_styles/focus = ExtResource("5") +theme_override_styles/hover = ExtResource("5") +theme_override_styles/normal = ExtResource("5") +text = "Cancel" + +[node name="IDLabel" type="Label" parent="Panel"] +layout_mode = 0 +offset_left = 24.0 +offset_top = 21.5796 +offset_right = 83.0 +offset_bottom = 35.5796 +theme_override_fonts/font = ExtResource("2") +theme_override_font_sizes/font_size = 12 +text = "Sheet ID:" + +[node name="IDLabel2" type="Label" parent="Panel"] +layout_mode = 0 +offset_left = 216.0 +offset_top = 44.0 +offset_right = 490.0 +offset_bottom = 56.0 +theme_override_colors/font_color = Color(0.592157, 0.592157, 0.592157, 1) +theme_override_fonts/font = ExtResource("2") +theme_override_font_sizes/font_size = 12 +text = "<- Renaming the sheet ID might break existing + dialog logic if it relies on this ID" + +[node name="SheetIDEdit" type="LineEdit" parent="Panel"] +layout_mode = 0 +offset_left = 23.6254 +offset_top = 40.3746 +offset_right = 201.625 +offset_bottom = 64.3746 +theme_override_fonts/font = ExtResource("2") +theme_override_font_sizes/font_size = 14 +theme_override_styles/focus = ExtResource("4") +theme_override_styles/normal = ExtResource("4") +placeholder_text = "e.g. npc_forest_wizard" + +[node name="DescLabel" type="Label" parent="Panel"] +layout_mode = 0 +offset_left = 24.0 +offset_top = 85.5796 +offset_right = 122.0 +offset_bottom = 99.5796 +theme_override_fonts/font = ExtResource("2") +theme_override_font_sizes/font_size = 12 +text = "Sheet description:" + +[node name="SheedDescEdit" type="LineEdit" parent="Panel"] +layout_mode = 0 +offset_left = 24.0 +offset_top = 104.0 +offset_right = 502.0 +offset_bottom = 128.0 +theme_override_fonts/font = ExtResource("2") +theme_override_font_sizes/font_size = 14 +theme_override_styles/focus = ExtResource("4") +theme_override_styles/normal = ExtResource("4") +placeholder_text = "e.g. Wizard NPC in the forest (information and shop)" + +[node name="DeleteLabel" type="Label" parent="Panel"] +layout_mode = 0 +offset_left = 304.0 +offset_top = 149.58 +offset_right = 402.0 +offset_bottom = 163.58 +theme_override_colors/font_color = Color(0.662745, 0.662745, 0.662745, 1) +theme_override_fonts/font = ExtResource("2") +theme_override_font_sizes/font_size = 12 +text = "To delete this sheet, type the word +\"delete\" in the box below" + +[node name="SheetDeleteEdit" type="LineEdit" parent="Panel"] +layout_mode = 0 +offset_left = 308.0 +offset_top = 200.0 +offset_right = 500.0 +offset_bottom = 225.0 +theme_override_colors/font_color = Color(1, 0.498039, 0, 1) +theme_override_fonts/font = ExtResource("2") +theme_override_font_sizes/font_size = 12 +theme_override_styles/focus = ExtResource("4") +theme_override_styles/normal = ExtResource("4") +placeholder_text = "type \"delete\" here to delete sheet" + +[connection signal="pressed" from="Panel/BottomBar/BtnSave" to="." method="_on_BtnSave_pressed"] +[connection signal="pressed" from="Panel/BottomBar/BtnCancel" to="." method="_on_BtnCancel_pressed"] diff --git a/addons/madtalk/components/MessageCodeParser.gd b/addons/madtalk/components/MessageCodeParser.gd new file mode 100644 index 0000000..c91f2f2 --- /dev/null +++ b/addons/madtalk/components/MessageCodeParser.gd @@ -0,0 +1,189 @@ +extends RefCounted +class_name MessageCodeParser + +const tag_if_start = "{{if " +const tag_if_start_len = 5 + +const tag_if_end = "}}" +const tag_if_end_len = 2 + +const cond_sep = ": " +const cond_sep_len = 2 + +const operators = [" >= ", " <= ", " != ", " > ", " < ", " = "] + + + +func process(source_text: String, variables: Dictionary) -> Array: + var result = "" + + var message_list = parse(source_text, variables) + for msg in message_list: + if msg is String: + result += msg + + elif (msg is Dictionary) and (msg["condition"] in variables): + var var_value = variables[msg["condition"]] + var message_approved = false + match msg["operator"]: + "=": + message_approved = (var_value == msg["value"]) + "!=": + message_approved = (var_value != msg["value"]) + ">": + message_approved = (var_value > msg["value"]) + ">=": + message_approved = (var_value >= msg["value"]) + "<": + message_approved = (var_value < msg["value"]) + "<=": + message_approved = (var_value <= msg["value"]) + _: + message_approved = false + if message_approved: + result += msg["text"] + + # Find pause points + var text_segments = result.split("") + if (not text_segments is PackedStringArray) or (text_segments.size() <= 1): + return [result, [1.0]] # 1.0 means one text with 100% of characters + + + # Calculate total length of text + # This text is potentially BB code, and therefore must be properly + # parsed since text progression is based only on visible characters + # For this we need a RichTextLabel to parse the BBCode, but it doesn't + # have to be added anyhere + var bbcode_parser = RichTextLabel.new() + bbcode_parser.bbcode_enabled = true + bbcode_parser.text = "" + var charcount_per_segment = [] + + result = "" + for item in text_segments: + result += item + bbcode_parser.text += item + var characters_up_to_here = bbcode_parser.text.length() #get_total_character_count() + + charcount_per_segment.append(characters_up_to_here) + var total_characters = float(bbcode_parser.text.length()) + + bbcode_parser.queue_free() + + var percentages = [] + for charcount in charcount_per_segment: + percentages.append(float(charcount) / total_characters) + + return [result, percentages] + + +func parse(source_text: String, variables: Dictionary) -> Array: + # variables is a Dictionary mapping "variable name" to a value (int, float or String) + # result is an Array of text segments, where each segment is in the format + # segment = "String" ---> means text is not conditional + # segment = { + # "condition": "variable name", + # "operator": "=" | "!=" | ">" | ">=" | "<" | "<=" + # "value": or "variable name", + # "text": "text" + # } + var result = [] + + var s_tmp = source_text + var tag_pos = s_tmp.find("{{if") + while tag_pos > -1: + var text_before = s_tmp.left(tag_pos) + var text_after = s_tmp.substr(tag_pos + tag_if_start_len) + + var tag_endpos = text_after.find(tag_if_end) + + # if we don't have a closing tag, this is malformatted syntax and we + # just assume it's not meant to be parsed + if tag_endpos == -1: + break + + var text_cond = text_after.left(tag_endpos) + text_after = text_after.substr(tag_endpos + tag_if_end_len) + + # Now we have: + # text_before -> text before the start tag + # text_cond -> everything between both tags (not including) + # text_after -> text after the end tag + # both tags are not included anywhere + + + result.append(_replace_variables(text_before, variables)) + result.append(_parse_condition(text_cond, variables)) + + s_tmp = text_after + tag_pos = s_tmp.find("{{if") + + result.append(_replace_variables(s_tmp, variables)) + + return result + + + + +func _parse_condition(text: String, variables: Dictionary): + # Returns a segment to be appended into the array in parse() + var sep_pos = text.find(cond_sep) + if sep_pos == -1: + return text + + var text_before = text.left(sep_pos) + var text_after = text.substr(sep_pos + cond_sep_len) + + + var cond_terms = text_before + for op in operators: + if op in text_before: + # Split text (e.g. "variable >= 5") + cond_terms = text_before.split(op, false, 2) + if cond_terms.size() < 2: + cond_terms = text_before + break + + var value = cond_terms[1] + if value.is_valid_int(): + value = value.to_int() + elif value.is_valid_float(): + value = value.to_float() + + return { + "condition": cond_terms[0], + "operator": op.strip_edges(), + "value": value, + "text": _replace_variables(text_after, variables), + } + + # If no operator was found, cond_terms remains String + + + # Boolean check (e.g. "{{if variable: Text here!}} + if cond_terms is String: + return { + "condition": cond_terms, + # Boolean check is implemented as "value != 0" + "operator": "!=", + "value": 0, + "text": _replace_variables(text_after, variables), + } + + else: + return "" + +func _replace_variables(text, variables): + var s_tmp = text + for var_name in variables: + var var_tag = "<<%s>>" % var_name + if var_tag in s_tmp: + var var_value = variables[var_name] + # Converts 15.0 into 15 for elegant printing + if (var_value is float) and (var_value == floor(var_value)): + var_value = str(int(var_value)) + else: + var_value = str(var_value) + + s_tmp = s_tmp.replace(var_tag, var_value) + return s_tmp diff --git a/addons/madtalk/components/MessageCodeParser.gd.uid b/addons/madtalk/components/MessageCodeParser.gd.uid new file mode 100644 index 0000000..861d92f --- /dev/null +++ b/addons/madtalk/components/MessageCodeParser.gd.uid @@ -0,0 +1 @@ +uid://b20tg7kdlsnra diff --git a/addons/madtalk/components/MessageEditorWithLocales.gd b/addons/madtalk/components/MessageEditorWithLocales.gd new file mode 100644 index 0000000..810725d --- /dev/null +++ b/addons/madtalk/components/MessageEditorWithLocales.gd @@ -0,0 +1,147 @@ +@tool +extends ReferenceRect + +signal tab_changed +signal voice_clip_dialog_requested + +const DEFAULT_TAB_TITLE = "Default" + +@onready var locale_bar := $LocaleBar +@onready var message_edit := $MessageEdit +@onready var voiceclip_edit := $VoiceEdit +@onready var panel_new_locale := $PanelNewLocale +@onready var locale_edit := $PanelNewLocale/LocaleEdit + + +var messages_locales := {} +var voiceclips_locales := {} +var current_locale := "" + +var is_updating_tabs := false + +func setup(default_message: String, locale_messages: Dictionary, default_voiceclip: String, locales_voiceclips: Dictionary): + is_updating_tabs = true + + messages_locales.clear() + messages_locales[""] = default_message + voiceclips_locales.clear() + voiceclips_locales[""] = default_voiceclip + + var locale_list: Array = locale_messages.keys() + for locale in locales_voiceclips: + if not locale in locale_list: + locale_list.append(locale) + + for locale in locale_list: + messages_locales[locale] = locale_messages[locale] if locale in locale_messages else "" + voiceclips_locales[locale] = locales_voiceclips[locale] if locale in locales_voiceclips else "" + + locale_list.sort() + + locale_bar.clear_tabs() + locale_bar.add_tab(DEFAULT_TAB_TITLE) + for tab_name in locale_list: + if tab_name != "": + locale_bar.add_tab(tab_name) + locale_bar.current_tab = 0 + + current_locale = "" + load_data_from_locale(current_locale) + + is_updating_tabs = false + + +func load_data_from_locale(locale: String): + if locale in messages_locales: + message_edit.text = messages_locales[locale] + else: + message_edit.text = "" + + if locale in voiceclips_locales: + voiceclip_edit.text = voiceclips_locales[locale] + else: + voiceclip_edit.text = "" + + +func store_data_into_locale(locale: String, text: String, voiceclip: String): + messages_locales[locale] = text + voiceclips_locales[locale] = voiceclip + + +func finalize_editor(): + store_data_into_locale(current_locale, message_edit.text, voiceclip_edit.text) + + var locale_list = messages_locales.keys() + for locale in locale_list: + if messages_locales[locale] == "": + messages_locales.erase(locale) + + locale_list = voiceclips_locales.keys() + for locale in locale_list: + if voiceclips_locales[locale] == "": + voiceclips_locales.erase(locale) + + +func _on_locale_bar_tab_changed(tab: int) -> void: + if is_updating_tabs: + return + + store_data_into_locale(current_locale, message_edit.text, voiceclip_edit.text) + current_locale = locale_bar.get_tab_title(tab) + if current_locale == DEFAULT_TAB_TITLE: + current_locale = "" + load_data_from_locale(current_locale) + + tab_changed.emit() + + +func _on_btn_locale_new_pressed() -> void: + locale_edit.text = "" + panel_new_locale.show() + + +func _on_btn_locale_new_cancel_pressed() -> void: + panel_new_locale.hide() + + +func _on_btn_locale_new_confirm_pressed() -> void: + var new_locale = locale_edit.text + if (not new_locale in messages_locales) and (not new_locale in voiceclips_locales): + locale_bar.add_tab(new_locale) + if (not new_locale in messages_locales): + messages_locales[new_locale] = "" + if (not new_locale in voiceclips_locales): + voiceclips_locales[new_locale] = "" + panel_new_locale.hide() + + +func get_default_locale_message() -> String: + return messages_locales[""] if "" in messages_locales else "" + + +func get_default_locale_voiceclip() -> String: + return voiceclips_locales[""] if "" in voiceclips_locales else "" + + +func get_locale_messages_without_default() -> Dictionary: + var result := {} + for locale in messages_locales: + if locale != "": + result[locale] = messages_locales[locale] + return result + + +func get_locale_voiceclips_without_default() -> Dictionary: + var result := {} + for locale in voiceclips_locales: + if locale != "": + result[locale] = voiceclips_locales[locale] + return result + + +func set_voice_clip(clip_path: String): + voiceclip_edit.text = clip_path + + +func _on_btn_select_clip_pressed() -> void: + voice_clip_dialog_requested.emit() diff --git a/addons/madtalk/components/MessageEditorWithLocales.gd.uid b/addons/madtalk/components/MessageEditorWithLocales.gd.uid new file mode 100644 index 0000000..024fd8b --- /dev/null +++ b/addons/madtalk/components/MessageEditorWithLocales.gd.uid @@ -0,0 +1 @@ +uid://ducf6plaj7ucd diff --git a/addons/madtalk/components/MessageEditorWithLocales.tscn b/addons/madtalk/components/MessageEditorWithLocales.tscn new file mode 100644 index 0000000..17b945b --- /dev/null +++ b/addons/madtalk/components/MessageEditorWithLocales.tscn @@ -0,0 +1,247 @@ +[gd_scene load_steps=6 format=3 uid="uid://dc46jny8nbbow"] + +[ext_resource type="FontFile" uid="uid://b38okvijpcxmv" path="res://addons/madtalk/fonts/FreeSans_smal.tres" id="1_cqlvq"] +[ext_resource type="Script" uid="uid://ducf6plaj7ucd" path="res://addons/madtalk/components/MessageEditorWithLocales.gd" id="1_ip4nx"] +[ext_resource type="StyleBox" path="res://addons/madtalk/components/resources/ButtonStyle.tres" id="3_fgqru"] +[ext_resource type="StyleBox" path="res://addons/madtalk/components/resources/PanelStyle.tres" id="4_hk2wl"] +[ext_resource type="PackedScene" uid="uid://dyepkyvo6sodg" path="res://addons/madtalk/components/BtnTip.tscn" id="4_kgpnd"] + +[node name="MessageEditorWithLocales" type="ReferenceRect"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +border_color = Color(0, 0.616891, 0.582496, 1) +border_width = 0.0 +script = ExtResource("1_ip4nx") + +[node name="MessageEdit" type="TextEdit" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = 1.0 +offset_top = 29.0 +offset_right = -1.0 +offset_bottom = -37.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_fonts/font = ExtResource("1_cqlvq") +theme_override_font_sizes/font_size = 12 +caret_blink = true +highlight_all_occurrences = true +highlight_current_line = true +draw_tabs = true + +[node name="LabelLocale" type="Label" parent="."] +modulate = Color(1, 1, 1, 0.501961) +layout_mode = 0 +offset_left = 14.0 +offset_top = 6.0 +offset_right = 53.0 +offset_bottom = 29.0 +theme_override_fonts/font = ExtResource("1_cqlvq") +theme_override_font_sizes/font_size = 10 +text = "Locale:" + +[node name="LocaleBar" type="TabBar" parent="."] +layout_mode = 1 +anchors_preset = 10 +anchor_right = 1.0 +offset_left = 55.0 +offset_top = 4.0 +offset_right = -131.0 +offset_bottom = 29.0 +grow_horizontal = 2 +focus_mode = 0 +theme_override_font_sizes/font_size = 12 +current_tab = 0 +tab_count = 1 +tab_0/title = "Default" +tab_0/tooltip = "Default locale. Will also be used if the user's locale is not in this list." + +[node name="BtnLocaleNew" type="Button" parent="."] +layout_mode = 1 +anchors_preset = 1 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = -125.0 +offset_top = 3.0 +offset_right = -47.0 +offset_bottom = 27.0 +grow_horizontal = 0 +focus_mode = 0 +theme_override_fonts/font = ExtResource("1_cqlvq") +theme_override_font_sizes/font_size = 12 +theme_override_styles/normal = ExtResource("3_fgqru") +text = "New Locale" + +[node name="TipLocale" parent="." instance=ExtResource("4_kgpnd")] +layout_mode = 1 +anchors_preset = 1 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = -36.0627 +offset_top = 2.1479 +offset_right = -8.06274 +offset_bottom = 26.1479 +grow_horizontal = 0 +tip_title = "Message Locale" +tip_text = "You can optionally specify different messages for internationalization. MadTalk does not use Godot's CSV system for localizing dialog messages because it would be very confusing to edit dialog diagrams seeing message IDs instead of actual text, and also allows exporting and importing dialog text from other formats. + +Creating locale versions is optional and is done PER MESSAGE. The default tab should be the main language of your game, and other tabs are alternate (localized) translations. If a specific dialog message doesn't have a version for the locale the player is using, the default one is used. You don't have to create any lists of available locales anywhere. To remove a locale tab from a message, simply erase the text under that tab and save. + +Example: if a certain dialog message has locales Default (used e.g. for English), \"es\" (for Spanish) and \"jp\" (for Japanese), and the game is set for Spanish locale, then the text under the \"es\" tab will be used when this message is shown in a dialog. If, instead, the game is set to Portuguese, then the text under the Default tab will be shown, because this particular message doesn't have the \"pt\" version. + +This also means if you intended to have a localization but forgot to add a translation to a message somewhere, MadTalk will just use the untranslated text (Default locale tab) for that particular message instead of empty text or crashing the dialog sequence. + +To configure which locale MadTalk will use, call the methods below in MadTalkGlobals: set_locale() to set current locale, set_default_locale() to set which locale will use the default tab for messages (default \"en\"), and set_locale_automatic() to set the default and get the current from the system. Getting locale from the system is safe, since if the game doesn't have that language, the default language will be used instead. +Example 1 - the default tab contains English, the game is now set to Spanish: + MadTalkGlobals.set_default_locale(\"en\") + MadTalkGlobals.set_locale(\"es\") + +Example 2 - getting locale from the system, doesn't change the default locale: + MadTalkGlobals.set_locale_automatic() + +Example 3 - getting locale from the system, also change the default locale to Esperanto: + MadTalkGlobals.set_locale_automatic(\"eo\") + + +" + +[node name="PanelNewLocale" type="Panel" parent="."] +visible = false +layout_mode = 1 +anchors_preset = 1 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = -211.0 +offset_top = 5.0 +offset_right = -4.0 +offset_bottom = 100.0 +grow_horizontal = 0 +theme_override_styles/panel = ExtResource("4_hk2wl") + +[node name="Label" type="Label" parent="PanelNewLocale"] +layout_mode = 0 +offset_left = 7.0 +offset_top = 2.0 +offset_right = 76.0 +offset_bottom = 25.0 +theme_override_fonts/font = ExtResource("1_cqlvq") +theme_override_font_sizes/font_size = 12 +text = "Create new locale for this message:" + +[node name="LocaleEdit" type="LineEdit" parent="PanelNewLocale"] +layout_mode = 1 +anchors_preset = -1 +anchor_right = 0.5 +offset_left = 8.0 +offset_top = 24.0 +offset_right = 93.5 +offset_bottom = 55.0 +theme_override_colors/font_placeholder_color = Color(0.299547, 0.299547, 0.299547, 1) +theme_override_fonts/font = ExtResource("1_cqlvq") +theme_override_font_sizes/font_size = 14 +placeholder_text = "locale (e.g. \"es\")" + +[node name="BtnLocaleNewConfirm" type="Button" parent="PanelNewLocale"] +layout_mode = 1 +anchors_preset = 1 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = -152.0 +offset_top = 63.0 +offset_right = -82.0 +offset_bottom = 87.0 +grow_horizontal = 0 +focus_mode = 0 +theme_override_fonts/font = ExtResource("1_cqlvq") +theme_override_font_sizes/font_size = 12 +theme_override_styles/normal = ExtResource("3_fgqru") +text = "Create" + +[node name="BtnLocaleNewCancel" type="Button" parent="PanelNewLocale"] +layout_mode = 1 +anchors_preset = 1 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = -77.0 +offset_top = 63.0 +offset_right = -7.0 +offset_bottom = 87.0 +grow_horizontal = 0 +focus_mode = 0 +theme_override_fonts/font = ExtResource("1_cqlvq") +theme_override_font_sizes/font_size = 12 +theme_override_styles/normal = ExtResource("3_fgqru") +text = "Cancel" + +[node name="VoiceEdit" type="LineEdit" parent="."] +layout_mode = 1 +anchors_preset = 12 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = 85.0 +offset_top = -31.0 +offset_right = -84.0 +grow_horizontal = 2 +grow_vertical = 0 +theme_override_fonts/font = ExtResource("1_cqlvq") +theme_override_font_sizes/font_size = 14 +placeholder_text = "res://... .../filename.wav" + +[node name="BtnSelectClip" type="Button" parent="VoiceEdit"] +layout_mode = 0 +anchor_left = 1.0 +anchor_top = 0.5 +anchor_right = 1.0 +anchor_bottom = 0.5 +offset_left = 3.0 +offset_top = -15.0 +offset_right = 44.0 +offset_bottom = 16.0 +focus_mode = 0 +text = "..." + +[node name="TipVoice" parent="." instance=ExtResource("4_kgpnd")] +layout_mode = 1 +anchors_preset = 3 +anchor_left = 1.0 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = -34.0 +offset_top = -27.0 +offset_right = -6.0 +offset_bottom = -3.0 +grow_horizontal = 0 +grow_vertical = 0 +tip_title = "Voice Clip" +tip_text = "The Voice Clip is the path for an audio file (WAV or OGG) which should be played when this message is displayed. Usually it is a voice transcription of the text, but anything can be used (e.g. a robot could have a \"beep bop beep bop\" sound when speaking). + +The path is in the resource folder - that is, starts with res:// followed by file location. + +Please note the MadTalk plugin will not automatically play the sound. Since different projects will manage audio buses and implement stream players differently, the actual sound playback must be coded separately. MadTalk will emit a signal \"voice_clip_requested\" providing the file path entered here." + +[node name="VoiceLabel" type="Label" parent="."] +layout_mode = 1 +anchors_preset = 2 +anchor_top = 1.0 +anchor_bottom = 1.0 +offset_left = 24.0 +offset_top = -27.0 +offset_right = 93.0 +offset_bottom = -4.0 +grow_vertical = 0 +theme_override_fonts/font = ExtResource("1_cqlvq") +theme_override_font_sizes/font_size = 12 +text = "Voice Clip" + +[connection signal="tab_changed" from="LocaleBar" to="." method="_on_locale_bar_tab_changed"] +[connection signal="pressed" from="BtnLocaleNew" to="." method="_on_btn_locale_new_pressed"] +[connection signal="pressed" from="PanelNewLocale/BtnLocaleNewConfirm" to="." method="_on_btn_locale_new_confirm_pressed"] +[connection signal="pressed" from="PanelNewLocale/BtnLocaleNewCancel" to="." method="_on_btn_locale_new_cancel_pressed"] +[connection signal="pressed" from="VoiceEdit/BtnSelectClip" to="." method="_on_btn_select_clip_pressed"] diff --git a/addons/madtalk/components/SideBar.gd b/addons/madtalk/components/SideBar.gd new file mode 100644 index 0000000..a63b041 --- /dev/null +++ b/addons/madtalk/components/SideBar.gd @@ -0,0 +1,22 @@ +@tool +extends Panel + + +@export var SizeClosed: int = 24 + +@onready var content = get_node_or_null("Content") + +func _on_BtnTogglePanel_pressed(): + if (size.y == SizeClosed): + # Open: + anchor_bottom = 1 + offset_bottom = -16 + if content: + content.show() + else: + # Close: + anchor_bottom = 0 + size.y = SizeClosed + if content: + content.hide() + diff --git a/addons/madtalk/components/SideBar.gd.uid b/addons/madtalk/components/SideBar.gd.uid new file mode 100644 index 0000000..bc498f4 --- /dev/null +++ b/addons/madtalk/components/SideBar.gd.uid @@ -0,0 +1 @@ +uid://cygmyylxhkxdu diff --git a/addons/madtalk/components/SideBar.tscn b/addons/madtalk/components/SideBar.tscn new file mode 100644 index 0000000..05ef4b4 --- /dev/null +++ b/addons/madtalk/components/SideBar.tscn @@ -0,0 +1,37 @@ +[gd_scene load_steps=5 format=3 uid="uid://c6topqf6spbbw"] + +[ext_resource type="FontFile" uid="uid://b38okvijpcxmv" path="res://addons/madtalk/fonts/FreeSans_smal.tres" id="1"] +[ext_resource type="Script" uid="uid://cygmyylxhkxdu" path="res://addons/madtalk/components/SideBar.gd" id="2"] +[ext_resource type="StyleBox" path="res://addons/madtalk/components/resources/PanelStyle.tres" id="3"] +[ext_resource type="Texture2D" uid="uid://c4xg8811uuoq6" path="res://addons/madtalk/images/icon_down.png" id="4"] + +[node name="SideBar" type="Panel"] +clip_contents = true +anchors_preset = 1 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = -209.0 +offset_top = 31.0 +offset_bottom = 431.0 +theme_override_styles/panel = ExtResource("3") +script = ExtResource("2") + +[node name="TitleLabel" type="Label" parent="."] +layout_mode = 0 +offset_left = 3.0 +offset_right = 177.0 +offset_bottom = 20.0 +theme_override_fonts/font = ExtResource("1") +theme_override_font_sizes/font_size = 12 +text = "Dialog Sheets" + +[node name="BtnTogglePanel" type="TextureButton" parent="."] +layout_mode = 0 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = -24.0 +offset_bottom = 24.0 +texture_normal = ExtResource("4") +stretch_mode = 3 + +[connection signal="pressed" from="BtnTogglePanel" to="." method="_on_BtnTogglePanel_pressed"] diff --git a/addons/madtalk/components/SideBar_SheetItem.tscn b/addons/madtalk/components/SideBar_SheetItem.tscn new file mode 100644 index 0000000..3bb7b4a --- /dev/null +++ b/addons/madtalk/components/SideBar_SheetItem.tscn @@ -0,0 +1,81 @@ +[gd_scene load_steps=6 format=3 uid="uid://cc8hueicocet2"] + +[ext_resource type="FontFile" uid="uid://b38okvijpcxmv" path="res://addons/madtalk/fonts/FreeSans_smal.tres" id="1"] +[ext_resource type="StyleBox" path="res://addons/madtalk/components/resources/ButtonStyle.tres" id="3"] +[ext_resource type="FontFile" uid="uid://cgfeudab78x0q" path="res://addons/madtalk/fonts/FreeSans.ttf" id="3_atm42"] +[ext_resource type="StyleBox" path="res://addons/madtalk/components/resources/SheetItemStyle.tres" id="4"] + +[sub_resource type="FontVariation" id="FontVariation_1s3xs"] +base_font = ExtResource("3_atm42") +spacing_top = -4 +spacing_bottom = -4 + +[node name="SheetItem" type="Control"] +custom_minimum_size = Vector2(0, 48) +layout_mode = 3 +anchors_preset = 0 +offset_right = 200.0 +offset_bottom = 48.0 + +[node name="Panel" type="Panel" parent="."] +layout_mode = 0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = 1.0 +offset_top = 1.0 +offset_right = -1.0 +offset_bottom = -1.0 +size_flags_horizontal = 3 +theme_override_styles/panel = ExtResource("4") + +[node name="BGTitleLine" type="ColorRect" parent="Panel"] +layout_mode = 1 +anchors_preset = 10 +anchor_right = 1.0 +offset_left = 4.0 +offset_top = 17.0 +offset_right = -4.0 +offset_bottom = 19.0 +grow_horizontal = 2 +color = Color(1, 1, 1, 0.12549) + +[node name="SheetLabel" type="Label" parent="Panel"] +layout_mode = 0 +offset_left = 4.0 +offset_top = 1.0 +offset_right = 51.0 +offset_bottom = 21.0 +theme_override_fonts/font = ExtResource("1") +theme_override_font_sizes/font_size = 10 +text = "sheet_id" + +[node name="DescriptionLabel" type="Label" parent="Panel"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = 4.0 +offset_top = 20.0 +offset_right = -3.0 +offset_bottom = -2.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_colors/font_color = Color(0.580392, 0.580392, 0.580392, 1) +theme_override_fonts/font = SubResource("FontVariation_1s3xs") +theme_override_font_sizes/font_size = 9 +text = "Short sheet description" +autowrap_mode = 2 +clip_text = true + +[node name="BtnOpen" type="Button" parent="Panel"] +layout_mode = 0 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = -44.0 +offset_top = 2.0 +offset_right = -2.0 +offset_bottom = 22.0 +theme_override_fonts/font = ExtResource("1") +theme_override_font_sizes/font_size = 10 +theme_override_styles/normal = ExtResource("3") +text = "Open" diff --git a/addons/madtalk/components/popups/Condition_DialogEdit.tscn b/addons/madtalk/components/popups/Condition_DialogEdit.tscn new file mode 100644 index 0000000..2bc7ae4 --- /dev/null +++ b/addons/madtalk/components/popups/Condition_DialogEdit.tscn @@ -0,0 +1,939 @@ +[gd_scene load_steps=6 format=3 uid="uid://bxbv32bsgov7f"] + +[ext_resource type="StyleBox" path="res://addons/madtalk/components/resources/PanelStyle.tres" id="1_axotx"] +[ext_resource type="FontFile" uid="uid://b38okvijpcxmv" path="res://addons/madtalk/fonts/FreeSans_smal.tres" id="2_17q4f"] +[ext_resource type="PackedScene" uid="uid://dyepkyvo6sodg" path="res://addons/madtalk/components/BtnTip.tscn" id="3_pak78"] +[ext_resource type="FontFile" uid="uid://bhcws34lw0ak5" path="res://addons/madtalk/fonts/FreeSans_tiny.tres" id="4_4pido"] + +[sub_resource type="StyleBoxFlat" id="1"] +bg_color = Color(0.186, 0.172, 0.2, 1) +border_width_left = 1 +border_width_top = 1 +border_width_right = 1 +border_width_bottom = 1 +border_color = Color(0.06, 0.06, 0.06, 1) +border_blend = true + +[node name="DialogEdit" type="Window"] +title = "Condition" +initial_position = 2 +size = Vector2i(550, 400) +visible = false +transient = true +exclusive = true +popup_window = true + +[node name="Panel" type="Panel" parent="."] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +theme_override_styles/panel = ExtResource("1_axotx") + +[node name="Label" type="Label" parent="Panel"] +layout_mode = 0 +offset_left = 35.1291 +offset_top = 32.5417 +offset_right = 130.129 +offset_bottom = 46.5417 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 12 +text = "Condition Type" + +[node name="BtnConditionType" type="OptionButton" parent="Panel"] +layout_mode = 0 +anchor_right = 1.0 +offset_left = 140.0 +offset_top = 25.0 +offset_right = -76.0 +offset_bottom = 60.0 +theme_override_fonts/font = ExtResource("2_17q4f") +item_count = 11 +popup/item_0/text = "Random" +popup/item_0/id = 0 +popup/item_1/text = "Variable True/False check" +popup/item_1/id = 1 +popup/item_2/text = "Variable at least" +popup/item_2/id = 2 +popup/item_3/text = "Variable under" +popup/item_3/id = 3 +popup/item_4/text = "Variable equal" +popup/item_4/id = 4 +popup/item_5/text = "Time range" +popup/item_5/id = 5 +popup/item_6/text = "Day of Week range" +popup/item_6/id = 6 +popup/item_7/text = "Day of Month range" +popup/item_7/id = 7 +popup/item_8/text = "Date range" +popup/item_8/id = 8 +popup/item_9/text = "Minutes elapsed since variable" +popup/item_9/id = 9 +popup/item_10/text = "Custom condition" +popup/item_10/id = 10 + +[node name="BtnTip" parent="Panel" instance=ExtResource("3_pak78")] +layout_mode = 0 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = -41.599 +offset_top = 44.1581 +offset_right = -13.599 +offset_bottom = 70.1581 + +[node name="SpecificFields" type="Panel" parent="Panel"] +layout_mode = 0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = 8.0 +offset_top = 72.0 +offset_right = -8.0 +offset_bottom = -38.0 +theme_override_styles/panel = SubResource("1") + +[node name="Random" type="Control" parent="Panel/SpecificFields"] +visible = false +anchors_preset = 0 +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="Label" type="Label" parent="Panel/SpecificFields/Random"] +layout_mode = 0 +offset_left = 33.9795 +offset_top = 33.0356 +offset_right = 261.979 +offset_bottom = 47.0356 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 12 +text = "Chance of continuing the sequence:" + +[node name="Label3" type="Label" parent="Panel/SpecificFields/Random"] +layout_mode = 0 +offset_left = 33.9795 +offset_top = 65.0356 +offset_right = 261.979 +offset_bottom = 79.0356 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 12 +text = "Otherwise the dialog will branch out." + +[node name="Label2" type="Label" parent="Panel/SpecificFields/Random"] +layout_mode = 0 +offset_left = 332.0 +offset_top = 33.0 +offset_right = 365.0 +offset_bottom = 47.0 +theme_override_fonts/font = ExtResource("2_17q4f") +text = "%" + +[node name="EditValue0" type="LineEdit" parent="Panel/SpecificFields/Random"] +layout_mode = 0 +offset_left = 243.0 +offset_top = 27.0 +offset_right = 326.0 +offset_bottom = 51.0 +theme_override_fonts/font = ExtResource("2_17q4f") +placeholder_text = "e.g. 30.0" + +[node name="VarBool" type="Control" parent="Panel/SpecificFields"] +visible = false +anchors_preset = 0 +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="Label" type="Label" parent="Panel/SpecificFields/VarBool"] +layout_mode = 0 +offset_left = 49.9795 +offset_top = 41.0356 +offset_right = 277.979 +offset_bottom = 55.0356 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 12 +text = "Variable named" + +[node name="Label4" type="Label" parent="Panel/SpecificFields/VarBool"] +layout_mode = 0 +offset_left = 34.0 +offset_top = 17.0 +offset_right = 96.0 +offset_bottom = 31.0 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 12 +text = "Continue if:" + +[node name="Label3" type="Label" parent="Panel/SpecificFields/VarBool"] +layout_mode = 0 +offset_left = 33.9795 +offset_top = 113.036 +offset_right = 261.979 +offset_bottom = 127.036 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 12 +text = "Otherwise the dialog will branch out." + +[node name="Label2" type="Label" parent="Panel/SpecificFields/VarBool"] +layout_mode = 0 +offset_left = 52.0 +offset_top = 73.0 +offset_right = 178.0 +offset_bottom = 87.0 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 12 +text = "is equal to" + +[node name="EditValue0" type="LineEdit" parent="Panel/SpecificFields/VarBool"] +layout_mode = 0 +offset_left = 147.0 +offset_top = 35.0 +offset_right = 387.0 +offset_bottom = 63.0 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 12 +placeholder_text = "e.g. has_met_npc1" + +[node name="Option1" type="OptionButton" parent="Panel/SpecificFields/VarBool"] +layout_mode = 0 +offset_left = 149.0 +offset_top = 69.0 +offset_right = 338.0 +offset_bottom = 89.0 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 12 +item_count = 2 +selected = 0 +popup/item_0/text = "True (any non-zero numerical value)" +popup/item_0/id = 1 +popup/item_1/text = "False (zero)" +popup/item_1/id = 0 + +[node name="VarAtLeast" type="Control" parent="Panel/SpecificFields"] +visible = false +anchors_preset = 0 +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="Label" type="Label" parent="Panel/SpecificFields/VarAtLeast"] +layout_mode = 0 +offset_left = 49.9795 +offset_top = 41.0356 +offset_right = 277.979 +offset_bottom = 55.0356 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 12 +text = "Variable named" + +[node name="Label4" type="Label" parent="Panel/SpecificFields/VarAtLeast"] +layout_mode = 0 +offset_left = 34.0 +offset_top = 17.0 +offset_right = 96.0 +offset_bottom = 31.0 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 12 +text = "Continue if:" + +[node name="Label3" type="Label" parent="Panel/SpecificFields/VarAtLeast"] +layout_mode = 0 +offset_left = 33.9795 +offset_top = 113.036 +offset_right = 261.979 +offset_bottom = 127.036 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 12 +text = "Otherwise the dialog will branch out." + +[node name="Label2" type="Label" parent="Panel/SpecificFields/VarAtLeast"] +layout_mode = 0 +offset_left = 52.0 +offset_top = 73.0 +offset_right = 178.0 +offset_bottom = 87.0 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 12 +text = "is equal or greater than" + +[node name="EditValue0" type="LineEdit" parent="Panel/SpecificFields/VarAtLeast"] +layout_mode = 0 +offset_left = 147.0 +offset_top = 35.0 +offset_right = 339.0 +offset_bottom = 59.0 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 14 +placeholder_text = "e.g. player_health" + +[node name="EditValue1" type="LineEdit" parent="Panel/SpecificFields/VarAtLeast"] +layout_mode = 0 +offset_left = 187.0 +offset_top = 67.0 +offset_right = 270.0 +offset_bottom = 91.0 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 14 +placeholder_text = "e.g. 25.0" + +[node name="VarUnder" type="Control" parent="Panel/SpecificFields"] +visible = false +anchors_preset = 0 +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="Label5" type="Label" parent="Panel/SpecificFields/VarUnder"] +layout_mode = 0 +offset_left = 34.0 +offset_top = 17.0 +offset_right = 96.0 +offset_bottom = 31.0 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 12 +text = "Continue if:" + +[node name="Label" type="Label" parent="Panel/SpecificFields/VarUnder"] +layout_mode = 0 +offset_left = 49.9795 +offset_top = 41.0356 +offset_right = 277.979 +offset_bottom = 55.0356 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 12 +text = "Variable named" + +[node name="Label3" type="Label" parent="Panel/SpecificFields/VarUnder"] +layout_mode = 0 +offset_left = 33.9795 +offset_top = 113.036 +offset_right = 261.979 +offset_bottom = 127.036 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 12 +text = "Otherwise the dialog will branch out." + +[node name="Label2" type="Label" parent="Panel/SpecificFields/VarUnder"] +layout_mode = 0 +offset_left = 52.0 +offset_top = 73.0 +offset_right = 202.0 +offset_bottom = 87.0 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 12 +text = "is less (and not equal) than " + +[node name="EditValue0" type="LineEdit" parent="Panel/SpecificFields/VarUnder"] +layout_mode = 0 +offset_left = 147.0 +offset_top = 35.0 +offset_right = 339.0 +offset_bottom = 59.0 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 14 +placeholder_text = "e.g. player_health" + +[node name="EditValue1" type="LineEdit" parent="Panel/SpecificFields/VarUnder"] +layout_mode = 0 +offset_left = 210.056 +offset_top = 66.0561 +offset_right = 293.056 +offset_bottom = 90.0561 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 14 +placeholder_text = "e.g. 25.0" + +[node name="VarString" type="Control" parent="Panel/SpecificFields"] +visible = false +anchors_preset = 0 +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="Label6" type="Label" parent="Panel/SpecificFields/VarString"] +layout_mode = 0 +offset_left = 34.0 +offset_top = 17.0 +offset_right = 96.0 +offset_bottom = 31.0 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 12 +text = "Continue if:" + +[node name="Label" type="Label" parent="Panel/SpecificFields/VarString"] +layout_mode = 0 +offset_left = 49.9795 +offset_top = 41.0356 +offset_right = 277.979 +offset_bottom = 55.0356 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 12 +text = "Variable named" + +[node name="Label3" type="Label" parent="Panel/SpecificFields/VarString"] +layout_mode = 0 +offset_left = 33.9795 +offset_top = 113.036 +offset_right = 261.979 +offset_bottom = 127.036 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 12 +text = "Otherwise the dialog will branch out." + +[node name="Label2" type="Label" parent="Panel/SpecificFields/VarString"] +layout_mode = 0 +offset_left = 52.0 +offset_top = 73.0 +offset_right = 202.0 +offset_bottom = 87.0 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 12 +text = "contains the string" + +[node name="EditValue0" type="LineEdit" parent="Panel/SpecificFields/VarString"] +layout_mode = 0 +offset_left = 160.0 +offset_top = 35.0 +offset_right = 367.0 +offset_bottom = 59.0 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 14 +placeholder_text = "e.g. player_location" + +[node name="EditValue1" type="LineEdit" parent="Panel/SpecificFields/VarString"] +layout_mode = 0 +offset_left = 160.0 +offset_top = 66.0 +offset_right = 367.0 +offset_bottom = 90.0 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 14 +placeholder_text = "e.g. living_room" + +[node name="Time" type="Control" parent="Panel/SpecificFields"] +visible = false +anchors_preset = 0 +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="Label7" type="Label" parent="Panel/SpecificFields/Time"] +layout_mode = 0 +offset_left = 34.0 +offset_top = 17.0 +offset_right = 96.0 +offset_bottom = 31.0 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 12 +text = "Continue when:" + +[node name="Label" type="Label" parent="Panel/SpecificFields/Time"] +layout_mode = 0 +offset_left = 50.0 +offset_top = 41.0 +offset_right = 173.0 +offset_bottom = 55.0 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 12 +text = "In-game time between" + +[node name="Label4" type="Label" parent="Panel/SpecificFields/Time"] +layout_mode = 0 +offset_left = 50.0 +offset_top = 73.0 +offset_right = 284.0 +offset_bottom = 87.0 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 12 +text = "in any day (use 24h system - 17:00 instead of 5:00pm)" + +[node name="Label3" type="Label" parent="Panel/SpecificFields/Time"] +layout_mode = 0 +offset_left = 33.9795 +offset_top = 113.036 +offset_right = 261.979 +offset_bottom = 127.036 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 12 +text = "Otherwise the dialog will branch out." + +[node name="Label2" type="Label" parent="Panel/SpecificFields/Time"] +layout_mode = 0 +offset_left = 276.0 +offset_top = 41.0 +offset_right = 297.0 +offset_bottom = 55.0 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 12 +text = "and" + +[node name="EditValue0" type="LineEdit" parent="Panel/SpecificFields/Time"] +layout_mode = 0 +offset_left = 184.0 +offset_top = 35.0 +offset_right = 264.0 +offset_bottom = 59.0 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 14 +placeholder_text = "e.g. 08:00" + +[node name="EditValue1" type="LineEdit" parent="Panel/SpecificFields/Time"] +layout_mode = 0 +offset_left = 312.0 +offset_top = 35.0 +offset_right = 392.0 +offset_bottom = 59.0 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 14 +placeholder_text = "e.g. 17:00" + +[node name="DayWeek" type="Control" parent="Panel/SpecificFields"] +visible = false +anchors_preset = 0 +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="Label8" type="Label" parent="Panel/SpecificFields/DayWeek"] +layout_mode = 0 +offset_left = 34.0 +offset_top = 17.0 +offset_right = 120.0 +offset_bottom = 31.0 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 12 +text = "Continue when:" + +[node name="Label" type="Label" parent="Panel/SpecificFields/DayWeek"] +layout_mode = 0 +offset_left = 50.0 +offset_top = 41.0 +offset_right = 216.0 +offset_bottom = 55.0 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 12 +text = "In-game day of week between" + +[node name="Label4" type="Label" parent="Panel/SpecificFields/DayWeek"] +layout_mode = 0 +offset_left = 50.0 +offset_top = 65.0 +offset_right = 216.0 +offset_bottom = 79.0 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 12 +text = "(in every week)" + +[node name="Label3" type="Label" parent="Panel/SpecificFields/DayWeek"] +layout_mode = 0 +offset_left = 33.9795 +offset_top = 105.036 +offset_right = 261.979 +offset_bottom = 119.036 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 12 +text = "Otherwise the dialog will branch out." + +[node name="Label2" type="Label" parent="Panel/SpecificFields/DayWeek"] +layout_mode = 0 +offset_left = 345.0 +offset_top = 41.0 +offset_right = 366.0 +offset_bottom = 64.0 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 12 +text = "and" + +[node name="Option0" type="OptionButton" parent="Panel/SpecificFields/DayWeek"] +layout_mode = 0 +offset_left = 230.0 +offset_top = 36.795 +offset_right = 336.0 +offset_bottom = 64.795 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 12 +item_count = 7 +selected = 0 +popup/item_0/text = "Sunday" +popup/item_0/id = 0 +popup/item_1/text = "Monday" +popup/item_1/id = 1 +popup/item_2/text = "Tuesday" +popup/item_2/id = 2 +popup/item_3/text = "Wednesday" +popup/item_3/id = 3 +popup/item_4/text = "Thursday" +popup/item_4/id = 4 +popup/item_5/text = "Friday" +popup/item_5/id = 5 +popup/item_6/text = "Saturday" +popup/item_6/id = 6 + +[node name="Option1" type="OptionButton" parent="Panel/SpecificFields/DayWeek"] +layout_mode = 0 +offset_left = 374.75 +offset_top = 36.795 +offset_right = 480.75 +offset_bottom = 67.795 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 12 +item_count = 7 +selected = 0 +popup/item_0/text = "Sunday" +popup/item_0/id = 0 +popup/item_1/text = "Monday" +popup/item_1/id = 1 +popup/item_2/text = "Tuesday" +popup/item_2/id = 2 +popup/item_3/text = "Wednesday" +popup/item_3/id = 3 +popup/item_4/text = "Thursday" +popup/item_4/id = 4 +popup/item_5/text = "Friday" +popup/item_5/id = 5 +popup/item_6/text = "Saturday" +popup/item_6/id = 6 + +[node name="DayMonth" type="Control" parent="Panel/SpecificFields"] +visible = false +anchors_preset = 0 +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="Label9" type="Label" parent="Panel/SpecificFields/DayMonth"] +layout_mode = 0 +offset_left = 34.0 +offset_top = 17.0 +offset_right = 120.0 +offset_bottom = 31.0 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 12 +text = "Continue when:" + +[node name="Label" type="Label" parent="Panel/SpecificFields/DayMonth"] +layout_mode = 0 +offset_left = 50.0 +offset_top = 41.0 +offset_right = 218.0 +offset_bottom = 55.0 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 12 +text = "In-game day of month between" + +[node name="Label4" type="Label" parent="Panel/SpecificFields/DayMonth"] +layout_mode = 0 +offset_left = 50.0 +offset_top = 65.0 +offset_right = 218.0 +offset_bottom = 79.0 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 12 +text = "(in every month)" + +[node name="Label5" type="Label" parent="Panel/SpecificFields/DayMonth"] +layout_mode = 0 +offset_left = 50.0 +offset_top = 87.0 +offset_right = 257.0 +offset_bottom = 101.0 +theme_override_fonts/font = ExtResource("4_4pido") +theme_override_font_sizes/font_size = 12 +text = "For a single day, use same number on both fields" + +[node name="Label3" type="Label" parent="Panel/SpecificFields/DayMonth"] +layout_mode = 0 +offset_left = 33.9795 +offset_top = 121.036 +offset_right = 261.979 +offset_bottom = 135.036 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 12 +text = "Otherwise the dialog will branch out." + +[node name="Label2" type="Label" parent="Panel/SpecificFields/DayMonth"] +layout_mode = 0 +offset_left = 292.0 +offset_top = 41.0 +offset_right = 313.0 +offset_bottom = 55.0 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 12 +text = "and" + +[node name="EditValue0" type="LineEdit" parent="Panel/SpecificFields/DayMonth"] +layout_mode = 0 +offset_left = 224.0 +offset_top = 35.0 +offset_right = 284.0 +offset_bottom = 59.0 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 14 +placeholder_text = "e.g. 1" + +[node name="EditValue1" type="LineEdit" parent="Panel/SpecificFields/DayMonth"] +layout_mode = 0 +offset_left = 320.0 +offset_top = 35.0 +offset_right = 380.0 +offset_bottom = 59.0 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 14 +placeholder_text = "e.g. 30" + +[node name="Date" type="Control" parent="Panel/SpecificFields"] +visible = false +anchors_preset = 0 +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="Label10" type="Label" parent="Panel/SpecificFields/Date"] +layout_mode = 0 +offset_left = 34.0 +offset_top = 17.0 +offset_right = 120.0 +offset_bottom = 31.0 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 12 +text = "Continue when:" + +[node name="Label" type="Label" parent="Panel/SpecificFields/Date"] +layout_mode = 0 +offset_left = 50.0 +offset_top = 41.0 +offset_right = 173.0 +offset_bottom = 55.0 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 12 +text = "In-game date between" + +[node name="Label4" type="Label" parent="Panel/SpecificFields/Date"] +layout_mode = 0 +offset_left = 50.0 +offset_top = 73.0 +offset_right = 347.0 +offset_bottom = 87.0 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 12 +text = "(Format is DD/MM and applies for every in-game year.)" + +[node name="Label3" type="Label" parent="Panel/SpecificFields/Date"] +layout_mode = 0 +offset_left = 33.9795 +offset_top = 113.036 +offset_right = 261.979 +offset_bottom = 127.036 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 12 +text = "Otherwise the dialog will branch out." + +[node name="Label2" type="Label" parent="Panel/SpecificFields/Date"] +layout_mode = 0 +offset_left = 272.0 +offset_top = 41.0 +offset_right = 293.0 +offset_bottom = 55.0 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 12 +text = "and" + +[node name="EditValue0" type="LineEdit" parent="Panel/SpecificFields/Date"] +layout_mode = 0 +offset_left = 180.0 +offset_top = 35.0 +offset_right = 260.0 +offset_bottom = 59.0 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 14 +placeholder_text = "e.g. 25/01" + +[node name="EditValue1" type="LineEdit" parent="Panel/SpecificFields/Date"] +layout_mode = 0 +offset_left = 304.0 +offset_top = 35.0 +offset_right = 384.0 +offset_bottom = 59.0 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 14 +placeholder_text = "e.g. 31/12" + +[node name="ElapsedVar" type="Control" parent="Panel/SpecificFields"] +visible = false +anchors_preset = 0 +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="Label11" type="Label" parent="Panel/SpecificFields/ElapsedVar"] +layout_mode = 0 +offset_left = 34.0 +offset_top = 17.0 +offset_right = 120.0 +offset_bottom = 31.0 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 12 +text = "Continue when:" + +[node name="Label" type="Label" parent="Panel/SpecificFields/ElapsedVar"] +layout_mode = 0 +offset_left = 50.0 +offset_top = 41.0 +offset_right = 133.0 +offset_bottom = 55.0 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 12 +text = "In-game time is" + +[node name="Label3" type="Label" parent="Panel/SpecificFields/ElapsedVar"] +layout_mode = 0 +offset_left = 33.9795 +offset_top = 113.036 +offset_right = 261.979 +offset_bottom = 127.036 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 12 +text = "Otherwise the dialog will branch out." + +[node name="Label2" type="Label" parent="Panel/SpecificFields/ElapsedVar"] +layout_mode = 0 +offset_left = 212.0 +offset_top = 41.0 +offset_right = 353.0 +offset_bottom = 55.0 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 12 +text = "minutes later than the time value" + +[node name="Label4" type="Label" parent="Panel/SpecificFields/ElapsedVar"] +layout_mode = 0 +offset_left = 52.0 +offset_top = 73.0 +offset_right = 202.0 +offset_bottom = 87.0 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 12 +text = "timestamped in the variable" + +[node name="EditValue0" type="LineEdit" parent="Panel/SpecificFields/ElapsedVar"] +layout_mode = 0 +offset_left = 141.0 +offset_top = 35.0 +offset_right = 201.0 +offset_bottom = 59.0 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 14 +placeholder_text = "e.g. 30" + +[node name="EditValue1" type="LineEdit" parent="Panel/SpecificFields/ElapsedVar"] +layout_mode = 0 +offset_left = 211.0 +offset_top = 67.0 +offset_right = 403.0 +offset_bottom = 91.0 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 14 +placeholder_text = "e.g. time_entered_room" + +[node name="Custom" type="Control" parent="Panel/SpecificFields"] +visible = false +anchors_preset = 0 +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="Label6" type="Label" parent="Panel/SpecificFields/Custom"] +layout_mode = 0 +offset_left = 34.0 +offset_top = 17.0 +offset_right = 103.0 +offset_bottom = 40.0 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 12 +text = "Continue on:" + +[node name="Label" type="Label" parent="Panel/SpecificFields/Custom"] +layout_mode = 0 +offset_left = 49.9795 +offset_top = 41.0356 +offset_right = 277.979 +offset_bottom = 55.0356 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 12 +text = "Custom condition code for ID" + +[node name="Label3" type="Label" parent="Panel/SpecificFields/Custom"] +layout_mode = 0 +offset_left = 33.979 +offset_top = 220.0 +offset_right = 394.979 +offset_bottom = 243.0 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 12 +text = "If custom condition handler returns false, the dialog will branch out." + +[node name="Label4" type="Label" parent="Panel/SpecificFields/Custom"] +layout_mode = 0 +offset_left = 52.0 +offset_top = 65.0 +offset_right = 193.0 +offset_bottom = 79.0 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 12 +text = "called with the data:" + +[node name="Label5" type="Label" parent="Panel/SpecificFields/Custom"] +layout_mode = 0 +offset_left = 52.0 +offset_top = 82.0 +offset_right = 253.0 +offset_bottom = 90.0 +theme_override_fonts/font = ExtResource("4_4pido") +theme_override_font_sizes/font_size = 12 +text = "(Each line will be passed as a string in an Array)" + +[node name="EditValue0" type="LineEdit" parent="Panel/SpecificFields/Custom"] +layout_mode = 0 +offset_left = 219.0 +offset_top = 35.0 +offset_right = 393.0 +offset_bottom = 59.0 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 14 +placeholder_text = "e.g. combat" + +[node name="EditValue1" type="TextEdit" parent="Panel/SpecificFields/Custom"] +layout_mode = 0 +offset_left = 52.0 +offset_top = 110.0 +offset_right = 411.0 +offset_bottom = 186.0 +theme_override_fonts/font = ExtResource("2_17q4f") +theme_override_font_sizes/font_size = 12 +placeholder_text = "e.g.: arena1 +monster_b" +highlight_current_line = true +draw_tabs = true +caret_blink = true + +[node name="BottomBar" type="Control" parent="Panel"] +anchors_preset = 0 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_top = -24.0 + +[node name="BtnSave" type="Button" parent="Panel/BottomBar"] +layout_mode = 0 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -100.5 +offset_top = -10.0 +offset_right = -59.5 +offset_bottom = 10.0 +focus_mode = 0 +theme_override_font_sizes/font_size = 12 +text = "OK" + +[node name="BtnCancel" type="Button" parent="Panel/BottomBar"] +layout_mode = 0 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = 53.0 +offset_top = -10.0 +offset_right = 107.0 +offset_bottom = 10.0 +focus_mode = 0 +theme_override_font_sizes/font_size = 12 +text = "Cancel" diff --git a/addons/madtalk/components/popups/DialogNodeItem_PopupMenu.tscn b/addons/madtalk/components/popups/DialogNodeItem_PopupMenu.tscn new file mode 100644 index 0000000..46a88de --- /dev/null +++ b/addons/madtalk/components/popups/DialogNodeItem_PopupMenu.tscn @@ -0,0 +1,31 @@ +[gd_scene load_steps=5 format=3 uid="uid://m0muqdnnedcu"] + +[ext_resource type="Texture2D" uid="uid://ccd654fnsh312" path="res://addons/madtalk/images/icon_edit.png" id="1"] +[ext_resource type="Texture2D" uid="uid://6iclvaqbm5dl" path="res://addons/madtalk/images/icon_up.png" id="2"] +[ext_resource type="Texture2D" uid="uid://c4xg8811uuoq6" path="res://addons/madtalk/images/icon_down.png" id="3"] +[ext_resource type="Texture2D" uid="uid://dxgulu8lvnwrr" path="res://addons/madtalk/images/icon_x.png" id="4"] + +[node name="PopupMenu" type="PopupMenu"] +position = Vector2i(0, 36) +size = Vector2i(136, 124) +item_count = 6 +item_0/text = "Edit" +item_0/icon = ExtResource("1") +item_0/id = 0 +item_1/text = "" +item_1/id = -1 +item_1/disabled = true +item_1/separator = true +item_2/text = "Move Up" +item_2/icon = ExtResource("2") +item_2/id = 1 +item_3/text = "Move Down" +item_3/icon = ExtResource("3") +item_3/id = 2 +item_4/text = "" +item_4/id = -1 +item_4/disabled = true +item_4/separator = true +item_5/text = "Remove" +item_5/icon = ExtResource("4") +item_5/id = 3 diff --git a/addons/madtalk/components/popups/Effect_DialogEdit.tscn b/addons/madtalk/components/popups/Effect_DialogEdit.tscn new file mode 100644 index 0000000..aa0556c --- /dev/null +++ b/addons/madtalk/components/popups/Effect_DialogEdit.tscn @@ -0,0 +1,641 @@ +[gd_scene load_steps=6 format=3 uid="uid://cip2u1he5glxt"] + +[ext_resource type="StyleBox" path="res://addons/madtalk/components/resources/PanelStyle.tres" id="1_m0nlj"] +[ext_resource type="FontFile" uid="uid://b38okvijpcxmv" path="res://addons/madtalk/fonts/FreeSans_smal.tres" id="2_wad08"] +[ext_resource type="PackedScene" uid="uid://dyepkyvo6sodg" path="res://addons/madtalk/components/BtnTip.tscn" id="3_62c5d"] +[ext_resource type="FontFile" uid="uid://bhcws34lw0ak5" path="res://addons/madtalk/fonts/FreeSans_tiny.tres" id="4_c5vhq"] + +[sub_resource type="StyleBoxFlat" id="1"] +bg_color = Color(0.186, 0.172, 0.2, 1) +border_width_left = 1 +border_width_top = 1 +border_width_right = 1 +border_width_bottom = 1 +border_color = Color(0.06, 0.06, 0.06, 1) +border_blend = true + +[node name="DialogEdit" type="Window"] +title = "Effect" +initial_position = 2 +size = Vector2i(500, 400) +visible = false +transient = true +exclusive = true +popup_window = true + +[node name="Panel" type="Panel" parent="."] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +theme_override_styles/panel = ExtResource("1_m0nlj") + +[node name="Label" type="Label" parent="Panel"] +layout_mode = 0 +offset_left = 35.0 +offset_top = 33.0 +offset_right = 108.0 +offset_bottom = 47.0 +theme_override_fonts/font = ExtResource("2_wad08") +theme_override_font_sizes/font_size = 12 +text = "Effect Type" + +[node name="BtnEffectType" type="OptionButton" parent="Panel"] +layout_mode = 0 +anchor_right = 1.0 +offset_left = 112.0 +offset_top = 25.0 +offset_right = -76.0 +offset_bottom = 60.0 +theme_override_fonts/font = ExtResource("2_wad08") +theme_override_font_sizes/font_size = 14 +item_count = 11 +popup/item_0/text = "Change Sheet" +popup/item_0/id = 0 +popup/item_1/text = "Set Variable" +popup/item_1/id = 1 +popup/item_2/text = "Add Variable" +popup/item_2/id = 2 +popup/item_3/text = "Randomize Variable" +popup/item_3/id = 3 +popup/item_4/text = "Stamp Time" +popup/item_4/id = 4 +popup/item_5/text = "Spend Minutes" +popup/item_5/id = 5 +popup/item_6/text = "Spend Days" +popup/item_6/id = 6 +popup/item_7/text = "Skip to Given Time" +popup/item_7/id = 7 +popup/item_8/text = "Skip to Given Weekday" +popup/item_8/id = 8 +popup/item_9/text = "Play Animation and Wait" +popup/item_9/id = 9 +popup/item_10/text = "Custom Effect" +popup/item_10/id = 10 + +[node name="BtnTip" parent="Panel" instance=ExtResource("3_62c5d")] +layout_mode = 0 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = -41.599 +offset_top = 44.1581 +offset_right = -13.599 +offset_bottom = 70.1581 + +[node name="SpecificFields" type="Panel" parent="Panel"] +layout_mode = 0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = 8.0 +offset_top = 72.0 +offset_right = -8.0 +offset_bottom = -38.0 +theme_override_styles/panel = SubResource("1") + +[node name="ChangeSheet" type="Control" parent="Panel/SpecificFields"] +visible = false +anchors_preset = 0 +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="Label" type="Label" parent="Panel/SpecificFields/ChangeSheet"] +layout_mode = 0 +offset_left = 33.9795 +offset_top = 33.0356 +offset_right = 261.979 +offset_bottom = 47.0356 +theme_override_fonts/font = ExtResource("2_wad08") +theme_override_font_sizes/font_size = 12 +text = "Stop this sequence and change to dialog sheet:" + +[node name="Label3" type="Label" parent="Panel/SpecificFields/ChangeSheet"] +layout_mode = 0 +offset_left = 33.9795 +offset_top = 145.036 +offset_right = 317.979 +offset_bottom = 159.036 +theme_override_fonts/font = ExtResource("2_wad08") +theme_override_font_sizes/font_size = 12 +text = "(Items in current sequence below this effect will not run.)" + +[node name="Label2" type="Label" parent="Panel/SpecificFields/ChangeSheet"] +layout_mode = 0 +offset_left = 33.9795 +offset_top = 97.0356 +offset_right = 291.979 +offset_bottom = 111.036 +theme_override_fonts/font = ExtResource("2_wad08") +theme_override_font_sizes/font_size = 12 +text = "Optional: start the dialog in sequence ID" + +[node name="EditValue0" type="LineEdit" parent="Panel/SpecificFields/ChangeSheet"] +layout_mode = 0 +offset_left = 35.0 +offset_top = 56.0 +offset_right = 394.0 +offset_bottom = 87.0 +theme_override_fonts/font = ExtResource("2_wad08") +theme_override_font_sizes/font_size = 14 +placeholder_text = "e.g. city_arrival" + +[node name="EditValue1" type="LineEdit" parent="Panel/SpecificFields/ChangeSheet"] +layout_mode = 0 +offset_left = 260.0 +offset_top = 91.0 +offset_right = 391.0 +offset_bottom = 115.0 +theme_override_fonts/font = ExtResource("2_wad08") +theme_override_font_sizes/font_size = 14 +text = "0" +placeholder_text = "Start is always zero" + +[node name="SetVariable" type="Control" parent="Panel/SpecificFields"] +visible = false +anchors_preset = 0 +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="Label" type="Label" parent="Panel/SpecificFields/SetVariable"] +layout_mode = 0 +offset_left = 49.9795 +offset_top = 41.0356 +offset_right = 277.979 +offset_bottom = 55.0356 +theme_override_fonts/font = ExtResource("2_wad08") +theme_override_font_sizes/font_size = 12 +text = "Set variable named" + +[node name="Label2" type="Label" parent="Panel/SpecificFields/SetVariable"] +layout_mode = 0 +offset_left = 52.0 +offset_top = 73.0 +offset_right = 178.0 +offset_bottom = 87.0 +theme_override_fonts/font = ExtResource("2_wad08") +theme_override_font_sizes/font_size = 12 +text = "to the fixed value" + +[node name="Label3" type="Label" parent="Panel/SpecificFields/SetVariable"] +layout_mode = 0 +offset_left = 172.0 +offset_top = 121.0 +offset_right = 298.0 +offset_bottom = 135.0 +theme_override_fonts/font = ExtResource("2_wad08") +theme_override_font_sizes/font_size = 12 +text = "To use this variable in True/False checks, +enter the number: + + True: 1 (or any non-zero number) + False: 0 +" + +[node name="EditValue0" type="LineEdit" parent="Panel/SpecificFields/SetVariable"] +layout_mode = 0 +offset_left = 166.0 +offset_top = 35.0 +offset_right = 371.0 +offset_bottom = 59.0 +theme_override_fonts/font = ExtResource("2_wad08") +theme_override_font_sizes/font_size = 14 +placeholder_text = "e.g. player_health" + +[node name="EditValue1" type="LineEdit" parent="Panel/SpecificFields/SetVariable"] +layout_mode = 0 +offset_left = 166.0 +offset_top = 69.0 +offset_right = 249.0 +offset_bottom = 100.0 +theme_override_fonts/font = ExtResource("2_wad08") +theme_override_font_sizes/font_size = 14 +placeholder_text = "e.g. 25.0" + +[node name="AddVariable" type="Control" parent="Panel/SpecificFields"] +visible = false +anchors_preset = 0 +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="Label" type="Label" parent="Panel/SpecificFields/AddVariable"] +layout_mode = 0 +offset_left = 49.9795 +offset_top = 41.0356 +offset_right = 277.979 +offset_bottom = 55.0356 +theme_override_fonts/font = ExtResource("2_wad08") +theme_override_font_sizes/font_size = 12 +text = "Add to variable named" + +[node name="Label2" type="Label" parent="Panel/SpecificFields/AddVariable"] +layout_mode = 0 +offset_left = 52.0 +offset_top = 73.0 +offset_right = 178.0 +offset_bottom = 87.0 +theme_override_fonts/font = ExtResource("2_wad08") +theme_override_font_sizes/font_size = 12 +text = "the value (can be negative for subtraction)" + +[node name="EditValue0" type="LineEdit" parent="Panel/SpecificFields/AddVariable"] +layout_mode = 0 +offset_left = 182.0 +offset_top = 34.0 +offset_right = 387.0 +offset_bottom = 65.0 +theme_override_fonts/font = ExtResource("2_wad08") +theme_override_font_sizes/font_size = 14 +placeholder_text = "e.g. player_health" + +[node name="EditValue1" type="LineEdit" parent="Panel/SpecificFields/AddVariable"] +layout_mode = 0 +offset_left = 303.0 +offset_top = 67.0 +offset_right = 386.0 +offset_bottom = 91.0 +theme_override_fonts/font = ExtResource("2_wad08") +theme_override_font_sizes/font_size = 14 +placeholder_text = "e.g. 25.0" + +[node name="RandomizeVariable" type="Control" parent="Panel/SpecificFields"] +visible = false +anchors_preset = 0 +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="Label" type="Label" parent="Panel/SpecificFields/RandomizeVariable"] +layout_mode = 0 +offset_left = 49.9795 +offset_top = 41.0356 +offset_right = 277.979 +offset_bottom = 55.0356 +theme_override_fonts/font = ExtResource("2_wad08") +theme_override_font_sizes/font_size = 12 +text = "Set variable named" + +[node name="Label2" type="Label" parent="Panel/SpecificFields/RandomizeVariable"] +layout_mode = 0 +offset_left = 52.0 +offset_top = 73.0 +offset_right = 200.0 +offset_bottom = 87.0 +theme_override_fonts/font = ExtResource("2_wad08") +theme_override_font_sizes/font_size = 12 +text = "to a random value between" + +[node name="Label4" type="Label" parent="Panel/SpecificFields/RandomizeVariable"] +layout_mode = 0 +offset_left = 52.0 +offset_top = 89.0 +offset_right = 200.0 +offset_bottom = 103.0 +theme_override_fonts/font = ExtResource("2_wad08") +theme_override_font_sizes/font_size = 12 +text = "(inclusive)" + +[node name="Label3" type="Label" parent="Panel/SpecificFields/RandomizeVariable"] +layout_mode = 0 +offset_left = 294.0 +offset_top = 73.0 +offset_right = 315.0 +offset_bottom = 87.0 +theme_override_fonts/font = ExtResource("2_wad08") +theme_override_font_sizes/font_size = 12 +text = "and" + +[node name="EditValue0" type="LineEdit" parent="Panel/SpecificFields/RandomizeVariable"] +layout_mode = 0 +offset_left = 182.0 +offset_top = 32.0 +offset_right = 387.0 +offset_bottom = 67.0 +theme_override_fonts/font = ExtResource("2_wad08") +placeholder_text = "e.g. npc1_love" + +[node name="EditValue1" type="LineEdit" parent="Panel/SpecificFields/RandomizeVariable"] +layout_mode = 0 +offset_left = 221.0 +offset_top = 69.0 +offset_right = 282.313 +offset_bottom = 104.0 +theme_override_fonts/font = ExtResource("2_wad08") +placeholder_text = "e.g. -5.0" + +[node name="EditValue2" type="LineEdit" parent="Panel/SpecificFields/RandomizeVariable"] +layout_mode = 0 +offset_left = 329.0 +offset_top = 69.0 +offset_right = 390.313 +offset_bottom = 104.0 +theme_override_fonts/font = ExtResource("2_wad08") +placeholder_text = "e.g. 10.0" + +[node name="StampTime" type="Control" parent="Panel/SpecificFields"] +visible = false +anchors_preset = 0 +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="Label" type="Label" parent="Panel/SpecificFields/StampTime"] +layout_mode = 0 +offset_left = 49.9795 +offset_top = 41.0356 +offset_right = 277.979 +offset_bottom = 55.0356 +theme_override_fonts/font = ExtResource("2_wad08") +theme_override_font_sizes/font_size = 12 +text = "Timestamp current in-game time value" + +[node name="Label2" type="Label" parent="Panel/SpecificFields/StampTime"] +layout_mode = 0 +offset_left = 52.0 +offset_top = 73.0 +offset_right = 200.0 +offset_bottom = 87.0 +theme_override_fonts/font = ExtResource("2_wad08") +theme_override_font_sizes/font_size = 12 +text = "to a variable named" + +[node name="EditValue0" type="LineEdit" parent="Panel/SpecificFields/StampTime"] +layout_mode = 0 +offset_left = 182.0 +offset_top = 67.0 +offset_right = 387.0 +offset_bottom = 91.0 +theme_override_fonts/font = ExtResource("2_wad08") +theme_override_font_sizes/font_size = 14 +placeholder_text = "e.g. player_entered_room3" + +[node name="SpendMinutes" type="Control" parent="Panel/SpecificFields"] +visible = false +anchors_preset = 0 +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="Label" type="Label" parent="Panel/SpecificFields/SpendMinutes"] +layout_mode = 0 +offset_left = 65.9795 +offset_top = 41.0356 +offset_right = 293.979 +offset_bottom = 55.0356 +theme_override_fonts/font = ExtResource("2_wad08") +theme_override_font_sizes/font_size = 12 +text = "Advance current in-game time in" + +[node name="Label2" type="Label" parent="Panel/SpecificFields/SpendMinutes"] +layout_mode = 0 +offset_left = 180.0 +offset_top = 73.0 +offset_right = 328.0 +offset_bottom = 87.0 +theme_override_fonts/font = ExtResource("2_wad08") +theme_override_font_sizes/font_size = 12 +text = "minutes" + +[node name="EditValue0" type="LineEdit" parent="Panel/SpecificFields/SpendMinutes"] +layout_mode = 0 +offset_left = 62.0 +offset_top = 67.0 +offset_right = 169.0 +offset_bottom = 91.0 +theme_override_fonts/font = ExtResource("2_wad08") +theme_override_font_sizes/font_size = 14 +placeholder_text = "e.g. 15" + +[node name="SpendDays" type="Control" parent="Panel/SpecificFields"] +visible = false +anchors_preset = 0 +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="Label" type="Label" parent="Panel/SpecificFields/SpendDays"] +layout_mode = 0 +offset_left = 65.9795 +offset_top = 41.0356 +offset_right = 293.979 +offset_bottom = 55.0356 +theme_override_fonts/font = ExtResource("2_wad08") +theme_override_font_sizes/font_size = 12 +text = "Advance current in-game time in" + +[node name="Label2" type="Label" parent="Panel/SpecificFields/SpendDays"] +layout_mode = 0 +offset_left = 180.0 +offset_top = 73.0 +offset_right = 328.0 +offset_bottom = 87.0 +theme_override_fonts/font = ExtResource("2_wad08") +theme_override_font_sizes/font_size = 12 +text = "days" + +[node name="EditValue0" type="LineEdit" parent="Panel/SpecificFields/SpendDays"] +layout_mode = 0 +offset_left = 62.0 +offset_top = 67.0 +offset_right = 169.0 +offset_bottom = 91.0 +theme_override_fonts/font = ExtResource("2_wad08") +theme_override_font_sizes/font_size = 14 +placeholder_text = "e.g. 2" + +[node name="SkipToTime" type="Control" parent="Panel/SpecificFields"] +visible = false +anchors_preset = 0 +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="Label" type="Label" parent="Panel/SpecificFields/SkipToTime"] +layout_mode = 0 +offset_left = 66.0 +offset_top = 41.0 +offset_right = 274.0 +offset_bottom = 55.0 +theme_override_fonts/font = ExtResource("2_wad08") +theme_override_font_sizes/font_size = 12 +text = "Advance in-game time until the time is" + +[node name="EditValue0" type="LineEdit" parent="Panel/SpecificFields/SkipToTime"] +layout_mode = 0 +offset_left = 280.0 +offset_top = 35.0 +offset_right = 371.0 +offset_bottom = 59.0 +theme_override_fonts/font = ExtResource("2_wad08") +theme_override_font_sizes/font_size = 14 +placeholder_text = "e.g. 07:00" + +[node name="SkipToWeekday" type="Control" parent="Panel/SpecificFields"] +visible = false +anchors_preset = 0 +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="Label" type="Label" parent="Panel/SpecificFields/SkipToWeekday"] +layout_mode = 0 +offset_left = 66.0 +offset_top = 41.0 +offset_right = 274.0 +offset_bottom = 55.0 +theme_override_fonts/font = ExtResource("2_wad08") +theme_override_font_sizes/font_size = 12 +text = "Advance in-game time until the weekday is" + +[node name="Label2" type="Label" parent="Panel/SpecificFields/SkipToWeekday"] +layout_mode = 0 +offset_left = 66.0 +offset_top = 73.0 +offset_right = 355.0 +offset_bottom = 87.0 +theme_override_fonts/font = ExtResource("2_wad08") +theme_override_font_sizes/font_size = 12 +text = "Time will be set to 00:00 (beginning of the given day)." + +[node name="Option0" type="OptionButton" parent="Panel/SpecificFields/SkipToWeekday"] +layout_mode = 0 +offset_left = 306.657 +offset_top = 36.795 +offset_right = 377.657 +offset_bottom = 56.795 +theme_override_fonts/font = ExtResource("2_wad08") +theme_override_font_sizes/font_size = 14 +item_count = 7 +popup/item_0/text = "Sunday" +popup/item_0/id = 0 +popup/item_1/text = "Monday" +popup/item_1/id = 1 +popup/item_2/text = "Tuesday" +popup/item_2/id = 2 +popup/item_3/text = "Wednesday" +popup/item_3/id = 3 +popup/item_4/text = "Thursday" +popup/item_4/id = 4 +popup/item_5/text = "Friday" +popup/item_5/id = 5 +popup/item_6/text = "Saturday" +popup/item_6/id = 6 + +[node name="WaitAnim" type="Control" parent="Panel/SpecificFields"] +visible = false +anchors_preset = 0 +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="Label" type="Label" parent="Panel/SpecificFields/WaitAnim"] +layout_mode = 0 +offset_left = 65.9795 +offset_top = 41.0356 +offset_right = 293.979 +offset_bottom = 55.0356 +theme_override_fonts/font = ExtResource("2_wad08") +theme_override_font_sizes/font_size = 12 +text = "Play animation named" + +[node name="Label2" type="Label" parent="Panel/SpecificFields/WaitAnim"] +layout_mode = 0 +offset_left = 66.0 +offset_top = 73.0 +offset_right = 361.0 +offset_bottom = 100.0 +theme_override_fonts/font = ExtResource("2_wad08") +theme_override_font_sizes/font_size = 12 +text = "from the Effects AnimationPlayer set in the MadTalk node, +and wait for it to finish before continuing the sequence." + +[node name="EditValue0" type="LineEdit" parent="Panel/SpecificFields/WaitAnim"] +layout_mode = 0 +offset_left = 202.0 +offset_top = 33.0 +offset_right = 350.0 +offset_bottom = 57.0 +theme_override_fonts/font = ExtResource("2_wad08") +theme_override_font_sizes/font_size = 14 +placeholder_text = "e.g. first_cutscene" + +[node name="Custom" type="Control" parent="Panel/SpecificFields"] +visible = false +anchors_preset = 0 +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="Label" type="Label" parent="Panel/SpecificFields/Custom"] +layout_mode = 0 +offset_left = 49.9795 +offset_top = 41.0356 +offset_right = 277.979 +offset_bottom = 55.0356 +theme_override_fonts/font = ExtResource("2_wad08") +theme_override_font_sizes/font_size = 12 +text = "Custom effect code for ID" + +[node name="Label4" type="Label" parent="Panel/SpecificFields/Custom"] +layout_mode = 0 +offset_left = 52.0 +offset_top = 70.0 +offset_right = 193.0 +offset_bottom = 93.0 +theme_override_fonts/font = ExtResource("2_wad08") +theme_override_font_sizes/font_size = 12 +text = "called with the data:" + +[node name="Label5" type="Label" parent="Panel/SpecificFields/Custom"] +layout_mode = 0 +offset_left = 52.0 +offset_top = 89.0 +offset_right = 308.0 +offset_bottom = 112.0 +theme_override_fonts/font = ExtResource("4_c5vhq") +theme_override_font_sizes/font_size = 12 +text = "(Each line will be passed as a string in an Array)" + +[node name="EditValue0" type="LineEdit" parent="Panel/SpecificFields/Custom"] +layout_mode = 0 +offset_left = 196.0 +offset_top = 34.0 +offset_right = 392.0 +offset_bottom = 58.0 +theme_override_fonts/font = ExtResource("2_wad08") +theme_override_font_sizes/font_size = 14 +placeholder_text = "e.g. give_item" + +[node name="EditValue1" type="TextEdit" parent="Panel/SpecificFields/Custom"] +layout_mode = 0 +offset_left = 52.0 +offset_top = 114.0 +offset_right = 411.0 +offset_bottom = 190.0 +theme_override_fonts/font = ExtResource("2_wad08") +theme_override_font_sizes/font_size = 12 +highlight_current_line = true +draw_tabs = true +caret_blink = true + +[node name="BottomBar" type="Control" parent="Panel"] +anchors_preset = 0 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_top = -24.0 + +[node name="BtnSave" type="Button" parent="Panel/BottomBar"] +layout_mode = 0 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -100.5 +offset_top = -10.0 +offset_right = -59.5 +offset_bottom = 10.0 +focus_mode = 0 +text = "OK" + +[node name="BtnCancel" type="Button" parent="Panel/BottomBar"] +layout_mode = 0 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = 53.0 +offset_top = -10.0 +offset_right = 107.0 +offset_bottom = 10.0 +focus_mode = 0 +text = "Cancel" diff --git a/addons/madtalk/components/popups/Messages_DialogEdit.tscn b/addons/madtalk/components/popups/Messages_DialogEdit.tscn new file mode 100644 index 0000000..36c8410 --- /dev/null +++ b/addons/madtalk/components/popups/Messages_DialogEdit.tscn @@ -0,0 +1,269 @@ +[gd_scene load_steps=9 format=3 uid="uid://cy4tp1rk7owe8"] + +[ext_resource type="StyleBox" path="res://addons/madtalk/components/resources/PanelStyle.tres" id="1_ebfqh"] +[ext_resource type="FontFile" uid="uid://b38okvijpcxmv" path="res://addons/madtalk/fonts/FreeSans_smal.tres" id="2_yr8qn"] +[ext_resource type="PackedScene" uid="uid://dyepkyvo6sodg" path="res://addons/madtalk/components/BtnTip.tscn" id="3_fqggi"] +[ext_resource type="PackedScene" uid="uid://dc46jny8nbbow" path="res://addons/madtalk/components/MessageEditorWithLocales.tscn" id="4_b66sd"] +[ext_resource type="FontFile" path="res://addons/madtalk/fonts/FreeSans_bold_small.tres" id="4_w10ta"] +[ext_resource type="FontFile" path="res://addons/madtalk/fonts/FreeSans_italic_small.tres" id="5_ypyua"] +[ext_resource type="FontFile" path="res://addons/madtalk/fonts/FreeSans_bolditalic_small.tres" id="6_u7epw"] +[ext_resource type="StyleBox" path="res://addons/madtalk/components/resources/RichLabelPreviewAlphaStyle.tres" id="7_3pci6"] + +[node name="DialogEdit" type="Window"] +initial_position = 2 +size = Vector2i(750, 550) +exclusive = true +popup_window = true + +[node name="Panel" type="Panel" parent="."] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +theme_override_styles/panel = ExtResource("1_ebfqh") + +[node name="SpeakerLabel" type="Label" parent="Panel"] +layout_mode = 0 +offset_left = 23.0 +offset_top = 16.0 +offset_right = 92.0 +offset_bottom = 30.0 +theme_override_fonts/font = ExtResource("2_yr8qn") +theme_override_font_sizes/font_size = 12 +text = "Speaker ID" + +[node name="SpeakerEdit" type="LineEdit" parent="Panel"] +layout_mode = 0 +anchor_right = 0.5 +offset_left = 92.0 +offset_top = 12.0 +offset_right = -28.0 +offset_bottom = 36.0 +theme_override_fonts/font = ExtResource("2_yr8qn") +theme_override_font_sizes/font_size = 14 +placeholder_text = "string id for the character " + +[node name="TipSpeaker" parent="Panel" instance=ExtResource("3_fqggi")] +layout_mode = 0 +anchor_left = 0.5 +anchor_right = 0.5 +offset_left = -24.0627 +offset_top = 12.1479 +offset_right = 3.93732 +offset_bottom = 34.1479 +tip_title = "Speaker ID" +tip_text = "The speaker ID is a string identifying the character speaking the message. It is used to show the avatar and name. +You have to configure the avatar and name separately." + +[node name="VariantLabel" type="Label" parent="Panel"] +layout_mode = 0 +anchor_left = 0.5 +anchor_right = 0.5 +offset_left = 23.0 +offset_top = 16.0 +offset_right = 92.0 +offset_bottom = 30.0 +theme_override_fonts/font = ExtResource("2_yr8qn") +theme_override_font_sizes/font_size = 12 +text = "Variant" + +[node name="VariantEdit" type="LineEdit" parent="Panel"] +layout_mode = 0 +anchor_left = 0.5 +anchor_right = 1.0 +offset_left = 72.0 +offset_top = 12.0 +offset_right = -56.0 +offset_bottom = 36.0 +theme_override_fonts/font = ExtResource("2_yr8qn") +theme_override_font_sizes/font_size = 14 +placeholder_text = "avatar variant - leave blank for default" + +[node name="TipVariant" parent="Panel" instance=ExtResource("3_fqggi")] +layout_mode = 0 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = -52.5627 +offset_top = 12.1479 +offset_right = -24.5627 +offset_bottom = 34.1479 +tip_title = "Avatar Variant" +tip_text = "The avatar variant is a string identifying an alternate texture ID for the character avatar. If specified, a texture with this ID will be used instead of the default one. You have to configure the avatar variants separately. + +This is used mainly for emotions, so different images can be used for \"angry\", \"happy\", \"sad\", etc, but since the IDs and their interpretations are up to you, they can be anything - e.g. different clothes, different background scenarios, etc." + +[node name="BtnHideOnEnd" type="CheckButton" parent="Panel"] +layout_mode = 1 +anchors_preset = 1 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = -346.0 +offset_top = 49.0 +offset_right = -55.0 +offset_bottom = 89.0 +grow_horizontal = 0 +theme_override_fonts/font = ExtResource("2_yr8qn") +theme_override_font_sizes/font_size = 12 +text = "Force hiding message before next item" + +[node name="TipHideOnEnd" parent="Panel" instance=ExtResource("3_fqggi")] +layout_mode = 1 +anchors_preset = 1 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = -52.0627 +offset_top = 58.1479 +offset_right = -24.0627 +offset_bottom = 82.1479 +grow_horizontal = 0 +tip_title = "Hide Before Next Item" +tip_text = "During a dialog session, messages usually stay on screen when the next item is not another message - including menus, animations and custom effects. This is to allow the player to review the last message before selecting an option, and to allow narration over cutscenes. Text messages are replaced when next item is another message, and hidden in the very end of the dialog session. + +Selecting this option forces the message box to hide when processing the next item even if it would normally stay visible. Useful if the menu is not related to the last message, or if you want animations without any text on screen." + +[node name="MessageLabel" type="Label" parent="Panel"] +layout_mode = 0 +offset_left = 23.0 +offset_top = 73.0 +offset_right = 182.0 +offset_bottom = 93.0 +theme_override_fonts/font = ExtResource("2_yr8qn") +theme_override_font_sizes/font_size = 12 +text = "Message (BB Code allowed):" + +[node name="MessageEditor" parent="Panel" instance=ExtResource("4_b66sd")] +layout_mode = 0 +anchors_preset = 0 +anchor_right = 0.0 +anchor_bottom = 0.0 +offset_left = 16.0 +offset_top = 97.0 +offset_right = 734.0 +offset_bottom = 350.0 +grow_horizontal = 1 +grow_vertical = 1 + +[node name="PreviewLabel" type="Label" parent="Panel"] +layout_mode = 1 +anchors_preset = 2 +anchor_top = 1.0 +anchor_bottom = 1.0 +offset_left = 22.68 +offset_top = -175.305 +offset_right = 181.68 +offset_bottom = -152.305 +grow_vertical = 0 +theme_override_fonts/font = ExtResource("2_yr8qn") +theme_override_font_sizes/font_size = 12 +text = "Message Preview" + +[node name="BtnTextColor" type="ColorPickerButton" parent="Panel"] +layout_mode = 0 +anchor_left = 1.0 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = -441.0 +offset_top = -175.305 +offset_right = -377.0 +offset_bottom = -155.305 +toggle_mode = false +expand_icon = true +color = Color(1, 1, 1, 1) +edit_alpha = false + +[node name="TextColorLabel" type="Label" parent="Panel/BtnTextColor"] +layout_mode = 0 +offset_left = 69.0 +offset_right = 228.0 +offset_bottom = 23.0 +theme_override_fonts/font = ExtResource("2_yr8qn") +theme_override_font_sizes/font_size = 12 +text = "Default Text Color" + +[node name="BtnBGColor" type="ColorPickerButton" parent="Panel"] +layout_mode = 0 +anchor_left = 1.0 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = -250.0 +offset_top = -175.305 +offset_right = -186.0 +offset_bottom = -155.305 +toggle_mode = false +expand_icon = true +edit_alpha = false + +[node name="TextColorLabel" type="Label" parent="Panel/BtnBGColor"] +layout_mode = 0 +offset_left = 69.0 +offset_right = 228.0 +offset_bottom = 23.0 +theme_override_fonts/font = ExtResource("2_yr8qn") +theme_override_font_sizes/font_size = 12 +text = "Background Color" + +[node name="PreviewBox" type="ColorRect" parent="Panel"] +layout_mode = 0 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = 16.0 +offset_top = -153.215 +offset_right = -16.0 +offset_bottom = -32.215 +color = Color(0, 0, 0, 1) + +[node name="PreviewLabel" type="RichTextLabel" parent="Panel/PreviewBox"] +layout_mode = 0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = 8.0 +offset_top = 8.8909 +offset_right = -8.0 +offset_bottom = -7.1091 +theme_override_colors/default_color = Color(1, 1, 1, 1) +theme_override_fonts/normal_font = ExtResource("2_yr8qn") +theme_override_fonts/italics_font = ExtResource("5_ypyua") +theme_override_fonts/bold_italics_font = ExtResource("6_u7epw") +theme_override_fonts/bold_font = ExtResource("4_w10ta") +theme_override_styles/normal = ExtResource("7_3pci6") +bbcode_enabled = true + +[node name="PreviewTimer" type="Timer" parent="Panel/PreviewBox"] +wait_time = 0.5 +one_shot = true + +[node name="BottomBar" type="Control" parent="Panel"] +anchors_preset = 0 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_top = -33.51 +offset_bottom = -9.51001 + +[node name="BtnSave" type="Button" parent="Panel/BottomBar"] +layout_mode = 0 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -100.5 +offset_top = -10.0 +offset_right = -59.5 +offset_bottom = 10.0 +focus_mode = 0 +text = "OK" + +[node name="BtnCancel" type="Button" parent="Panel/BottomBar"] +layout_mode = 0 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = 53.0 +offset_top = -10.0 +offset_right = 107.0 +offset_bottom = 10.0 +focus_mode = 0 +text = "Cancel" diff --git a/addons/madtalk/components/popups/Messages_VoiceClipDialog.tscn b/addons/madtalk/components/popups/Messages_VoiceClipDialog.tscn new file mode 100644 index 0000000..0b5ca31 --- /dev/null +++ b/addons/madtalk/components/popups/Messages_VoiceClipDialog.tscn @@ -0,0 +1,12 @@ +[gd_scene format=3 uid="uid://dhf1etqkj85p"] + +[node name="VoiceClipDialog" type="FileDialog"] +title = "Load voice clip" +initial_position = 2 +size = Vector2i(600, 500) +popup_window = true +ok_button_text = "Open" +dialog_hide_on_ok = true +mode_overrides_title = false +file_mode = 0 +filters = PackedStringArray("*.wav; WAV files", "*.ogg; OGG clips") diff --git a/addons/madtalk/components/resources/ButtonStyle.tres b/addons/madtalk/components/resources/ButtonStyle.tres new file mode 100644 index 0000000..7a5e812 --- /dev/null +++ b/addons/madtalk/components/resources/ButtonStyle.tres @@ -0,0 +1,12 @@ +[gd_resource type="StyleBoxFlat" format=2] + +[resource] +bg_color = Color( 0.2883, 0.2666, 0.31, 1 ) +border_width_left = 2 +border_width_top = 2 +border_width_right = 2 +border_width_bottom = 2 +border_color = Color( 0.1, 0.1, 0.1, 1 ) +border_blend = true +shadow_color = Color( 0, 0, 0, 0.12549 ) +shadow_size = 2 diff --git a/addons/madtalk/components/resources/DialogData.gd b/addons/madtalk/components/resources/DialogData.gd new file mode 100644 index 0000000..46b4825 --- /dev/null +++ b/addons/madtalk/components/resources/DialogData.gd @@ -0,0 +1,31 @@ +@tool +extends Resource +class_name DialogData + +# This Resource is the top container of all the dialog data in the game +# It contains sheets, each sheet contains sequences, each sequence contains +# items and options +# +# DialogData +# |- DialogSheetData -> e.g. sheet_id = "npc1_shop" +# | |- DialogNodeData -> e.g. ID=0 - START (options are inside) +# | | |- DialogNodeItemData -> e.g. welcome message +# | | |- DialogNodeItemData -> e.g. some condition +# | | '- DialogNodeItemData -> e.g. some effects +# | |- DialogNodeData -> e.g. ID=1 (e.g. some item purchase) +# | | |- DialogNodeItemData -> e.g. thank you message +# | | |- DialogNodeItemData -> e.g. effect to buy item +# | | ... +# | ... +# |- DialogSheetData -> e.g. dialog in some other context +# ... + +# Version number will be used in the future to convert databases to newer +# versions. This is necessary since conditions and effects are based on +# enums (and therefore int's) and adding new items might potentially break +# existing designs +@export var version: float = 1.0 + +# Dictionary keys are strings +# Dictionary values are DialogSheetData resource +@export var sheets: Dictionary = {} diff --git a/addons/madtalk/components/resources/DialogData.gd.uid b/addons/madtalk/components/resources/DialogData.gd.uid new file mode 100644 index 0000000..34c07d2 --- /dev/null +++ b/addons/madtalk/components/resources/DialogData.gd.uid @@ -0,0 +1 @@ +uid://bw2q2eucjkylk diff --git a/addons/madtalk/components/resources/DialogNodeData.gd b/addons/madtalk/components/resources/DialogNodeData.gd new file mode 100644 index 0000000..59b9e36 --- /dev/null +++ b/addons/madtalk/components/resources/DialogNodeData.gd @@ -0,0 +1,17 @@ +@tool +extends Resource +class_name DialogNodeData + +# This Resource refers to an entire dialog sequence (graphical node), +# and does not include sub-items +# It is used to define sequence ID and option buttons + +@export var sequence_id: int = 0 +@export var position: Vector2 = Vector2(0,0) +@export var comment: String = "" + +@export var items = [] # (Array, Resource) +@export var options = [] # (Array, Resource) + +@export var continue_sequence_id: int = -1 +@export var continue_port_index: int = -1 diff --git a/addons/madtalk/components/resources/DialogNodeData.gd.uid b/addons/madtalk/components/resources/DialogNodeData.gd.uid new file mode 100644 index 0000000..34acd47 --- /dev/null +++ b/addons/madtalk/components/resources/DialogNodeData.gd.uid @@ -0,0 +1 @@ +uid://b2mrnotqjr75d diff --git a/addons/madtalk/components/resources/DialogNodeItemData.gd b/addons/madtalk/components/resources/DialogNodeItemData.gd new file mode 100644 index 0000000..cf889d9 --- /dev/null +++ b/addons/madtalk/components/resources/DialogNodeItemData.gd @@ -0,0 +1,73 @@ +@tool +extends Resource +class_name DialogNodeItemData + +# This resource is variant and is shared across all node item types +# Properties which are not applicable are just ignored + +enum ItemTypes { + Message, # Basic item, displays a dialog message + Condition, # Condition to branch out + Effect # Effect causing a change to some in-game state +} + +# Type of item (message, condition or effect) +@export var item_type: ItemTypes = ItemTypes.Message +# To what sequence id this item is connected (only valid for condition) +@export var connected_to_id: int = -1 +# Holds the GraphNode port index for this item +var port_index : int = -1 + +# ============================================================================== +# USED BY TYPE: MESSAGE + +@export var message_speaker_id: String = "" +@export var message_speaker_variant: String = "" + +# For compatibility reasons, default names are associated with the default +# language - that is, if locale isn't specified. +@export var message_voice_clip: String = "" # Default locale +@export_multiline var message_text := "" # Default locale + +# Localised versions go on separate properties +@export var message_voice_clip_locales: Dictionary = {} +@export var message_text_locales: Dictionary = {} + +@export var message_hide_on_end: int = 0 + +func get_localized_text() -> String: + var locale = MadTalkGlobals.current_locale + + if locale == "": + return message_text + + elif (locale in message_text_locales): + return message_text_locales[locale] + + else: + return message_text + + +func get_localized_voice_clip() -> String: + var locale = MadTalkGlobals.current_locale + + if locale == "": + return message_voice_clip + + elif (locale in message_voice_clip_locales): + return message_voice_clip_locales[locale] + + else: + return message_voice_clip + +# ============================================================================== +# USED BY TYPE: CONDITION + +@export var condition_type := MTDefs.ConditionTypes.Custom # (MTDefs.ConditionTypes) +@export var condition_values: Array = [] + +# ============================================================================== +# USED BY TYPE: EFFECT + +@export var effect_type := MTDefs.EffectTypes.Custom # (MTDefs.EffectTypes) +@export var effect_values: Array = [] diff --git a/addons/madtalk/components/resources/DialogNodeItemData.gd.uid b/addons/madtalk/components/resources/DialogNodeItemData.gd.uid new file mode 100644 index 0000000..d2b1131 --- /dev/null +++ b/addons/madtalk/components/resources/DialogNodeItemData.gd.uid @@ -0,0 +1 @@ +uid://c2bv5lwcvdmrb diff --git a/addons/madtalk/components/resources/DialogNodeOptionData.gd b/addons/madtalk/components/resources/DialogNodeOptionData.gd new file mode 100644 index 0000000..68be094 --- /dev/null +++ b/addons/madtalk/components/resources/DialogNodeOptionData.gd @@ -0,0 +1,57 @@ +@tool +extends Resource +class_name DialogNodeOptionData + +enum AutodisableModes { + NEVER, + RESET_ON_SHEET_RUN, + ALWAYS +} + +enum InactiveMode { + DISABLED, + HIDDEN +} + +## Text shown in the button, default locale +@export var text: String = "" + +## Text shown in the button, other locales +@export var text_locales: Dictionary = {} + +## To what sequence id this option is connected +@export var connected_to_id: int = -1 +# Holds the GraphNode port index for this item +var port_index : int = -1 + +## If option visibility is conditional +@export var is_conditional: bool = false + +## Variable name +@export var condition_variable: String = "" + +## Condition operator ("=", "!=", ">", "<", ">=", "<=") +## This version keeps it as string for code simplicity +@export var condition_operator: String = "=" + +## Variable value - if the string is a valid number, value is the number itself +## otherwise (if it's a text String) it's the variable name to compare to +@export var condition_value: String = "" + +## If the option auto-disables itself after selected +@export var autodisable_mode := AutodisableModes.NEVER + +## How the option is handled when it's not active +@export var inactive_mode := InactiveMode.DISABLED + +func get_localized_text() -> String: + var locale = MadTalkGlobals.current_locale + + if locale == "": + return text + + elif (locale in text_locales): + return text_locales[locale] + + else: + return text diff --git a/addons/madtalk/components/resources/DialogNodeOptionData.gd.uid b/addons/madtalk/components/resources/DialogNodeOptionData.gd.uid new file mode 100644 index 0000000..c6e0739 --- /dev/null +++ b/addons/madtalk/components/resources/DialogNodeOptionData.gd.uid @@ -0,0 +1 @@ +uid://bfg2ff7c0tanh diff --git a/addons/madtalk/components/resources/DialogSheetData.gd b/addons/madtalk/components/resources/DialogSheetData.gd new file mode 100644 index 0000000..7818632 --- /dev/null +++ b/addons/madtalk/components/resources/DialogSheetData.gd @@ -0,0 +1,22 @@ +@tool +extends Resource +class_name DialogSheetData + +# This resource contains a sheet of dialog, consisting of interconnected nodes +# Each node is a DialogNodeData +# +# E.g. +# DialogSheetData -> e.g. sheet_id = "npc1_shop" +# |- DialogNodeData -> e.g. ID=0 - START (options are inside) +# | |- DialogNodeItemData -> e.g. welcome message +# | |- DialogNodeItemData -> e.g. some condition +# | '- DialogNodeItemData -> e.g. some effects +# |- DialogNodeData -> e.g. ID=1 (e.g. some item purchase) +# | |- DialogNodeItemData -> e.g. thank you message +# | |- DialogNodeItemData -> e.g. effect to buy item +# | ... + +@export var sheet_id: String = "" +@export var sheet_description: String = "" +@export var next_sequence_id: int = 0 +@export var nodes: Array = [] # "nodes" as in dialog node, not Godot Node # (Array, Resource) diff --git a/addons/madtalk/components/resources/DialogSheetData.gd.uid b/addons/madtalk/components/resources/DialogSheetData.gd.uid new file mode 100644 index 0000000..87e0549 --- /dev/null +++ b/addons/madtalk/components/resources/DialogSheetData.gd.uid @@ -0,0 +1 @@ +uid://butd1fwy4a2hn diff --git a/addons/madtalk/components/resources/GraphStyle.tres b/addons/madtalk/components/resources/GraphStyle.tres new file mode 100644 index 0000000..79fe313 --- /dev/null +++ b/addons/madtalk/components/resources/GraphStyle.tres @@ -0,0 +1,10 @@ +[gd_resource type="StyleBoxFlat" format=2] + +[resource] +bg_color = Color( 0.20055, 0.1911, 0.21, 1 ) +border_width_left = 1 +border_width_top = 1 +border_width_right = 1 +border_width_bottom = 1 +border_color = Color( 0.06, 0.06, 0.06, 1 ) +border_blend = true diff --git a/addons/madtalk/components/resources/InputDarkStyle.tres b/addons/madtalk/components/resources/InputDarkStyle.tres new file mode 100644 index 0000000..0ff551d --- /dev/null +++ b/addons/madtalk/components/resources/InputDarkStyle.tres @@ -0,0 +1,12 @@ +[gd_resource type="StyleBoxFlat" format=2] + +[resource] +content_margin_left = 4.0 +content_margin_right = 4.0 +bg_color = Color( 0.1116, 0.1032, 0.12, 1 ) +border_width_left = 1 +border_width_top = 1 +border_width_right = 1 +border_width_bottom = 1 +border_color = Color( 0.06, 0.06, 0.06, 1 ) +border_blend = true diff --git a/addons/madtalk/components/resources/InputStyle_grey.tres b/addons/madtalk/components/resources/InputStyle_grey.tres new file mode 100644 index 0000000..b707bb8 --- /dev/null +++ b/addons/madtalk/components/resources/InputStyle_grey.tres @@ -0,0 +1,10 @@ +[gd_resource type="StyleBoxFlat" format=3 uid="uid://dk8cb0qbpag2d"] + +[resource] +border_width_left = 2 +border_width_top = 2 +border_width_right = 2 +border_width_bottom = 2 +border_color = Color(0.403922, 0.396078, 0.396078, 1) +border_blend = true +expand_margin_left = 2.0 diff --git a/addons/madtalk/components/resources/NodeStyle.tres b/addons/madtalk/components/resources/NodeStyle.tres new file mode 100644 index 0000000..d64299f --- /dev/null +++ b/addons/madtalk/components/resources/NodeStyle.tres @@ -0,0 +1,16 @@ +[gd_resource type="StyleBoxFlat" format=3 uid="uid://dgwdu67tftiqs"] + +[resource] +content_margin_left = 8.0 +content_margin_top = 22.0 +content_margin_right = 8.0 +content_margin_bottom = 4.0 +bg_color = Color(0.186, 0.172, 0.2, 1) +border_width_left = 1 +border_width_top = 1 +border_width_right = 1 +border_width_bottom = 1 +border_color = Color(0.06, 0.06, 0.06, 1) +border_blend = true +corner_detail = 1 +shadow_size = 4 diff --git a/addons/madtalk/components/resources/PanelStyle.tres b/addons/madtalk/components/resources/PanelStyle.tres new file mode 100644 index 0000000..be38608 --- /dev/null +++ b/addons/madtalk/components/resources/PanelStyle.tres @@ -0,0 +1,10 @@ +[gd_resource type="StyleBoxFlat" format=2] + +[resource] +bg_color = Color( 0.1581, 0.1462, 0.17, 1 ) +border_width_left = 1 +border_width_top = 1 +border_width_right = 1 +border_width_bottom = 1 +border_color = Color( 0.06, 0.06, 0.06, 1 ) +border_blend = true diff --git a/addons/madtalk/components/resources/RichLabelPreviewAlphaStyle.tres b/addons/madtalk/components/resources/RichLabelPreviewAlphaStyle.tres new file mode 100644 index 0000000..ba7c125 --- /dev/null +++ b/addons/madtalk/components/resources/RichLabelPreviewAlphaStyle.tres @@ -0,0 +1,4 @@ +[gd_resource type="StyleBoxFlat" format=2] + +[resource] +bg_color = Color( 1, 1, 1, 0 ) diff --git a/addons/madtalk/components/resources/RichLabelPreviewStyle.tres b/addons/madtalk/components/resources/RichLabelPreviewStyle.tres new file mode 100644 index 0000000..510e1ac --- /dev/null +++ b/addons/madtalk/components/resources/RichLabelPreviewStyle.tres @@ -0,0 +1,4 @@ +[gd_resource type="StyleBoxFlat" format=2] + +[resource] +bg_color = Color( 0.733333, 0.733333, 0.733333, 1 ) diff --git a/addons/madtalk/components/resources/SheetItemStyle.tres b/addons/madtalk/components/resources/SheetItemStyle.tres new file mode 100644 index 0000000..43063cf --- /dev/null +++ b/addons/madtalk/components/resources/SheetItemStyle.tres @@ -0,0 +1,14 @@ +[gd_resource type="StyleBoxFlat" format=2] + +[resource] +content_margin_left = 0.0 +content_margin_right = 0.0 +content_margin_top = 0.0 +content_margin_bottom = 0.0 +bg_color = Color( 0.22432, 0.2064, 0.24, 1 ) +border_width_left = 2 +border_width_top = 2 +border_width_right = 2 +border_width_bottom = 2 +border_color = Color( 0.109804, 0.109804, 0.109804, 1 ) +border_blend = true diff --git a/addons/madtalk/fonts/FreeSans.tres b/addons/madtalk/fonts/FreeSans.tres new file mode 100644 index 0000000..405f7ac --- /dev/null +++ b/addons/madtalk/fonts/FreeSans.tres @@ -0,0 +1,10 @@ +[gd_resource type="FontFile" load_steps=2 format=2] + +[ext_resource path="res://addons/madtalk/fonts/FreeSans.ttf" type="FontFile" id=1] + +[resource] +use_mipmaps = true +use_filter = true +extra_spacing_top = -4 +extra_spacing_bottom = -4 +font_data = ExtResource( 1 ) diff --git a/addons/madtalk/fonts/FreeSans.ttf b/addons/madtalk/fonts/FreeSans.ttf new file mode 100644 index 0000000000000000000000000000000000000000..6de62ebf6718daed7c4eacc2ce45b9db67673b68 GIT binary patch literal 264072 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 Mb9-ZLZEcSIAA)mzIsgCw literal 0 HcmV?d00001 diff --git a/addons/madtalk/fonts/FreeSans.ttf.import b/addons/madtalk/fonts/FreeSans.ttf.import new file mode 100644 index 0000000..b10d078 --- /dev/null +++ b/addons/madtalk/fonts/FreeSans.ttf.import @@ -0,0 +1,35 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://cgfeudab78x0q" +path="res://.godot/imported/FreeSans.ttf-c49e2aab0150370181d9b2212b6b9e07.fontdata" + +[deps] + +source_file="res://addons/madtalk/fonts/FreeSans.ttf" +dest_files=["res://.godot/imported/FreeSans.ttf-c49e2aab0150370181d9b2212b6b9e07.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +disable_embedded_bitmaps=true +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=1 +keep_rounding_remainders=true +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/addons/madtalk/fonts/FreeSansBold.ttf b/addons/madtalk/fonts/FreeSansBold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..63644e74379b317b135db990d90cc67663491d9e GIT binary patch literal 359272 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 X%iw*2*OkhY;QPW#> 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
    0QqvO=zVu!8p^?{k0LHPuUoe4|se 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
  1. xVbv`nQ|cCvp9_as9nt!1YI)*F$*D2aW3mdH#2s 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 T_Ug?uZ~b6x_+0SV-6#Gh*BSo@ literal 0 HcmV?d00001 diff --git a/addons/madtalk/fonts/FreeSansOblique.ttf.import b/addons/madtalk/fonts/FreeSansOblique.ttf.import new file mode 100644 index 0000000..8c50707 --- /dev/null +++ b/addons/madtalk/fonts/FreeSansOblique.ttf.import @@ -0,0 +1,35 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://y87jh0omiuc5" +path="res://.godot/imported/FreeSansOblique.ttf-40e0fc72ee72e97c509c8879774b586c.fontdata" + +[deps] + +source_file="res://addons/madtalk/fonts/FreeSansOblique.ttf" +dest_files=["res://.godot/imported/FreeSansOblique.ttf-40e0fc72ee72e97c509c8879774b586c.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +disable_embedded_bitmaps=true +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=1 +keep_rounding_remainders=true +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/addons/madtalk/fonts/FreeSans_bold_small.tres b/addons/madtalk/fonts/FreeSans_bold_small.tres new file mode 100644 index 0000000..b8a3cde --- /dev/null +++ b/addons/madtalk/fonts/FreeSans_bold_small.tres @@ -0,0 +1,11 @@ +[gd_resource type="FontFile" load_steps=2 format=2] + +[ext_resource path="res://addons/madtalk/fonts/FreeSansBold.ttf" type="FontFile" id=1] + +[resource] +size = 12 +use_mipmaps = true +use_filter = true +extra_spacing_top = -4 +extra_spacing_bottom = -4 +font_data = ExtResource( 1 ) diff --git a/addons/madtalk/fonts/FreeSans_bolditalic_small.tres b/addons/madtalk/fonts/FreeSans_bolditalic_small.tres new file mode 100644 index 0000000..fa31e9d --- /dev/null +++ b/addons/madtalk/fonts/FreeSans_bolditalic_small.tres @@ -0,0 +1,11 @@ +[gd_resource type="FontFile" load_steps=2 format=2] + +[ext_resource path="res://addons/madtalk/fonts/FreeSansBoldOblique.ttf" type="FontFile" id=1] + +[resource] +size = 12 +use_mipmaps = true +use_filter = true +extra_spacing_top = -4 +extra_spacing_bottom = -4 +font_data = ExtResource( 1 ) diff --git a/addons/madtalk/fonts/FreeSans_italic_small.tres b/addons/madtalk/fonts/FreeSans_italic_small.tres new file mode 100644 index 0000000..74494ee --- /dev/null +++ b/addons/madtalk/fonts/FreeSans_italic_small.tres @@ -0,0 +1,11 @@ +[gd_resource type="FontFile" load_steps=2 format=2] + +[ext_resource path="res://addons/madtalk/fonts/FreeSansOblique.ttf" type="FontFile" id=1] + +[resource] +size = 12 +use_mipmaps = true +use_filter = true +extra_spacing_top = -4 +extra_spacing_bottom = -4 +font_data = ExtResource( 1 ) diff --git a/addons/madtalk/fonts/FreeSans_smal.tres b/addons/madtalk/fonts/FreeSans_smal.tres new file mode 100644 index 0000000..c357bc3 --- /dev/null +++ b/addons/madtalk/fonts/FreeSans_smal.tres @@ -0,0 +1,56 @@ +[gd_resource type="FontFile" load_steps=2 format=3 uid="uid://b38okvijpcxmv"] + +[ext_resource type="FontFile" uid="uid://cgfeudab78x0q" path="res://addons/madtalk/fonts/FreeSans.ttf" id="1"] + +[resource] +fallbacks = Array[Font]([ExtResource("1")]) +cache/0/12/0/ascent = 0.0 +cache/0/12/0/descent = 0.0 +cache/0/12/0/underline_position = 0.0 +cache/0/12/0/underline_thickness = 0.0 +cache/0/12/0/scale = 1.0 +cache/0/12/0/kerning_overrides/12/0 = Vector2(0, 0) +cache/0/12/0/kerning_overrides/10/0 = Vector2(0, 0) +cache/0/12/0/kerning_overrides/14/0 = Vector2(0, 0) +cache/0/12/0/kerning_overrides/16/0 = Vector2(0, 0) +cache/0/12/0/kerning_overrides/50/0 = Vector2(0, 0) +cache/0/10/0/ascent = 0.0 +cache/0/10/0/descent = 0.0 +cache/0/10/0/underline_position = 0.0 +cache/0/10/0/underline_thickness = 0.0 +cache/0/10/0/scale = 1.0 +cache/0/10/0/kerning_overrides/12/0 = Vector2(0, 0) +cache/0/10/0/kerning_overrides/10/0 = Vector2(0, 0) +cache/0/10/0/kerning_overrides/14/0 = Vector2(0, 0) +cache/0/10/0/kerning_overrides/16/0 = Vector2(0, 0) +cache/0/10/0/kerning_overrides/50/0 = Vector2(0, 0) +cache/0/14/0/ascent = 0.0 +cache/0/14/0/descent = 0.0 +cache/0/14/0/underline_position = 0.0 +cache/0/14/0/underline_thickness = 0.0 +cache/0/14/0/scale = 1.0 +cache/0/14/0/kerning_overrides/12/0 = Vector2(0, 0) +cache/0/14/0/kerning_overrides/10/0 = Vector2(0, 0) +cache/0/14/0/kerning_overrides/14/0 = Vector2(0, 0) +cache/0/14/0/kerning_overrides/16/0 = Vector2(0, 0) +cache/0/14/0/kerning_overrides/50/0 = Vector2(0, 0) +cache/0/16/0/ascent = 0.0 +cache/0/16/0/descent = 0.0 +cache/0/16/0/underline_position = 0.0 +cache/0/16/0/underline_thickness = 0.0 +cache/0/16/0/scale = 1.0 +cache/0/16/0/kerning_overrides/12/0 = Vector2(0, 0) +cache/0/16/0/kerning_overrides/10/0 = Vector2(0, 0) +cache/0/16/0/kerning_overrides/14/0 = Vector2(0, 0) +cache/0/16/0/kerning_overrides/16/0 = Vector2(0, 0) +cache/0/16/0/kerning_overrides/50/0 = Vector2(0, 0) +cache/0/50/0/ascent = 0.0 +cache/0/50/0/descent = 0.0 +cache/0/50/0/underline_position = 0.0 +cache/0/50/0/underline_thickness = 0.0 +cache/0/50/0/scale = 1.0 +cache/0/50/0/kerning_overrides/12/0 = Vector2(0, 0) +cache/0/50/0/kerning_overrides/10/0 = Vector2(0, 0) +cache/0/50/0/kerning_overrides/14/0 = Vector2(0, 0) +cache/0/50/0/kerning_overrides/16/0 = Vector2(0, 0) +cache/0/50/0/kerning_overrides/50/0 = Vector2(0, 0) diff --git a/addons/madtalk/fonts/FreeSans_tiny.tres b/addons/madtalk/fonts/FreeSans_tiny.tres new file mode 100644 index 0000000..78cf81f --- /dev/null +++ b/addons/madtalk/fonts/FreeSans_tiny.tres @@ -0,0 +1,210 @@ +[gd_resource type="FontFile" load_steps=2 format=3 uid="uid://bhcws34lw0ak5"] + +[ext_resource type="FontFile" uid="uid://cgfeudab78x0q" path="res://addons/madtalk/fonts/FreeSans.ttf" id="1"] + +[resource] +fallbacks = Array[Font]([ExtResource("1")]) +cache/0/10/0/ascent = 0.0 +cache/0/10/0/descent = 0.0 +cache/0/10/0/underline_position = 0.0 +cache/0/10/0/underline_thickness = 0.0 +cache/0/10/0/scale = 1.0 +cache/0/10/0/kerning_overrides/10/0 = Vector2(0, 0) +cache/0/10/0/kerning_overrides/16/0 = Vector2(0, 0) +cache/0/10/0/kerning_overrides/50/0 = Vector2(0, 0) +cache/0/10/0/kerning_overrides/2/0 = Vector2(0, 0) +cache/0/10/0/kerning_overrides/3/0 = Vector2(0, 0) +cache/0/10/0/kerning_overrides/4/0 = Vector2(0, 0) +cache/0/10/0/kerning_overrides/5/0 = Vector2(0, 0) +cache/0/10/0/kerning_overrides/6/0 = Vector2(0, 0) +cache/0/10/0/kerning_overrides/7/0 = Vector2(0, 0) +cache/0/10/0/kerning_overrides/8/0 = Vector2(0, 0) +cache/0/10/0/kerning_overrides/12/0 = Vector2(0, 0) +cache/0/10/0/kerning_overrides/9/0 = Vector2(0, 0) +cache/0/16/0/ascent = 0.0 +cache/0/16/0/descent = 0.0 +cache/0/16/0/underline_position = 0.0 +cache/0/16/0/underline_thickness = 0.0 +cache/0/16/0/scale = 1.0 +cache/0/16/0/kerning_overrides/10/0 = Vector2(0, 0) +cache/0/16/0/kerning_overrides/16/0 = Vector2(0, 0) +cache/0/16/0/kerning_overrides/50/0 = Vector2(0, 0) +cache/0/16/0/kerning_overrides/2/0 = Vector2(0, 0) +cache/0/16/0/kerning_overrides/3/0 = Vector2(0, 0) +cache/0/16/0/kerning_overrides/4/0 = Vector2(0, 0) +cache/0/16/0/kerning_overrides/5/0 = Vector2(0, 0) +cache/0/16/0/kerning_overrides/6/0 = Vector2(0, 0) +cache/0/16/0/kerning_overrides/7/0 = Vector2(0, 0) +cache/0/16/0/kerning_overrides/8/0 = Vector2(0, 0) +cache/0/16/0/kerning_overrides/12/0 = Vector2(0, 0) +cache/0/16/0/kerning_overrides/9/0 = Vector2(0, 0) +cache/0/50/0/ascent = 0.0 +cache/0/50/0/descent = 0.0 +cache/0/50/0/underline_position = 0.0 +cache/0/50/0/underline_thickness = 0.0 +cache/0/50/0/scale = 1.0 +cache/0/50/0/kerning_overrides/10/0 = Vector2(0, 0) +cache/0/50/0/kerning_overrides/16/0 = Vector2(0, 0) +cache/0/50/0/kerning_overrides/50/0 = Vector2(0, 0) +cache/0/50/0/kerning_overrides/2/0 = Vector2(0, 0) +cache/0/50/0/kerning_overrides/3/0 = Vector2(0, 0) +cache/0/50/0/kerning_overrides/4/0 = Vector2(0, 0) +cache/0/50/0/kerning_overrides/5/0 = Vector2(0, 0) +cache/0/50/0/kerning_overrides/6/0 = Vector2(0, 0) +cache/0/50/0/kerning_overrides/7/0 = Vector2(0, 0) +cache/0/50/0/kerning_overrides/8/0 = Vector2(0, 0) +cache/0/50/0/kerning_overrides/12/0 = Vector2(0, 0) +cache/0/50/0/kerning_overrides/9/0 = Vector2(0, 0) +cache/0/2/0/ascent = 0.0 +cache/0/2/0/descent = 0.0 +cache/0/2/0/underline_position = 0.0 +cache/0/2/0/underline_thickness = 0.0 +cache/0/2/0/scale = 1.0 +cache/0/2/0/kerning_overrides/10/0 = Vector2(0, 0) +cache/0/2/0/kerning_overrides/16/0 = Vector2(0, 0) +cache/0/2/0/kerning_overrides/50/0 = Vector2(0, 0) +cache/0/2/0/kerning_overrides/2/0 = Vector2(0, 0) +cache/0/2/0/kerning_overrides/3/0 = Vector2(0, 0) +cache/0/2/0/kerning_overrides/4/0 = Vector2(0, 0) +cache/0/2/0/kerning_overrides/5/0 = Vector2(0, 0) +cache/0/2/0/kerning_overrides/6/0 = Vector2(0, 0) +cache/0/2/0/kerning_overrides/7/0 = Vector2(0, 0) +cache/0/2/0/kerning_overrides/8/0 = Vector2(0, 0) +cache/0/2/0/kerning_overrides/12/0 = Vector2(0, 0) +cache/0/2/0/kerning_overrides/9/0 = Vector2(0, 0) +cache/0/3/0/ascent = 0.0 +cache/0/3/0/descent = 0.0 +cache/0/3/0/underline_position = 0.0 +cache/0/3/0/underline_thickness = 0.0 +cache/0/3/0/scale = 1.0 +cache/0/3/0/kerning_overrides/10/0 = Vector2(0, 0) +cache/0/3/0/kerning_overrides/16/0 = Vector2(0, 0) +cache/0/3/0/kerning_overrides/50/0 = Vector2(0, 0) +cache/0/3/0/kerning_overrides/2/0 = Vector2(0, 0) +cache/0/3/0/kerning_overrides/3/0 = Vector2(0, 0) +cache/0/3/0/kerning_overrides/4/0 = Vector2(0, 0) +cache/0/3/0/kerning_overrides/5/0 = Vector2(0, 0) +cache/0/3/0/kerning_overrides/6/0 = Vector2(0, 0) +cache/0/3/0/kerning_overrides/7/0 = Vector2(0, 0) +cache/0/3/0/kerning_overrides/8/0 = Vector2(0, 0) +cache/0/3/0/kerning_overrides/12/0 = Vector2(0, 0) +cache/0/3/0/kerning_overrides/9/0 = Vector2(0, 0) +cache/0/4/0/ascent = 0.0 +cache/0/4/0/descent = 0.0 +cache/0/4/0/underline_position = 0.0 +cache/0/4/0/underline_thickness = 0.0 +cache/0/4/0/scale = 1.0 +cache/0/4/0/kerning_overrides/10/0 = Vector2(0, 0) +cache/0/4/0/kerning_overrides/16/0 = Vector2(0, 0) +cache/0/4/0/kerning_overrides/50/0 = Vector2(0, 0) +cache/0/4/0/kerning_overrides/2/0 = Vector2(0, 0) +cache/0/4/0/kerning_overrides/3/0 = Vector2(0, 0) +cache/0/4/0/kerning_overrides/4/0 = Vector2(0, 0) +cache/0/4/0/kerning_overrides/5/0 = Vector2(0, 0) +cache/0/4/0/kerning_overrides/6/0 = Vector2(0, 0) +cache/0/4/0/kerning_overrides/7/0 = Vector2(0, 0) +cache/0/4/0/kerning_overrides/8/0 = Vector2(0, 0) +cache/0/4/0/kerning_overrides/12/0 = Vector2(0, 0) +cache/0/4/0/kerning_overrides/9/0 = Vector2(0, 0) +cache/0/5/0/ascent = 0.0 +cache/0/5/0/descent = 0.0 +cache/0/5/0/underline_position = 0.0 +cache/0/5/0/underline_thickness = 0.0 +cache/0/5/0/scale = 1.0 +cache/0/5/0/kerning_overrides/10/0 = Vector2(0, 0) +cache/0/5/0/kerning_overrides/16/0 = Vector2(0, 0) +cache/0/5/0/kerning_overrides/50/0 = Vector2(0, 0) +cache/0/5/0/kerning_overrides/2/0 = Vector2(0, 0) +cache/0/5/0/kerning_overrides/3/0 = Vector2(0, 0) +cache/0/5/0/kerning_overrides/4/0 = Vector2(0, 0) +cache/0/5/0/kerning_overrides/5/0 = Vector2(0, 0) +cache/0/5/0/kerning_overrides/6/0 = Vector2(0, 0) +cache/0/5/0/kerning_overrides/7/0 = Vector2(0, 0) +cache/0/5/0/kerning_overrides/8/0 = Vector2(0, 0) +cache/0/5/0/kerning_overrides/12/0 = Vector2(0, 0) +cache/0/5/0/kerning_overrides/9/0 = Vector2(0, 0) +cache/0/6/0/ascent = 0.0 +cache/0/6/0/descent = 0.0 +cache/0/6/0/underline_position = 0.0 +cache/0/6/0/underline_thickness = 0.0 +cache/0/6/0/scale = 1.0 +cache/0/6/0/kerning_overrides/10/0 = Vector2(0, 0) +cache/0/6/0/kerning_overrides/16/0 = Vector2(0, 0) +cache/0/6/0/kerning_overrides/50/0 = Vector2(0, 0) +cache/0/6/0/kerning_overrides/2/0 = Vector2(0, 0) +cache/0/6/0/kerning_overrides/3/0 = Vector2(0, 0) +cache/0/6/0/kerning_overrides/4/0 = Vector2(0, 0) +cache/0/6/0/kerning_overrides/5/0 = Vector2(0, 0) +cache/0/6/0/kerning_overrides/6/0 = Vector2(0, 0) +cache/0/6/0/kerning_overrides/7/0 = Vector2(0, 0) +cache/0/6/0/kerning_overrides/8/0 = Vector2(0, 0) +cache/0/6/0/kerning_overrides/12/0 = Vector2(0, 0) +cache/0/6/0/kerning_overrides/9/0 = Vector2(0, 0) +cache/0/7/0/ascent = 0.0 +cache/0/7/0/descent = 0.0 +cache/0/7/0/underline_position = 0.0 +cache/0/7/0/underline_thickness = 0.0 +cache/0/7/0/scale = 1.0 +cache/0/7/0/kerning_overrides/10/0 = Vector2(0, 0) +cache/0/7/0/kerning_overrides/16/0 = Vector2(0, 0) +cache/0/7/0/kerning_overrides/50/0 = Vector2(0, 0) +cache/0/7/0/kerning_overrides/2/0 = Vector2(0, 0) +cache/0/7/0/kerning_overrides/3/0 = Vector2(0, 0) +cache/0/7/0/kerning_overrides/4/0 = Vector2(0, 0) +cache/0/7/0/kerning_overrides/5/0 = Vector2(0, 0) +cache/0/7/0/kerning_overrides/6/0 = Vector2(0, 0) +cache/0/7/0/kerning_overrides/7/0 = Vector2(0, 0) +cache/0/7/0/kerning_overrides/8/0 = Vector2(0, 0) +cache/0/7/0/kerning_overrides/12/0 = Vector2(0, 0) +cache/0/7/0/kerning_overrides/9/0 = Vector2(0, 0) +cache/0/8/0/ascent = 0.0 +cache/0/8/0/descent = 0.0 +cache/0/8/0/underline_position = 0.0 +cache/0/8/0/underline_thickness = 0.0 +cache/0/8/0/scale = 1.0 +cache/0/8/0/kerning_overrides/10/0 = Vector2(0, 0) +cache/0/8/0/kerning_overrides/16/0 = Vector2(0, 0) +cache/0/8/0/kerning_overrides/50/0 = Vector2(0, 0) +cache/0/8/0/kerning_overrides/2/0 = Vector2(0, 0) +cache/0/8/0/kerning_overrides/3/0 = Vector2(0, 0) +cache/0/8/0/kerning_overrides/4/0 = Vector2(0, 0) +cache/0/8/0/kerning_overrides/5/0 = Vector2(0, 0) +cache/0/8/0/kerning_overrides/6/0 = Vector2(0, 0) +cache/0/8/0/kerning_overrides/7/0 = Vector2(0, 0) +cache/0/8/0/kerning_overrides/8/0 = Vector2(0, 0) +cache/0/8/0/kerning_overrides/12/0 = Vector2(0, 0) +cache/0/8/0/kerning_overrides/9/0 = Vector2(0, 0) +cache/0/12/0/ascent = 0.0 +cache/0/12/0/descent = 0.0 +cache/0/12/0/underline_position = 0.0 +cache/0/12/0/underline_thickness = 0.0 +cache/0/12/0/scale = 1.0 +cache/0/12/0/kerning_overrides/10/0 = Vector2(0, 0) +cache/0/12/0/kerning_overrides/16/0 = Vector2(0, 0) +cache/0/12/0/kerning_overrides/50/0 = Vector2(0, 0) +cache/0/12/0/kerning_overrides/2/0 = Vector2(0, 0) +cache/0/12/0/kerning_overrides/3/0 = Vector2(0, 0) +cache/0/12/0/kerning_overrides/4/0 = Vector2(0, 0) +cache/0/12/0/kerning_overrides/5/0 = Vector2(0, 0) +cache/0/12/0/kerning_overrides/6/0 = Vector2(0, 0) +cache/0/12/0/kerning_overrides/7/0 = Vector2(0, 0) +cache/0/12/0/kerning_overrides/8/0 = Vector2(0, 0) +cache/0/12/0/kerning_overrides/12/0 = Vector2(0, 0) +cache/0/12/0/kerning_overrides/9/0 = Vector2(0, 0) +cache/0/9/0/ascent = 0.0 +cache/0/9/0/descent = 0.0 +cache/0/9/0/underline_position = 0.0 +cache/0/9/0/underline_thickness = 0.0 +cache/0/9/0/scale = 1.0 +cache/0/9/0/kerning_overrides/10/0 = Vector2(0, 0) +cache/0/9/0/kerning_overrides/16/0 = Vector2(0, 0) +cache/0/9/0/kerning_overrides/50/0 = Vector2(0, 0) +cache/0/9/0/kerning_overrides/2/0 = Vector2(0, 0) +cache/0/9/0/kerning_overrides/3/0 = Vector2(0, 0) +cache/0/9/0/kerning_overrides/4/0 = Vector2(0, 0) +cache/0/9/0/kerning_overrides/5/0 = Vector2(0, 0) +cache/0/9/0/kerning_overrides/6/0 = Vector2(0, 0) +cache/0/9/0/kerning_overrides/7/0 = Vector2(0, 0) +cache/0/9/0/kerning_overrides/8/0 = Vector2(0, 0) +cache/0/9/0/kerning_overrides/12/0 = Vector2(0, 0) +cache/0/9/0/kerning_overrides/9/0 = Vector2(0, 0) diff --git a/addons/madtalk/fonts/MessagePreview.tres b/addons/madtalk/fonts/MessagePreview.tres new file mode 100644 index 0000000..43a59c9 --- /dev/null +++ b/addons/madtalk/fonts/MessagePreview.tres @@ -0,0 +1,8 @@ +[gd_resource type="FontVariation" load_steps=2 format=3 uid="uid://18mk4r2e01la"] + +[ext_resource type="FontFile" uid="uid://cgfeudab78x0q" path="res://addons/madtalk/fonts/FreeSans.ttf" id="1_edbbt"] + +[resource] +base_font = ExtResource("1_edbbt") +spacing_top = -2 +spacing_bottom = -2 diff --git a/addons/madtalk/fonts/droid-sans-mono.LICENSE.txt b/addons/madtalk/fonts/droid-sans-mono.LICENSE.txt new file mode 100644 index 0000000..7a4a3ea --- /dev/null +++ b/addons/madtalk/fonts/droid-sans-mono.LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/addons/madtalk/fonts/droid-sans-mono.regular.ttf b/addons/madtalk/fonts/droid-sans-mono.regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d604425b26f52cc6415ccaa028d4b420f8043447 GIT binary patch literal 117072 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

    Up~WYpX2pC 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 g%X630U!_s z0X(0EKa#|tcXIe&1L4>D5;!KM{r?{W%zPp$fac|TtaBI?bsCk@B!Z#wL}tPnOm=sL iXk}a7KN@!LFvzQrcwnUL6DJ=>WDYCa%5(y=; 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 QSQS8)X8TO@jE_YA4~6lFB>(^b literal 0 HcmV?d00001 diff --git a/addons/madtalk/images/header_condition_arrow.png.import b/addons/madtalk/images/header_condition_arrow.png.import new file mode 100644 index 0000000..4a565d5 --- /dev/null +++ b/addons/madtalk/images/header_condition_arrow.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b37ib00lc25o1" +path="res://.godot/imported/header_condition_arrow.png-c7d08d0077869593e902bba7892b61ba.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/madtalk/images/header_condition_arrow.png" +dest_files=["res://.godot/imported/header_condition_arrow.png-c7d08d0077869593e902bba7892b61ba.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/addons/madtalk/images/header_effect.png b/addons/madtalk/images/header_effect.png new file mode 100644 index 0000000000000000000000000000000000000000..503b0c342e70536620b0e76975f5fc8c679ac7e0 GIT binary patch literal 1935 zcmV;A2XOd_P)EX>4Tx04R}tkv&MmKpe$iQ?-7yIM_kNAwzYtAS&W0RV;#q(pG5I!Q|2pp-DrM z;^HW{799LotU9+0Yt2!bCVPL58BE>hzEl0u6Z503ls?%w0>9U#=pOf@^k0ade% zR6HhTb1P!t6+v_%gg*30%+wR%`NW zmd<&fILu0tLVQjlA>%qQu! zmKHez`nQ3L>y{?(0hc?#;FB&Hk|X(P3WWmjen#Jv0|st^-c`4^<~~jzfDCoDbORh5 z0;5IBUh{Z&cYAODo@w^?0}17FeH@>h6aWAK24YJ`L;wH)0002_L%V+f000SaNLh0L z01FcU01FcV0GgZ_00007bV*G`2jmO}4j3(Lz^Kmv00oOlL_t(|+U=WdY*XhI$A8BO zF^S_OPGUE9up81slVy1^FM$}EKtvg9)iNnlHH}e;t=fyW1x@RRX_~^OY3-*<1&yI< zY^-RlI~?MC<>kZ4Wb#oFsaMr`z?(n|kbT|% z$HU?9ZWD(8pR)hs`D!>E-gaG5l-+@?30P*^_U>>voDvZQj-^tm2W{K_hTHAl76=5c znh<=p5+KL2tmgn`XJ>zQhqe%qibNtwgW0(!z@6CAKy5mm4uwLYv_b8#6Tszi{l>QK zPvh%`cSE62cQTnQ$z(EHEX&FfkvA7CSa8%J|BMxZFP1?3jc7y-Q ztG|6PW81FHUw!(VVd*GkfYFZy_w z-IBYGj&3?SdJR|S>f-}lUHwZ|ttz@{@zB)dmBPa1QdG1=VzEMl^6p81Eb8josIHFP zEdE+s`;7YiqJBTr);{C9ZmMYH+%^!|xG|`aNI-0RsluUa3$3kwB9X5U46dQ5sF^^Z zl!Ah}i>0aQC%SOqces4Hi=m+|1_xiIvvb7YbzlNeUcQQ85WR9`#SM11d#QLlPilVt z5`4Zq$;(5tvgX!ubD_AngiK}w9!~(bI}RK)cpWeY0FZU-atQ{PY9z9f2Oju7(P)HJ zD#P1vzep-|L@cXYUVnYW2BonvpGAw7QCYc7YHHR1=sWMcA&JCKiN{asi4&6stAi3i z9)J9YT3`Qjs;Y7+D}&-<@OWTm2HtxQMn_>_0N#4*pVHs|MLlt13P9Gcuh1u+7(fJh z?X^XEA)*M4;*-2KKS5|diiprghGvk!&|hbri2R@ps#PAjEo%D{{9~J?d#RK zK638fPb3Dpbm=@ISqu!s4a&Pk?d?y|*{ST>b?g)OZr!?9wr+jJK)aiYK+Ecq3m4F_ zv435&wY3!yjczA5cUboB{jr`pH47l;&+h}WSi81F3JSih`}hCCAa!~hc=BXgSFXHB zGT93tZEa=x@WY3wsfm)4gU*{bpZ4~40Nua;fK*k9tXR>e#l@QdlK@U11ZgTY!|BtV zoIU%7Y}~kj)vJ$FR~HqZ4-tV(=FuDWpE;xI_bXJa9!60>(vOcyqT(-(*_Sii)Sz=Mz!=9F>)0`2ADF;}Zt2Lk2-N=&{F2X>LBw zk|m$V=bM`cBoa2=-A}P&$IHZG#d81sf6>ayM((?BK0Y6Ky^x&^Q&Y&q1bXqJN-8x> zJl>&)5C7U=cE|}J8#ee@z4|B(4fRq~gv`vqz<|=zvxV*3fB#{ZFikM{S6r@MW@pdK z^t4Cv^2#JT8&at&3=RE>k&)jqH1xcr(}zi?GX}E*P5^o25f8E0-!vMHQCf=FHaa*6 zy}e)Og%|eR)XTHao+T7oOjp;}*t6$lgVkY0psZb+Lp1tlUA#CZ9uG`UqwzTO^nCLZ zgAd5$(HT5+c0%j0_ehpUr@LEOV~DykHf@-(%1I`-M#x)w|tLSR+mmruCc+y-)TjlghEq@ zY(gYo#>ZzlckX+<^wQ2x<>lRXNAY_9fn`k@qz)_srMbCAz1|-IdpUT}e7tcF>ECj( VI^Z-S_TvBm002ovPDHLkV1h{zw;2Ec literal 0 HcmV?d00001 diff --git a/addons/madtalk/images/header_effect.png.import b/addons/madtalk/images/header_effect.png.import new file mode 100644 index 0000000..601b072 --- /dev/null +++ b/addons/madtalk/images/header_effect.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cg463wmvppw0u" +path="res://.godot/imported/header_effect.png-4446a106cef88170e7e17dcc935d9664.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/madtalk/images/header_effect.png" +dest_files=["res://.godot/imported/header_effect.png-4446a106cef88170e7e17dcc935d9664.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/addons/madtalk/images/header_option.png b/addons/madtalk/images/header_option.png new file mode 100644 index 0000000000000000000000000000000000000000..adeedba1d9f23a2a3c8d3f0b487097b50e255869 GIT binary patch literal 1371 zcmV-h1*H0kP)-U2O$ClJu(0Q1n5ab zK~#9!?OWYzBUKdtojYIKoz`tw(^5)4NGi4LL&c3+)O~Ofggy#J>)ZOWe}Et;2z?P$ z)OX)xpA=sfVfD$62el}|%GQ1v8k%IgbW>_sHJNsD=UyM0$xg>fnup>}@E#auGLxK# z^ZT81e&@~&pzMEb6#THbxJU~N3!}QOi+nzR4*-^ymh{ol(IFv(Tv=Ihip8Q=DwS-` zIrD#aczD>dZCi5AO#o;#8V7|!q1DUZ^73-CSS)(wa(Q@techR#pZ63T50C(*QpvI` z>k5Db5fOl$&CShg*=+U#W9(%B_W;-cZV=I9QpzL|*#Q0&Lfj&v27u=Pw4{{RUDqvj z^QURrD?*5$GMUWvYPI^d5aP3JHv7AR1% zdFgceJpjJ|D5O%Uj{$tz&h`&8naquJI{h7hZ7JoinM~%lUjC$%hm5g{<#IWzAb7B* zcS-@#c>ue!v$HJ#ty->fuAl_hVk9l*bOw^T0WW<2bna`87bw@}*Z_QzVFwNdSKV_~YvIm;?Yy zrBdI|&CNYCGc$u^G6};lP9%U3qI32SDJ5F1797XH_VzY5Ha4)jy87+T&dy~O_ZUwB zLqkJjmStgLVge&0Bavl3oaz4I1MgoSwE_vtvY_iaOw*iHA&xl#bX^}d3c0Lhe48VKM~o1%dYg54Ho}A7ji=A&xl# z*pYR5eGv38_(9;qLk{h+B3$9y5kUy2Qiy>Rc3Y7J3<``1L|`y&26aNjb5#N2-U5OjqQqUlr9Y?v?ynK40x$>_;Kb73&luRPawr>s3eYRtqeNi0 zi6FQr426B zar_Bz;P2$oG!2~dzAAuEj4%OQ*9GU?-y6_SA&xl#9LKrSY&LVXS`C(EbpY-4f~Z$z z@H`KVMgs>22XI~YwhD2~3D9gdzp7L!&o-OQ&VE3~qW`SZYg1@&f^ZxM^?Dtg^RHEi zV@?3WFy5`zYF52ozigW3BxCFhW6T7=7-O0bbZ}dE@Vb2#?Q!x@2+?$1_b%uBOUBsy dD#Y=&e*nq-gxEx34Ke@#002ovPDHLkV1iU^YXJZN literal 0 HcmV?d00001 diff --git a/addons/madtalk/images/header_option.png.import b/addons/madtalk/images/header_option.png.import new file mode 100644 index 0000000..d74ac67 --- /dev/null +++ b/addons/madtalk/images/header_option.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://3tpmqrmfqg6t" +path="res://.godot/imported/header_option.png-1908ebaa4ee93a30de8413c8f997a012.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/madtalk/images/header_option.png" +dest_files=["res://.godot/imported/header_option.png-1908ebaa4ee93a30de8413c8f997a012.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/addons/madtalk/images/header_option_condition.png b/addons/madtalk/images/header_option_condition.png new file mode 100644 index 0000000000000000000000000000000000000000..839a6acf2e8b48d49503f5b86067f1d88eae0b6a GIT binary patch literal 1152 zcmXw2ZA_C_6u$3Uq?FbILMug(78D5-Rz(Nvm~_4^w4eyGSeX)>1C=?HVNoVp8D`_7 z8y{gv1)PfQVqA1g9iXj)42ofZpsc#0We6=$wWFZ)`(tl^c#`Kl$&>q>drr>1)fwq2 zE4_of0RSs`T=p)M32u0KqIq}8zBvG(ZwnA4gNGp0qT*u*3%<+;AhO|1!$;gcRZ(=GYXVC-0GUSu`&Pv*vro}5 zql+azp}7m~i9@#Mm#(G^wh|20{kONr)2BH;miu_c`7CsMqB{+YOm&{SHJ(0(mQi_dN*J>1)-EN8}}^2x%f>3h<_vR*BbVUVPKr{M}) zwp{`8OON8U<<7mA%ar;Xck9NnR3s-x4X~BHhZ}A^O`KFKC!h5kYH>J#L{Ti;I$^(q z?#1&!S_&IwG%SehEK0Z{ZuW5i@cwQ^W+*kz$R?G9kE+5Vo;{CBmsU-K)6m*xuRW&()KW`o5cIkAABeBHxoVXLRq z8oU=a)a7!4Wus{>Wc4cYlF=?}l&Sau(VLebv@Pi3!Q?LEqCRF=sXUj(ORcpny~H`~ zCSZ5CtQ~)j2@;}1ORaX-0J^ezvFnSK7&NCq<|l4&)};yUgtgz^Uui&l8R zo^hf0_kQmCH`B)p!}*+!%Ys5?uVej1v1u6p!XrM@pwgX$1kR1oat3oKSE z;Gh2fulXfw*ZM%892mBn=+j!=fYa#&5qb4LP_ir7N#$H&O9q3M8 z8r}}9@WjTz4x0sn(MjBfccA$D9(psY0Ff15l0>;q@+BgAqoY%=Ux;-=7(9s-@W2m;NuAZbl8Y7dyVu4tmN4!% zLLwq9(tefH*ZEdSB6!C7`K%-n@m^-D$*3ECHhV@qx^Oy@vC*Q_>A=_G4V7|T2l~VS N;BnH~H@EGt_#ani5w8FM literal 0 HcmV?d00001 diff --git a/addons/madtalk/images/header_option_condition.png.import b/addons/madtalk/images/header_option_condition.png.import new file mode 100644 index 0000000..505fa0f --- /dev/null +++ b/addons/madtalk/images/header_option_condition.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://7ohtlu4cvfph" +path="res://.godot/imported/header_option_condition.png-3af7842a983750776210b3c9bfdb37d0.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/madtalk/images/header_option_condition.png" +dest_files=["res://.godot/imported/header_option_condition.png-3af7842a983750776210b3c9bfdb37d0.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/addons/madtalk/images/icon_condition.png b/addons/madtalk/images/icon_condition.png new file mode 100644 index 0000000000000000000000000000000000000000..880048086c38c72c99476c14f6d159af810ce335 GIT binary patch literal 2456 zcmV;J31{|+P)EX>4Tx04R}tkv&MmKpe$iQ>7vm2Q!E`WT;LSL`4J_sbUc=bb^8^S!16O+6Uu^(0pQP8@ zTI2}m-v%zO+nTZmT zj20<--RIpsoxS~grq$mMhGBBA;K*jf00006VoOIv00000008+zyMF)x010qNS#tmY z3ljhU3ljkVnw%H_000McNlirueSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00(eML_t(Y$8}O`P?YBxJ@5PN1@;2$%Cf7=?s6wwOa(E) zTWm&=CT5b+Nt*-*E4I}!@ix_VVw|=bNUQ-nrq)_94z^>X)3LEhM$H)1S~O@z4F(Yr z77$ouVXv_4$L{xi@7o_O9qY6|&W~s2JkN8^^Bm%EI1q_Mpx5i6)oPJ!v4Ri+&KPdr zXcb%!g{&?F@zYu*AZ zexnA&WHKQqCkIZa6B>;Mf*|0;i4*FTnW`TxE-TsLw3)LF2`VT|29x6eW8eV56@({5 z^m)VXEA0af7l)-|ufO)1B+D{HQAB@#KT2M$25~qXC@(KZK|uj577O0nwmEO}OLIP+ zQJSQ9H~ZRT2r7m7!i{>ZgvgdJaT=w>g_$X-5!qz zU0q$cckdnqo6QE7%Z0+iLL7hRt@0gJ%Ptk=xU&6&_i^rOTjbEC!87?YWX&@LF7w=c z7kMhfinL@M`aC}G(JP+IJQhs1n-euzvr=ajm{qGk`tzA9#m_GC`2BtagFy&Zs})YC z6G!*fH58}R%65Yp1paN)uQ_0E?|z9`CZWp%c- zV&D0J!+kOQ@a^xK4;3$XVSYS3g2~Zdgae}xCxW0{0--7x^%`R`^V|Q@&sOw29JdzQ z)MXhqv(7}s`6sV-95+W|k^7P)h7ld> z!L4ua#SVVa_s-Ggfwgz<-ydX50;Lpovu@c;HC){>ymjiU!ShqG7|OC!%jP9x9U%m? zy}ezvsH|iMktgu?Z@MDwli1MI)TG!An4c&xA_a#K3Hfogm(_3Be`Ig9IJ^_;a`0t)dP!7P@Ta%;3mFeBKdnYHDg4 z;+&%=gwXK714P4qbdOAguZ3}la}EHon$_i+yf2P{>=e!%R4T{oEE({ zJ%tugtwv+zvV=%f8asaccx;+D?PMBzx4k)UdHK_|#hlR*gnGx&eug>16gl4cX8Mtcwqjp6HiL-CW{SoNz9 z>W3fa0RW*Y&OyLA2aQA~M>#l>bQ()dO^xPB_0zS*C=@F3C}c5=P|%O&Ui^M{ef`(d zJVjB!ImezodlC#fy@e@pM5dHc`fzOWt|CdWrzR%=DE)s9BuRlh>4z*!@P?*XuZ)9F zD(9SoP+Dp=8@2H%5f4MSOIwD}91Moww3?Bn#T!p5pRT|0@RkwJ0K(%_creDV?c2An z_wgT1qu5AZpJ~#=AD%>82+h>TaIMGV?N8L{u%gJgZsW#{vlQiD`F_0d%TY8Oyb}J! z@0thy@Yf;y_{k73#_(=!ZF*%%W(`qd=oy*l6@gYdd-iPkO6Pb(WPBXY6gUhEEwpjV zmMs*(e>njav`h0BKx zYv;giwIHBsQPzq=Bl&Ra)~$3}CFdMF%5=Z2T>8C(i|3U#tSu5gd3k#*QQ&m1yt<;ILgJi5FqurS zTCG^UW{v;QpU$?}w9!>gYf55iwk&b{Nl_Gtq6n|oi(oJaVzpW!NfNYLEi@VpD5ap3 z0s!1@w@L#nEJ;Cy)2t~n=(K4Jlut&bv4Mbi_fCj6$AD|u+1c{rv5m*$kYyQ!5d0HP W=UAv=`CB{y0000P- literal 0 HcmV?d00001 diff --git a/addons/madtalk/images/icon_condition.png.import b/addons/madtalk/images/icon_condition.png.import new file mode 100644 index 0000000..010b029 --- /dev/null +++ b/addons/madtalk/images/icon_condition.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://200bqpuqfn6m" +path="res://.godot/imported/icon_condition.png-7cb501efd58b5928a9e928cd3e0af86a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/madtalk/images/icon_condition.png" +dest_files=["res://.godot/imported/icon_condition.png-7cb501efd58b5928a9e928cd3e0af86a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/addons/madtalk/images/icon_down.png b/addons/madtalk/images/icon_down.png new file mode 100644 index 0000000000000000000000000000000000000000..f2ce95b3baa56f67f909afb94aa1b680879f1afe GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmPVw}gnS_>nj9N#WBR<^xjE^eTNK0T;>NZc_Ygq8WPiFt1_pFOKQaf zmXZq>b*~0FIv0txz?yj;f z<>LtwPvhnLb>Ktel;u*^^V?=zO%cla#C6qSbJts@AD!PmADPVJ^YN4#rQ3WgC+6-b#Xe>FMg{vd$@?2>{2wgTVj* literal 0 HcmV?d00001 diff --git a/addons/madtalk/images/icon_down.png.import b/addons/madtalk/images/icon_down.png.import new file mode 100644 index 0000000..97b6002 --- /dev/null +++ b/addons/madtalk/images/icon_down.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c4xg8811uuoq6" +path="res://.godot/imported/icon_down.png-52beb9b18ebff9a8363baa642571ea06.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/madtalk/images/icon_down.png" +dest_files=["res://.godot/imported/icon_down.png-52beb9b18ebff9a8363baa642571ea06.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/addons/madtalk/images/icon_edit.png b/addons/madtalk/images/icon_edit.png new file mode 100644 index 0000000000000000000000000000000000000000..f4a97f59f241c1cc6982060fe305c0702a51ea0b GIT binary patch literal 391 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkEhw7-DgH@8yMFE{-DYAK&kfDLX56I%|XGGuO#Sx2efH zviPRWKa#RF>vEdm+DI1x!!;+xFX;Y`TvxESquik4l#E1O`m-~M59TK^@Vx#S{e|nJ zhb^1iTcy2Dd!|3}v}M{h%XO7g4eysm*RKjEWo9sJUL~;lor)#vv@3U2^bc&&I`UX0 zyma5hCrlN;U-ItyU~y8lfc*@^Cw3b~yIa8$46|P)PMRHbXU?GjTgI@4=+d<;+w(W@ ztXcKjQ?9X2Jnz`9s`cltmVb4$W#87=djCNEX>4Tx04R}tkv&MmKpe$iQ>7vm2Q!E`WT;LSL`4J_sbUc=bb^8^S!16O+6Uu^(0pQP8@ zTI2}m-v%zO+nTZmT zj20<--RIpsoxS~grq$mMhGBBA;K*jf00006VoOIv00000008+zyMF)x010qNS#tmY z3ljhU3ljkVnw%H_000McNlirueSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00c=%L_t(Y$E}rrNYr;2$6wEBU3#A0nP=X$OpV&Pn?KIV z@-j`)))wVJ7=u>e7-M6bGS*;>u?zUHTz^axsf5tVJC*D5 zSC*P-q~5bX44EkYpgn&+pNHr9e&5gYdLDQRlfuGe3JYCx#e_ah0TL5S00BN+T!GY7 z1I^9B`SNRAT<&}yX_(cUoctwQwpiwrCo9V=QBfPkV#yGXCu%VTLP$+5COO$NSAI=N z*{?R6sLci`Dfwtsp*})2P;=@!EQ$%JlHhNZ#1qKlj#+Wh{(Wd4VUn6G$ds5 zEi4S8qn9%=u>+GS7NgM%oae~|AO!_s*zM~zK7KQ6*1U(?9Zw)I!PTo@69`-ozrR7w zo$C#Pl9?I7+O-=U&IgXm~5 znP6-T?%#*LK4@=;D_8!Owze0wzJ3Hiwr@|+-MiZnLC&06s~0Y`&DsM!d-jk#di0|X z4P}bMk;$r6CF*i5r@I?kS}LWtw^rNQ8mX*oQqZXp_4zuvcdrAH5Zc?l3x}t)bRRV} zN_qJo^Tw8yRY+Oc_lqOh@2`{YZnVGupDAB)u?4sL2w`D8Qc>}-Ub{99ARQf*KnQtx z%Ox`MEv>3LF#nidzI;bFZ@$az+f4vcTpXucw^rkFxmmgtU9w~urKP0+T2*ycoKBHV zn~F6$dJk}5UeGiU7^Atlh8s67Nm0==WM|isn(7v-6%m1niI=9ux3;RFH@=u^?k((B7^zHkNSY$ahbsY!tiwHw=a*#>YEkbkro_ z;c*fg3W2}_y1IU%xA$ARx(>;mJHN_*u9FFm=XZ6xJ;cNy!64e%2~AC}bNKLyIe9pE z@CFXYI_m0PfSFVor8UaZz$iZfbFHVtQ(PW^#U>UQ$kKUP?u}vna@9 zkUp2hl2isG10zFy19N>NO9ewqD`NvI6N84vNOzzb0g#%I%-mE40|P54GJJDb?GVT@ zV0()a!IFjt14Wg9g1jI>XP{V7A_IiV`2YSTP=XsI5uBWwm&yPppDM;q0}2a+goA*N zN-aWIqi1LouEeLqz`*p&)5S5wgSRwvZ=RH+KwN?$JIha&X*~f;rg%KC6M2_(QnRu_ zWQ)hk*d+= zn>&vtu`vfezj$k*WtPm7VCK^BMUq_%{fu5 z{d5wCLxn zKY#YLS^6xUm2D9m(smgzV!S=&PUy7aXh?mWB{eYU% zHVGESpmKkcPPd)|7g%=g@y_d$VcuK7u8>%I`spPfwaNS5EO0OEdSUtbZ`R(VjS<>Y zy~L%orT+82=ul5En|;@8_SyawuIwHHoqciZzk61RS05G-e%GLV$V_|csn-V+E(lE2 zZTT`$;kbfaV2kaZHM{)gs7eOP83${K^z6Bs&syW!bnJn|R*TjpYI0_K@`K8|H?O{` zH6c0jfpkl_O!D41XO%m$E?YE;Rp0%ph`h)g|4wz@l(kc(e}!-R5$u!oOLGB-5}Ok1 zSDRbMZDsn8rSd@Li|FlU4l>I6Nwp{&+S;g^FY+{%QuBy&k#|V;VZSkZ__cM_I<~M z`d@VD-TWWWVA$n2SG=-nU1i^DV0;>_^O_u?EN1&C^72Rd2y2z%BlBLb0A>;fPgg&e IbxsLQ04RmRNB{r; literal 0 HcmV?d00001 diff --git a/addons/madtalk/images/icon_message.png.import b/addons/madtalk/images/icon_message.png.import new file mode 100644 index 0000000..4e6e142 --- /dev/null +++ b/addons/madtalk/images/icon_message.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://u746x6ecjfx5" +path="res://.godot/imported/icon_message.png-ba374ea44de917b9d47f46b841e15161.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/madtalk/images/icon_message.png" +dest_files=["res://.godot/imported/icon_message.png-ba374ea44de917b9d47f46b841e15161.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/addons/madtalk/images/icon_opt_condition.png b/addons/madtalk/images/icon_opt_condition.png new file mode 100644 index 0000000000000000000000000000000000000000..90175c9347950d25b8b02c6e0e68a3150e5b4221 GIT binary patch literal 2574 zcmV+p3i0)cP) zaB^>EX>4U6ba`-PAZ2)IW&i+q+O1bBo3eY@cP(%2uM(c@lY?kQ zXFUavA}tyy?Y{X7PoqK%DklZ%RB6)KZKDQ=fd^-_%*}z_HK`z@aFa!DSPxCkpt*}8 z02)FhqNS8tp|nDB z#n%-ZYQ6Z9D_rqPSHAQr?y3#p(?W|awcNCoRy%j;$m5=R?%GSQg9burgb_y?dFUvk zPK4T&8D^YmW;b<~Ss$z!t$#e*j3KZW zXI?1;Ud%1dd|_loWPpr|oKA}|Fc=1Lob=$%m~-&rukhxwZr=F+GUpa`Pcru>Zy&MN z*YVsoV+9kaR4uv&rp$DzI8`cpKDS#|3yMrPu z9WBKRJ|D@&J)LXITFJKjq;;!<7>`@{h%~xCDpQICaI1@g5RVng?Zzm=2YBVs{Wc9Z znabth455s8KF?Rm%Fm*5cPH1;4OJP9>Jf&hskzL9_bRP{_%moDN788E*GaoS51L}x z{w|(Io(EDYjS*~Tz|?D^+rL^y?grfBsjQo0@ra71;VOFvROFQBv*9L1HU77{q1bBV^_C{xPLV#Os$#?Qtyc{dz$<(GjOumlOdzCi1SXdE4uHVt;5+VF9i)Eoj zN$4M8|0=RyBARFh9C}-K)uyO6hU1bZ()lhX(JF<=P_Jh;Ii~rNS%7mq91!2t+)-9E z3g3qM$=wv77~*EXS8!vq&S$M4v$u>%I@KmlAA@H+vCMme$MRw9R$p2lUu2|{o!xA&~M0z0u&+&B+A7AgH zJj?sspQA^~n+))Y#IsB{EaG+I=}k-LyiXirB}pMZCmu8Cg2azpmtB72Ty$9AnIR*S znj;Poi^VpU+nALMm3WFcqNp0>3t5*H&Rd+-a+Njj$zK@EYs+b_(;P$`i%1{|5i+XS zKp7UIv}&Z7NYQ@G!yk71Npi{L+5jWRJStEjIezdz_}#5pn4EBvf-#`;#kN02fWR)$ zsM+@Sv28a_0RJ;^rM3K(IxzD|dab2Jj)2~6;NrTa$$P-%4lwYfONQh~ewsp|0KA{k zH|2o-TcCT@?X9_w(+40!T`k=J2Zz9Dk+Ro3-rd#S+rMX;{rv!>#d5ng2{v;8000JJ zOGiWi000000Qp0^e*gdg32;bRa{vGf6951U69E94oEQKA00(qQO+^Rg2Okm*Fuc-& zw*UYD8FWQhbVF}#ZDnqB07G(RVRU6=Aa`kWXdp*PO;A^X4i^9b0#ivuK~y-)eUnX0 z6HySy|NVwmT8dh}N|w;LU}I`Xv~ZxoMDgH@8aQ+GVl*+*i-}&0HZdktuUXg2 z6D2VoJYY?Lm`If@us{p+1EFrU-FCOT9xSA;t#f%ZFEhW){NFqss#s{m?{9UOZ%UHb zr^phZDiJ=Fef04C+9z$UL3{D!%FvAlGbR%0UDB8%~?M-z%=}Nx15Po z=Ibkid&7ReK^8+VKg?b1@i0D7*jZP^>|&?O=AE8fA&1NeT|d=$x+b8-VH)G(8{>La zO{6xKiVI82m-ZC8Skiwo;BuU7KkuD)1hTH8CjjxlZb zz$+uR9HMt}aZNRqU^^36tn<0A>0f3lRg968K0?V@90Nmw{D#b1V zh*C-)16V4@e*sDW5*){^uq^8V&~~#W~2lA4TuN(W3cTg#Q*>R07*qoM6N<$f>eLL1poj5 literal 0 HcmV?d00001 diff --git a/addons/madtalk/images/icon_opt_condition.png.import b/addons/madtalk/images/icon_opt_condition.png.import new file mode 100644 index 0000000..498d8db --- /dev/null +++ b/addons/madtalk/images/icon_opt_condition.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cxwd6i3apjou8" +path="res://.godot/imported/icon_opt_condition.png-8b0299a00af3f895d6dc4eb954faa8ad.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/madtalk/images/icon_opt_condition.png" +dest_files=["res://.godot/imported/icon_opt_condition.png-8b0299a00af3f895d6dc4eb954faa8ad.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/addons/madtalk/images/icon_options.png b/addons/madtalk/images/icon_options.png new file mode 100644 index 0000000000000000000000000000000000000000..aab4cb070f9045dbd4f8467f2cb6b72f1c15cdfd GIT binary patch literal 245 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmPVwlA;3di4UfX<*i@fv^)}H1% zo$slX`||0c`z18?ygi(%!^XGZ%gu)6)#Z}sx9ru|OeAjN;xegofxX$-#`y%l6*_=(u{*zyqe3>S< z=w6+;w96w4)5bc36WhM1)~aM2{*-C;CXwac&A0{^cAgn3XD6j4-10V)2@#m%tA8-C zTbe1mBV0Im-U1G@T@4T39b`{+6ju;^rtos6toJhQg45rme^^Y)NaI(Cv*66$I$`yq zl+{}ecC<$*>KzttoUVMMred@n`KKAQBi@z>6nt1MRO+Lsw Mp00i_>zopr04ZH|F8}}l literal 0 HcmV?d00001 diff --git a/addons/madtalk/images/icon_plus.png.import b/addons/madtalk/images/icon_plus.png.import new file mode 100644 index 0000000..27fe756 --- /dev/null +++ b/addons/madtalk/images/icon_plus.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://xt0wkyrex027" +path="res://.godot/imported/icon_plus.png-ac76fc306ea40547317237fc9a3c35d1.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/madtalk/images/icon_plus.png" +dest_files=["res://.godot/imported/icon_plus.png-ac76fc306ea40547317237fc9a3c35d1.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/addons/madtalk/images/icon_question.png b/addons/madtalk/images/icon_question.png new file mode 100644 index 0000000000000000000000000000000000000000..7f45487014b06d60116845501e0ee4e84bc438f2 GIT binary patch literal 369 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE10Db#z29#{hlfzR^y!i<<0{W>oop{>=Kc2mTxNKbl=A=l;O5E>C+Yua8QuO6t1k z1Sy8Fx_jQIROiMNdwR-FSeSlJRkp#>VDglT9PXY&*P;a{h)hUBDctZ|DN z!i}TrY93r{@!EX>4Tx04R}tkv&MmKp2MKrbbq^ok?;+e)kfB~J-v9@P zz*v#8*FE0d)7iIwYg+yL0ep{gtEPL}E&u=k24YJ`L;(K){{a7>y{D4^000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2jmP46$KEq3M4lG000?uMObu0Z*6U5Zgc=ca%Ew3 zWn>_CX>@2HM@dakSAh-}0004vNklfmOJ+4{hTAc$|! zM?vW7AK=hk7ncq`aCCO;_#h!&UN_f5m*gNzItW5Dbg(W5%|RQe*Ff;+QbcP~L3!Wl z;JDB4_q#jbeR2RcgCMB(`~Bl)v$+j`VM%gt)*C{IvwS|kmn6vp5k-tKgNP=*Uhi+M zR=Wp4SUKCBUI18o18c79R^vG4zVH9a>_Q0fXMQ-X-JIunM^Z`?z-k(>IUbMy z%`0aX3B&N3bAGtEu@VHqPLd=K0G^frB!qA(mCElA01+`Fik4jv05HZ9BGNtp-EMcl z7&8E9%K%;1ccUn}OU0#>H?Hee7oPPsrfHTZlSvD}daB;(bbiKh%stOLT0~6KEGwm) z>2&H_mQ~LBNIBp44-CUNC!$9ogu@t1bY0&q7K{6uru`@s3VXBJjJMnE(|W!Bm^JDu z=ln1X!^_cVbTt?ZP5`W1mQ_|tIYjiVlycHK`859pv2DBbEksJ$z*l11c1cRvXti2f YFWZgeTo3V?8~^|S07*qoM6N<$f?#5y>Hq)$ literal 0 HcmV?d00001 diff --git a/addons/madtalk/images/icon_search.png.import b/addons/madtalk/images/icon_search.png.import new file mode 100644 index 0000000..f80d6da --- /dev/null +++ b/addons/madtalk/images/icon_search.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c4ne7fiheatjc" +path="res://.godot/imported/icon_search.png-088a286a8e9a5b0be7123b23cc2fd000.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/madtalk/images/icon_search.png" +dest_files=["res://.godot/imported/icon_search.png-088a286a8e9a5b0be7123b23cc2fd000.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/addons/madtalk/images/icon_up.png b/addons/madtalk/images/icon_up.png new file mode 100644 index 0000000000000000000000000000000000000000..e85a78a056210055efeae9ab0b3bd2225b612609 GIT binary patch literal 338 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmPVw}gl+r`_WuN1%{wW=KSdbAE1aYF-JD%fR4Vl$uzQ znxasiS(2gP?&%wlqL<1J6yN6Q;uvCa`sidszC#8)uJM6O^9&BM1iSMwsyB3QKE!f7 zpx`ok#2s+62N6cwLIS#268sC-6h# zWoq3kZ=vSBUzI!?H>)geNYKh;_i0EsF-hOK@$Sr}B3BLw-SF7uk+t@>=#8kge4|d`$)duJU;=6hG)ZaNDCi$8|@0%mLZB z1Mky3vW#_S+(@~!<>&vcGwnYd4`uFsYoDF9V5$j2E?dwQlSyoz{+_}YRGZG$n4jgC zWBW@b(^p|*YGO%h zib8p2Nrr;Er*A-tUMf3Ke7mQMV~EA+rIQVX7#&4i?yvD(DkRvc<+SbrOUyCZYl$JA zcN2nDMTzopr0BKKmz5oCK literal 0 HcmV?d00001 diff --git a/addons/madtalk/images/madtalk_viewport_icon.png.import b/addons/madtalk/images/madtalk_viewport_icon.png.import new file mode 100644 index 0000000..875435c --- /dev/null +++ b/addons/madtalk/images/madtalk_viewport_icon.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://btmmlsgvvetgi" +path="res://.godot/imported/madtalk_viewport_icon.png-a8d6195b27f50d519ee98fa0e6370607.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/madtalk/images/madtalk_viewport_icon.png" +dest_files=["res://.godot/imported/madtalk_viewport_icon.png-a8d6195b27f50d519ee98fa0e6370607.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/addons/madtalk/images/panel_bg.png b/addons/madtalk/images/panel_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..a872550c7724160eb9ff07709f5391a5ed4917ea GIT binary patch literal 9747 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 UR^M!vMH!s+^6{+t<=Sum2aI$MIsgCw literal 0 HcmV?d00001 diff --git a/addons/madtalk/images/panel_bg.png.import b/addons/madtalk/images/panel_bg.png.import new file mode 100644 index 0000000..88e497a --- /dev/null +++ b/addons/madtalk/images/panel_bg.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dgal43srcee1q" +path="res://.godot/imported/panel_bg.png-3ab06da2ccd5a236df6bac6858e5cefe.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/madtalk/images/panel_bg.png" +dest_files=["res://.godot/imported/panel_bg.png-3ab06da2ccd5a236df6bac6858e5cefe.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/addons/madtalk/importers/exp_text.gd b/addons/madtalk/importers/exp_text.gd new file mode 100644 index 0000000..2ecdbef --- /dev/null +++ b/addons/madtalk/importers/exp_text.gd @@ -0,0 +1,127 @@ +extends RefCounted + +const name := "Text" + +const description := """[b]Text Exporter[/b] + +This exporter generates a pure text output, containing [b]only messages[/b]. (It doesn't include conditions, effects, etc.) + +The main purpose of this exporter is to send dialog lines to translators, who fill the empty lines, which are then imported back into MadTalk. + +The generated text will have the following syntax: +[color=#ffff77] +[Sheet: ] + Sheet description goes here + +[Sequence: ] + + speaker id: Message contents go here +{locale1}: Translation to locale1 goes here +{locale2}: Translation to locale2 goes here +... + + another speaker id(variant): Another essage contents go here + + speaker id: -=-=- +This is a multiline message. +it can contain as many lines as required. It will continue until the multiline marker is found, as below. +-=-=- + +[Sequence: ] + yet another speaker id: Yet nother essage contents go here +[/color] + +Locale versions are always optional, and don't have to be consistent. They only show up if the message contains one, or if the locale is forced (to generate blank lines for translators). +A real example: + +[color=#ffff77] +[Sheet: mary_meets_peter] + Dialog when Mary meets Peter, on level 3 + +[Sequence: ix5f6] + + mary: Who are you? +{pt}: Quem é você? +{jp}: 誰ですか? + +<9x86f> peter(scared): Don't shoot! I'm a friend! + + peter(relieved): My name is Peter. I'm the innkeeper. +{pt}: Eu sou Pedro, o dono da estalagem. + +[Sequence: xkj87] + + mary: -=-=- +I'm leaving now. See you! + +[lb]i[rb](Honestly, I hope I never come back!)[lb]/i[rb] +-=-=- +[/color] + +When forcing a locale, the existing text for locales will only include the forced ones, and if the message doesn't have them, blank lines will be included. You can force several locales on the same export. +Example, forcing locale "pt" on the previous example will export as below: + +[color=#ffff77] +[Sheet: mary_meets_peter] + Dialog when Mary meets Peter, on level 3 + +[Sequence: ix5f6] + + mary: Who are you? +{pt}: Quem é você? + +<9x86f> peter(scared): Don't shoot! I'm a friend! +{pt}: + + peter(relieved): My name is Peter. I'm the innkeeper. +{pt}: Eu sou Pedro, o dono da estalagem. + +[Sequence: xkj87] + + mary: -=-=- +I'm leaving now. See you! + +[lb]i[rb](Honestly, I hope I never come back!)[lb]/i[rb] +-=-=- +{pt}: +[/color] + +""" + +const MULTILINE_MARKER := "-=-=-" + +func multiline_message(input: String) -> String: + var result := input + if "\n" in result: + result = MULTILINE_MARKER + "\n" + result + "\n" + MULTILINE_MARKER + return result + + +func export(sheet_data: DialogSheetData, force_locales := []) -> String: + var result := "[Sheet: %s]\n" % sheet_data.sheet_id + result += " %s\n\n" % sheet_data.sheet_description + + var all_locales: bool = (force_locales == []) + + for dialog_node: DialogNodeData in sheet_data.nodes: + result += "[Sequence: %s]\n\n" % dialog_node.resource_scene_unique_id + + for dialog_item: DialogNodeItemData in dialog_node.items: + if dialog_item.item_type == DialogNodeItemData.ItemTypes.Message: + var speaker: String = dialog_item.message_speaker_id + if dialog_item.message_speaker_variant != "": + speaker = "%s(%s)" % [speaker, dialog_item.message_speaker_variant] + + result += "<%s> %s: %s\n" % [dialog_item.resource_scene_unique_id, speaker, multiline_message(dialog_item.message_text)] + for locale in dialog_item.message_text_locales: + if all_locales or (locale in force_locales): + result += ("{%s}: " % locale) + multiline_message(dialog_item.message_text_locales[locale]) + "\n" + + for locale in force_locales: + if not locale in dialog_item.message_text_locales: + result += ("{%s}: \n" % locale) + + + result += "\n" + + return result diff --git a/addons/madtalk/importers/exp_text.gd.uid b/addons/madtalk/importers/exp_text.gd.uid new file mode 100644 index 0000000..ae75277 --- /dev/null +++ b/addons/madtalk/importers/exp_text.gd.uid @@ -0,0 +1 @@ +uid://bdsc1obep57ny diff --git a/addons/madtalk/importers/imp_text.gd b/addons/madtalk/importers/imp_text.gd new file mode 100644 index 0000000..5b19d66 --- /dev/null +++ b/addons/madtalk/importers/imp_text.gd @@ -0,0 +1,329 @@ +extends RefCounted + +const name := "Text" + +const description := """[b]Text Importer[/b] + +This importer loads dialog in pure text output, containing [b]only messages[/b]. (It doesn't load conditions, effects, etc.) +It can load brand new dialog, as well as update messages into existing dialog. It can also be used to append new locale messages into existing message items. + +The format supports very simple input, such as: + +[color=#ffff77] +[lb]Sequence[rb] +alice: Hey bob! Did you ever use MadTalk? +bob: Uh... not yet. Is it good? +alice: It's awesome, it does a lot of things. [lb]i[rb]A lot![lb]/i[rb] +bob: Great! I'll check it out! +[/color] + +(Notice the speakers before the colon are speaker IDs, not their display strings.) + +But it also supports multiline messages, specifying speaker variants (between round brackets), locale text, and updating existing message items via their internal codes. +A more complex example, including messages which will be updated (where their codes are specified), and new sequences and messages appended to the sheet (where codes are not specified): + +[color=#ffff77] +[Sheet: mary_meets_peter] + Dialog when Mary meets Peter, on level 3 + +[Sequence: ix5f6] + + mary: Who are you? +{pt}: Quem é você? +{jp}: 誰ですか? + +<9x86f> peter(scared): Don't shoot! I'm a friend! + + peter(relieved): My name is Peter. I'm the innkeeper. +{pt}: Eu sou Pedro, o dono da estalagem. + +mary: This message will be appended as a new item into the sequence above, because there is no existing code specified (the thing between <>). + +[Sequence: xkj87] + + mary: -=-=- +I'm leaving now. See you! + +[lb]i[rb](Honestly, I hope I never come back!)[lb]/i[rb] +-=-=- + +[Sequence] + +mary: This message (and the one below) will be added into a brand new sequence, because the "Sequence" tag above doesn't specify the internal code for an existing sequence. + +peter: Cool! +[/color] +""" + +const MULTILINE_MARKER := "-=-=-" + +var resource_map := {} + +enum ImportResults { + OK, + INVALID_START +} + +var re_speaker_without_resource := RegEx.new() +var re_speaker_with_resource := RegEx.new() +var re_locale_text := RegEx.new() + + +func _init(): + re_speaker_without_resource.compile("^(?.*): (?.+)") + re_speaker_with_resource.compile("^<(?\\w+)> (?.*): (?.+)") + re_locale_text.compile("^{(?[a-zA-Z0-9\\-]+)}: (?.+)") + +func refresh_resource_map(dialog_data: DialogData): + resource_map.clear() + resource_map["dialog_data"] = dialog_data + + +func append_resource_map(sheet_id: String): + var dialog_data: DialogData = resource_map["dialog_data"] + + if sheet_id in dialog_data.sheets: + var sheet_data: DialogSheetData = dialog_data.sheets[sheet_id] + + resource_map[sheet_id] = {} + resource_map[sheet_id][sheet_data.resource_scene_unique_id] = sheet_data + + for dialog_node: DialogNodeData in sheet_data.nodes: + resource_map[sheet_id][dialog_node.resource_scene_unique_id] = dialog_node + for dialog_item: DialogNodeItemData in dialog_node.items: + resource_map[sheet_id][dialog_item.resource_scene_unique_id] = dialog_item + + +func get_speaker_and_variant(input: String) -> Array: + var result := ["", ""] + + if ("(" in input) and (input.ends_with(")")): + var rpos: int = input.rfind("(") + result[0] = input.left(rpos) + result[1] = input.substr(rpos+1, input.length() - rpos - 2) + + else: + result[0] = input + + return result + + +func get_multiline_text(input: Array) -> String: + # input contains one string per item, the starting line with the MULTILINE_MARKER + # is already removed - input[0] is already content + # this function SHOULD remove consumed lines from the array (passed by reference) + + var result := "" + + # Line should not go through strip_edges() as extra spaces might be part of the content + var line: String = input.pop_front() + var i = 0 + while line and (not line.begins_with(MULTILINE_MARKER)): + if result.length() > 0: + result += "\n" + result += line + + line = input.pop_front() + + i += 1 + if i > 1000: + # Safeguard in case something goes wrong in the file + break + + # Final line with MULTILINE_MARKER is discarded + + return result + + +func import(dialog_data: DialogData, input: String) -> Dictionary: + var result := { + "status": ImportResults.OK, + "sheets": { + # "sheet_id": { + # "sheet_id": "...", + # "sheet_desc": "...", + # "nodes": [...], + # } + }, + } + + refresh_resource_map(dialog_data) + + var lines: Array = Array(input.split("\n")) + + + # Sequences + var sequence_unique_id := "" + var current_node = null # from MadTalk dialog resource + var current_tree_node = null # from result tree + + var message_unique_id := "" + var current_message: DialogNodeItemData = null + var current_tree_message = null + + var sheet_items := [] + var sheet_id := "" + var sheet_desc := "" + var line = lines.pop_front().strip_edges() + + var i = 0 + while line is String: + i += 1 + if i > 99999: + print("MadTalk importer: reached maximum loop iterations. File malformed?") + break + + var line_clean = line.strip_edges() + + # Beginning of new Sheet ID + if (line_clean.begins_with("[Sheet: ")) and (line_clean.ends_with("]")): + + # First, finish previous sheet_items + if sheet_items.size() > 0: + # Commits previous sheet data to result, and start new one + if sheet_id in result["sheets"]: + # If sheet is already in result, we merge + result["sheets"][sheet_id]["nodes"].append_array(sheet_items) + else: + result["sheets"][sheet_id] = { + "sheet_id": sheet_id, + "sheet_desc": sheet_desc, + "nodes": sheet_items, + } + + sheet_items = [] # Assing new array, don't call .clear() ! + + # else: sheet_items already empty, no action + + # Now start new sheet + sheet_id = line_clean.substr(8, line_clean.length()-9) + sheet_desc = "" + append_resource_map(sheet_id) + + # Description + line = lines.pop_front() + while not line.begins_with("[Sequence"): + if sheet_desc.length() > 0: + sheet_desc += " " # Description is single-line. Line breaks are for text file readability only. + sheet_desc += line.strip_edges() + line = lines.pop_front() + line_clean = line.strip_edges() + # This block doesn't use `continue` because we already fetched + # the next line, so we don't waste it and process it below + + if line_clean.strip_edges() == "[Sequence]": + message_unique_id = "" + current_message = null + current_tree_message = null + + sequence_unique_id = "" + current_node = null + current_tree_node = {"sequence_uid": "", "items": []} + sheet_items.append(current_tree_node) + + line = lines.pop_front() + continue + + if line_clean.begins_with("[Sequence: ") and line_clean.ends_with("]"): + message_unique_id = "" + current_message = null + current_tree_message = null + + sequence_unique_id = line_clean.substr(11, line_clean.length()-12) + if sequence_unique_id in resource_map: + current_node = resource_map[sequence_unique_id] + else: + #sequence_unique_id = "" + current_node = null + #current_tree_node = null + current_tree_node = {"sequence_uid": sequence_unique_id, "items": []} + sheet_items.append(current_tree_node) + + line = lines.pop_front() + continue + + + if (not ": " in line): + # Line not relevant, skipping... + line = lines.pop_front() + continue + + var re_res = re_speaker_with_resource.search(line) + if re_res is RegExMatch: + # Message start + message_unique_id = re_res.get_string("r") + if message_unique_id in resource_map: + current_message = resource_map[message_unique_id] + else: + current_message = null + + current_tree_message = {"message_uid": message_unique_id, "locales": {}} + + if (current_tree_node == null): + # This usually happens if the user forgot to explicitly start a sequence + # at the top of the file + current_tree_node = {"sequence_uid": "", "items": []} + sheet_items.append(current_tree_node) + + current_tree_node["items"].append(current_tree_message) + + var speaker_variant: Array = get_speaker_and_variant(re_res.get_string("n")) + var message_line: String = re_res.get_string("t").strip_edges() + if message_line == MULTILINE_MARKER: + message_line = get_multiline_text(lines) + + current_tree_message["speaker_id"] = speaker_variant[0] + current_tree_message["variant"] = speaker_variant[1] + current_tree_message["message_text"] = message_line + + else: + re_res = re_locale_text.search(line) + if re_res: + # Locale + if current_tree_message: + var locale: String = re_res.get_string("l") + var message_line: String = re_res.get_string("t") + if message_line == MULTILINE_MARKER: + message_line = get_multiline_text(lines) + + current_tree_message["locales"][locale] = message_line + + else: + re_res = re_speaker_without_resource.search(line) + if re_res: + # New message, without resource uid + var speaker_variant: Array = get_speaker_and_variant(re_res.get_string("n")) + var message_line: String = re_res.get_string("t").strip_edges() + if message_line == MULTILINE_MARKER: + message_line = get_multiline_text(lines) + + current_tree_message = {"message_uid": "", "locales": {}} + + if (current_tree_node == null): + # This usually happens if the user forgot to explicitly start a sequence + # at the top of the file + current_tree_node = {"sequence_uid": "", "items": []} + sheet_items.append(current_tree_node) + + current_tree_node["items"].append(current_tree_message) + + current_tree_message["speaker_id"] = speaker_variant[0] + current_tree_message["variant"] = speaker_variant[1] + current_tree_message["message_text"] = message_line + + line = lines.pop_front() + + # Append final sheet: + if sheet_items.size() > 0: + # Commits previous sheet data to result, and start new one + if sheet_id in result["sheets"]: + # If sheet is already in result, we merge + result["sheets"][sheet_id]["nodes"].append_array(sheet_items) + else: + result["sheets"][sheet_id] = { + "sheet_id": sheet_id, + "sheet_desc": sheet_desc, + "nodes": sheet_items, + } + + return result diff --git a/addons/madtalk/importers/imp_text.gd.uid b/addons/madtalk/importers/imp_text.gd.uid new file mode 100644 index 0000000..01a2186 --- /dev/null +++ b/addons/madtalk/importers/imp_text.gd.uid @@ -0,0 +1 @@ +uid://ck3uxhalpdgug diff --git a/addons/madtalk/madtalk.gd b/addons/madtalk/madtalk.gd new file mode 100644 index 0000000..c095463 --- /dev/null +++ b/addons/madtalk/madtalk.gd @@ -0,0 +1,69 @@ +@tool +# MadTalk Godot Plugin by Fernando Cosentino +# https://github.com/fbcosentino/godot-madtalk +# +# License: MIT +# (But if you can be so kind as to mention the original in your Readme in case +# you base any work on this, I would be very glad :] ) + +extends EditorPlugin + +# ============================================================================== +# GODOT PLUGIN INTEGRATION +# ------------------------------------------------------------------------------ + +# Scened to be instanced +var MadTalkEditor_scene = preload("res://addons/madtalk/madtalk_editor.tscn") + +# Resources +var viewport_icon = preload("res://addons/madtalk/images/madtalk_viewport_icon.png") + +# Inspector sheet_id editor +var sheet_id_inspector_editor = preload("res://addons/madtalk/components/InspectorPluginSheetIDField.gd").new() + +# Holds the main panel node in the viewport +var main_panel + +func _enter_tree(): + add_autoload_singleton("MadTalkGlobals", "res://addons/madtalk/runtime/MadTalkGlobals.tscn") + + add_inspector_plugin(sheet_id_inspector_editor) + + main_panel = MadTalkEditor_scene.instantiate() + + get_editor_interface().get_editor_main_screen().add_child(main_panel) + main_panel.setup() + _make_visible(false) + + + + + +func _exit_tree(): + remove_inspector_plugin(sheet_id_inspector_editor) + + if main_panel: + main_panel.queue_free() + + remove_autoload_singleton("MadTalkGlobals") + +func _has_main_screen(): + return true + + +func _make_visible(visible): + if main_panel: + main_panel.visible = visible + main_panel.call_deferred("reopen_current_sheet") + + +func _get_plugin_name(): + return "Dialog" + + +func _get_plugin_icon(): + return viewport_icon#get_editor_interface().get_base_control().get_icon("Node", "EditorIcons") + +func _save_external_data(): + if main_panel: + main_panel._save_external_data() diff --git a/addons/madtalk/madtalk.gd.uid b/addons/madtalk/madtalk.gd.uid new file mode 100644 index 0000000..06378c6 --- /dev/null +++ b/addons/madtalk/madtalk.gd.uid @@ -0,0 +1 @@ +uid://ctmfju64cse3r diff --git a/addons/madtalk/madtalk_editor.gd b/addons/madtalk/madtalk_editor.gd new file mode 100644 index 0000000..ce5183b --- /dev/null +++ b/addons/madtalk/madtalk_editor.gd @@ -0,0 +1,591 @@ +@tool +extends Control + +@export var dialog_data: Resource = preload("res://addons/madtalk/runtime/madtalk_data.tres") +var current_sheet = null + +# Scene templates +var DialogNode_template = preload("res://addons/madtalk/components/DialogNode.tscn") +var SideBar_SheetItem_template = preload("res://addons/madtalk/components/SideBar_SheetItem.tscn") + +# Scene nodes +@onready var graph_area = get_node("GraphArea") + + +@onready var sidebar_sheetlist = get_node("SideBar/Content/SheetsScroll/VBox") +@onready var sidebar_current_panel = get_node("SideBar/Content/CurrentPanel") +@onready var SideBar_sheet_id = get_node("SideBar/Content/CurrentPanel/SheetIDLabel") +@onready var SideBar_sheet_desc = get_node("SideBar/Content/CurrentPanel/DescEdit") +@onready var SideBar_search = get_node("SideBar/Content/SearchEdit") + +@onready var graph_area_popup = get_node("PopupMenu") + +@onready var popup_delete_node = get_node("DialogDeleteNodePopup") + +@onready var dialog_sheet_edit = get_node("DialogSheetEdit") +@onready var dialog_sheet_rename_error_popup = get_node("DialogSheetRenameError") +@onready var dialog_sheet_create_popup = get_node("DialogSheetCreated") +@onready var dialog_export = get_node("DialogExport") +@onready var dialog_import = get_node("DialogImport") + +# Maps sequence ids to graph nodes +var sequence_map: Dictionary = {} + +# Holds the node being deleted when user presses X +var deleting_node = null + +# Holds the item object being dragged +var dragging_object = null +var hovering_object = null + + +func _ready() -> void: + pass + call_deferred("setup") + +func setup(): + if dialog_data.sheets.size() == 0: + create_new_sheet() + + else: + open_sheet(dialog_data.sheets.keys()[0]) + + dialog_export.setup(dialog_data, current_sheet) + dialog_import.setup(dialog_data, current_sheet) + +# Opens a sheet for the first time, or reopens (updates area content) +func open_sheet(sheet_id: String) -> void: + # FAILSAFE: We ignore this call if the sheet id is invalid + if not sheet_id in dialog_data.sheets: + print("Invalid sheet id \"%s\"" % sheet_id) + return + + # Clear all current content in the graph area + for dialog_node in graph_area.get_children(): + if dialog_node is DialogGraphNode: + graph_area.remove_child(dialog_node) + dialog_node.queue_free() + + sequence_map.clear() + + # Prepare new sheet + current_sheet = sheet_id + var sheet_data = dialog_data.sheets[sheet_id] + + # First we build all nodes *without* updating them + for node_data in sheet_data.nodes: + var new_node = create_node_instance(node_data, false) + sequence_map[node_data.sequence_id] = new_node + + # After we have all node instances available for connections, + # we update them + for sequence_id in sequence_map: + sequence_map[sequence_id].update_from_data() + + graph_area.scroll_offset.y -= 1 + update_sidebar() + rebuild_connections() + + await get_tree().process_frame + graph_area.scroll_offset.y += 1 + graph_area.queue_redraw() + +func reopen_current_sheet(): + open_sheet(current_sheet) + +# Creates the visual representation of a node +# Does not modify the data structure +func create_node_instance(node_data: Resource, update_now: bool = true) -> DialogGraphNode: + var new_node: GraphNode = DialogNode_template.instantiate() + new_node.name = "DialogNode_ID%d" % node_data.sequence_id + new_node.main_editor = self + graph_area.add_child(new_node) + new_node.position_offset = node_data.position + new_node.connections_changed.connect(_on_node_connections_changed) + new_node.mouse_entered.connect(_on_sequence_mouse_entered.bind(new_node)) + new_node.mouse_exited.connect(_on_sequence_mouse_exited.bind(new_node)) + #new_node.connect("close_request", Callable(self, "_on_node_close_request").bind(new_node)) + new_node.data = node_data # Assign the reference, not a copy + # Any changes to this node will reflect back in + # the main Resource + #new_node.show_close = (node_data.sequence_id != 0) + if (node_data.sequence_id != 0): + var new_close_btn = Button.new() + new_close_btn.text = " X " + new_close_btn.focus_mode = Control.FOCUS_NONE + new_node.get_titlebar_hbox().add_child(new_close_btn) + new_close_btn.pressed.connect(_on_node_close_request.bind(new_node)) + + # During sheet building not all nodes are ready so updating connections + # will fail. In such a case we skip this task and update all nodes at once + # later + if (update_now): + new_node.update_from_data() + + return new_node + +# Creates a new node, optionally creating the visual GraphNode +func create_new_node(graph_position: Vector2 = Vector2(0,0), create_visual_instance = false) -> DialogNodeData: + if not current_sheet: + return null + + var sheet_data = dialog_data.sheets[current_sheet] + + # Find next available sequence id + var next_available_id = sheet_data.next_sequence_id + for this_node in sheet_data.nodes: + if this_node.sequence_id >= next_available_id: + next_available_id = this_node.sequence_id+1 + + var new_data = DialogNodeData.new() + new_data.resource_scene_unique_id = Resource.generate_scene_unique_id() + new_data.position = graph_position + new_data.sequence_id = next_available_id + new_data.items = [] # New Array to avoid sharing references + new_data.options = [] # New Array to avoid sharing references + + sheet_data.nodes.append(new_data) + sheet_data.next_sequence_id = next_available_id+1 + + # create_visual_instance is true when the node is created from user + # interaction ("New sequence" button). It is false when the data is being + # created procedurally and instances will be created later by open_sheet() + # DEPRECATED: now all methods call here with create_visual_instance=false + # and call open_sheet() afterwards + if create_visual_instance: + create_node_instance(new_data, true) + rebuild_connections() # Should not be needed but reduntant calls are harmless + + return new_data + +# Creates a new sheet, set as current, and returns the name of the sheet +func create_new_sheet() -> String: + # Find a suitable available name + var sheet_num = 1 + var new_sheet_name = "new_sheet_1" + while new_sheet_name in dialog_data.sheets: + sheet_num += 1 + new_sheet_name = "new_sheet_%d" % sheet_num + + # Create the new sheet + var new_sheet_data = DialogSheetData.new() # default next_sequence_id=0 + new_sheet_data.resource_scene_unique_id = Resource.generate_scene_unique_id() + new_sheet_data.sheet_id = new_sheet_name + new_sheet_data.nodes = [] # Forces a new array to avoid reference sharing + dialog_data.sheets[new_sheet_name] = new_sheet_data + current_sheet = new_sheet_name + + # All sheets need at least one node with ID=0 + # Create a node data item without creating the GraphNode instance, as + # it will be created later by open_sheet() + create_new_node(Vector2(0,0), false) + + # Update sidebar and open sheet + update_sidebar() + open_sheet(new_sheet_name) + #rebuild_connections() + + return new_sheet_name + + +# Connections are not build directly from UI +# Instead they are rebuilt from the Resource data objects every time +# This is the safest way to make sure there is never any difference between +# the visual representation and the underlying data +func rebuild_connections() -> void: + + graph_area.clear_connections() + + for sequence_id in sequence_map: + var dialog_node = sequence_map[sequence_id] + + + var sequence_data = dialog_node.data + + # For each item in this sequence + for item_data in sequence_data.items: + # Do we have a connection? + if (item_data.connected_to_id > -1) and (item_data.port_index > -1): + var target_node = get_dialognode_by_id(item_data.connected_to_id) + if target_node: + graph_area.connect_node(dialog_node.name, item_data.port_index, target_node.name, 0) + + # For each option in this sequence + for opt_data in sequence_data.options: + # Do we have a connection? + if (opt_data.connected_to_id > -1) and (opt_data.port_index > -1): + var target_node = get_dialognode_by_id(opt_data.connected_to_id) + if target_node: + graph_area.connect_node(dialog_node.name, opt_data.port_index, target_node.name, 0) + + # If we have a continue option at the end + if sequence_data.continue_sequence_id > -1: + var target_node = get_dialognode_by_id(sequence_data.continue_sequence_id) + if target_node: + graph_area.connect_node(dialog_node.name, sequence_data.continue_port_index, target_node.name, 0) + + + + +# Given a sequence id, returns the corresponding GraphNode object +func get_dialognode_by_id(id: int) -> DialogGraphNode: + if not id in sequence_map: + print("Error: node ID %s not found in sequence map" % id) + return null + + return sequence_map[id] + +func update_sidebar(): + # === Update current sheet + if current_sheet: + var sheet_data = dialog_data.sheets[current_sheet] + SideBar_sheet_id.text = sheet_data.sheet_id + SideBar_sheet_desc.text = sheet_data.sheet_description + sidebar_current_panel.show() + + else: + sidebar_current_panel.hide() + + # === Update list + + # Remove old items + for old_item in sidebar_sheetlist.get_children(): + sidebar_sheetlist.remove_child(old_item) + old_item.queue_free() + + # Add new items + var search_term = SideBar_search.text + for this_sheet_id in dialog_data.sheets: + var new_item_data = dialog_data.sheets[this_sheet_id] + # If there is no search, or search shows up in either id or description: + if (search_term == "") or (search_term in this_sheet_id) or (search_term in new_item_data.sheet_description): + var new_item = SideBar_SheetItem_template.instantiate() + sidebar_sheetlist.add_child(new_item) + new_item.get_node("Panel/SheetLabel").text = new_item_data.sheet_id + new_item.get_node("Panel/DescriptionLabel").text = new_item_data.sheet_description + new_item.get_node("Panel/BtnOpen").connect("pressed", Callable(self, "_on_SideBar_Item_open").bind(new_item_data.sheet_id)) + + +func _save_external_data(): + var res_path = dialog_data.resource_path + ResourceSaver.save(dialog_data, res_path, 0) + +# ============================================================================== +# UI CALLBACKS + + +## Distributes the input event to the appropriate method +func _on_GraphEdit_gui_input(event: InputEvent) -> void: + if (event is InputEventMouseButton) and (event.pressed): + match event.button_index: + MOUSE_BUTTON_LEFT: + _on_GraphEdit_left_click(event) + + MOUSE_BUTTON_RIGHT: + _on_GraphEdit_right_click(event) + #if (event is InputEventMouseMotion): + # print( (graph_area.get_local_mouse_position() + graph_area.scroll_offset)/graph_area.zoom ) + + +## Handles left clicks +func _on_GraphEdit_left_click(event: InputEvent) -> void: + # event.position is screen coordinate, not taking scroll into account + # graph_position is in node local coordinates + var graph_position = event.position + graph_area.scroll_offset + + #print("LEFT CLICK: " + str(graph_position)) + #print(graph_area.scroll_offset) + +## Handles right clicks +func _on_GraphEdit_right_click(event: InputEvent) -> void: + # event.position is screen coordinate, not taking scroll into account + # graph_position is in node local coordinates + var graph_position = event.position + graph_area.scroll_offset + + var cursor_position = Vector2(get_viewport().get_mouse_position() if get_viewport().gui_embed_subwindows else DisplayServer.mouse_get_position()) + graph_area_popup.popup(Rect2(cursor_position, Vector2(10,10))) + + +# When a node item (message, condition, effect) is mouse-hovered +# Also happens if dragging started on another object +func _on_item_mouse_entered(obj: Control) -> void: + hovering_object = obj + if (dragging_object != null) and (dragging_object != obj): + obj.modulate.a = 0.7 + obj.dragdrop_line.show() + +# When a node item (message, condition, effect) loses mouse hover +# Also happens if dragging started on another object +func _on_item_mouse_exited(obj: Control) -> void: + if hovering_object == obj: + hovering_object = null + if dragging_object != null: + obj.modulate.a = 1.0 + obj.dragdrop_line.hide() + + +func _on_sequence_mouse_entered(obj: Control): + hovering_object = obj + if dragging_object != null: + obj.modulate.a = 0.7 + +func _on_sequence_mouse_exited(obj: Control): + if hovering_object == obj: + hovering_object = null + if dragging_object != null: + obj.modulate.a = 1.0 + + +# When the mouse is pressed down on a node item, which counts as +# start dragging it. +func _on_item_drag_started(obj: Control) -> void: + dragging_object = obj + + +# When the mouse is released after dragging an item. The obj argument +# contains the object being dragged, not the one under the cursor +func _on_item_drag_ended(obj: Control) -> void: + if (dragging_object != hovering_object): + move_item_by_instance(dragging_object, hovering_object) + + if hovering_object and is_instance_valid(hovering_object): + hovering_object.modulate.a = 1.0 + if not hovering_object is DialogGraphNode: + hovering_object.dragdrop_line.hide() + + hovering_object = null + dragging_object = null + + +func move_item_by_instance(source_inst: Control, dest_inst): + if (not source_inst) or (not is_instance_valid(source_inst)): + return + if (not dest_inst) or (not is_instance_valid(dest_inst)): + return + + var source_seq = source_inst.sequence_node + var data_seq_origin = source_seq.data + var source_index = data_seq_origin.items.find(source_inst.data) + var source_item_data = data_seq_origin.items[source_index] + + var dest_seq + var data_seq_dest + var dest_index + + if dest_inst is DialogGraphNode: + # Dragging onto a sequence header + dest_seq = dest_inst + data_seq_dest = dest_seq.data + dest_index = data_seq_dest.items.size() + + else: + # Dragging onto another item + dest_seq = dest_inst.sequence_node + data_seq_dest = dest_seq.data + dest_index = data_seq_dest.items.find(dest_inst.data) + + # There are special cases if the node is being reordered inside the same sequence + if (data_seq_origin == data_seq_dest): + if (dest_index == (source_index+1)): + # If the user dropped on the item immediately below, no operation is needed + return + + elif (dest_index > source_index): + # If item is being moved below, removing it first will shift indices + # below that point, causing the reinsert to have an unintended + # extra offset of 1. So counteract is needed + dest_index -= 1 + + data_seq_origin.items.remove_at(source_index) + data_seq_dest.items.insert(dest_index, source_item_data) + + source_seq.update_from_data() + dest_seq.update_from_data() + + await get_tree().create_timer(0.02).timeout + call_deferred("rebuild_connections") + + + +func _on_GraphArea_connection_request(from, from_slot, to, to_slot): + # Get the required data + var from_node = graph_area.get_node(NodePath(from)) + var from_data = from_node.get_data_by_port(from_slot) + var to_node = graph_area.get_node(NodePath(to)) + # to_slot is always 0 in this application + var to_sequence_id = to_node.data.sequence_id + + # Make the connection in the underlying data resources + if from_data is DialogNodeData: + # This is a simple continue + from_data.continue_sequence_id = to_sequence_id + + else: + # This is a branching + from_data.connected_to_id = to_sequence_id + + rebuild_connections() + + +func _on_GraphArea_disconnection_request(from, from_slot, to, to_slot): + # Get the required data + var from_node = graph_area.get_node(NodePath(from)) + var from_data = from_node.get_data_by_port(from_slot) + + # Make the connection in the underlying data resources + if from_data is DialogNodeData: + # This is a simple continue + from_data.continue_sequence_id = -1 + + else: + # This is a branching + from_data.connected_to_id = -1 + + rebuild_connections() + + +func _on_node_connections_changed() -> void: + rebuild_connections() + +func _on_node_close_request(node_object) -> void: + deleting_node = node_object + popup_delete_node.popup_centered() + + +func _on_SideBar_SearchEdit_text_changed(new_text) -> void: + update_sidebar() + + +func _on_GraphArea_PopupMenu_id_pressed(id) -> void: + match id: + 0: + # Create new node + + # graph_area_popup.rect_position is screen coordinate, not taking scroll into account + # graph_position is in node local coordinates + #var cursor_position = Vector2(graph_area_popup.position) + #var graph_position = Vector2(cursor_position) + Vector2(graph_area.scroll_offset) + #var graph_position = Vector2(graph_area_popup.position) + Vector2(graph_area.scroll_offset) + var graph_position = Vector2((graph_area.get_local_mouse_position() + graph_area.scroll_offset)/graph_area.zoom) + + create_new_node(graph_position - Vector2(100,10), false) + open_sheet(current_sheet) + + +func _on_DialogDeleteNodePopup_confirmed() -> void: + if (not current_sheet) or (not deleting_node): + return + + var sheet_data = dialog_data.sheets[current_sheet] + var node_data = deleting_node.data + + sheet_data.nodes.erase(node_data) + + # Reopens the sheet to update area + open_sheet(current_sheet) + + +func _on_BtnEditSheet_pressed() -> void: + if not current_sheet: + return + + var sheet_data = dialog_data.sheets[current_sheet] + dialog_sheet_edit.open(sheet_data) + +func _on_DialogSheetEdit_sheet_saved(sheet_id, sheet_desc, delete_word) -> void: + if not current_sheet: + return + + # Is the user requesting to delete the sheet? + if delete_word == "delete": + dialog_data.sheets[current_sheet].nodes = [] # Discards references to node data + dialog_data.sheets[current_sheet] = null + dialog_data.sheets.erase(current_sheet) + + # If this was the last sheet, we create a new one + if dialog_data.sheets.size() == 0: + # This method creates a new sheet, sets as current and returns the + # new sheet name + var _new_sheet = create_new_sheet() + + # Otherwise select some other sheet + else: + current_sheet = dialog_data.sheets.keys()[0] + open_sheet(current_sheet) + + # Hide the window + dialog_sheet_edit.hide() + + update_sidebar() + # Stop here since the old sheet is no longer valid + return + + # Otherwise the user is editting the sheet + + var sheet_data = dialog_data.sheets[current_sheet] + + # Check if the sheet is being renamed and if the name does not collide + if sheet_id != sheet_data.sheet_id: + # User wants to rename + # Check if this id is invalid or being used + if (sheet_id == "") or (sheet_id in dialog_data.sheets): + # Show an error message instead + dialog_sheet_rename_error_popup.popup_centered() + # Stop here and don't make any changes + return + + else: + # Rename the sheet + dialog_data.sheets.erase(current_sheet) + sheet_data.sheet_id = sheet_id + dialog_data.sheets[sheet_id] = sheet_data + current_sheet = sheet_id + + # Change description + sheet_data.sheet_description = sheet_desc + + # Editting sheet details (ID, description) does not change node content + # so calling open_sheet() is not required + + # Update current sheet panel and listing + update_sidebar() + # Hide window + dialog_sheet_edit.hide() + + #var mtdefs = MTDefs.new() + #mtdefs.debug_resource(dialog_data) + +func _on_SideBar_Item_open(sheet_id) -> void: + open_sheet(sheet_id) + +func _on_BtnNewSheet_pressed() -> void: + create_new_sheet() + + # Open sheet edit window + _on_BtnEditSheet_pressed() + + # Inform user about successful sheet creation and edit window + dialog_sheet_create_popup.popup_centered() + + +func _on_BtnSaveDB_pressed(): + var res_path = dialog_data.resource_path + ResourceSaver.save(dialog_data, res_path, 0) + + +func _on_ImportExport_BtnExport_pressed() -> void: + dialog_export.set_current_sheet(current_sheet, true) + dialog_export.refresh_export_sheet_list() + dialog_export.popup_centered() + + +func _on_ImportExport_BtnImportSheet_pressed() -> void: + dialog_import.set_current_sheet(current_sheet) + dialog_import.reset_and_show() + + +func _on_dialog_import_import_executed(destination_sheet: String) -> void: + if destination_sheet != "": + open_sheet(destination_sheet) + else: + reopen_current_sheet() diff --git a/addons/madtalk/madtalk_editor.gd.uid b/addons/madtalk/madtalk_editor.gd.uid new file mode 100644 index 0000000..e2c3fdf --- /dev/null +++ b/addons/madtalk/madtalk_editor.gd.uid @@ -0,0 +1 @@ +uid://b0efsmc8oj74f diff --git a/addons/madtalk/madtalk_editor.tres b/addons/madtalk/madtalk_editor.tres new file mode 100644 index 0000000..a4cd7ba --- /dev/null +++ b/addons/madtalk/madtalk_editor.tres @@ -0,0 +1,8 @@ +[gd_resource type="Resource" script_class="DialogData" load_steps=2 format=3 uid="uid://dwcr132r2bocb"] + +[ext_resource type="Script" uid="uid://bw2q2eucjkylk" path="res://addons/madtalk/components/resources/DialogData.gd" id="4"] + +[resource] +script = ExtResource("4") +version = 1.0 +sheets = {} diff --git a/addons/madtalk/madtalk_editor.tscn b/addons/madtalk/madtalk_editor.tscn new file mode 100644 index 0000000..31e7eb1 --- /dev/null +++ b/addons/madtalk/madtalk_editor.tscn @@ -0,0 +1,341 @@ +[gd_scene load_steps=15 format=3 uid="uid://csmaqkwk66cjs"] + +[ext_resource type="Script" uid="uid://b0efsmc8oj74f" path="res://addons/madtalk/madtalk_editor.gd" id="1"] +[ext_resource type="FontFile" uid="uid://b38okvijpcxmv" path="res://addons/madtalk/fonts/FreeSans_smal.tres" id="3"] +[ext_resource type="PackedScene" uid="uid://c6topqf6spbbw" path="res://addons/madtalk/components/SideBar.tscn" id="8"] +[ext_resource type="FontFile" uid="uid://cgfeudab78x0q" path="res://addons/madtalk/fonts/FreeSans.ttf" id="8_78yji"] +[ext_resource type="FontFile" uid="uid://bhcws34lw0ak5" path="res://addons/madtalk/fonts/FreeSans_tiny.tres" id="9"] +[ext_resource type="StyleBox" path="res://addons/madtalk/components/resources/ButtonStyle.tres" id="10"] +[ext_resource type="PackedScene" uid="uid://cx148tfhw6ida" path="res://addons/madtalk/components/ImportBar.tscn" id="10_f8dcc"] +[ext_resource type="StyleBox" path="res://addons/madtalk/components/resources/SheetItemStyle.tres" id="11"] +[ext_resource type="PackedScene" uid="uid://difhfxods7ra3" path="res://addons/madtalk/components/MainEditor_DialogExport.tscn" id="12_bwljl"] +[ext_resource type="FontFile" path="res://addons/madtalk/fonts/FreeSans_bold_small.tres" id="13"] +[ext_resource type="PackedScene" uid="uid://b22lta4yhfhgu" path="res://addons/madtalk/components/MainEditor_DialogImport.tscn" id="13_35vb6"] +[ext_resource type="Texture2D" uid="uid://c4ne7fiheatjc" path="res://addons/madtalk/images/icon_search.png" id="14"] +[ext_resource type="PackedScene" uid="uid://cc7b2xbic6kf8" path="res://addons/madtalk/components/MainEditor_DialogSheetEdit.tscn" id="15"] + +[sub_resource type="FontVariation" id="FontVariation_yfgdd"] +base_font = ExtResource("8_78yji") +spacing_top = -4 +spacing_bottom = -4 + +[node name="MadTalkEditor" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = -3.1748 +offset_right = -3.1748 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_vertical = 3 +script = ExtResource("1") + +[node name="TopBar" type="Panel" parent="."] +layout_mode = 0 +anchor_right = 1.0 +offset_bottom = 31.0 + +[node name="GraphArea" type="GraphEdit" parent="."] +layout_mode = 0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_top = 31.0 +right_disconnects = true + +[node name="SideBar" parent="." instance=ExtResource("8")] +layout_mode = 1 +anchors_preset = -1 +anchor_bottom = 1.0 +offset_left = -216.0 +offset_top = 4.0 +offset_right = -16.0 +offset_bottom = -25.0 +grow_horizontal = 0 + +[node name="Content" type="Control" parent="SideBar"] +clip_contents = true +anchors_preset = 0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_top = 25.0 + +[node name="CurrentPanel" type="Panel" parent="SideBar/Content"] +layout_mode = 1 +anchors_preset = 10 +anchor_right = 1.0 +offset_left = 4.0 +offset_top = 2.0 +offset_right = -4.0 +offset_bottom = 105.0 +grow_horizontal = 2 +theme_override_styles/panel = ExtResource("11") + +[node name="TitleLabel" type="Label" parent="SideBar/Content/CurrentPanel"] +layout_mode = 0 +offset_left = 4.0 +offset_top = 4.0 +offset_right = 78.0 +offset_bottom = 18.0 +theme_override_fonts/font = ExtResource("3") +theme_override_font_sizes/font_size = 12 +text = "Current sheet" + +[node name="Label" type="Label" parent="SideBar/Content/CurrentPanel"] +layout_mode = 0 +offset_left = 5.52808 +offset_top = 23.0 +offset_right = 21.5281 +offset_bottom = 46.0 +theme_override_fonts/font = ExtResource("3") +theme_override_font_sizes/font_size = 12 +text = "ID:" + +[node name="SheetIDLabel" type="Label" parent="SideBar/Content/CurrentPanel"] +layout_mode = 1 +anchors_preset = 10 +anchor_right = 1.0 +offset_left = 9.0 +offset_top = 39.0 +offset_right = -7.0 +offset_bottom = 58.0 +grow_horizontal = 2 +theme_override_colors/font_color = Color(0.470588, 0.898039, 1, 1) +theme_override_fonts/font = ExtResource("13") +theme_override_font_sizes/font_size = 12 +text = "1_start_here" +clip_text = true + +[node name="Label2" type="Label" parent="SideBar/Content/CurrentPanel"] +layout_mode = 0 +offset_left = 5.52808 +offset_top = 62.0 +offset_right = 96.5281 +offset_bottom = 85.0 +theme_override_fonts/font = ExtResource("9") +theme_override_font_sizes/font_size = 12 +text = "Short description" + +[node name="DescEdit" type="Label" parent="SideBar/Content/CurrentPanel"] +layout_mode = 1 +anchors_preset = 10 +anchor_right = 1.0 +offset_left = 6.0 +offset_top = 80.0 +offset_right = -5.0 +offset_bottom = 101.0 +grow_horizontal = 2 +theme_override_colors/font_color = Color(0.772549, 0.772549, 0.772549, 1) +theme_override_constants/line_spacing = 0 +theme_override_fonts/font = SubResource("FontVariation_yfgdd") +theme_override_font_sizes/font_size = 10 +text = "Demonstration sheet. You can delete this in your game, or repurpose it." +autowrap_mode = 3 +clip_text = true + +[node name="BtnEditSheet" type="Button" parent="SideBar/Content/CurrentPanel"] +layout_mode = 0 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = -45.0 +offset_top = 3.0 +offset_right = -3.0 +offset_bottom = 23.0 +theme_override_fonts/font = ExtResource("3") +theme_override_font_sizes/font_size = 12 +theme_override_styles/normal = ExtResource("10") +text = "Edit" + +[node name="labelSheetList" type="Label" parent="SideBar/Content"] +layout_mode = 0 +offset_left = 8.0 +offset_top = 120.0 +offset_right = 82.0 +offset_bottom = 134.0 +theme_override_fonts/font = ExtResource("3") +theme_override_font_sizes/font_size = 12 +text = "Sheet list" + +[node name="SearchIcon" type="TextureRect" parent="SideBar/Content"] +layout_mode = 0 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = -23.0 +offset_top = 141.0 +offset_right = -7.0 +offset_bottom = 157.0 +texture = ExtResource("14") + +[node name="SearchEdit" type="LineEdit" parent="SideBar/Content"] +layout_mode = 1 +anchors_preset = 10 +anchor_right = 1.0 +offset_left = 3.0 +offset_top = 137.0 +offset_right = -31.0 +offset_bottom = 161.0 +grow_horizontal = 2 +theme_override_fonts/font = ExtResource("3") +theme_override_font_sizes/font_size = 12 +theme_override_styles/normal = ExtResource("11") +placeholder_text = "Search ID or description" + +[node name="SheetsScroll" type="ScrollContainer" parent="SideBar/Content"] +layout_mode = 0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_top = 166.0 +offset_bottom = -29.0 + +[node name="VBox" type="VBoxContainer" parent="SideBar/Content/SheetsScroll"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="BtnNewSheet" type="Button" parent="SideBar/Content"] +layout_mode = 0 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = 4.0 +offset_top = -24.0 +offset_right = -4.0 +offset_bottom = -4.0 +theme_override_fonts/font = ExtResource("3") +theme_override_font_sizes/font_size = 12 +theme_override_styles/focus = ExtResource("10") +theme_override_styles/hover = ExtResource("10") +theme_override_styles/normal = ExtResource("10") +text = "Create New Dialog Sheet" + +[node name="BtnSaveDB" type="Button" parent="SideBar/Content"] +visible = false +layout_mode = 0 +anchor_top = 1.0 +anchor_right = 0.5 +anchor_bottom = 1.0 +offset_left = 4.0 +offset_top = -24.0 +offset_right = -4.0 +offset_bottom = -4.0 +theme_override_fonts/font = ExtResource("3") +theme_override_styles/focus = ExtResource("10") +theme_override_styles/hover = ExtResource("10") +theme_override_styles/normal = ExtResource("10") +text = "Save Database" + +[node name="ImportBar" parent="." instance=ExtResource("10_f8dcc")] +layout_mode = 1 +offset_left = -423.825 +offset_top = 4.0 +offset_right = -223.825 +offset_bottom = 28.0 +SizeOpen = 100 + +[node name="Content" type="Control" parent="ImportBar"] +visible = false +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_top = 25.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="BtnExport" type="Button" parent="ImportBar/Content"] +layout_mode = 1 +anchors_preset = 10 +anchor_right = 1.0 +offset_left = 4.0 +offset_top = 4.0 +offset_right = -4.0 +offset_bottom = 28.0 +grow_horizontal = 2 +theme_override_fonts/font = ExtResource("3") +theme_override_font_sizes/font_size = 12 +theme_override_styles/focus = ExtResource("10") +theme_override_styles/hover = ExtResource("10") +theme_override_styles/normal = ExtResource("10") +text = "Export Current Sheet..." + +[node name="BGLine" type="ColorRect" parent="ImportBar/Content"] +layout_mode = 1 +anchors_preset = 10 +anchor_right = 1.0 +offset_left = 4.0 +offset_top = 35.0 +offset_right = -4.0 +offset_bottom = 37.0 +grow_horizontal = 2 +color = Color(1, 1, 1, 0.12549) + +[node name="BtnImportSheet" type="Button" parent="ImportBar/Content"] +layout_mode = 1 +anchors_preset = 10 +anchor_right = 1.0 +offset_left = 4.0 +offset_top = 44.0 +offset_right = -4.0 +offset_bottom = 68.0 +grow_horizontal = 2 +theme_override_fonts/font = ExtResource("3") +theme_override_font_sizes/font_size = 12 +theme_override_styles/focus = ExtResource("10") +theme_override_styles/hover = ExtResource("10") +theme_override_styles/normal = ExtResource("10") +text = "Import Dialog Data..." + +[node name="PopupMenu" type="PopupMenu" parent="."] +size = Vector2i(141, 100) +item_count = 1 +item_0/text = "New sequence" +item_0/id = 0 + +[node name="DialogDeleteNodePopup" type="ConfirmationDialog" parent="."] +size = Vector2i(500, 187) +dialog_text = " + + Are you sure you want to delete this entire sequence?" +dialog_autowrap = true + +[node name="DialogSheetRenameError" type="AcceptDialog" parent="."] +size = Vector2i(500, 200) +dialog_text = " + Error while renaming sheet: + + The chosen sheet ID is not valid or + there is already a sheet using this ID" +dialog_autowrap = true + +[node name="DialogSheetCreated" type="AcceptDialog" parent="."] +size = Vector2i(400, 200) +dialog_text = " + The new sheet was successfully created. + + You are now modifying the new one." +dialog_autowrap = true + +[node name="DialogSheetEdit" parent="." instance=ExtResource("15")] +visible = false + +[node name="DialogExport" parent="." instance=ExtResource("12_bwljl")] +visible = false + +[node name="DialogImport" parent="." instance=ExtResource("13_35vb6")] +visible = false + +[connection signal="connection_request" from="GraphArea" to="." method="_on_GraphArea_connection_request"] +[connection signal="disconnection_request" from="GraphArea" to="." method="_on_GraphArea_disconnection_request"] +[connection signal="gui_input" from="GraphArea" to="." method="_on_GraphEdit_gui_input"] +[connection signal="pressed" from="SideBar/Content/CurrentPanel/BtnEditSheet" to="." method="_on_BtnEditSheet_pressed"] +[connection signal="text_changed" from="SideBar/Content/SearchEdit" to="." method="_on_SideBar_SearchEdit_text_changed"] +[connection signal="pressed" from="SideBar/Content/BtnNewSheet" to="." method="_on_BtnNewSheet_pressed"] +[connection signal="pressed" from="SideBar/Content/BtnSaveDB" to="." method="_on_BtnSaveDB_pressed"] +[connection signal="pressed" from="ImportBar/Content/BtnExport" to="." method="_on_ImportExport_BtnExport_pressed"] +[connection signal="pressed" from="ImportBar/Content/BtnImportSheet" to="." method="_on_ImportExport_BtnImportSheet_pressed"] +[connection signal="id_pressed" from="PopupMenu" to="." method="_on_GraphArea_PopupMenu_id_pressed"] +[connection signal="confirmed" from="DialogDeleteNodePopup" to="." method="_on_DialogDeleteNodePopup_confirmed"] +[connection signal="confirmed" from="DialogSheetRenameError" to="." method="_on_DialogDeleteNodePopup_confirmed"] +[connection signal="confirmed" from="DialogSheetCreated" to="." method="_on_DialogDeleteNodePopup_confirmed"] +[connection signal="sheet_saved" from="DialogSheetEdit" to="." method="_on_DialogSheetEdit_sheet_saved"] +[connection signal="import_executed" from="DialogImport" to="." method="_on_dialog_import_import_executed"] diff --git a/addons/madtalk/madtalk_viewport_icon.png.import b/addons/madtalk/madtalk_viewport_icon.png.import new file mode 100644 index 0000000..1eb04fd --- /dev/null +++ b/addons/madtalk/madtalk_viewport_icon.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/madtalk_viewport_icon.png-6476d0d777038043e1e4a2f58a531b7c.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/madtalk/madtalk_viewport_icon.png" +dest_files=[ "res://.import/madtalk_viewport_icon.png-6476d0d777038043e1e4a2f58a531b7c.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/madtalk/plugin.cfg b/addons/madtalk/plugin.cfg new file mode 100644 index 0000000..a88167c --- /dev/null +++ b/addons/madtalk/plugin.cfg @@ -0,0 +1,7 @@ +[plugin] + +name="MadTalk" +description="Multi-purpose dialog system integrated to game state and time" +author="Fernando Cosentino (fbcosentino)" +version="0.0.1" +script="madtalk.gd" diff --git a/addons/madtalk/runtime/CharacterData.gd b/addons/madtalk/runtime/CharacterData.gd new file mode 100644 index 0000000..c620493 --- /dev/null +++ b/addons/madtalk/runtime/CharacterData.gd @@ -0,0 +1,9 @@ +extends Resource +class_name MTCharacterData + + +@export var id: String = "" +@export var name: String = "" +@export var avatar: Texture2D = null + +@export var variants: Dictionary = {} diff --git a/addons/madtalk/runtime/CharacterData.gd.uid b/addons/madtalk/runtime/CharacterData.gd.uid new file mode 100644 index 0000000..6e19ca0 --- /dev/null +++ b/addons/madtalk/runtime/CharacterData.gd.uid @@ -0,0 +1 @@ +uid://crm8hyh7nn5vb diff --git a/addons/madtalk/runtime/MadTalkGlobals.gd b/addons/madtalk/runtime/MadTalkGlobals.gd new file mode 100644 index 0000000..9b00bfd --- /dev/null +++ b/addons/madtalk/runtime/MadTalkGlobals.gd @@ -0,0 +1,307 @@ +extends Node + +var is_during_dialog = false +var is_during_cinematic = false + +var variables := { +} +var options_visited_global := { +} +var options_visited_dialog := { +} + +var time = 0 +var gametime_offset = 0 +var gametime_year = 1 + +@onready var gametime = epoch_to_game_time(time) + +func set_variable(var_name: String, var_value) -> void: + variables[var_name] = var_value + +func get_variable(var_name: String, default = 0.0): + if var_name in variables: + return variables[var_name] + else: + return default + +func set_option_visited(option: DialogNodeOptionData, visited: bool): + options_visited_global[option.resource_scene_unique_id] = visited + options_visited_dialog[option.resource_scene_unique_id] = visited + +func get_option_visited_global(option: DialogNodeOptionData) -> bool: + if not option.resource_scene_unique_id in options_visited_global: + return false + return options_visited_global[option.resource_scene_unique_id] + +func get_option_visited_dialog(option: DialogNodeOptionData) -> bool: + if not option.resource_scene_unique_id in options_visited_dialog: + return false + return options_visited_dialog[option.resource_scene_unique_id] + +func reset_options_visited_dialog(): + options_visited_dialog.clear() + + +# ============================================================================== +# LOCALE + +var default_locale := "en" +var current_locale := "" + + +func set_locale(locale_code: String): + current_locale = locale_code + if current_locale == default_locale: + current_locale = "" + + +func set_default_locale(locale_code: String): + default_locale = locale_code + if current_locale == default_locale: + current_locale = "" + + +func set_locale_automatic(def_locale: String = default_locale): + default_locale = def_locale + var locale = OS.get_locale_language() + set_locale(locale) + + +func set_locale_from_project(def_locale: String = default_locale): + default_locale = def_locale + var locale = TranslationServer.get_locale() + if "_" in locale: + locale = locale.left(locale.find("_")) + set_locale(locale) + + +# ============================================================================== +# TIME + +func set_game_year(year: int) -> void: + gametime_year = year + var dt = { + "year": year, + "month": 1, + "day": 1, + "hour": 0, + "minute": 0, + "second": 0 + } + gametime_offset = Time.get_unix_time_from_datetime_dict(dt) + gametime = epoch_to_game_time(time) + +## +# Returns datetime in game reference (that is, +# start of game is 01/01/0001 00:00:00) +# Can be seen as "elapsed gameplay time" +func epoch_to_game_time(epoch_time: int) -> Dictionary: + # Date time dictionary has the format: + # { + # "year": ..., + # "month": ..., + # "day": ..., + # "weekday": ..., + # "hour": ..., + # "minute": ..., + # "second": ... + # } + # Custom values added here are: + # "time": String hour/minute in format HH:MM + # "date": String day/month in format DD/MM + # "date_inv": String day/month in format MM/DD + + var dt = Time.get_datetime_dict_from_unix_time(gametime_offset + epoch_time) + dt["year"] -= gametime_year-1 # year - 1, so starts at year 1 + dt["time"] = "%02d:%02d" % [dt["hour"], dt["minute"]] + dt["date"] = "%02d/%02d" % [dt["day"], dt["month"]] + dt["date_inv"] = "%02d/%02d" % [dt["month"], dt["day"]] + dt["weekday_name"] = MTDefs.WeekdayNames[dt["weekday"]] + dt["wday_name"] = MTDefs.WeekdayNamesShort[dt["weekday"]] + return dt + +# Converts day, month, year to unix epoch time +func game_time_to_epoch(p_gametime: Dictionary) -> int: + p_gametime["year"] += gametime_year-1 # Year 1 is base, + return Time.get_unix_time_from_datetime_dict(p_gametime) - gametime_offset + +func update_gametime_dict(): + gametime = epoch_to_game_time(time) + + +# Converts day, month, year to unix epoch time +func date_to_int(day: int, month: int, year: int) -> int: + return game_time_to_epoch({ + "year": year, "month": month, "day": day, + "hour": 0, "minute": 0, "second": 0 + }) + +# Converts hour, minute to float fractional hour +# Example: 2, 30 becomes 2.5 +func time_to_float(hour: int, minute: int) -> float: + return float(hour) + float(minute)/60.0 + +func time_to_string(epoch_time: int, simplified: bool = true) -> String: + # Date time dictionary has the format: + # { + # "year": ..., + # "month": ..., + # "day": ..., + # "weekday": ..., + # "hour": ..., + # "minute": ..., + # "second": ... + # } + var dt = epoch_to_game_time(epoch_time) + var res = "" + + # Simplified version is Weekday HH:MM + if (simplified): + res = MTDefs.WeekdayNames[dt['weekday']].left(3) + res += " %02d:%02d" % [dt['hour'], dt['minute']] + + # Non-simplified is Weekday, DD of MonthName HH:MM + else: + res = MTDefs.WeekdayNames[dt['weekday']] + res += ", "+str(dt['day']) + res += " "+MTDefs.MonthNames[dt['month']] + res += " %02d:%02d" % [dt['hour'], dt['minute']] + + return res + + +func split_time(value: String) -> Array: + # TODO: this is not very efficient code. To be rewritten to run faster + var nums_psa = Array(str(value).split(':')) + while nums_psa.size() < 2: + nums_psa.append(0) + var nums = [int(nums_psa[0]), int(nums_psa[1])] + if (nums[0] < 0) or (nums[0] > 23): + nums[0] = 0 + if (nums[1] < 0) or (nums[1] > 59): + nums[1] = 0 + return [nums[0], nums[1]] + +func split_date(value: String) -> Array: + # TODO: this is not very efficient code. To be rewritten to run faster + var nums_psa = Array(str(value).split('/')) + while nums_psa.size() < 2: + nums_psa.append(1) + var nums = [int(nums_psa[0]), int(nums_psa[1])] + if (nums[0] < 1) or (nums[0] > 31): + nums[0] = 1 + if (nums[1] < 1) or (nums[1] > 12): + nums[1] = 1 + return [nums[0], nums[1]] + +func print_date(value: String) -> String: + var nums = split_date(value) + var day = "%02d" % nums[0] + var month = MTDefs.MonthNames[nums[1]].left(3) + return day+' '+month + +func print_weekday(value): + while value > 6: + value -= 7 + return MTDefs.WeekdayNames[value] + +func split_string_autodetect_rn(value: String) -> Array: + var result = [] + + value = str(value) + + if "\r\n" in value: + # Windows style + result = value.split("\r\n") + elif "\r" in value: + # MacOS style + result = value.split("\r") + else: + # Unix style + result = value.split("\n") + + return result + + +func next_time_at_time(time_value: String) -> int: + var asked_time = split_time(time_value) + + # We calculate epoch time value for the requested hour happening today + # if we are before this time, this is what we want + var ingame_time_as_today = game_time_to_epoch({ + "year": gametime["year"], + "month": gametime["month"], + "day": gametime["day"], + "hour": asked_time[0], + "minute": asked_time[1], + "second": 0 + }) + + if time <= ingame_time_as_today: + return ingame_time_as_today + + # If we are after this time, we want the same time but tomorrow + # so we add 24 hours + else: + return ingame_time_as_today + 24*60*60 # seconds + +func next_time_at_weekday(weekday: int) -> int: + # First we find the weekday delta handling when the requested weekday + # is lower (or equal) than current one + var asked_weekday = weekday if weekday > gametime["weekday"] else weekday + 7 + var weekday_delta = asked_weekday - gametime["weekday"] + + # Find time for midnight of today + var ingame_midnight_today = game_time_to_epoch({ + "year": gametime["year"], + "month": gametime["month"], + "day": gametime["day"], + "hour": 0, + "minute": 0, + "second": 0 + }) + # Finally we just offset the weekday_delta days into the future + return ingame_midnight_today + weekday_delta*24*60*60 # seconds + + +func export_game_data() -> Dictionary: + var visited_options := {} + for item_ui in options_visited_global: + visited_options[item_ui] = "1" if options_visited_global[item_ui] else "0" + + var result = { + "time": time, + "gametime_offset": gametime_offset, + "gametime_year": gametime_year, + "variables": variables, + "visited_options": visited_options, + } + return result + +func import_game_data(data: Dictionary) -> void: + if ("time" in data): + time = int(round(float(data["time"]))) + if ("gametime_offset" in data): + gametime_offset = int(round(float(data["gametime_offset"]))) + if ("gametime_year" in data): + gametime_year = int(round(float(data["gametime_year"]))) + + options_visited_global.clear() + if "visited_options" in data: + var visited_dict: Dictionary = data["visited_options"] + for item_ui in visited_dict: + # If coming from a saved file, item_ui will never be StringName + # but this Dictionary might be coming from a serialized Resource (bad idea, but still) + if (item_ui is String) or (item_ui is StringName): + options_visited_global[item_ui] = (not visited_dict[item_ui] in [false, "false", 0, 0.0, "0", "0.0", "no"]) + + variables.clear() + for variable_name in data["variables"]: + if variable_name is String: + var value = data["variables"][variable_name] + if typeof(value) in [TYPE_INT, TYPE_FLOAT, TYPE_STRING]: + # All numeric values can be safely assumed float (as per JSON) + # since all methods using them do proper casting + variables[variable_name] = value + # Silently ignore everything else diff --git a/addons/madtalk/runtime/MadTalkGlobals.gd.uid b/addons/madtalk/runtime/MadTalkGlobals.gd.uid new file mode 100644 index 0000000..a85fd9d --- /dev/null +++ b/addons/madtalk/runtime/MadTalkGlobals.gd.uid @@ -0,0 +1 @@ +uid://d02cnw1l6owsy diff --git a/addons/madtalk/runtime/MadTalkGlobals.tscn b/addons/madtalk/runtime/MadTalkGlobals.tscn new file mode 100644 index 0000000..300d1a3 --- /dev/null +++ b/addons/madtalk/runtime/MadTalkGlobals.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=3 uid="uid://domdph40m3s8i"] + +[ext_resource type="Script" uid="uid://d02cnw1l6owsy" path="res://addons/madtalk/runtime/MadTalkGlobals.gd" id="1_tbidr"] + +[node name="MadTalkGlobals" type="Node"] +script = ExtResource("1_tbidr") diff --git a/addons/madtalk/runtime/madtalk_data.tres b/addons/madtalk/runtime/madtalk_data.tres new file mode 100644 index 0000000..3ad800f --- /dev/null +++ b/addons/madtalk/runtime/madtalk_data.tres @@ -0,0 +1,912 @@ +[gd_resource type="Resource" script_class="DialogData" load_steps=73 format=3 uid="uid://dxkjjrap15vxu"] + +[ext_resource type="Script" uid="uid://bw2q2eucjkylk" path="res://addons/madtalk/components/resources/DialogData.gd" id="1_giduu"] +[ext_resource type="Script" uid="uid://c2bv5lwcvdmrb" path="res://addons/madtalk/components/resources/DialogNodeItemData.gd" id="2_48vp3"] +[ext_resource type="Script" uid="uid://bfg2ff7c0tanh" path="res://addons/madtalk/components/resources/DialogNodeOptionData.gd" id="3_dways"] +[ext_resource type="Script" uid="uid://b2mrnotqjr75d" path="res://addons/madtalk/components/resources/DialogNodeData.gd" id="4_f2ijm"] +[ext_resource type="Script" uid="uid://butd1fwy4a2hn" path="res://addons/madtalk/components/resources/DialogSheetData.gd" id="5_vkpn8"] + +[sub_resource type="Resource" id="1"] +script = ExtResource("2_48vp3") +item_type = 0 +connected_to_id = -1 +message_speaker_id = "foo" +message_speaker_variant = "" +message_voice_clip = "" +message_text = "This is an example sheet. You can rename and use it, or discard and create your own." +message_voice_clip_locales = {} +message_text_locales = {} +message_hide_on_end = 0 +condition_type = 0 +condition_values = [] +effect_type = 0 +effect_values = [] + +[sub_resource type="Resource" id="4"] +script = ExtResource("2_48vp3") +item_type = 0 +connected_to_id = -1 +message_speaker_id = "" +message_speaker_variant = "" +message_voice_clip = "" +message_text = "Would you like to see more dialog messages?" +message_voice_clip_locales = {} +message_text_locales = {} +message_hide_on_end = 1 +condition_type = 0 +condition_values = [] +effect_type = 0 +effect_values = [] + +[sub_resource type="Resource" id="5"] +script = ExtResource("3_dways") +text = "Yes" +text_locales = {} +connected_to_id = 8 +is_conditional = false +condition_variable = "" +condition_operator = "=" +condition_value = "" +autodisable_mode = 0 +inactive_mode = 0 + +[sub_resource type="Resource" id="6"] +script = ExtResource("3_dways") +text = "No" +text_locales = {} +connected_to_id = -1 +is_conditional = false +condition_variable = "" +condition_operator = "=" +condition_value = "" +autodisable_mode = 0 +inactive_mode = 0 + +[sub_resource type="Resource" id="2"] +script = ExtResource("4_f2ijm") +sequence_id = 0 +position = Vector2(-20, 120) +comment = "" +items = [SubResource("1"), SubResource("4")] +options = [SubResource("5"), SubResource("6")] +continue_sequence_id = -1 +continue_port_index = -1 + +[sub_resource type="Resource" id="v4udn"] +script = ExtResource("2_48vp3") +item_type = 2 +connected_to_id = -1 +message_speaker_id = "" +message_speaker_variant = "" +message_voice_clip = "" +message_text = "" +message_voice_clip_locales = {} +message_text_locales = {} +message_hide_on_end = 0 +condition_type = 10 +condition_values = [] +effect_type = 1 +effect_values = ["my_var", 5.0] + +[sub_resource type="Resource" id="Resource_jrxya"] +script = ExtResource("2_48vp3") +item_type = 0 +connected_to_id = -1 +message_speaker_id = "" +message_speaker_variant = "" +message_voice_clip = "" +message_text = "my_var was set to: <> +{{if my_var < 4: Since it's less than 4, you see this message.}} +{{if my_var < 6: Since it's less than 6, you see this message.}}" +message_voice_clip_locales = {} +message_text_locales = {} +message_hide_on_end = 0 +condition_type = 10 +condition_values = [] +effect_type = 10 +effect_values = [] + +[sub_resource type="Resource" id="Resource_ixt6j"] +script = ExtResource("4_f2ijm") +sequence_id = 6 +position = Vector2(920, 120) +comment = "" +items = [SubResource("v4udn"), SubResource("Resource_jrxya")] +options = [] +continue_sequence_id = -1 +continue_port_index = 0 + +[sub_resource type="Resource" id="7"] +script = ExtResource("2_48vp3") +item_type = 0 +connected_to_id = -1 +message_speaker_id = "bar" +message_speaker_variant = "" +message_voice_clip = "" +message_text = "The speaker IDs are \"foo\" and \"bar\", but the display names are \"Maria\" and \"Francesco\"." +message_voice_clip_locales = {} +message_text_locales = {} +message_hide_on_end = 0 +condition_type = 0 +condition_values = [] +effect_type = 0 +effect_values = [] + +[sub_resource type="Resource" id="8"] +script = ExtResource("2_48vp3") +item_type = 0 +connected_to_id = -1 +message_speaker_id = "bar" +message_speaker_variant = "" +message_voice_clip = "" +message_text = "This is so you can have fancy nice looking display names, but you don't have to type them all the time in the system." +message_voice_clip_locales = {} +message_text_locales = {} +message_hide_on_end = 0 +condition_type = 0 +condition_values = [] +effect_type = 0 +effect_values = [] + +[sub_resource type="Resource" id="9"] +script = ExtResource("2_48vp3") +item_type = 0 +connected_to_id = -1 +message_speaker_id = "" +message_speaker_variant = "" +message_voice_clip = "" +message_text = "A blank speaker ID is valid. If there are no characters with blank ID, it's treated as empty name." +message_voice_clip_locales = {} +message_text_locales = {} +message_hide_on_end = 0 +condition_type = 0 +condition_values = [] +effect_type = 0 +effect_values = [] + +[sub_resource type="Resource" id="Resource_j2kw6"] +script = ExtResource("4_f2ijm") +sequence_id = 8 +position = Vector2(460, 60) +comment = "" +items = [SubResource("7"), SubResource("8"), SubResource("9")] +options = [] +continue_sequence_id = -1 +continue_port_index = 0 + +[sub_resource type="Resource" id="3"] +script = ExtResource("5_vkpn8") +sheet_id = "1_start_here" +sheet_description = "Demonstration sheet. You can delete this in your game, or repurpose it." +next_sequence_id = 9 +nodes = [SubResource("2"), SubResource("Resource_ixt6j"), SubResource("Resource_j2kw6")] + +[sub_resource type="Resource" id="Resource_vx7w3"] +script = ExtResource("2_48vp3") +item_type = 0 +connected_to_id = -1 +message_speaker_id = "" +message_speaker_variant = "" +message_voice_clip = "" +message_text = "This example demonstrates the bare minimum nodes you need for the dialog to work." +message_voice_clip_locales = {} +message_text_locales = {} +message_hide_on_end = 0 +condition_type = 10 +condition_values = [] +effect_type = 10 +effect_values = [] + +[sub_resource type="Resource" id="Resource_duvjw"] +script = ExtResource("4_f2ijm") +sequence_id = 0 +position = Vector2(0, 0) +comment = "" +items = [SubResource("Resource_vx7w3")] +options = [] +continue_sequence_id = -1 +continue_port_index = 0 + +[sub_resource type="Resource" id="Resource_sxgqo"] +script = ExtResource("5_vkpn8") +sheet_id = "bare_minimum" +sheet_description = "" +next_sequence_id = 2 +nodes = [SubResource("Resource_duvjw")] + +[sub_resource type="Resource" id="12"] +script = ExtResource("2_48vp3") +item_type = 0 +connected_to_id = -1 +message_speaker_id = "" +message_speaker_variant = "" +message_voice_clip = "" +message_text = "If you do not assign a node to Dialog Button Container (dialog_buttons_container), automatic menu will not be enabled. +In this case, if you want menu options, you have to process the menu externally. +(You can, however, have dialogs without menus: simply never use menu options.)" +message_voice_clip_locales = {} +message_text_locales = {} +message_hide_on_end = 0 +condition_type = 0 +condition_values = [] +effect_type = 0 +effect_values = [] + +[sub_resource type="Resource" id="13"] +script = ExtResource("2_48vp3") +item_type = 0 +connected_to_id = -1 +message_speaker_id = "" +message_speaker_variant = "" +message_voice_clip = "" +message_text = "If you [b][i]do[/i][/b] use menu options in the dialog sheet, and do not assign a node for automatic menus and also do not handle the menu externally, then menus will not work (attempting to show menu options will cause the dialog to get stuck)." +message_voice_clip_locales = {} +message_text_locales = {} +message_hide_on_end = 0 +condition_type = 0 +condition_values = [] +effect_type = 0 +effect_values = [] + +[sub_resource type="Resource" id="16"] +script = ExtResource("2_48vp3") +item_type = 0 +connected_to_id = -1 +message_speaker_id = "" +message_speaker_variant = "" +message_voice_clip = "" +message_text = "Processing the menu externally is easy: +When the dialog reaches a menu, the [color=#99ff00][b]external_menu_requested([color=#ff9955]options, metadata[/color])[/b][/color] signal is called, where [color=#ff9955][b]options[/b][/color] is an Array with the menu options, and [color=#ff9955][b]metadata[/b][/color] is an Array of Dictionaries. +Each item has a [color=#99ffff][b]text[/b][/color] property containing the text for that option, from the dialog sheet. +So [b][color=#ff9955]options[[color=#ffff00]0[/color]][/color].[color=#99ffff]text[/color][/b] is the text for first option, and [b][color=#ff9955]metadata[lb][color=#ffff00]0[/color][rb][lb][color=#ffff99]\"enabled\"[/color][rb][/color][/b] is the bool indicating if that option is enabled, etc." +message_voice_clip_locales = {} +message_text_locales = {} +message_hide_on_end = 0 +condition_type = 0 +condition_values = [] +effect_type = 0 +effect_values = [] + +[sub_resource type="Resource" id="17"] +script = ExtResource("2_48vp3") +item_type = 0 +connected_to_id = -1 +message_speaker_id = "" +message_speaker_variant = "" +message_voice_clip = "" +message_text = "The menu will then pause and wait for your code to select one of the options from that array. +You take the input from the player in any way you like, and then select an option by calling the method [b][color=#9999ff]select_menu_option( [color=#ffff00]index[/color] )[/color][/b] where the argument is the index of the desired option from the [color=#ff9955][b]options[/b][/color] array. +Selecting an invalid index is simply ignored." +message_voice_clip_locales = {} +message_text_locales = {} +message_hide_on_end = 0 +condition_type = 0 +condition_values = [] +effect_type = 0 +effect_values = [] + +[sub_resource type="Resource" id="18"] +script = ExtResource("2_48vp3") +item_type = 0 +connected_to_id = -1 +message_speaker_id = "" +message_speaker_variant = "" +message_voice_clip = "" +message_text = "Using external menus, the option text can be used as IDs, as CSV lines packing several fields, or any other purpose you like, since building the menu is up to you. +This way you can have more control and flexibility, while still having all the dialog managed by MadTalk." +message_voice_clip_locales = {} +message_text_locales = {} +message_hide_on_end = 0 +condition_type = 0 +condition_values = [] +effect_type = 0 +effect_values = [] + +[sub_resource type="Resource" id="14"] +script = ExtResource("4_f2ijm") +sequence_id = 0 +position = Vector2(0, 0) +comment = "" +items = [SubResource("12"), SubResource("13"), SubResource("16"), SubResource("17"), SubResource("18")] +options = [] +continue_sequence_id = 1 +continue_port_index = 0 + +[sub_resource type="Resource" id="19"] +script = ExtResource("2_48vp3") +item_type = 0 +connected_to_id = -1 +message_speaker_id = "" +message_speaker_variant = "" +message_voice_clip = "" +message_text = "Please select an option with double click." +message_voice_clip_locales = {} +message_text_locales = {} +message_hide_on_end = 1 +condition_type = 0 +condition_values = [] +effect_type = 0 +effect_values = [] + +[sub_resource type="Resource" id="20"] +script = ExtResource("3_dways") +text = "red,PokaTola" +text_locales = {} +connected_to_id = 2 +is_conditional = false +condition_variable = "" +condition_operator = "=" +condition_value = "" +autodisable_mode = 0 +inactive_mode = 0 + +[sub_resource type="Resource" id="21"] +script = ExtResource("3_dways") +text = "red,PokaTola Diet" +text_locales = {} +connected_to_id = 3 +is_conditional = false +condition_variable = "" +condition_operator = "=" +condition_value = "" +autodisable_mode = 0 +inactive_mode = 0 + +[sub_resource type="Resource" id="22"] +script = ExtResource("3_dways") +text = "blue,Zepsi" +text_locales = {} +connected_to_id = 4 +is_conditional = false +condition_variable = "" +condition_operator = "=" +condition_value = "" +autodisable_mode = 0 +inactive_mode = 0 + +[sub_resource type="Resource" id="23"] +script = ExtResource("3_dways") +text = "blue,Zepsi Zero" +text_locales = {} +connected_to_id = 5 +is_conditional = false +condition_variable = "" +condition_operator = "=" +condition_value = "" +autodisable_mode = 0 +inactive_mode = 0 + +[sub_resource type="Resource" id="25"] +script = ExtResource("3_dways") +text = "green,Buaraná Ankartida" +text_locales = {} +connected_to_id = 6 +is_conditional = false +condition_variable = "" +condition_operator = "=" +condition_value = "" +autodisable_mode = 0 +inactive_mode = 0 + +[sub_resource type="Resource" id="26"] +script = ExtResource("3_dways") +text = "yellow,Strike" +text_locales = {} +connected_to_id = 7 +is_conditional = false +condition_variable = "" +condition_operator = "=" +condition_value = "" +autodisable_mode = 0 +inactive_mode = 0 + +[sub_resource type="Resource" id="24"] +script = ExtResource("4_f2ijm") +sequence_id = 1 +position = Vector2(600, 40) +comment = "" +items = [SubResource("19")] +options = [SubResource("20"), SubResource("21"), SubResource("22"), SubResource("23"), SubResource("25"), SubResource("26")] +continue_sequence_id = -1 +continue_port_index = -1 + +[sub_resource type="Resource" id="27"] +script = ExtResource("2_48vp3") +item_type = 0 +connected_to_id = -1 +message_speaker_id = "" +message_speaker_variant = "" +message_voice_clip = "" +message_text = "You have selected the normal PokaTola" +message_voice_clip_locales = {} +message_text_locales = {} +message_hide_on_end = 0 +condition_type = 0 +condition_values = [] +effect_type = 0 +effect_values = [] + +[sub_resource type="Resource" id="28"] +script = ExtResource("4_f2ijm") +sequence_id = 2 +position = Vector2(1280, -320) +comment = "" +items = [SubResource("27")] +options = [] +continue_sequence_id = -1 +continue_port_index = 0 + +[sub_resource type="Resource" id="29"] +script = ExtResource("2_48vp3") +item_type = 0 +connected_to_id = -1 +message_speaker_id = "" +message_speaker_variant = "" +message_voice_clip = "" +message_text = "You have selected the Diet PokaTola" +message_voice_clip_locales = {} +message_text_locales = {} +message_hide_on_end = 0 +condition_type = 0 +condition_values = [] +effect_type = 0 +effect_values = [] + +[sub_resource type="Resource" id="30"] +script = ExtResource("4_f2ijm") +sequence_id = 3 +position = Vector2(1280, -120) +comment = "" +items = [SubResource("29")] +options = [] +continue_sequence_id = -1 +continue_port_index = 0 + +[sub_resource type="Resource" id="31"] +script = ExtResource("2_48vp3") +item_type = 0 +connected_to_id = -1 +message_speaker_id = "" +message_speaker_variant = "" +message_voice_clip = "" +message_text = "You have selecteed the normal Zepsi" +message_voice_clip_locales = {} +message_text_locales = {} +message_hide_on_end = 0 +condition_type = 0 +condition_values = [] +effect_type = 0 +effect_values = [] + +[sub_resource type="Resource" id="32"] +script = ExtResource("4_f2ijm") +sequence_id = 4 +position = Vector2(1280, 80) +comment = "" +items = [SubResource("31")] +options = [] +continue_sequence_id = -1 +continue_port_index = 0 + +[sub_resource type="Resource" id="33"] +script = ExtResource("2_48vp3") +item_type = 0 +connected_to_id = -1 +message_speaker_id = "" +message_speaker_variant = "" +message_voice_clip = "" +message_text = "You have selected the Diet Zepsi" +message_voice_clip_locales = {} +message_text_locales = {} +message_hide_on_end = 0 +condition_type = 0 +condition_values = [] +effect_type = 0 +effect_values = [] + +[sub_resource type="Resource" id="34"] +script = ExtResource("4_f2ijm") +sequence_id = 5 +position = Vector2(1280, 280) +comment = "" +items = [SubResource("33")] +options = [] +continue_sequence_id = -1 +continue_port_index = 0 + +[sub_resource type="Resource" id="35"] +script = ExtResource("2_48vp3") +item_type = 0 +connected_to_id = -1 +message_speaker_id = "" +message_speaker_variant = "" +message_voice_clip = "" +message_text = "Good choice! You have selected the Buaraná Ankartida" +message_voice_clip_locales = {} +message_text_locales = {} +message_hide_on_end = 0 +condition_type = 0 +condition_values = [] +effect_type = 0 +effect_values = [] + +[sub_resource type="Resource" id="36"] +script = ExtResource("4_f2ijm") +sequence_id = 6 +position = Vector2(1280, 480) +comment = "" +items = [SubResource("35")] +options = [] +continue_sequence_id = -1 +continue_port_index = 0 + +[sub_resource type="Resource" id="37"] +script = ExtResource("2_48vp3") +item_type = 0 +connected_to_id = -1 +message_speaker_id = "" +message_speaker_variant = "" +message_voice_clip = "" +message_text = "You have selected the Strike" +message_voice_clip_locales = {} +message_text_locales = {} +message_hide_on_end = 0 +condition_type = 0 +condition_values = [] +effect_type = 0 +effect_values = [] + +[sub_resource type="Resource" id="38"] +script = ExtResource("4_f2ijm") +sequence_id = 7 +position = Vector2(1280, 680) +comment = "" +items = [SubResource("37")] +options = [] +continue_sequence_id = -1 +continue_port_index = 0 + +[sub_resource type="Resource" id="15"] +script = ExtResource("5_vkpn8") +sheet_id = "external_menu" +sheet_description = "" +next_sequence_id = 8 +nodes = [SubResource("14"), SubResource("24"), SubResource("28"), SubResource("30"), SubResource("32"), SubResource("34"), SubResource("36"), SubResource("38")] + +[sub_resource type="Resource" id="Resource_rlxbw"] +script = ExtResource("2_48vp3") +item_type = 0 +connected_to_id = -1 +message_speaker_id = "" +message_speaker_variant = "" +message_voice_clip = "" +message_text = "Hello! Welcome to the localized example! +Warning: the next message will play an audio clip." +message_voice_clip_locales = {} +message_text_locales = { +"es": "¡Hola! ¡Bienvenido al ejemplo localizado! +Advertencia: el siguiente mensaje reproducirá un clip de audio.", +"pt": "Olá! Seja bem vindo ao teste localizado! +Aviso: a próxima mensagem reproduzirá um clipe de áudio." +} +message_hide_on_end = 0 +condition_type = 10 +condition_values = [] +effect_type = 10 +effect_values = [] + +[sub_resource type="Resource" id="Resource_quvr4"] +script = ExtResource("2_48vp3") +item_type = 0 +connected_to_id = -1 +message_speaker_id = "" +message_speaker_variant = "" +message_voice_clip = "res://example_scene/voices/example_localized_en.ogg" +message_text = "You are now seeing messages in English, because either this is your system language, or because your language is not included in this test." +message_voice_clip_locales = { +"es": "res://example_scene/voices/example_localized_es.ogg", +"pt": "res://example_scene/voices/example_localized_pt.ogg" +} +message_text_locales = { +"es": "Ahora estás viendo los mensajes en español, porque este es el idioma de tu sistema.", +"pt": "Você está agora vendo mensagens em Português, porque esse é o idioma do seu sistema." +} +message_hide_on_end = 0 +condition_type = 10 +condition_values = [] +effect_type = 10 +effect_values = [] + +[sub_resource type="Resource" id="Resource_w6lj3"] +script = ExtResource("2_48vp3") +item_type = 0 +connected_to_id = -1 +message_speaker_id = "" +message_speaker_variant = "" +message_voice_clip = "" +message_text = "Thank you for playing this test!" +message_voice_clip_locales = {} +message_text_locales = { +"es": "¡Gracias por jugar esta prueba!", +"pt": "Obrigado por jogar esse teste!" +} +message_hide_on_end = 0 +condition_type = 10 +condition_values = [] +effect_type = 10 +effect_values = [] + +[sub_resource type="Resource" id="Resource_dlpdt"] +script = ExtResource("3_dways") +text = "First option" +text_locales = { +"": "First option", +"es": "Primera opción", +"pt": "Primeira opção" +} +connected_to_id = -1 +is_conditional = false +condition_variable = "" +condition_operator = "=" +condition_value = "" +autodisable_mode = 0 +inactive_mode = 0 + +[sub_resource type="Resource" id="Resource_x0nqb"] +script = ExtResource("3_dways") +text = "Second option" +text_locales = { +"": "Second option", +"es": "Segunda opción", +"pt": "Segunda opção" +} +connected_to_id = -1 +is_conditional = false +condition_variable = "" +condition_operator = "=" +condition_value = "" +autodisable_mode = 0 +inactive_mode = 0 + +[sub_resource type="Resource" id="Resource_ml5yl"] +script = ExtResource("4_f2ijm") +sequence_id = 0 +position = Vector2(0, 0) +comment = "" +items = [SubResource("Resource_rlxbw"), SubResource("Resource_quvr4"), SubResource("Resource_w6lj3")] +options = [SubResource("Resource_dlpdt"), SubResource("Resource_x0nqb")] +continue_sequence_id = -1 +continue_port_index = -1 + +[sub_resource type="Resource" id="Resource_cvf4j"] +script = ExtResource("5_vkpn8") +sheet_id = "localized" +sheet_description = "" +next_sequence_id = 2 +nodes = [SubResource("Resource_ml5yl")] + +[sub_resource type="Resource" id="Resource_gfy7a"] +script = ExtResource("2_48vp3") +item_type = 0 +connected_to_id = -1 +message_speaker_id = "" +message_speaker_variant = "" +message_voice_clip = "" +message_text = "You will now be presented with menu options." +message_voice_clip_locales = {} +message_text_locales = {} +message_hide_on_end = 0 +condition_type = 10 +condition_values = [] +effect_type = 10 +effect_values = [] + +[sub_resource type="Resource" id="Resource_5plx1"] +script = ExtResource("3_dways") +text = "Option 1" +text_locales = { +"": "Option 1" +} +connected_to_id = 1 +is_conditional = true +condition_variable = "" +condition_operator = "=" +condition_value = "" +autodisable_mode = 0 +inactive_mode = 0 + +[sub_resource type="Resource" id="Resource_4ierx"] +script = ExtResource("3_dways") +text = "Second option" +text_locales = { +"": "Second option" +} +connected_to_id = 2 +is_conditional = false +condition_variable = "" +condition_operator = "=" +condition_value = "" +autodisable_mode = 0 +inactive_mode = 0 + +[sub_resource type="Resource" id="Resource_c0esp"] +script = ExtResource("3_dways") +text = "Another cool option" +text_locales = { +"": "Another cool option" +} +connected_to_id = 3 +is_conditional = false +condition_variable = "" +condition_operator = "=" +condition_value = "" +autodisable_mode = 0 +inactive_mode = 0 + +[sub_resource type="Resource" id="Resource_28bfi"] +script = ExtResource("4_f2ijm") +sequence_id = 0 +position = Vector2(40, 20) +comment = "" +items = [SubResource("Resource_gfy7a")] +options = [SubResource("Resource_5plx1"), SubResource("Resource_4ierx"), SubResource("Resource_c0esp")] +continue_sequence_id = -1 +continue_port_index = -1 + +[sub_resource type="Resource" id="Resource_dyln1"] +script = ExtResource("2_48vp3") +item_type = 0 +connected_to_id = -1 +message_speaker_id = "" +message_speaker_variant = "" +message_voice_clip = "" +message_text = "You selected option 1" +message_voice_clip_locales = {} +message_text_locales = {} +message_hide_on_end = 0 +condition_type = 10 +condition_values = [] +effect_type = 10 +effect_values = [] + +[sub_resource type="Resource" id="Resource_v4udn"] +script = ExtResource("2_48vp3") +item_type = 0 +connected_to_id = -1 +message_speaker_id = "" +message_speaker_variant = "" +message_voice_clip = "" +message_text = "This option also has another menu. Select your option:" +message_voice_clip_locales = {} +message_text_locales = {} +message_hide_on_end = 0 +condition_type = 10 +condition_values = [] +effect_type = 10 +effect_values = [] + +[sub_resource type="Resource" id="Resource_kur6e"] +script = ExtResource("3_dways") +text = "Yes" +text_locales = { +"": "Yes" +} +connected_to_id = 0 +is_conditional = false +condition_variable = "" +condition_operator = "=" +condition_value = "" +autodisable_mode = 0 +inactive_mode = 0 + +[sub_resource type="Resource" id="Resource_gi4cx"] +script = ExtResource("3_dways") +text = "Uh... no?" +text_locales = { +"": "Uh... no?" +} +connected_to_id = -1 +is_conditional = false +condition_variable = "" +condition_operator = "=" +condition_value = "" +autodisable_mode = 0 +inactive_mode = 0 + +[sub_resource type="Resource" id="Resource_wn6qm"] +script = ExtResource("4_f2ijm") +sequence_id = 1 +position = Vector2(60, -320) +comment = "" +items = [SubResource("Resource_dyln1"), SubResource("Resource_v4udn")] +options = [SubResource("Resource_kur6e"), SubResource("Resource_gi4cx")] +continue_sequence_id = -1 +continue_port_index = -1 + +[sub_resource type="Resource" id="Resource_qsky1"] +script = ExtResource("2_48vp3") +item_type = 0 +connected_to_id = -1 +message_speaker_id = "" +message_speaker_variant = "" +message_voice_clip = "" +message_text = "You selected the second option" +message_voice_clip_locales = {} +message_text_locales = {} +message_hide_on_end = 0 +condition_type = 10 +condition_values = [] +effect_type = 10 +effect_values = [] + +[sub_resource type="Resource" id="Resource_5vhe7"] +script = ExtResource("4_f2ijm") +sequence_id = 2 +position = Vector2(640, 120) +comment = "" +items = [SubResource("Resource_qsky1")] +options = [] +continue_sequence_id = -1 +continue_port_index = 0 + +[sub_resource type="Resource" id="Resource_xshh7"] +script = ExtResource("2_48vp3") +item_type = 0 +connected_to_id = -1 +message_speaker_id = "" +message_speaker_variant = "" +message_voice_clip = "" +message_text = "You selected the cool option" +message_voice_clip_locales = {} +message_text_locales = {} +message_hide_on_end = 0 +condition_type = 10 +condition_values = [] +effect_type = 10 +effect_values = [] + +[sub_resource type="Resource" id="Resource_pnwrx"] +script = ExtResource("4_f2ijm") +sequence_id = 3 +position = Vector2(640, 340) +comment = "" +items = [SubResource("Resource_xshh7")] +options = [] +continue_sequence_id = -1 +continue_port_index = 0 + +[sub_resource type="Resource" id="Resource_s3y14"] +script = ExtResource("5_vkpn8") +sheet_id = "minimum_menu" +sheet_description = "" +next_sequence_id = 4 +nodes = [SubResource("Resource_28bfi"), SubResource("Resource_wn6qm"), SubResource("Resource_5vhe7"), SubResource("Resource_pnwrx")] + +[sub_resource type="Resource" id="kur6e"] +script = ExtResource("4_f2ijm") +sequence_id = 0 +position = Vector2(0, 0) +comment = "" +items = [] +options = [] +continue_sequence_id = -1 +continue_port_index = 0 + +[sub_resource type="Resource" id="Resource_mjnvi"] +script = ExtResource("5_vkpn8") +sheet_id = "new_sheet_1" +sheet_description = "" +next_sequence_id = 1 +nodes = [SubResource("kur6e")] + +[resource] +script = ExtResource("1_giduu") +version = 1.0 +sheets = { +"1_start_here": SubResource("3"), +"bare_minimum": SubResource("Resource_sxgqo"), +"external_menu": SubResource("15"), +"localized": SubResource("Resource_cvf4j"), +"minimum_menu": SubResource("Resource_s3y14"), +"new_sheet_1": SubResource("Resource_mjnvi") +} diff --git a/addons/madtalk/runtime/madtalk_runtime.gd b/addons/madtalk/runtime/madtalk_runtime.gd new file mode 100644 index 0000000..ea91995 --- /dev/null +++ b/addons/madtalk/runtime/madtalk_runtime.gd @@ -0,0 +1,1377 @@ +# MadTalk Godot Plugin by Fernando Cosentino +# https://github.com/fbcosentino/godot-madtalk +# +# License: MIT +# (But if you can be so kind as to mention the original in your Readme in case +# you base any work on this, I would be very glad :] ) + +extends Node + + +signal dialog_acknowledged +signal text_display_completed +signal speaker_changed(previous_speaker_id, previous_speaker_variant, new_speaker_id, new_speaker_variant) +signal voice_clip_requested(speaker_id, clip_path) + +signal dialog_started(sheet_name, sequence_id) +signal dialog_finished(sheet_name, sequence_id) + +#warning-ignore:unused_signal +signal evaluate_custom_condition(custom_id, custom_data) +#warning-ignore:unused_signal +signal activate_custom_effect(custom_id, custom_data) + +signal dialog_sequence_processed(sheet_name, sequence_id) +signal dialog_item_processed(sheet_name, sequence_id, item_index) + +signal message_text_shown(speaker_id, speaker_variant, message_text, force_hiding) + +signal menu_option_activated(option_index, option_id) +signal time_updated(datetime_dict) + +# Requests the menu to be processed externally, if dialog_buttons_container is not set +# menu_options is an Array of DialogNodeOptionData +# The signal handler can process it as below: +# func _on_MadTalk_external_menu_requested(menu_options): +# for option in menu_options: +# print(option.text) # Prints the string for this option as written in the sheet +# One of the options can then be selected with: +# $MadTalk.select_menu_option( ) +signal external_menu_requested(menu_options: Array, options_metadata: Array) + +signal dialog_aborted + +# Your scene should have a Control-descendant node with all dialog controls +# inside. The top Control should be overlayed on top of all your visual elements +# so it can capture mouse events first. One way to acomplish this is to +# simply have it at the end of your scene tree child list, with "Full Rect" +# layout and the mouse filter set to "Stop". Your scene root node can be of any +# type (doesn't have to descend from Control). It can even be a Spatial in +# a normal 3D project + +## Array containing the character data, one record per character +## All items in this array must be of type MTCharacterData +@export var ListOfCharacters: Array[MTCharacterData] = [] # (Array, Resource) + +@export_group("Layout Nodes") +## This is the main control overlay used to show all dialog activity under +## MadTalk responsibility. Usually a Control with "Full Rect" layout and mouse +## filter set to "Stop", but other scenarios are possible at your discretion. +@export var DialogMainControl: NodePath +@onready var dialog_maincontrol: Control = get_node_or_null(DialogMainControl) + +## The Control-descendant holding all the objects in the text box +## but not the menu. Menu must be able to become visible when this is hidden +## In most simple cases this can be the label itself (or a Panel holding it) +@export var DialogMessageBox: NodePath +@onready var dialog_messagebox: Control = get_node_or_null(DialogMessageBox) + +## The RichTextLabel used to display dialog messages +@export var DialogMessageLabel: NodePath +@onready var dialog_messagelabel: Control = get_node_or_null(DialogMessageLabel) + +@export_subgroup("Speaker") + +## The Label or RichTextLabel used to display the speaker name +@export var DialogSpeakerLabel: NodePath +@onready var dialog_speakerlabel = get_node_or_null(DialogSpeakerLabel) + +## The TextureRect for showing avatars +@export var DialogSpeakerAvatar: NodePath +@onready var dialog_speakeravatar = get_node_or_null(DialogSpeakerAvatar) + +@export_subgroup("Menu") + +## The Control-descendant holding the entire button menu, including containers, +## decorations, etc. Hiding this should be enough to leave no trace of the +## menu on screen +## Having a menu in the game is entirely optional and you can leave menu-related +## items unassigned if you don't use menus in the dialog system +@export var DialogButtonsMenu: NodePath +@onready var dialog_menu = get_node_or_null(DialogButtonsMenu) + +## The container (usually VBoxContainer) which will hold the button instances +## directly. There must be nothing inside this node, this is the lowest +## hierarchy node in the customization/decoration branch of the scene tree, and +## buttons will be created as direct children of this node +## If this node is not assigned, menus can still be used externally via signals +## If this is not assigned and menu is also not handled externally, menu options +## will not work +@export var DialogButtonsContainer: NodePath +@onready var dialog_buttons_container = get_node_or_null(DialogButtonsContainer) + +@export_subgroup("Menu/Visited Buttons") + +## Color to modulate buttons after the option was already selected during +## this gameplay, but before this particular dialog. See also ModulateWhenVisitedInThisDialog +@export var ModulateWhenVisitedPreviously: Color = Color.WHITE + +## Color to modulate buttons after the option was already selected since this +## particular dialog was started. In that case, ignores ModulateWhenVisitedPreviously, +## so you should set both to the same color if they should not be different +@export var ModulateWhenVisitedInThisDialog: Color = Color.WHITE + +@export_subgroup("Menu/Custom Button for Menu") +## (Optional) The PackedScene file containing a button template used to build the menu. +## You do not need this set to use menus. MadTalk will use the default Button +## class if this field is left blank. +## If assigned, must have a signal without ambiguity for direct connection which is emitted +## only when the option is selected. Signal must have no arguments. +## Many actions sharing a same signal having different values for an argument +## (e.g. InputEvent) is not supported. +@export var DialogButtonSceneFile: PackedScene = null + +## If DialogButtonSceneFile is assigned: name of property used to set the text when instancing the node +## (otherwise, leave as is) +@export var DialogButtonTextProperty: String = "text" + +## If DialogButtonSceneFile is assigned: Signal name emitted when the option is confirmed +## (otherwise, leave as is) +@export var DialogButtonSignalName: String = "pressed" + +## If DialogButtonSceneFile is assigned and this property is not blank: +## name of a bool property set to true if the dialog option this button refers to was +## already selected before during this gameplay (in this dialog or not), set to false otherwise +@export var DialogButtonVisitedProperty: String = "" + +## If DialogButtonSceneFile is assigned and this property is not blank: +## name of a bool property set to true if the dialog option this button refers to was +## already selected before since this particular dialog started, set to false otherwise +@export var DialogButtonVisitedInThisDialogProperty: String = "" + +@export_subgroup("") + +@export_group("Animations") + +@export_subgroup("Custom Fade-in Fade-out Animations") + +## AnimationPlayer object used for fade-in and fade-out transition animations +## if not given, animations will simply be disabled and only show() and hide() +## will be used instead +@export var DialogAnimationPlayer: NodePath +@onready var dialog_anims = get_node_or_null(DialogAnimationPlayer) + +# Below are animation names taken from the AnimationPlayer specified above. +# Make sure the fade out animations have valid information in the last frame +# If a track ends before the last frame, duplicate the last keyframe at (or +# after) the last frame. Applying the updates of only the last frame must be +# enough to reset the tracks to their faded-out states + + + +## (If DialogAnimationPlayer is assigned:) +## Animation for dialog fade in - displays the DialogMainControl node entirely +@export var TransitionAnimationName_DialogFadeIn: String = "" +## (If DialogAnimationPlayer is assigned:) +## Animation for dialog fade out - hides the DialogMainControl node entirely +@export var TransitionAnimationName_DialogFadeOut: String = "" +## (If DialogAnimationPlayer is assigned:) +## Animation for message box fade in - displays the DialogMessageBox node +@export var TransitionAnimationName_MessageBoxFadeIn: String = "" +## (If DialogAnimationPlayer is assigned:) +## Animation for message box fade out - hides the DialogMessageBox node +@export var TransitionAnimationName_MessageBoxFadeOut: String = "" +## (If DialogAnimationPlayer is assigned:) +## Animation for menu fade in - displays the DialogButtonsMenu node entirely +@export var TransitionAnimationName_MenuFadeIn: String = "" +## (If DialogAnimationPlayer is assigned:) +## Animation for menu fade out - hides the DialogButtonsMenu node entirely +@export var TransitionAnimationName_MenuFadeOut: String = "" +## (If DialogAnimationPlayer is assigned:) +## Animation for message showing up - e.g. characters gradually being typed +@export var TransitionAnimationName_TextShow: String = "" +## (If DialogAnimationPlayer is assigned:) +## Animation for message disappearing +@export var TransitionAnimationName_TextHide: String = "" + +@export_subgroup("Progressive Text") + + +## Automatically animate text tweening the Label's percent_visible property +@export var AnimateText: bool = true +@export var AnimatedTextMilisecondPerCharacter: float = 50.0 + +## The AudioStreamPlayer containing the sound effect to play when text is being +## shown (example, clicks, key press, beep, etc). If the sound should play +## repeatedly until text is complete (most common case), set the audio stream +## to loop in its import options, otherwise it will play only once. +@export var KeyPressAudioStreamPlayer: NodePath +@onready var sfx_key_press = get_node_or_null(KeyPressAudioStreamPlayer) + +@export_subgroup("Animations Called From Effects") + + +## AnimationPlayer used to play effect animations, when using the effect "Play Animation and Wait" +@export var EffectsAnimationPlayer: NodePath +@onready var effects_anims = get_node_or_null(EffectsAnimationPlayer) + +@export_subgroup("") + +@export_group("Advanced/Message Formatting") + +## Text to be inserted before every message (of every speaker). This will be inserted +## BEFORE any formatting, so you can use all available syntax in it, including BBCode +## and variable parsing, +## e.g.: [b][lb]b[rb][lb]color=yellow[rb]$npc[lb]/color[rb][lb]/b[rb]: [/b] +@export var TextPrefixForAllMessages := "" + +## Text to be appended after every message (of every speaker). Similarly to +## Text Prefix For All Messages, this is appended BEFORE formatting, so all syntax +## is available. If you have BBCode tags left open in the prefix, you should close +## them here. +@export var TextSuffixForAllMessages := "" + +@export_group("Options") + + +## When a sequence ends in a message item, and the sequence has options for a +## menu, after showing the message the user has to interact acknowledging the +## message before the menu is shown. Enabling this option will automatically +## show the menu with the last message. +@export var AutoShowMenuOnLastMessage := false + +@export_subgroup("In-Game Date-Time") + +## (Only relevant if you're using MadTalk to handle in-game date and time.) +## Year base is used to offset the calendar, datetime objects are referenced +## to year 0001, and developer can shift that to any year of convenience to +## match dates to weekdays and leap years. Check docs on github to understand +## how to use this. Default works fine. +@export var YearOfReference: int = 1970 + +@export_subgroup("Debug") + +@export var EnableDebugOutput: bool = false + +@export_subgroup("") +@export_group("") + +# ============================================================================== + + + +class DialogCursor: + var sheet_name : String = "" + var sequence_id : int = 0 + var item_index : int = 0 + + func _init(sheetname, sequenceid, _itemindex): + sheet_name = sheetname + sequence_id = sequenceid + + + + + +# Dialog data - you can customize this if you want, but leaving the default +# should work just fine +var dialog_data = preload("res://addons/madtalk/runtime/madtalk_data.tres") + + +# For each sheet, the array index for each sequence ID is searched only once +# and the map is cached to avoid unnecessary lookup loops +# This variable holds the map +# Structure is: +# sheet_sequence_to_index = { +# "sheet_name": { +# : , +# ... +# }, +# ... +# } +var sheet_sequence_to_index = {} + +# Dictionary mapping character ID to MTCharacterData +var character_data = {} + +# If for some reason a dialog is fired when another one is still going on, the +# new one is added to the queue. Whenever a dialog ends, the queue is checked +# and fired if required +# Structure is: +# dialog_queue = [] +var dialog_queue = [] + +# Flags tracking the state of dialog Control nodes +# we don't rely on properties (like `visible`) since the user might have a +# different logic to display or hide messages (including resizing UI or +# always-visible elements) +var dialog_maincontrol_active = false +var dialog_messagebox_active = false +var dialog_messagelabel_active = false +var dialog_menu_active = false +var dialog_on_text_progress = false +var last_speaker_id = "" # used to identify if speaker_id has just changed +var last_speaker_variant = "" +var last_message_item = null +var last_message_text = "" + +# Stores Tween node for text animation if used +var animated_text_tween = null + +# Holds the target callable to be called when +# evaluating custom conditions +var custom_condition_callable = null + +# Holds the target callable to be called when +# activating custom effects +var custom_effect_callable = null + +# Flags set when a request to abort or skip the dialog are issued +# The difference between them is: when a dialog is skipped, messages are not +# shown anymore, but all the dialog tree is still traversed, all conditions are +# checked, animations are played and effects take place. Aborting stops where it +# is. This is important since game logic can be critically based on those +# effects. E.g. if an effect in the end of a conversation spawns a boss, +# skipping the dialog still spanws the boss, while aborting doesn't. +# Both flags are always cleared when starting a dialog. +var is_abort_requested = false +var is_skip_requested = false + + +# Array mapping menu indices to the dialog IDs they connect to +# Mostly used when using external menus +var menu_connected_ids = [] + +# RandomNumberGenerator used for, well, random numbers +# Global is not used to avoid restricting from other uses +var rng = RandomNumberGenerator.new() + +var msgparser = MessageCodeParser.new() + +func debug_print(text: String) -> void: + if EnableDebugOutput: + print("MADTALK: "+text) + +func bool_as_int(value): + return 0 if (value == 0) else 1 + + +func _ready(): + var condition_connection_array = get_signal_connection_list("evaluate_custom_condition") + if condition_connection_array.size() > 0: + custom_condition_callable = condition_connection_array[0]["callable"] + + var effect_connection_array = get_signal_connection_list("activate_custom_effect") + if effect_connection_array.size() > 0: + custom_effect_callable = effect_connection_array[0]["callable"] + + MadTalkGlobals.set_game_year(YearOfReference) + + rng.randomize() + + if (dialog_anims): + # Sanitizes the animation names ensuring we only have valid animations + + if not dialog_anims is AnimationPlayer: + dialog_anims = null + + else: + if not dialog_anims.has_animation(TransitionAnimationName_DialogFadeIn): + TransitionAnimationName_DialogFadeIn = "" + if not dialog_anims.has_animation(TransitionAnimationName_DialogFadeOut): + TransitionAnimationName_DialogFadeOut = "" + if not dialog_anims.has_animation(TransitionAnimationName_MenuFadeIn): + TransitionAnimationName_MenuFadeIn = "" + if not dialog_anims.has_animation(TransitionAnimationName_MenuFadeOut): + TransitionAnimationName_MenuFadeOut = "" + if not dialog_anims.has_animation(TransitionAnimationName_TextShow): + TransitionAnimationName_TextShow = "" + if not dialog_anims.has_animation(TransitionAnimationName_TextHide): + TransitionAnimationName_TextHide = "" + + dialog_anims.connect("animation_finished", Callable(self, "_on_animation_finished")) + + # Move animations to their respective faded-out states + # or hide dialog main control and menu + if TransitionAnimationName_DialogFadeOut != "": + dialog_anims.play(TransitionAnimationName_DialogFadeOut, -1, 1.0, true) + dialog_anims.advance(0) + else: + dialog_maincontrol.hide() + + if TransitionAnimationName_MenuFadeOut != "": + dialog_anims.play(TransitionAnimationName_MenuFadeOut, -1, 1.0, true) + dialog_anims.advance(0) + else: + if dialog_menu: + dialog_menu.hide() + + if TransitionAnimationName_TextHide != "": + dialog_anims.play(TransitionAnimationName_TextHide, -1, 1.0, true) + dialog_anims.advance(0) + + for char_data_item in ListOfCharacters: + character_data[char_data_item.id] = char_data_item + + if (not dialog_data) or (not dialog_data is DialogData): + # Unfortunately we have an invalid database, discard and make a new one + dialog_data = DialogData.new() + debug_print("Dialog data invalid, using a blank one instead") + + #if AnimateText: + # animated_text_tween = get_tree().create_tween() + # #add_child(animated_text_tween) + # + # animated_text_tween.owner = self + # animated_text_tween.connect("tween_all_completed", Callable(self, "_on_animated_text_tween_completed")) + + if dialog_messagelabel: + dialog_messagelabel.percent_visible = 0 + + MadTalkGlobals.is_during_dialog = false + await get_tree().process_frame + emit_signal("time_updated", MadTalkGlobals.gametime) + + +func _prepare_sheet_sequence_map(sheet_name, sequence_id) -> int: + # Check if we need to lookup and add this sheet/sequence to map + # Happens the first time it is accessed + if not sheet_name in sheet_sequence_to_index: + sheet_sequence_to_index[sheet_name] = {} + if not sequence_id in sheet_sequence_to_index[sheet_name]: + var found = false + for i in range(dialog_data.sheets[sheet_name].nodes.size()): + if dialog_data.sheets[sheet_name].nodes[i].sequence_id == sequence_id: + sheet_sequence_to_index[sheet_name][sequence_id] = i + found = true + break + if not found: + return FAILED + + return OK + + + +func _retrieve_sequence_data(sheet_name: String = "", sequence_id: int = 0) -> Resource: + if not sheet_name in dialog_data.sheets: + debug_print("Requested sheet \"%s\" which doesn't exist" % sheet_name) + return null + var sheet_data = dialog_data.sheets[sheet_name] + + if (not sheet_name in sheet_sequence_to_index) or (not sequence_id in sheet_sequence_to_index[sheet_name]): + debug_print("Sequence ID %s not mapped in sheet \"%s\" when it should" % [sequence_id, sheet_name]) + return null + var sequence_index = sheet_sequence_to_index[sheet_name][sequence_id] + + if sequence_index >= sheet_data.nodes.size(): + debug_print("Sequence index %s out of node range in sheet \"%s\" when it should" % [sequence_index, sheet_name]) + return null + return sheet_data.nodes[sequence_index] + +func _retrieve_item_data(sequence_data, item_index: int = 0) -> Resource: + if not sequence_data: + return null + + if item_index >= sequence_data.items.size(): + return null + return sequence_data.items[item_index] + + + +func _anim_dialog_main_visible(show: bool = true) -> void: + if show: + # Show main dialog interface if not yet visible + if not dialog_maincontrol_active: + dialog_maincontrol_active = true + if TransitionAnimationName_DialogFadeIn != "": + dialog_anims.play(TransitionAnimationName_DialogFadeIn) + await dialog_anims.animation_finished + else: + if dialog_maincontrol: + dialog_maincontrol.show() + + + + else: + # Hide dialog box + if dialog_maincontrol_active: + if TransitionAnimationName_DialogFadeOut != "": + dialog_anims.play(TransitionAnimationName_DialogFadeOut) + await dialog_anims.animation_finished + else: + if dialog_maincontrol: + dialog_maincontrol.hide() + + dialog_maincontrol_active = false + + +func _anim_dialog_messagebox_visible(show: bool = true) -> void: + + if show: + # Show message box + if not dialog_messagebox_active: + dialog_messagebox_active = true + if TransitionAnimationName_MessageBoxFadeIn != "": + dialog_anims.play(TransitionAnimationName_MessageBoxFadeIn) + await dialog_anims.animation_finished + else: + if dialog_messagebox: + dialog_messagebox.show() + + + else: + # Hide message box + if dialog_messagebox_active: + if TransitionAnimationName_MessageBoxFadeOut != "": + dialog_anims.play(TransitionAnimationName_MessageBoxFadeOut) + await dialog_anims.animation_finished + else: + if dialog_messagebox: + dialog_messagebox.hide() + + dialog_messagebox_active = false + + + +func _anim_dialog_text_visible(show: bool = true, percent_visible_range: Array= [0.0, 1.0], skip_animation: bool = false) -> void: + if show: + # Display animation always plays even if text is already visible + dialog_messagelabel_active = true + if AnimateText: + if TransitionAnimationName_TextShow != "": + dialog_anims.play(TransitionAnimationName_TextShow) + # If AnimateText is used, AnimationPlayer is not expected to + # handle text progression, so we wait the normal way + await dialog_anims.animation_finished + + if not skip_animation: + + if dialog_messagelabel: + dialog_on_text_progress = true + dialog_messagelabel.visible_ratio = percent_visible_range[0] + # Tween text progression + if animated_text_tween: + animated_text_tween.kill() + animated_text_tween = create_tween() + animated_text_tween.tween_property(dialog_messagelabel, "visible_ratio", percent_visible_range[1], + AnimatedTextMilisecondPerCharacter * dialog_messagelabel.text.length() * 0.001 + ).set_trans(Tween.TRANS_LINEAR) + animated_text_tween.tween_callback(_on_animated_text_tween_completed) + + if sfx_key_press: + sfx_key_press.play() + await self.text_display_completed # both user interaction or animation_finished are routed here + if sfx_key_press: + sfx_key_press.stop() + dialog_on_text_progress = false + + else: + if dialog_messagelabel: + dialog_messagelabel.percent_visible = 1.0 + + + else: + if TransitionAnimationName_TextShow != "": + if not skip_animation: + dialog_on_text_progress = true + dialog_anims.play(TransitionAnimationName_TextShow) + await self.text_display_completed # both user interaction or animation_finished are routed here + dialog_on_text_progress = false + else: + dialog_anims.assigned_animation = TransitionAnimationName_TextShow + dialog_anims.seek(0) + dialog_anims.advance(dialog_anims.current_animation_length) + + + else: + if dialog_messagelabel_active: + if TransitionAnimationName_TextHide != "": + dialog_anims.play(TransitionAnimationName_TextHide) + await dialog_anims.animation_finished + dialog_messagelabel.visible_ratio = 0 + await get_tree().process_frame + dialog_messagelabel_active = false + + +func _anim_dialog_menu_visible(show: bool = true) -> void: + if show: + # Menu is always regenerated when shown + # So animation is also always played + dialog_menu_active = true + if TransitionAnimationName_MenuFadeIn != "": + dialog_anims.play(TransitionAnimationName_MenuFadeIn) + await dialog_anims.animation_finished + else: + if dialog_menu: + dialog_menu.show() + + else: + if dialog_menu_active: + if TransitionAnimationName_MenuFadeOut != "": + dialog_anims.play(TransitionAnimationName_MenuFadeOut) + await dialog_anims.animation_finished + else: + if dialog_menu: + dialog_menu.hide() + + dialog_menu_active = false + + +func _assemble_button(index: int, id: int, text: String, parent_node: Node, option_metadata: Dictionary) -> Node: + # Invalid metadata defaults to enabled button + var is_btn_enabled: bool = (option_metadata["enabled"] != false) if ("enabled" in option_metadata) else true + var is_btn_visited: bool = ("visited" in option_metadata) and (option_metadata["visited"]) + var is_btn_visited_dialog: bool = ("visited_dialog" in option_metadata) and (option_metadata["visited_dialog"]) + + var is_custom_button = true if DialogButtonSceneFile else false # DialogButtonSceneFile is not boolean, is_custom_button is + + var new_btn = DialogButtonSceneFile.instantiate() if DialogButtonSceneFile else Button.new() + + parent_node.add_child(new_btn) + new_btn.set(DialogButtonTextProperty, text) + + if is_custom_button: + if DialogButtonVisitedProperty != "": + new_btn.set(DialogButtonVisitedProperty, is_btn_visited) + if DialogButtonVisitedInThisDialogProperty != "": + new_btn.set(DialogButtonVisitedInThisDialogProperty, is_btn_visited_dialog) + + if is_btn_visited_dialog: + new_btn.modulate *= ModulateWhenVisitedInThisDialog + elif is_btn_visited: + new_btn.modulate *= ModulateWhenVisitedPreviously + + new_btn.disabled = not is_btn_enabled + + # _on_menu_button_pressed() is used to multiplex all button signals into one + new_btn.connect(DialogButtonSignalName, _on_menu_button_pressed.bind(index, id)) + + return new_btn + + +func _assemble_menu(options: Array, options_metadata: Array) -> int: + # options = [] + # Fields: + # DialogNodeOptionData.text : String = "" + # DialogNodeOptionData.text_locales : Dictionary (locale String: text String) + # read via get_localized_text() + # DialogNodeOptionData.connected_to_id : int = -1 + # + # options_metadata = [] + # Fields: + # "enabled" : bool = true -> if this option can be selected + # "visited : bool -> if this option was already selected before during this gameplay + # "visited_dialog : -> if this option was already selected since starting this dialog + # + # options[index] and options_metadata[index] share the same index + + if not dialog_buttons_container: + debug_print("Menu button container not set") + return 0 + + # Remove any previous buttons + var old_buttons = dialog_buttons_container.get_children() + for btn in old_buttons: + dialog_buttons_container.remove_child(btn) + btn.queue_free() + + # Add new buttons + var count = 0 + menu_connected_ids.clear() + #for option_item in options: + for i: int in range(options.size()): + var option_item: DialogNodeOptionData = options[i] + var item_text = option_item.get_localized_text() # option_item.text + menu_connected_ids.append(item_text) + var _new_btn = _assemble_button(i, option_item.connected_to_id, item_text, dialog_buttons_container, options_metadata[i]) + count += 1 + + return count + + +func _check_option_condition(var_name: String, operator: String, given_value: String) -> bool: + var result = false + var var_value = MadTalkGlobals.get_variable(var_name, 0) + + var value = given_value.to_float() if given_value.is_valid_float() else MadTalkGlobals.get_variable(given_value, 0) + + match operator: + "=": + result = (var_value == value) + "!=": + result = (var_value != value) + ">": + result = (var_value > value) + ">=": + result = (var_value >= value) + "<": + result = (var_value < value) + "<=": + result = (var_value <= value) + _: + result = false + + return result + + +func set_variable(variable_name: String, value) -> void: + MadTalkGlobals.set_variable(variable_name, value) + + +func get_variable(variable_name: String): + return MadTalkGlobals.get_variable(variable_name) + + +func start_dialog(sheet_name: String, sequence_id : int = 0) -> void: + if MadTalkGlobals.is_during_dialog: + dialog_queue.append( DialogCursor.new(sheet_name, sequence_id, 0) ) + return + + # Start processing dialog. This flag will cause any other calls to be queued + # Other in-game effects might also read this flag (such as pausing enemies) + MadTalkGlobals.is_during_dialog = true + # `yield` statements from now on are safe, even nested into method calls + # ----------------------------------------------------- + + is_abort_requested = false + is_skip_requested = false + + MadTalkGlobals.reset_options_visited_dialog() + + emit_signal("dialog_started", sheet_name, sequence_id) + + # The "dialog_started" signal can be used to prevent some dialogs by + # skipping or aborting dialogs before they start + # This is useful when player repeats a level from a checkpoint, you still + # need the effects, but not the text, so skip still calls the method below + if (not is_abort_requested): + await run_dialog_sequence(sheet_name, sequence_id) + + MadTalkGlobals.is_during_cinematic = true + + # Hide menu if needed + if dialog_menu_active: + await _anim_dialog_menu_visible(false) + + # Hide text if needed + if dialog_messagelabel_active: + await _anim_dialog_text_visible(false) + + # hide message box if needed + if dialog_messagebox_active: + await _anim_dialog_messagebox_visible(false) + + # Hide dialog if needed + if dialog_maincontrol_active: + await _anim_dialog_main_visible(false) + + MadTalkGlobals.is_during_cinematic = false + + + # ----------------------------------------------------- + # Stop processing dialog. Next calls will run immediately. + # There must be no `yield` statements from now on to the end of the method + MadTalkGlobals.is_during_dialog = false + + # If something is queued, process it before anything else calls this again + if dialog_queue.size() > 0: + var dialog_cursor = dialog_queue.pop_front() + if dialog_cursor: + start_dialog(dialog_cursor.sheet_name, dialog_cursor.sequence_id) + + +func run_dialog_sequence(sheet_name: String, sequence_id : int = 0) -> void: + # Asking to run an invalid dialog fails silently + if not sheet_name in dialog_data.sheets: + await get_tree().process_frame + debug_print("Sheet \"%s\" not found" % sheet_name) + return + + # Make sure we have the node mapped + if _prepare_sheet_sequence_map(sheet_name, sequence_id) == FAILED: + await get_tree().process_frame + debug_print("Mapping sheet \"%s\", sequence %s failed" % [sheet_name, str(sequence_id)]) + return + + await run_dialog_item(sheet_name, sequence_id) + + emit_signal("dialog_sequence_processed", sheet_name, sequence_id) + + + +func run_dialog_item(sheet_name: String = "", sequence_id: int = 0, item_index: int = 0) -> void: + + var sequence_data : DialogNodeData = _retrieve_sequence_data(sheet_name, sequence_id) + var dialog_item : DialogNodeItemData = _retrieve_item_data(sequence_data, item_index) + var should_run_next_item := true + + var is_last_item: bool = (item_index >= (sequence_data.items.size()-1)) + var should_auto_progress_message: bool = (is_last_item and AutoShowMenuOnLastMessage and (sequence_data.options.size() > 0)) + + if is_abort_requested: + emit_signal("dialog_aborted") + + elif sequence_data: # Sanity check + + if dialog_item: + # We still have an item to process inside this sequence + + match dialog_item.item_type: + DialogNodeItemData.ItemTypes.Message: + # dialog_item.message_speaker_id : String + # dialog_item.message_text : String + # message_text can use locale, so it is retrieved via + # dialog_item.get_localized_text() + + # We show the message here, but we don't hide, since the + # player might want to re-read the last message when a set + # of options is presented in the end of the sequence + + # Skipping a dialog before a message is shown prevents the + # messages from showing up. But if this sequence has a menu + # we have to show the last message, so we still assing all + # the values, we just don't play the show animations or + # wait for confirmation + + MadTalkGlobals.is_during_cinematic = true + + # If text still on screen, hide text + await _anim_dialog_text_visible(false) + + # if speaker has changed, we hide dialog to show again + if (dialog_item.message_speaker_id != last_speaker_id) or (dialog_item.message_speaker_variant != last_speaker_variant): + await _anim_dialog_messagebox_visible(false) + emit_signal("speaker_changed", last_speaker_id, last_speaker_variant, dialog_item.message_speaker_id, dialog_item.message_speaker_variant) + + MadTalkGlobals.is_during_cinematic = false + + # Modify values + var speaker_name = character_data[dialog_item.message_speaker_id].name \ + if (dialog_item.message_speaker_id in character_data) \ + else dialog_item.message_speaker_id + + if dialog_speakerlabel: + dialog_speakerlabel.text = speaker_name + + var dialog_message_data = msgparser.process( + TextPrefixForAllMessages + dialog_item.get_localized_text() + TextSuffixForAllMessages, + MadTalkGlobals.variables + ) + var dialog_message_text = dialog_message_data[0] + var dialog_message_anim_pause_percentages = dialog_message_data[1] + + dialog_message_text = dialog_message_text.replace("$time", MadTalkGlobals.gametime["time"]) + dialog_message_text = dialog_message_text.replace("$date_inv", MadTalkGlobals.gametime["date_inv"]) + dialog_message_text = dialog_message_text.replace("$date", MadTalkGlobals.gametime["date"]) + dialog_message_text = dialog_message_text.replace("$weekday", MTDefs.WeekdayNames[MadTalkGlobals.gametime["weekday"]] ) + dialog_message_text = dialog_message_text.replace("$wday", MTDefs.WeekdayNamesShort[MadTalkGlobals.gametime["weekday"]] ) + + # Should be last replacement, to avoid things in speaker nane to be mistaken for formatting + dialog_message_text = dialog_message_text.replace("$speaker_id", dialog_item.message_speaker_id ) + dialog_message_text = dialog_message_text.replace("$speaker_name", speaker_name ) + + if dialog_messagelabel: + dialog_messagelabel.text = dialog_message_text + + if dialog_speakeravatar: + if (dialog_item.message_speaker_id in character_data): + # are we using a valid variant? + var char_variants = character_data[dialog_item.message_speaker_id].variants + if (dialog_item.message_speaker_variant != "") and (dialog_item.message_speaker_variant in char_variants) \ + and (char_variants[dialog_item.message_speaker_variant] is Texture2D): + dialog_speakeravatar.texture = char_variants[dialog_item.message_speaker_variant] + # Otherwise use default avatar + else: + dialog_speakeravatar.texture = character_data[dialog_item.message_speaker_id].avatar + else: + dialog_speakeravatar.texture = null + + + if not is_skip_requested: + + MadTalkGlobals.is_during_cinematic = true + + emit_signal("message_text_shown", + dialog_item.message_speaker_id, + dialog_item.message_speaker_variant, + dialog_message_text, + dialog_item.message_hide_on_end + ) + + # Show main dialog interface if not yet visible + await _anim_dialog_main_visible(true) + + # Show message box if not visible yet + await _anim_dialog_messagebox_visible(true) + + # Request voice clip to be played + # Signal is emitted even when clip path is blank, so the + # previous audio can be stopped if this is desired + emit_signal("voice_clip_requested", dialog_item.message_speaker_id, dialog_item.get_localized_voice_clip()) + + MadTalkGlobals.is_during_cinematic = false + + var previous_percent_visible = 0.0 + + # If there are no pauses, we will have + # dialog_message_anim_pause_percentages = [1.0] + + # If skip was requested after we enter this match case, + # we just don't wait for user confirmation to dismiss + + for percent_visible in dialog_message_anim_pause_percentages: + # If skip was requested between pauses, process here + if is_skip_requested or is_abort_requested: + break + + # Show text + await _anim_dialog_text_visible(true, + [previous_percent_visible, percent_visible] + ) # Handles animation skip internally + + if dialog_messagelabel: + dialog_messagelabel.visible_ratio = percent_visible + previous_percent_visible = percent_visible + + # Confirmation to dismiss the message + if (not is_skip_requested) and (not is_abort_requested) and (not should_auto_progress_message): + await self.dialog_acknowledged + + + if (dialog_item.message_hide_on_end != 0) or is_skip_requested: + # We hide this message box as explicitly requested + MadTalkGlobals.is_during_cinematic = true + await _anim_dialog_text_visible(false) + await _anim_dialog_messagebox_visible(false) + MadTalkGlobals.is_during_cinematic = false + + # Else: we do not hide the message straight away as next step + # could be showing options. We hide when we leave the sequence + last_speaker_id = dialog_item.message_speaker_id + last_speaker_variant = dialog_item.message_speaker_variant + last_message_item = dialog_item + last_message_text = dialog_message_text + + + + DialogNodeItemData.ItemTypes.Condition: + # dialog_item.condition_type : MTDefs.ConditionTypes + # dialog_item.condition_values : Array + # dialog_item.connected_to_id : int = -1 + + # Test the condition + var result = await evaluate_condition(dialog_item.condition_type, dialog_item.condition_values) + + if not result: + # Condition failed, we have to branch out of this sequence + should_run_next_item = false + + # If something is connected, we jump + # If nothing is connected, this simply means aboting + if dialog_item.connected_to_id > -1: + await run_dialog_sequence(sheet_name, dialog_item.connected_to_id) + + + + DialogNodeItemData.ItemTypes.Effect: + # dialog_item.effect_type : MTDefs.EffectTypes + # dialog_item.effect_values : Array + + # "Change sheet" effect is an exception and is implemented + # directly in this block since it is scope-dependant + if dialog_item.effect_type == MTDefs.EffectTypes.ChangeSheet: + var new_sheet_name = dialog_item.effect_values[0] + var new_sequence_id = dialog_item.effect_values[1] + + # Jump to sheet if valid, aborting dialog otherwise + should_run_next_item = false + if new_sheet_name in dialog_data.sheets: + await run_dialog_sequence(new_sheet_name, new_sequence_id) + + # Animation and custom effects are also exception since + # involves pausing the sequence until it finishes + elif dialog_item.effect_type == MTDefs.EffectTypes.WaitAnim: + var anim_name = dialog_item.effect_values[0] + # Animation must exist and not be loop + if effects_anims and (effects_anims.has_animation(anim_name)) and ( + not effects_anims.get_animation(anim_name).loop + ): + effects_anims.play(anim_name) + MadTalkGlobals.is_during_cinematic = true + await effects_anims.animation_finished + MadTalkGlobals.is_during_cinematic = false + + elif dialog_item.effect_type == MTDefs.EffectTypes.Custom: + if custom_effect_callable: + var custom_id = dialog_item.effect_values[0] + var custom_data_array = MadTalkGlobals.split_string_autodetect_rn(dialog_item.effect_values[1]) + + #emit_signal("activate_custom_effect", custom_id, custom_data_array) + await custom_effect_callable.call(custom_id, custom_data_array) + + else: + # All other effects have global scope and are + # implemented in a separate method + activate_effect(dialog_item.effect_type, dialog_item.effect_values) + + _: + debug_print("Invalid item type for item %s in sequence ID %s at sheet \"%s\"" % [item_index, sequence_id, sheet_name]) + + + emit_signal("dialog_item_processed", sheet_name, sequence_id, item_index) + + # We don't check if item_index is the last one, since the first + # invalid index will be properly handled in following call + # causing the sequence to be gracefully concluded (see below) + if should_run_next_item: + await run_dialog_item(sheet_name, sequence_id, item_index + 1) + + + else: # All items processed + + # Running an item_index higher than last valid one means we + # finished the item list and have to process the end of sequence + # This means showing options or routing to the "continue" ID + + # We process menu options even if dialog_buttons_container is not + # assigned, as the menu might be handled externally via signals + + # Even if we have options, some of them can be conditional, and + # it might be the case all of them are and no item is left to + # be shown at the menu. So we have to buffer a list + var options_to_show := [] + var options_metadata := [] + menu_connected_ids.clear() + + for option_item: DialogNodeOptionData in sequence_data.options: + var conditions_passed := true + if option_item.is_conditional: + # Case 1: is auto-disable and already visited + match option_item.autodisable_mode: + option_item.AutodisableModes.RESET_ON_SHEET_RUN: + if (MadTalkGlobals.get_option_visited_dialog(option_item)): + conditions_passed = false + + option_item.AutodisableModes.ALWAYS: + if (MadTalkGlobals.get_option_visited_global(option_item)): + conditions_passed = false + + # Case 2: variable conditions + if conditions_passed: + conditions_passed = _check_option_condition( + option_item.condition_variable, + option_item.condition_operator, + option_item.condition_value + ) + + # We show button if it's active OR it should be shown anyway but as disabled + if (conditions_passed) or (option_item.inactive_mode == option_item.InactiveMode.DISABLED): + options_to_show.append(option_item) + menu_connected_ids.append(option_item.connected_to_id) + options_metadata.append({ + "enabled": conditions_passed, + "visited": MadTalkGlobals.get_option_visited_global(option_item), + "visited_dialog": MadTalkGlobals.get_option_visited_dialog(option_item) + }) + + # Now options_to_show contains options to show (disabled or not) + # of which the ones in options_disabled should be disabled + + # Process options and build menu only with remaining items + if options_to_show.size() > 0: + # When there are menu options, "continue" is not used + + # If we skipped dialog, there are no visible messages. We show + # last one back + if is_skip_requested and (last_message_item.message_hide_on_end == 0): + + MadTalkGlobals.is_during_cinematic = true + + emit_signal("message_text_shown", + last_message_item.message_speaker_id, + last_message_item.message_speaker_variant, + last_message_text, + last_message_item.message_hide_on_end + ) + + # Show main dialog interface if not yet visible + await _anim_dialog_main_visible(true) + + # Show message box if not visible yet + await _anim_dialog_messagebox_visible(true) + + # We do not play voice + + MadTalkGlobals.is_during_cinematic = false + + # Show text + await _anim_dialog_text_visible(true, [0, 1], true) # skips to end + + + MadTalkGlobals.is_during_cinematic = true + + # Internal menu logic (via dialog_buttons_container) + if dialog_buttons_container: + # Make sure menu is not visible + if dialog_menu_active: + await _anim_dialog_menu_visible(false) + # Regenerate buttons + var __= _assemble_menu(options_to_show, options_metadata) + # Show menu + await _anim_dialog_menu_visible(true) + + else: + external_menu_requested.emit(options_to_show, options_metadata) + + MadTalkGlobals.is_during_cinematic = false + + if dialog_buttons_container: + # There is always at least one optiong there otherwise we + # would not be into this `if` + dialog_buttons_container.get_child(0).grab_focus() + + # Wait for an option + # Selecting an option is mandatory and dialog halts until then + + var option_res = await self.menu_option_activated + var option_index = option_res[0] + var option_id = option_res[1] + + # Hide menu + if dialog_buttons_container: + MadTalkGlobals.is_during_cinematic = true + await _anim_dialog_menu_visible(false) + MadTalkGlobals.is_during_cinematic = false + + if option_id > -1: + var selected_option: DialogNodeOptionData = options_to_show[option_index] + MadTalkGlobals.set_option_visited(selected_option, true) + + # jumping to another sequence might also be same speaker + # so we don't hide anything yet + await run_dialog_sequence(sheet_name, option_id) + else: + last_speaker_id = "" + last_speaker_variant = "" + emit_signal("dialog_finished", sheet_name, sequence_id) + + + elif sequence_data.continue_sequence_id > -1: + # "continue" ID might also be same speaker so we don't hide anything yet + await run_dialog_sequence(sheet_name, sequence_data.continue_sequence_id) + + else: + last_speaker_id = "" + last_speaker_variant = "" + emit_signal("dialog_finished", sheet_name, sequence_id) + + else: + debug_print("Invalid sequence \"%s\" in sheet \"%s\"" % [sequence_id, sheet_name]) + + + + +func evaluate_condition(condition_type, condition_values): + # Returns true if condition is met, false otherwise + # May or may not morph into coroutine, caller must check with: + # if result is GDScriptFunctionState: + # result = yield(result, "completed") + + match condition_type: + MTDefs.ConditionTypes.Random: + var random_value = rng.randf_range(0.0, 100.0) + return (random_value < condition_values[0]) + + MTDefs.ConditionTypes.VarBool: + var var_value = bool_as_int(MadTalkGlobals.get_variable(condition_values[0], 0)) + var expected_value = bool_as_int(condition_values[1]) + return (var_value == expected_value) + + MTDefs.ConditionTypes.VarAtLeast: + var var_value = float(MadTalkGlobals.get_variable(condition_values[0], 0.0)) + return (var_value >= float(condition_values[1])) + + MTDefs.ConditionTypes.VarUnder: + var var_value = float(MadTalkGlobals.get_variable(condition_values[0], 0.0)) + return (var_value < float(condition_values[1])) + + MTDefs.ConditionTypes.VarString: + var var_value = str(MadTalkGlobals.get_variable(condition_values[0], "")) + return (var_value == str(condition_values[1])) + + MTDefs.ConditionTypes.Time: + var min_time = MadTalkGlobals.split_time(condition_values[0]) + var target_min_time_float = MadTalkGlobals.time_to_float(min_time[0], min_time[1]) + + var max_time = MadTalkGlobals.split_time(condition_values[1]) + var target_max_time_float = MadTalkGlobals.time_to_float(max_time[0], max_time[1]) + + var curr_time_float = MadTalkGlobals.time_to_float( + MadTalkGlobals.gametime["hour"], + MadTalkGlobals.gametime["minute"] + ) + + # Normal range - e.g. 6:00-18:00 + if target_min_time_float < target_max_time_float: + return (curr_time_float >= target_min_time_float) and (curr_time_float <= target_max_time_float) + # Inverted range - e.g. 18:00-6:00 + else: + return (curr_time_float >= target_min_time_float) or (curr_time_float <= target_max_time_float) + + MTDefs.ConditionTypes.DayOfWeek: + var target_min_day = condition_values[0] + var target_max_day = condition_values[1] + var curr_day = MadTalkGlobals.gametime["weekday"] + + # Normal range - e.g. Mon-Fri + if target_min_day < target_max_day: + return (curr_day >= target_min_day) and (curr_day <= target_max_day) + # Inverted range - e.g. Sat-Sun + else: + return (curr_day >= target_min_day) or (curr_day <= target_max_day) + + MTDefs.ConditionTypes.DayOfMonth: + var target_min_day = condition_values[0] + var target_max_day = condition_values[1] + var curr_day = MadTalkGlobals.gametime["day"] + + # Normal range - e.g. 14 - 21 + if target_min_day < target_max_day: + return (curr_day >= target_min_day) and (curr_day <= target_max_day) + # Inverted range - e.g. 25 - 14 + else: + return (curr_day >= target_min_day) or (curr_day <= target_max_day) + + MTDefs.ConditionTypes.Date: + var target_min_day_month = MadTalkGlobals.split_date(condition_values[0]) + var target_min_intdate = MadTalkGlobals.date_to_int(target_min_day_month[0], target_min_day_month[1], 1) + + var target_max_day_month = MadTalkGlobals.split_date(condition_values[1]) + var target_max_intdate = MadTalkGlobals.date_to_int(target_max_day_month[0], target_max_day_month[1], 1) + + var curr_intdate = MadTalkGlobals.date_to_int(MadTalkGlobals.gametime["day"], MadTalkGlobals.gametime["month"], 1) + + # Normal range - e.g. 15/02 - 25/03 + if target_min_intdate < target_max_intdate: + return (curr_intdate >= target_min_intdate) and (curr_intdate <= target_max_intdate) + # Inverted range - e.g. 25/12 - 28/02 + else: + return (curr_intdate >= target_min_intdate) or (curr_intdate <= target_max_intdate) + + MTDefs.ConditionTypes.ElapsedFromVar: + var delta_time = float(condition_values[0]) + var target_time = MadTalkGlobals.get_variable(condition_values[1], 0) + var delta_currently_elapsed = MadTalkGlobals.time - target_time + + return (delta_currently_elapsed >= delta_time) + + MTDefs.ConditionTypes.Custom: + if (not custom_condition_callable): + return false + + var custom_id = condition_values[0] + var custom_data_array = MadTalkGlobals.split_string_autodetect_rn(condition_values[1]) + + var result = await custom_condition_callable.call(custom_id, custom_data_array) + + if (result is int) or (result is float): + return (result != 0) + + elif result is bool: + return result + + else: + return false + + _: + return false + + +func activate_effect(effect_type, effect_values): + match effect_type: + MTDefs.EffectTypes.ChangeSheet: + # This effect is an exception and is not implemented here + pass + + MTDefs.EffectTypes.SetVariable: + MadTalkGlobals.set_variable(effect_values[0], float(effect_values[1])) + + MTDefs.EffectTypes.AddVariable: + var old_value = float(MadTalkGlobals.get_variable(effect_values[0])) + MadTalkGlobals.set_variable(effect_values[0], old_value + float(effect_values[1])) + + MTDefs.EffectTypes.RandomizeVariable: + var range_min = float(effect_values[1]) + var range_max = float(effect_values[2]) + MadTalkGlobals.set_variable(effect_values[0], + rng.randf_range(range_min, range_max) + ) + + MTDefs.EffectTypes.StampTime: + MadTalkGlobals.set_variable(effect_values[0], MadTalkGlobals.time) + + MTDefs.EffectTypes.SpendMinutes: + MadTalkGlobals.time += int(round(float(effect_values[0]) * 60)) # value * 60s + MadTalkGlobals.update_gametime_dict() + emit_signal("time_updated", MadTalkGlobals.gametime) + + MTDefs.EffectTypes.SpendDays: + MadTalkGlobals.time += int(round(float(effect_values[0]) * 24*60*60)) # value * 24h * 60m * 60s + MadTalkGlobals.update_gametime_dict() + emit_signal("time_updated", MadTalkGlobals.gametime) + + MTDefs.EffectTypes.SkipToTime: + MadTalkGlobals.time = MadTalkGlobals.next_time_at_time(effect_values[0]) + MadTalkGlobals.update_gametime_dict() + emit_signal("time_updated", MadTalkGlobals.gametime) + + MTDefs.EffectTypes.SkipToWeekDay: + MadTalkGlobals.time = MadTalkGlobals.next_time_at_weekday(effect_values[0]) + MadTalkGlobals.update_gametime_dict() + emit_signal("time_updated", MadTalkGlobals.gametime) + + MTDefs.EffectTypes.Custom: + # This effect is an exception and is not implemented here + pass + + +func dialog_acknowledge(): + # Called externally by UI to confirm a dialog message and progress dialog + if dialog_on_text_progress: + # This happened during text progression + if AnimateText: + if animated_text_tween: + animated_text_tween.kill() + #dialog_messagelabel.percent_visible = 1.0 # moved to run_dialog_item() + + else: + if (dialog_anims.current_animation == TransitionAnimationName_TextShow) and dialog_anims.is_playing(): + dialog_anims.advance(dialog_anims.current_animation_length - dialog_anims.current_animation_position) + + emit_signal("text_display_completed") + elif not MadTalkGlobals.is_during_cinematic: + emit_signal("dialog_acknowledged") + +func dialog_abort(): + is_abort_requested = true + dialog_acknowledge() + +func dialog_skip(): + is_skip_requested = true + dialog_acknowledge() + +func change_scene_to_file(scene_path: String) -> void: + # Convenience method giving access to get_tree().change_scene() + # as a node method in the scene tree + # This exists so you can connect signals from animation tracks in + # AnimationPlayer's directly to cause scene changes + var __= get_tree().change_scene_to_file(scene_path) + +func select_menu_option(index: int): + if index < menu_connected_ids.size(): + menu_option_activated.emit(index, menu_connected_ids[index]) + + +func _on_animation_finished(anim_name): + if anim_name == TransitionAnimationName_TextShow: + emit_signal("text_display_completed") + +func _on_animated_text_tween_completed(): + emit_signal("text_display_completed") + + +func _on_menu_button_pressed(index, id): + menu_option_activated.emit(index, id) + +func get_sheet_names(): + return dialog_data.sheets.keys() diff --git a/addons/madtalk/runtime/madtalk_runtime.gd.uid b/addons/madtalk/runtime/madtalk_runtime.gd.uid new file mode 100644 index 0000000..015b4fc --- /dev/null +++ b/addons/madtalk/runtime/madtalk_runtime.gd.uid @@ -0,0 +1 @@ +uid://c6av3xe4m2ujl

  2. )qybxf5_GULNC&I0!3ru* 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 Y)$8%~fAxRAc4)-E{ogxYePQN*0kh|Uc>n+a literal 0 HcmV?d00001 diff --git a/addons/madtalk/fonts/FreeSansBold.ttf.import b/addons/madtalk/fonts/FreeSansBold.ttf.import new file mode 100644 index 0000000..af6bcb0 --- /dev/null +++ b/addons/madtalk/fonts/FreeSansBold.ttf.import @@ -0,0 +1,35 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://c8t8f2e12iwo6" +path="res://.godot/imported/FreeSansBold.ttf-b8ffbd5147894f3e41ee0f2feb937849.fontdata" + +[deps] + +source_file="res://addons/madtalk/fonts/FreeSansBold.ttf" +dest_files=["res://.godot/imported/FreeSansBold.ttf-b8ffbd5147894f3e41ee0f2feb937849.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +disable_embedded_bitmaps=true +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=1 +keep_rounding_remainders=true +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/addons/madtalk/fonts/FreeSansBoldOblique.ttf b/addons/madtalk/fonts/FreeSansBoldOblique.ttf new file mode 100644 index 0000000000000000000000000000000000000000..dde7f32f863dba69be2e9d0a23d67ed2ae5aedf5 GIT binary patch literal 301188 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ξtgq^qK=bPH-zhS59BlO&FfnHZ~08c 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 literal 0 HcmV?d00001 diff --git a/addons/madtalk/fonts/FreeSansBoldOblique.ttf.import b/addons/madtalk/fonts/FreeSansBoldOblique.ttf.import new file mode 100644 index 0000000..e8f7030 --- /dev/null +++ b/addons/madtalk/fonts/FreeSansBoldOblique.ttf.import @@ -0,0 +1,35 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://b0p0wjgy1i2k2" +path="res://.godot/imported/FreeSansBoldOblique.ttf-643172fd931b6b5de5f8b69845858859.fontdata" + +[deps] + +source_file="res://addons/madtalk/fonts/FreeSansBoldOblique.ttf" +dest_files=["res://.godot/imported/FreeSansBoldOblique.ttf-643172fd931b6b5de5f8b69845858859.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +disable_embedded_bitmaps=true +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=1 +keep_rounding_remainders=true +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/addons/madtalk/fonts/FreeSansBold_tiny.tres b/addons/madtalk/fonts/FreeSansBold_tiny.tres new file mode 100644 index 0000000..a3355c3 --- /dev/null +++ b/addons/madtalk/fonts/FreeSansBold_tiny.tres @@ -0,0 +1,10 @@ +[gd_resource type="FontFile" load_steps=2 format=2] + +[ext_resource path="res://addons/madtalk/fonts/FreeSansBold.ttf" type="FontFile" id=1] + +[resource] +size = 9 +use_filter = true +extra_spacing_top = -4 +extra_spacing_bottom = -4 +font_data = ExtResource( 1 ) diff --git a/addons/madtalk/fonts/FreeSansOblique.ttf b/addons/madtalk/fonts/FreeSansOblique.ttf new file mode 100644 index 0000000000000000000000000000000000000000..74528857280a2f684bca3e8550f3748f596c3c91 GIT binary patch literal 441432 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