From c130c470427752ca5bc3e4b991973fe908254a2e Mon Sep 17 00:00:00 2001 From: Zacharie Guet Date: Sat, 10 Jan 2026 13:00:58 +0100 Subject: [PATCH] ajout du plugin dialogical --- addons/dialogic/Core/DialogicGameHandler.gd | 469 ++++++ .../dialogic/Core/DialogicGameHandler.gd.uid | 1 + addons/dialogic/Core/DialogicResourceUtil.gd | 376 +++++ .../dialogic/Core/DialogicResourceUtil.gd.uid | 1 + addons/dialogic/Core/DialogicUtil.gd | 803 +++++++++ addons/dialogic/Core/DialogicUtil.gd.uid | 1 + addons/dialogic/Core/Dialogic_Subsystem.gd | 41 + .../dialogic/Core/Dialogic_Subsystem.gd.uid | 1 + addons/dialogic/Core/index_class.gd | 152 ++ addons/dialogic/Core/index_class.gd.uid | 1 + .../char_edit_p_section_exports.gd | 91 ++ .../char_edit_p_section_exports.gd.uid | 1 + .../char_edit_p_section_exports.tscn | 16 + .../char_edit_p_section_layout.gd | 44 + .../char_edit_p_section_layout.gd.uid | 1 + .../char_edit_p_section_layout.tscn | 65 + .../char_edit_p_section_main.gd | 101 ++ .../char_edit_p_section_main.gd.uid | 1 + .../char_edit_p_section_main.tscn | 72 + .../char_edit_p_section_main_exports.gd | 80 + .../char_edit_p_section_main_exports.gd.uid | 1 + .../char_edit_p_section_main_exports.tscn | 15 + .../char_edit_section_general.gd | 53 + .../char_edit_section_general.gd.uid | 1 + .../char_edit_section_general.tscn | 114 ++ .../char_edit_section_portraits.gd | 76 + .../char_edit_section_portraits.gd.uid | 1 + .../char_edit_section_portraits.tscn | 71 + .../CharacterEditor/character_editor.gd | 694 ++++++++ .../CharacterEditor/character_editor.gd.uid | 1 + .../CharacterEditor/character_editor.tscn | 456 ++++++ .../character_editor_main_settings_section.gd | 42 + ...racter_editor_main_settings_section.gd.uid | 1 + ...racter_editor_portrait_settings_section.gd | 48 + ...er_editor_portrait_settings_section.gd.uid | 1 + .../character_editor_portrait_tree.gd | 142 ++ .../character_editor_portrait_tree.gd.uid | 1 + .../character_prefix_suffix.gd | 79 + .../character_prefix_suffix.gd.uid | 1 + .../character_prefix_suffix.tscn | 48 + .../CharacterEditor/portrait_scene_browser.gd | 126 ++ .../portrait_scene_browser.gd.uid | 1 + .../portrait_scene_browser.tscn | 260 +++ addons/dialogic/Editor/Common/BrowserItem.gd | 86 + .../dialogic/Editor/Common/BrowserItem.gd.uid | 1 + .../dialogic/Editor/Common/BrowserItem.tscn | 154 ++ addons/dialogic/Editor/Common/DCSS.gd | 47 + addons/dialogic/Editor/Common/DCSS.gd.uid | 1 + .../ReferenceManager_AddReplacementPanel.gd | 122 ++ ...eferenceManager_AddReplacementPanel.gd.uid | 1 + .../Editor/Common/TitleBgStylebox.tres | 8 + .../Editor/Common/broken_reference_manager.gd | 391 +++++ .../Common/broken_reference_manager.gd.uid | 1 + .../Editor/Common/hint_tooltip_icon.gd | 12 + .../Editor/Common/hint_tooltip_icon.gd.uid | 1 + .../Editor/Common/hint_tooltip_icon.tscn | 21 + .../Editor/Common/reference_manager.gd | 38 + .../Editor/Common/reference_manager.gd.uid | 1 + .../Editor/Common/reference_manager.tscn | 333 ++++ .../Editor/Common/reference_manager_window.gd | 196 +++ .../Common/reference_manager_window.gd.uid | 1 + addons/dialogic/Editor/Common/side_bar.tscn | 211 +++ addons/dialogic/Editor/Common/sidebar.gd | 529 ++++++ addons/dialogic/Editor/Common/sidebar.gd.uid | 1 + addons/dialogic/Editor/Common/toolbar.gd | 46 + addons/dialogic/Editor/Common/toolbar.gd.uid | 1 + .../Common/unique_identifiers_manager.gd | 95 ++ .../Common/unique_identifiers_manager.gd.uid | 1 + .../Editor/Common/update_install_window.gd | 179 ++ .../Common/update_install_window.gd.uid | 1 + .../Editor/Common/update_install_window.tscn | 308 ++++ .../dialogic/Editor/Common/update_manager.gd | 190 +++ .../Editor/Common/update_manager.gd.uid | 1 + addons/dialogic/Editor/Events/BranchEnd.gd | 85 + .../dialogic/Editor/Events/BranchEnd.gd.uid | 1 + addons/dialogic/Editor/Events/BranchEnd.tscn | 48 + .../Editor/Events/EventBlock/event_block.gd | 430 +++++ .../Events/EventBlock/event_block.gd.uid | 1 + .../Editor/Events/EventBlock/event_block.tscn | 133 ++ .../EventBlock/event_right_click_menu.gd | 24 + .../EventBlock/event_right_click_menu.gd.uid | 1 + .../Editor/Events/Fields/array_part.gd | 28 + .../Editor/Events/Fields/array_part.gd.uid | 1 + .../Editor/Events/Fields/array_part.tscn | 39 + .../Editor/Events/Fields/dictionary_part.gd | 43 + .../Events/Fields/dictionary_part.gd.uid | 1 + .../Editor/Events/Fields/dictionary_part.tscn | 54 + .../Editor/Events/Fields/field_array.gd | 48 + .../Editor/Events/Fields/field_array.gd.uid | 1 + .../Editor/Events/Fields/field_array.tscn | 28 + .../Events/Fields/field_audio_preview.gd | 52 + .../Events/Fields/field_audio_preview.gd.uid | 1 + .../Events/Fields/field_audio_preview.tscn | 12 + .../Editor/Events/Fields/field_bool_button.gd | 38 + .../Events/Fields/field_bool_button.gd.uid | 1 + .../Events/Fields/field_bool_button.tscn | 13 + .../Editor/Events/Fields/field_bool_check.gd | 30 + .../Events/Fields/field_bool_check.gd.uid | 1 + .../Events/Fields/field_bool_check.tscn | 8 + .../Editor/Events/Fields/field_color.gd | 30 + .../Editor/Events/Fields/field_color.gd.uid | 1 + .../Editor/Events/Fields/field_color.tscn | 12 + .../Editor/Events/Fields/field_condition.gd | 266 +++ .../Events/Fields/field_condition.gd.uid | 1 + .../Editor/Events/Fields/field_condition.tscn | 101 ++ .../Editor/Events/Fields/field_dictionary.gd | 60 + .../Events/Fields/field_dictionary.gd.uid | 1 + .../Events/Fields/field_dictionary.tscn | 28 + .../Editor/Events/Fields/field_file.gd | 152 ++ .../Editor/Events/Fields/field_file.gd.uid | 1 + .../Editor/Events/Fields/field_file.tscn | 78 + .../Editor/Events/Fields/field_flex_value.gd | 154 ++ .../Events/Fields/field_flex_value.gd.uid | 1 + .../Events/Fields/field_flex_value.tscn | 15 + .../Events/Fields/field_image_preview.gd | 64 + .../Events/Fields/field_image_preview.gd.uid | 1 + .../Events/Fields/field_image_preview.tscn | 23 + .../Editor/Events/Fields/field_number.gd | 204 +++ .../Editor/Events/Fields/field_number.gd.uid | 1 + .../Editor/Events/Fields/field_number.tscn | 160 ++ .../Events/Fields/field_options_dynamic.gd | 369 +++++ .../Fields/field_options_dynamic.gd.uid | 1 + .../Events/Fields/field_options_dynamic.tscn | 144 ++ .../Events/Fields/field_options_fixed.gd | 67 + .../Events/Fields/field_options_fixed.gd.uid | 1 + .../Events/Fields/field_options_fixed.tscn | 13 + .../Events/Fields/field_text_multiline.gd | 74 + .../Events/Fields/field_text_multiline.gd.uid | 1 + .../Events/Fields/field_text_multiline.tscn | 28 + .../Events/Fields/field_text_singleline.gd | 40 + .../Fields/field_text_singleline.gd.uid | 1 + .../Events/Fields/field_text_singleline.tscn | 10 + .../Editor/Events/Fields/field_vector2.gd | 31 + .../Editor/Events/Fields/field_vector2.gd.uid | 1 + .../Editor/Events/Fields/field_vector2.tscn | 31 + .../Editor/Events/Fields/field_vector3.gd | 34 + .../Editor/Events/Fields/field_vector3.gd.uid | 1 + .../Editor/Events/Fields/field_vector3.tscn | 17 + .../Editor/Events/Fields/field_vector4.gd | 37 + .../Editor/Events/Fields/field_vector4.gd.uid | 1 + .../Editor/Events/Fields/field_vector4.tscn | 25 + .../Editor/Events/Fields/field_vector_base.gd | 47 + .../Events/Fields/field_vector_base.gd.uid | 1 + addons/dialogic/Editor/Events/event_field.gd | 36 + .../dialogic/Editor/Events/event_field.gd.uid | 1 + .../Events/styles/InputFieldsStyle.tres | 50 + .../Events/styles/ResourceMenuHover.tres | 11 + .../Events/styles/ResourceMenuNormal.tres | 13 + .../styles/ResourceMenuPanelBackground.tres | 17 + .../Editor/Events/styles/SectionPanel.tres | 17 + .../Events/styles/SimpleButtonHover.tres | 17 + .../Events/styles/SimpleButtonNormal.tres | 17 + .../Editor/Events/styles/TextBackground.tres | 12 + .../Events/styles/selected_styleboxflat.tres | 16 + .../Events/styles/unselected_stylebox.tres | 7 + addons/dialogic/Editor/HomePage/home_page.gd | 86 + .../dialogic/Editor/HomePage/home_page.gd.uid | 1 + .../dialogic/Editor/HomePage/home_page.tscn | 373 +++++ addons/dialogic/Editor/HomePage/icon_bg.png | Bin 0 -> 150354 bytes .../Editor/HomePage/icon_bg.png.import | 40 + addons/dialogic/Editor/HomePage/tips.txt | 11 + .../Editor/Images/Dropdown/default.svg | 3 + .../Editor/Images/Dropdown/default.svg.import | 44 + .../Editor/Images/Dropdown/divide.svg | 10 + .../Editor/Images/Dropdown/divide.svg.import | 44 + .../dialogic/Editor/Images/Dropdown/join.svg | 3 + .../Editor/Images/Dropdown/join.svg.import | 44 + .../dialogic/Editor/Images/Dropdown/leave.svg | 3 + .../Editor/Images/Dropdown/leave.svg.import | 44 + .../dialogic/Editor/Images/Dropdown/minus.svg | 10 + .../Editor/Images/Dropdown/minus.svg.import | 44 + .../Editor/Images/Dropdown/multiply.svg | 10 + .../Images/Dropdown/multiply.svg.import | 44 + .../dialogic/Editor/Images/Dropdown/plus.svg | 10 + .../Editor/Images/Dropdown/plus.svg.import | 44 + .../dialogic/Editor/Images/Dropdown/set.svg | 10 + .../Editor/Images/Dropdown/set.svg.import | 44 + .../Editor/Images/Dropdown/update.svg | 5 + .../Editor/Images/Dropdown/update.svg.import | 44 + .../Images/Interactable/decrement_icon.svg | 1 + .../Interactable/decrement_icon.svg.import | 44 + .../Images/Interactable/increment_icon.svg | 1 + .../Interactable/increment_icon.svg.import | 44 + .../Editor/Images/Pieces/add-folder.svg | 4 + .../Images/Pieces/add-folder.svg.import | 44 + .../Editor/Images/Pieces/close-icon.svg | 1 + .../Images/Pieces/close-icon.svg.import | 44 + .../Editor/Images/Pieces/closed-icon.svg | 3 + .../Images/Pieces/closed-icon.svg.import | 44 + .../Editor/Images/Pieces/expand-icon.svg | 5 + .../Images/Pieces/expand-icon.svg.import | 44 + .../Editor/Images/Pieces/open-icon.svg | 3 + .../Editor/Images/Pieces/open-icon.svg.import | 44 + .../Editor/Images/Pieces/variable.svg | 3 + .../Editor/Images/Pieces/variable.svg.import | 44 + .../Editor/Images/Pieces/variable_icon.png | Bin 0 -> 639 bytes .../Images/Pieces/variable_icon.png.import | 40 + .../dialogic/Editor/Images/Pieces/warning.svg | 3 + .../Editor/Images/Pieces/warning.svg.import | 44 + .../Editor/Images/Resources/character.svg | 4 + .../Images/Resources/character.svg.import | 44 + .../Images/Resources/icon_character.png | Bin 0 -> 569 bytes .../Resources/icon_character.png.import | 40 + .../Editor/Images/Resources/portrait.svg | 9 + .../Images/Resources/portrait.svg.import | 44 + .../Editor/Images/Resources/timeline.svg | 115 ++ .../Images/Resources/timeline.svg.import | 43 + .../Editor/Images/Toolbar/add-character.svg | 4 + .../Images/Toolbar/add-character.svg.import | 44 + .../Editor/Images/Toolbar/add-timeline.svg | 61 + .../Images/Toolbar/add-timeline.svg.import | 44 + addons/dialogic/Editor/Images/Unknown.png | Bin 0 -> 3331 bytes .../dialogic/Editor/Images/Unknown.png.import | 40 + .../dialogic/Editor/Images/dialogic-logo.svg | 18 + .../Editor/Images/dialogic-logo.svg.import | 43 + addons/dialogic/Editor/Images/plugin-icon.svg | 3 + .../Editor/Images/plugin-icon.svg.import | 44 + .../Editor/Images/preview_character.png | Bin 0 -> 63720 bytes .../Images/preview_character.png.import | 40 + .../Images/preview_character_speaker.png | Bin 0 -> 40709 bytes .../preview_character_speaker.png.import | 40 + .../Editor/Inspector/inspector_plugin.gd | 15 + .../Editor/Inspector/inspector_plugin.gd.uid | 1 + .../Inspector/timeline_inspector_field.gd | 82 + .../Inspector/timeline_inspector_field.gd.uid | 1 + .../Settings/CoreSettingsPages/csv_file.gd | 356 ++++ .../CoreSettingsPages/csv_file.gd.uid | 1 + .../CoreSettingsPages/settings_editor.gd | 154 ++ .../CoreSettingsPages/settings_editor.gd.uid | 1 + .../CoreSettingsPages/settings_editor.tscn | 161 ++ .../CoreSettingsPages/settings_general.gd | 177 ++ .../CoreSettingsPages/settings_general.gd.uid | 1 + .../CoreSettingsPages/settings_general.tscn | 234 +++ .../CoreSettingsPages/settings_modules.gd | 442 +++++ .../CoreSettingsPages/settings_modules.gd.uid | 1 + .../CoreSettingsPages/settings_modules.tscn | 236 +++ .../CoreSettingsPages/settings_tools.gd | 80 + .../CoreSettingsPages/settings_tools.gd.uid | 1 + .../CoreSettingsPages/settings_translation.gd | 659 ++++++++ .../settings_translation.gd.uid | 1 + .../settings_translation.tscn | 368 +++++ .../Settings/CoreSettingsPages/tool_resave.gd | 32 + .../CoreSettingsPages/tool_resave.gd.uid | 1 + .../Editor/Settings/HintLabelStylingScript.gd | 13 + .../Settings/HintLabelStylingScript.gd.uid | 1 + .../Editor/Settings/settings_editor.gd | 169 ++ .../Editor/Settings/settings_editor.gd.uid | 1 + .../Editor/Settings/settings_editor.tscn | 59 + .../dialogic/Editor/Settings/settings_page.gd | 36 + .../Editor/Settings/settings_page.gd.uid | 1 + addons/dialogic/Editor/Theme/MainTheme.tres | 3 + addons/dialogic/Editor/Theme/PickerTheme.tres | 7 + .../TextEditor/CodeCompletionHelper.gd | 333 ++++ .../TextEditor/CodeCompletionHelper.gd.uid | 1 + .../TextEditor/syntax_highlighter.gd | 212 +++ .../TextEditor/syntax_highlighter.gd.uid | 1 + .../TextEditor/timeline_editor_text.gd | 362 +++++ .../TextEditor/timeline_editor_text.gd.uid | 1 + .../TextEditor/timeline_editor_text.tscn | 32 + .../VisualEditor/AddEventButton.gd | 63 + .../VisualEditor/AddEventButton.gd.uid | 1 + .../VisualEditor/AddEventButton.tscn | 46 + .../VisualEditor/TimelineArea.gd | 204 +++ .../VisualEditor/TimelineArea.gd.uid | 1 + .../VisualEditor/timeline_editor_visual.gd | 1438 +++++++++++++++++ .../timeline_editor_visual.gd.uid | 1 + .../VisualEditor/timeline_editor_visual.tscn | 116 ++ .../Editor/TimelineEditor/shortcut_popup.gd | 118 ++ .../TimelineEditor/shortcut_popup.gd.uid | 1 + .../TimelineEditor/test_timeline_scene.gd | 44 + .../TimelineEditor/test_timeline_scene.gd.uid | 1 + .../TimelineEditor/test_timeline_scene.tscn | 25 + .../Editor/TimelineEditor/timeline_editor.gd | 321 ++++ .../TimelineEditor/timeline_editor.gd.uid | 1 + .../TimelineEditor/timeline_editor.tscn | 315 ++++ addons/dialogic/Editor/dialogic_editor.gd | 67 + addons/dialogic/Editor/dialogic_editor.gd.uid | 1 + addons/dialogic/Editor/editor_main.gd | 310 ++++ addons/dialogic/Editor/editor_main.gd.uid | 1 + addons/dialogic/Editor/editor_main.tscn | 161 ++ addons/dialogic/Editor/editors_manager.gd | 284 ++++ addons/dialogic/Editor/editors_manager.gd.uid | 1 + .../dialogic/Example Assets/Fonts/LICENSE.txt | 202 +++ .../Example Assets/Fonts/Roboto-Bold.ttf | Bin 0 -> 170348 bytes .../Fonts/Roboto-Bold.ttf.import | 36 + .../Example Assets/Fonts/Roboto-Italic.ttf | Bin 0 -> 173516 bytes .../Fonts/Roboto-Italic.ttf.import | 36 + .../Example Assets/Fonts/Roboto-Regular.ttf | Bin 0 -> 171272 bytes .../Fonts/Roboto-Regular.ttf.import | 36 + .../Example Assets/already_read_indicator.gd | 12 + .../already_read_indicator.gd.uid | 1 + .../Example Assets/backgrounds/BubbleEnd.png | Bin 0 -> 1619 bytes .../backgrounds/BubbleEnd.png.import | 40 + .../backgrounds/new-default-dialog.png.import | 34 + .../Example Assets/backgrounds/rpg_box.webp | Bin 0 -> 1812 bytes .../backgrounds/rpg_box.webp.import | 40 + .../bbcode_transition_effect.gd | 84 + .../bbcode_transition_effect.gd.uid | 1 + .../bbcode_transitions/fade_in.tres | 17 + .../bbcode_transitions/fade_scale_in.tres | 24 + .../bbcode_transitions/fancy_in.tres | 35 + .../bbcode_transitions/shaky_in.tres | 35 + .../dialogic/Example Assets/default_event.gd | 51 + .../Example Assets/default_event.gd.uid | 1 + .../next-indicator-dialogic-1.png | Bin 0 -> 2825 bytes .../next-indicator-dialogic-1.png.import | 40 + .../next-indicator/next-indicator.png | Bin 0 -> 4189 bytes .../next-indicator/next-indicator.png.import | 40 + .../Example Assets/sound-effects/LICENSE.txt | 4 + .../Example Assets/sound-effects/typing1.wav | Bin 0 -> 25516 bytes .../sound-effects/typing1.wav.import | 24 + .../Example Assets/sound-effects/typing2.wav | Bin 0 -> 21932 bytes .../sound-effects/typing2.wav.import | 24 + .../Example Assets/sound-effects/typing3.wav | Bin 0 -> 21356 bytes .../sound-effects/typing3.wav.import | 24 + .../Example Assets/sound-effects/typing4.wav | Bin 0 -> 23404 bytes .../sound-effects/typing4.wav.import | 24 + .../Example Assets/sound-effects/typing5.wav | Bin 0 -> 24876 bytes .../sound-effects/typing5.wav.import | 24 + addons/dialogic/Modules/Audio/event_audio.gd | 397 +++++ .../dialogic/Modules/Audio/event_audio.gd.uid | 1 + addons/dialogic/Modules/Audio/icon_music.png | Bin 0 -> 552 bytes .../Modules/Audio/icon_music.png.import | 40 + addons/dialogic/Modules/Audio/icon_sound.png | Bin 0 -> 524 bytes .../Modules/Audio/icon_sound.png.import | 40 + addons/dialogic/Modules/Audio/index.gd | 14 + addons/dialogic/Modules/Audio/index.gd.uid | 1 + .../dialogic/Modules/Audio/settings_audio.gd | 241 +++ .../Modules/Audio/settings_audio.gd.uid | 1 + .../Modules/Audio/settings_audio.tscn | 113 ++ .../dialogic/Modules/Audio/subsystem_audio.gd | 284 ++++ .../Modules/Audio/subsystem_audio.gd.uid | 1 + .../default_background.gd | 31 + .../default_background.gd.uid | 1 + .../default_background.tscn | 29 + .../Transitions/Defaults/push_down.gd | 7 + .../Transitions/Defaults/push_down.gd.uid | 1 + .../Transitions/Defaults/push_left.gd | 7 + .../Transitions/Defaults/push_left.gd.uid | 1 + .../Transitions/Defaults/push_right.gd | 7 + .../Transitions/Defaults/push_right.gd.uid | 1 + .../Transitions/Defaults/push_up.gd | 7 + .../Transitions/Defaults/push_up.gd.uid | 1 + .../Transitions/Defaults/simple_fade.gd | 13 + .../Transitions/Defaults/simple_fade.gd.uid | 1 + .../Transitions/Defaults/simple_fade.tres | 8 + .../Defaults/swipe_diagonal_up_left.gd | 8 + .../Defaults/swipe_diagonal_up_left.gd.uid | 1 + .../Defaults/swipe_left_to_right.gd | 10 + .../Defaults/swipe_left_to_right.gd.uid | 1 + .../Defaults/swipe_right_to_left.gd | 8 + .../Defaults/swipe_right_to_left.gd.uid | 1 + .../class_dialogic_background_transition.gd | 57 + ...lass_dialogic_background_transition.gd.uid | 1 + .../default_transition_shader.gdshader | 36 + .../default_transition_shader.gdshader.uid | 1 + .../push_transition_shader.gdshader | 17 + .../push_transition_shader.gdshader.uid | 1 + .../Transitions/simple_push_transitions.gd | 9 + .../simple_push_transitions.gd.uid | 1 + .../Transitions/simple_swipe_gradient.tres | 7 + .../Transitions/simple_swipe_transitions.gd | 14 + .../simple_swipe_transitions.gd.uid | 1 + .../Modules/Background/dialogic_background.gd | 38 + .../Background/dialogic_background.gd.uid | 1 + .../Modules/Background/event_background.gd | 164 ++ .../Background/event_background.gd.uid | 1 + addons/dialogic/Modules/Background/icon.png | Bin 0 -> 512 bytes .../Modules/Background/icon.png.import | 40 + addons/dialogic/Modules/Background/index.gd | 13 + .../dialogic/Modules/Background/index.gd.uid | 1 + .../Background/node_background_holder.gd | 6 + .../Background/node_background_holder.gd.uid | 1 + .../Background/subsystem_backgrounds.gd | 194 +++ .../Background/subsystem_backgrounds.gd.uid | 1 + addons/dialogic/Modules/Call/event_call.gd | 235 +++ .../dialogic/Modules/Call/event_call.gd.uid | 1 + addons/dialogic/Modules/Call/icon.png | Bin 0 -> 554 bytes addons/dialogic/Modules/Call/icon.png.import | 40 + addons/dialogic/Modules/Call/index.gd | 6 + addons/dialogic/Modules/Call/index.gd.uid | 1 + .../Character/DefaultAnimations/bounce.gd | 16 + .../Character/DefaultAnimations/bounce.gd.uid | 1 + .../DefaultAnimations/bounce_in_out.gd | 39 + .../DefaultAnimations/bounce_in_out.gd.uid | 1 + .../DefaultAnimations/fade_down_in_out.gd | 44 + .../DefaultAnimations/fade_down_in_out.gd.uid | 1 + .../DefaultAnimations/fade_in_out.gd | 34 + .../DefaultAnimations/fade_in_out.gd.uid | 1 + .../DefaultAnimations/fade_up_in_out.gd | 44 + .../DefaultAnimations/fade_up_in_out.gd.uid | 1 + .../Character/DefaultAnimations/heartbeat.gd | 13 + .../DefaultAnimations/heartbeat.gd.uid | 1 + .../DefaultAnimations/instant_in_out.gd | 12 + .../DefaultAnimations/instant_in_out.gd.uid | 1 + .../Character/DefaultAnimations/shake_x.gd | 20 + .../DefaultAnimations/shake_x.gd.uid | 1 + .../Character/DefaultAnimations/shake_y.gd | 23 + .../DefaultAnimations/shake_y.gd.uid | 1 + .../DefaultAnimations/slide_down_in_out.gd | 27 + .../slide_down_in_out.gd.uid | 1 + .../DefaultAnimations/slide_left_in_out.gd | 27 + .../slide_left_in_out.gd.uid | 1 + .../DefaultAnimations/slide_right_in_out.gd | 24 + .../slide_right_in_out.gd.uid | 1 + .../DefaultAnimations/slide_up_in.gd | 26 + .../DefaultAnimations/slide_up_in.gd.uid | 1 + .../Character/DefaultAnimations/tada.gd | 25 + .../Character/DefaultAnimations/tada.gd.uid | 1 + .../DefaultAnimations/zoom_center_in_out.gd | 36 + .../zoom_center_in_out.gd.uid | 1 + .../DefaultAnimations/zoom_in_out.gd | 35 + .../DefaultAnimations/zoom_in_out.gd.uid | 1 + .../DialogicPortraitAnimationsUtil.gd | 47 + .../DialogicPortraitAnimationsUtil.gd.uid | 1 + .../Character/class_dialogic_animation.gd | 102 ++ .../Character/class_dialogic_animation.gd.uid | 1 + .../Character/custom_portrait_thumbnail.png | Bin 0 -> 2888 bytes .../custom_portrait_thumbnail.png.import | 40 + .../Modules/Character/default_portrait.gd | 15 + .../Modules/Character/default_portrait.gd.uid | 1 + .../Modules/Character/default_portrait.tscn | 9 + .../Character/default_portrait_thumbnail.png | Bin 0 -> 5647 bytes .../default_portrait_thumbnail.png.import | 40 + .../Modules/Character/dialogic_portrait.gd | 121 ++ .../Character/dialogic_portrait.gd.uid | 1 + .../Modules/Character/event_character.gd | 581 +++++++ .../Modules/Character/event_character.gd.uid | 1 + .../Modules/Character/icon.png.import | 34 + addons/dialogic/Modules/Character/icon.svg | 4 + .../Modules/Character/icon.svg.import | 44 + .../Modules/Character/icon_position.png | Bin 0 -> 1017 bytes .../Character/icon_position.png.import | 40 + addons/dialogic/Modules/Character/index.gd | 58 + .../dialogic/Modules/Character/index.gd.uid | 1 + .../Character/node_portrait_container.gd | 258 +++ .../Character/node_portrait_container.gd.uid | 1 + .../Modules/Character/portrait_position.svg | 8 + .../Character/portrait_position.svg.import | 44 + .../Modules/Character/preview_character.tres | 32 + .../Modules/Character/settings_portraits.gd | 92 ++ .../Character/settings_portraits.gd.uid | 1 + .../Modules/Character/settings_portraits.tscn | 157 ++ .../simple_image_portrait_thumbnail.png | Bin 0 -> 3462 bytes ...simple_image_portrait_thumbnail.png.import | 40 + .../Modules/Character/subsystem_containers.gd | 285 ++++ .../Character/subsystem_containers.gd.uid | 1 + .../Modules/Character/subsystem_portraits.gd | 729 +++++++++ .../Character/subsystem_portraits.gd.uid | 1 + .../Modules/Character/update_mirror.svg | 18 + .../Character/update_mirror.svg.import | 44 + .../Modules/Character/update_portrait.svg | 9 + .../Character/update_portrait.svg.import | 44 + .../Modules/Character/update_position.svg | 18 + ...ate_position.svg.2023_09_23_08_37_47.0.svg | 18 + ...ition.svg.2023_09_23_08_37_47.0.svg.import | 44 + .../Character/update_position.svg.import | 44 + .../Modules/Character/update_z_index.svg | 14 + .../Character/update_z_index.svg.import | 44 + .../dialogic/Modules/Choice/event_choice.gd | 236 +++ .../Modules/Choice/event_choice.gd.uid | 1 + addons/dialogic/Modules/Choice/icon.svg | 10 + .../dialogic/Modules/Choice/icon.svg.import | 44 + addons/dialogic/Modules/Choice/index.gd | 14 + addons/dialogic/Modules/Choice/index.gd.uid | 1 + .../Modules/Choice/node_button_sound.gd | 52 + .../Modules/Choice/node_button_sound.gd.uid | 1 + .../Modules/Choice/node_choice_button.gd | 120 ++ .../Modules/Choice/node_choice_button.gd.uid | 1 + .../Modules/Choice/settings_choices.gd | 67 + .../Modules/Choice/settings_choices.gd.uid | 1 + .../Modules/Choice/settings_choices.tscn | 176 ++ .../Modules/Choice/subsystem_choices.gd | 301 ++++ .../Modules/Choice/subsystem_choices.gd.uid | 1 + .../dialogic/Modules/Choice/ui_choice_end.gd | 28 + .../Modules/Choice/ui_choice_end.gd.uid | 1 + .../Modules/Choice/ui_choice_end.tscn | 20 + .../Modules/Clear/clear_background.svg | 2 + .../Modules/Clear/clear_background.svg.import | 44 + .../Modules/Clear/clear_characters.svg | 16 + .../Modules/Clear/clear_characters.svg.import | 44 + addons/dialogic/Modules/Clear/clear_music.svg | 2 + .../Modules/Clear/clear_music.svg.import | 44 + .../Modules/Clear/clear_positions.svg | 2 + .../Modules/Clear/clear_positions.svg.import | 44 + addons/dialogic/Modules/Clear/clear_style.svg | 2 + .../Modules/Clear/clear_style.svg.import | 44 + .../dialogic/Modules/Clear/clear_textbox.svg | 2 + .../Modules/Clear/clear_textbox.svg.import | 44 + addons/dialogic/Modules/Clear/event_clear.gd | 114 ++ .../dialogic/Modules/Clear/event_clear.gd.uid | 1 + addons/dialogic/Modules/Clear/icon.png | Bin 0 -> 558 bytes addons/dialogic/Modules/Clear/icon.png.import | 40 + addons/dialogic/Modules/Clear/index.gd | 6 + addons/dialogic/Modules/Clear/index.gd.uid | 1 + .../dialogic/Modules/Comment/event_comment.gd | 65 + .../Modules/Comment/event_comment.gd.uid | 1 + addons/dialogic/Modules/Comment/icon.png | Bin 0 -> 398 bytes .../dialogic/Modules/Comment/icon.png.import | 40 + addons/dialogic/Modules/Comment/index.gd | 6 + addons/dialogic/Modules/Comment/index.gd.uid | 1 + .../Modules/Condition/event_condition.gd | 137 ++ .../Modules/Condition/event_condition.gd.uid | 1 + addons/dialogic/Modules/Condition/icon.svg | 12 + .../Modules/Condition/icon.svg.import | 44 + addons/dialogic/Modules/Condition/index.gd | 6 + .../dialogic/Modules/Condition/index.gd.uid | 1 + .../Modules/Condition/ui_condition_end.gd | 51 + .../Modules/Condition/ui_condition_end.gd.uid | 1 + .../Modules/Condition/ui_condition_end.tscn | 26 + .../dialogic/Modules/Core/event_end_branch.gd | 81 + .../Modules/Core/event_end_branch.gd.uid | 1 + addons/dialogic/Modules/Core/icon.png | Bin 0 -> 558 bytes addons/dialogic/Modules/Core/icon.png.import | 40 + addons/dialogic/Modules/Core/index.gd | 27 + addons/dialogic/Modules/Core/index.gd.uid | 1 + .../Modules/Core/subsystem_animation.gd | 42 + .../Modules/Core/subsystem_animation.gd.uid | 1 + .../Modules/Core/subsystem_expression.gd | 103 ++ .../Modules/Core/subsystem_expression.gd.uid | 1 + .../dialogic/Modules/Core/subsystem_input.gd | 217 +++ .../Modules/Core/subsystem_input.gd.uid | 1 + .../Base_Default/default_layout_base.gd | 21 + .../Base_Default/default_layout_base.gd.uid | 1 + .../Base_Default/default_layout_base.tscn | 6 + .../Base_Default/part_config.cfg | 6 + .../Base_TextBubble/part_config.cfg | 6 + .../Base_TextBubble/text_bubble_base.gd | 95 ++ .../Base_TextBubble/text_bubble_base.gd.uid | 1 + .../Base_TextBubble/text_bubble_base.tscn | 55 + .../background_layer_icon.svg | 7 + .../background_layer_icon.svg.import | 44 + .../full_background_layer.gd | 2 + .../full_background_layer.gd.uid | 1 + .../full_background_layer.tscn | 25 + .../Layer_FullBackground/part_config.cfg | 7 + .../Layer_FullBackground/preview.png | Bin 0 -> 924 bytes .../Layer_FullBackground/preview.png.import | 40 + .../Layer_Glossary/glossary_popup_layer.gd | 177 ++ .../glossary_popup_layer.gd.uid | 1 + .../Layer_Glossary/glossary_popup_layer.tscn | 87 + .../Layer_Glossary/part_config.cfg | 7 + .../popup_glossary_layer_icon.svg | 20 + .../popup_glossary_layer_icon.svg.import | 44 + .../Layer_Glossary/preview.png | Bin 0 -> 12796 bytes .../Layer_Glossary/preview.png.import | 40 + .../Layer_History/example_history_item.gd | 30 + .../Layer_History/example_history_item.gd.uid | 1 + .../Layer_History/example_history_item.tscn | 46 + .../Layer_History/history_icon.svg | 23 + .../Layer_History/history_icon.svg.import | 44 + .../Layer_History/history_layer.gd | 151 ++ .../Layer_History/history_layer.gd.uid | 1 + .../Layer_History/history_layer.tscn | 93 ++ .../Layer_History/part_config.cfg | 7 + .../Layer_History/preview.png | Bin 0 -> 11740 bytes .../Layer_History/preview.png.import | 40 + .../Layer_Input/full_advance_input_layer.gd | 4 + .../full_advance_input_layer.gd.uid | 1 + .../Layer_Input/full_advance_input_layer.tscn | 24 + .../Layer_Input/input_layer_icon.svg | 14 + .../Layer_Input/input_layer_icon.svg.import | 44 + .../Layer_Input/part_config.cfg | 7 + .../Layer_Input/preview.png | Bin 0 -> 2258 bytes .../Layer_Input/preview.png.import | 40 + .../default_stylebox.tres | 13 + .../part_config.cfg | 7 + .../Layer_SpeakerPortraitTextbox/preview.png | Bin 0 -> 7997 bytes .../preview.png.import | 40 + .../speaker-textbox-icon.svg | 19 + .../speaker-textbox-icon.svg.import | 44 + .../speaker_portrait_textbox_layer.gd | 129 ++ .../speaker_portrait_textbox_layer.gd.uid | 1 + .../textbox_with_speaker_portrait.tscn | 124 ++ .../Layer_TextInput/part_config.cfg | 7 + .../Layer_TextInput/preview.png | Bin 0 -> 4097 bytes .../Layer_TextInput/preview.png.import | 40 + .../Layer_TextInput/text_input_layer.gd | 14 + .../Layer_TextInput/text_input_layer.gd.uid | 1 + .../Layer_TextInput/text_input_layer.tscn | 76 + .../Layer_TextInput/text_input_layer_icon.svg | 23 + .../text_input_layer_icon.svg.import | 44 + .../Layer_Textbubble/part_config.cfg | 7 + .../Layer_Textbubble/preview.png | Bin 0 -> 7302 bytes .../Layer_Textbubble/preview.png.import | 40 + .../Layer_Textbubble/speech_bubble.gdshader | 17 + .../speech_bubble.gdshader.uid | 1 + .../Layer_Textbubble/text_bubble.gd | 246 +++ .../Layer_Textbubble/text_bubble.gd.uid | 1 + .../Layer_Textbubble/text_bubble.gdshader | 17 + .../Layer_Textbubble/text_bubble.gdshader.uid | 1 + .../Layer_Textbubble/text_bubble.tscn | 112 ++ .../Layer_Textbubble/text_bubble_layer.gd | 191 +++ .../Layer_Textbubble/text_bubble_layer.gd.uid | 1 + .../Layer_Textbubble/text_bubble_layer.tscn | 9 + .../text_bubble_layer_icon.svg | 14 + .../text_bubble_layer_icon.svg.import | 44 + .../Layer_VN_Choices/choice_panel_focus.tres | 15 + .../Layer_VN_Choices/choice_panel_hover.tres | 18 + .../Layer_VN_Choices/choice_panel_normal.tres | 12 + .../Layer_VN_Choices/choices_layer_icon.svg | 11 + .../choices_layer_icon.svg.import | 44 + .../Layer_VN_Choices/part_config.cfg | 7 + .../Layer_VN_Choices/preview.png | Bin 0 -> 8238 bytes .../Layer_VN_Choices/preview.png.import | 40 + .../Layer_VN_Choices/vn_choice_layer.gd | 143 ++ .../Layer_VN_Choices/vn_choice_layer.gd.uid | 1 + .../Layer_VN_Choices/vn_choice_layer.tscn | 43 + .../Layer_VN_Portraits/part_config.cfg | 7 + .../portrait_layer_icon.svg | 22 + .../portrait_layer_icon.svg.import | 44 + .../Layer_VN_Portraits/preview.png | Bin 0 -> 49117 bytes .../Layer_VN_Portraits/preview.png.import | 40 + .../Layer_VN_Portraits/vn_portrait_layer.gd | 14 + .../vn_portrait_layer.gd.uid | 1 + .../Layer_VN_Portraits/vn_portrait_layer.tscn | 84 + .../Layer_VN_Textbox/animations.gd | 93 ++ .../Layer_VN_Textbox/animations.gd.uid | 1 + .../Layer_VN_Textbox/autoadvance_indicator.gd | 13 + .../autoadvance_indicator.gd.uid | 1 + .../Layer_VN_Textbox/next.svg | 12 + .../Layer_VN_Textbox/next.svg.import | 43 + .../Layer_VN_Textbox/part_config.cfg | 7 + .../Layer_VN_Textbox/preview.png | Bin 0 -> 3353 bytes .../Layer_VN_Textbox/preview.png.import | 40 + .../Layer_VN_Textbox/textbox_layer_icon.svg | 13 + .../textbox_layer_icon.svg.import | 44 + .../vn_textbox_default_panel.tres | 12 + .../Layer_VN_Textbox/vn_textbox_layer.gd | 278 ++++ .../Layer_VN_Textbox/vn_textbox_layer.gd.uid | 1 + .../Layer_VN_Textbox/vn_textbox_layer.tscn | 345 ++++ .../vn_textbox_name_label_panel.tres | 12 + .../Style_SpeakerTextbox/part_config.cfg | 6 + .../Style_SpeakerTextbox/preview.png | Bin 0 -> 1094641 bytes .../Style_SpeakerTextbox/preview.png.import | 40 + .../speaker_textbox_style.tres | 68 + .../Style_TextBubbles/part_config.cfg | 6 + .../Style_TextBubbles/preview.png | Bin 0 -> 19024 bytes .../Style_TextBubbles/preview.png.import | 40 + .../Style_TextBubbles/textbubble_style.tres | 35 + .../Style_VN_Default/default_vn_style.tres | 75 + .../Style_VN_Default/part_config.cfg | 6 + .../Style_VN_Default/preview.png | Bin 0 -> 1150972 bytes .../Style_VN_Default/preview.png.import | 40 + .../Modules/DefaultLayoutParts/index.gd | 6 + .../Modules/DefaultLayoutParts/index.gd.uid | 1 + addons/dialogic/Modules/End/event_end.gd | 44 + addons/dialogic/Modules/End/event_end.gd.uid | 1 + addons/dialogic/Modules/End/icon.png | Bin 0 -> 558 bytes addons/dialogic/Modules/End/icon.png.import | 40 + addons/dialogic/Modules/End/index.gd | 6 + addons/dialogic/Modules/End/index.gd.uid | 1 + .../Modules/Glossary/add-glossary.svg | 4 + .../Modules/Glossary/add-glossary.svg.import | 44 + .../Modules/Glossary/event_glossary.gd | 42 + .../Modules/Glossary/event_glossary.gd.uid | 1 + .../Modules/Glossary/glossary_editor.gd | 461 ++++++ .../Modules/Glossary/glossary_editor.gd.uid | 1 + .../Modules/Glossary/glossary_editor.tscn | 319 ++++ .../Modules/Glossary/glossary_resource.gd | 340 ++++ .../Modules/Glossary/glossary_resource.gd.uid | 1 + .../dialogic/Modules/Glossary/icon.png.import | 34 + addons/dialogic/Modules/Glossary/icon.svg | 3 + .../dialogic/Modules/Glossary/icon.svg.import | 44 + addons/dialogic/Modules/Glossary/index.gd | 14 + addons/dialogic/Modules/Glossary/index.gd.uid | 1 + .../Modules/Glossary/subsystem_glossary.gd | 174 ++ .../Glossary/subsystem_glossary.gd.uid | 1 + .../highlight_portrait_thumbnail.png | Bin 0 -> 5955 bytes .../highlight_portrait_thumbnail.png.import | 40 + .../Modules/HighlightPortrait/index.gd | 17 + .../Modules/HighlightPortrait/index.gd.uid | 1 + .../simple_highlight_portrait.gd | 34 + .../simple_highlight_portrait.gd.uid | 1 + .../simple_highlight_portrait.tscn | 9 + .../dialogic/Modules/History/definition.svg | 3 + .../Modules/History/definition.svg.import | 44 + .../dialogic/Modules/History/event_history.gd | 76 + .../Modules/History/event_history.gd.uid | 1 + addons/dialogic/Modules/History/icon.svg | 11 + .../dialogic/Modules/History/icon.svg.import | 44 + addons/dialogic/Modules/History/index.gd | 13 + addons/dialogic/Modules/History/index.gd.uid | 1 + .../Modules/History/settings_history.gd | 29 + .../Modules/History/settings_history.gd.uid | 1 + .../Modules/History/settings_history.tscn | 176 ++ .../Modules/History/subsystem_history.gd | 305 ++++ .../Modules/History/subsystem_history.gd.uid | 1 + addons/dialogic/Modules/Jump/event_jump.gd | 166 ++ .../dialogic/Modules/Jump/event_jump.gd.uid | 1 + addons/dialogic/Modules/Jump/event_label.gd | 114 ++ .../dialogic/Modules/Jump/event_label.gd.uid | 1 + addons/dialogic/Modules/Jump/event_return.gd | 73 + .../dialogic/Modules/Jump/event_return.gd.uid | 1 + addons/dialogic/Modules/Jump/icon.png.import | 34 + addons/dialogic/Modules/Jump/icon_jump.png | Bin 0 -> 730 bytes .../Modules/Jump/icon_jump.png.import | 40 + addons/dialogic/Modules/Jump/icon_label.png | Bin 0 -> 466 bytes .../Modules/Jump/icon_label.png.import | 40 + addons/dialogic/Modules/Jump/icon_return.svg | 8 + .../Modules/Jump/icon_return.svg.import | 44 + addons/dialogic/Modules/Jump/index.gd | 9 + addons/dialogic/Modules/Jump/index.gd.uid | 1 + .../dialogic/Modules/Jump/subsystem_jump.gd | 123 ++ .../Modules/Jump/subsystem_jump.gd.uid | 1 + .../custom_layered_portrait.gd | 3 + .../custom_layered_portrait.gd.uid | 1 + .../dialogic/Modules/LayeredPortrait/index.gd | 17 + .../Modules/LayeredPortrait/index.gd.uid | 1 + .../LayeredPortrait/layered_portrait.gd | 252 +++ .../LayeredPortrait/layered_portrait.gd.uid | 1 + .../LayeredPortrait/layered_portrait.tscn | 14 + .../layered_portrait_thumbnail.png | Bin 0 -> 7448 bytes .../layered_portrait_thumbnail.png.import | 40 + addons/dialogic/Modules/Save/event_save.gd | 65 + .../dialogic/Modules/Save/event_save.gd.uid | 1 + addons/dialogic/Modules/Save/icon.svg | 8 + addons/dialogic/Modules/Save/icon.svg.import | 44 + addons/dialogic/Modules/Save/index.gd | 14 + addons/dialogic/Modules/Save/index.gd.uid | 1 + addons/dialogic/Modules/Save/settings_save.gd | 57 + .../Modules/Save/settings_save.gd.uid | 1 + .../dialogic/Modules/Save/settings_save.tscn | 143 ++ .../dialogic/Modules/Save/subsystem_save.gd | 519 ++++++ .../Modules/Save/subsystem_save.gd.uid | 1 + .../Modules/Settings/event_setting.gd | 243 +++ .../Modules/Settings/event_setting.gd.uid | 1 + addons/dialogic/Modules/Settings/icon.svg | 18 + .../dialogic/Modules/Settings/icon.svg.import | 44 + addons/dialogic/Modules/Settings/index.gd | 10 + addons/dialogic/Modules/Settings/index.gd.uid | 1 + .../Modules/Settings/subsystem_settings.gd | 98 ++ .../Settings/subsystem_settings.gd.uid | 1 + .../dialogic/Modules/Signal/event_signal.gd | 83 + .../Modules/Signal/event_signal.gd.uid | 1 + addons/dialogic/Modules/Signal/icon.png | Bin 0 -> 700 bytes .../dialogic/Modules/Signal/icon.png.import | 40 + addons/dialogic/Modules/Signal/index.gd | 7 + addons/dialogic/Modules/Signal/index.gd.uid | 1 + .../Modules/Style/DialogicStylesUtil.gd | 79 + .../Modules/Style/DialogicStylesUtil.gd.uid | 1 + .../Modules/Style/character_settings_style.gd | 34 + .../Style/character_settings_style.gd.uid | 1 + .../Style/character_settings_style.tscn | 22 + addons/dialogic/Modules/Style/event_style.gd | 71 + .../dialogic/Modules/Style/event_style.gd.uid | 1 + addons/dialogic/Modules/Style/icon.png | Bin 0 -> 553 bytes addons/dialogic/Modules/Style/icon.png.import | 40 + addons/dialogic/Modules/Style/index.gd | 14 + addons/dialogic/Modules/Style/index.gd.uid | 1 + addons/dialogic/Modules/Style/node_style.gd | 13 + .../dialogic/Modules/Style/node_style.gd.uid | 1 + .../Modules/Style/subsystem_styles.gd | 183 +++ .../Modules/Style/subsystem_styles.gd.uid | 1 + .../StyleEditor/Components/style_browser.gd | 113 ++ .../Components/style_browser.gd.uid | 1 + .../StyleEditor/Components/style_browser.tscn | 243 +++ .../Components/style_browser_window.gd | 22 + .../Components/style_browser_window.gd.uid | 1 + .../Components/style_layer_tree.gd | 53 + .../Components/style_layer_tree.gd.uid | 1 + addons/dialogic/Modules/StyleEditor/index.gd | 5 + .../dialogic/Modules/StyleEditor/index.gd.uid | 1 + .../Modules/StyleEditor/style_editor.gd | 401 +++++ .../Modules/StyleEditor/style_editor.gd.uid | 1 + .../Modules/StyleEditor/style_editor.tscn | 446 +++++ .../Modules/StyleEditor/style_layer_editor.gd | 542 +++++++ .../StyleEditor/style_layer_editor.gd.uid | 1 + .../Modules/StyleEditor/styles_icon.svg | 1 + .../StyleEditor/styles_icon.svg.import | 44 + .../Text/DNextIndicator_icon.svg.import | 39 + addons/dialogic/Modules/Text/auto_advance.gd | 232 +++ .../dialogic/Modules/Text/auto_advance.gd.uid | 1 + addons/dialogic/Modules/Text/auto_skip.gd | 70 + addons/dialogic/Modules/Text/auto_skip.gd.uid | 1 + .../character_moods_settings.gd | 231 +++ .../character_moods_settings.gd.uid | 1 + .../character_moods_settings.tscn | 235 +++ .../character_portrait_mood_settings.gd | 37 + .../character_portrait_mood_settings.gd.uid | 1 + .../character_portrait_mood_settings.tscn | 25 + addons/dialogic/Modules/Text/event_text.gd | 551 +++++++ .../dialogic/Modules/Text/event_text.gd.uid | 1 + addons/dialogic/Modules/Text/icon.svg | 3 + addons/dialogic/Modules/Text/icon.svg.import | 44 + addons/dialogic/Modules/Text/index.gd | 38 + addons/dialogic/Modules/Text/index.gd.uid | 1 + .../dialogic/Modules/Text/manual_advance.gd | 60 + .../Modules/Text/manual_advance.gd.uid | 1 + .../dialogic/Modules/Text/node_dialog_text.gd | 190 +++ .../Modules/Text/node_dialog_text.gd.uid | 1 + .../Modules/Text/node_dialog_text_icon.svg | 9 + .../Text/node_dialog_text_icon.svg.import | 43 + addons/dialogic/Modules/Text/node_input.gd | 21 + .../dialogic/Modules/Text/node_input.gd.uid | 1 + .../dialogic/Modules/Text/node_name_label.gd | 25 + .../Modules/Text/node_name_label.gd.uid | 1 + .../Modules/Text/node_name_label_icon.svg | 3 + .../Text/node_name_label_icon.svg.import | 43 + .../Modules/Text/node_next_indicator.gd | 89 + .../Modules/Text/node_next_indicator.gd.uid | 1 + .../Modules/Text/node_next_indicator_icon.svg | 3 + .../Text/node_next_indicator_icon.svg.import | 44 + .../dialogic/Modules/Text/node_type_sound.gd | 138 ++ .../Modules/Text/node_type_sound.gd.uid | 1 + addons/dialogic/Modules/Text/settings_text.gd | 249 +++ .../Modules/Text/settings_text.gd.uid | 1 + .../dialogic/Modules/Text/settings_text.tscn | 489 ++++++ .../dialogic/Modules/Text/subsystem_text.gd | 677 ++++++++ .../Modules/Text/subsystem_text.gd.uid | 1 + .../Modules/TextInput/event_text_input.gd | 113 ++ .../Modules/TextInput/event_text_input.gd.uid | 1 + addons/dialogic/Modules/TextInput/icon.png | Bin 0 -> 437 bytes .../Modules/TextInput/icon.png.import | 40 + addons/dialogic/Modules/TextInput/index.gd | 11 + .../dialogic/Modules/TextInput/index.gd.uid | 1 + .../Modules/TextInput/node_text_input.gd | 58 + .../Modules/TextInput/node_text_input.gd.uid | 1 + .../Modules/TextInput/subsystem_text_input.gd | 38 + .../TextInput/subsystem_text_input.gd.uid | 1 + .../Modules/Variable/add-variable.svg | 4 + .../Modules/Variable/add-variable.svg.import | 44 + .../Modules/Variable/event_variable.gd | 392 +++++ .../Modules/Variable/event_variable.gd.uid | 1 + addons/dialogic/Modules/Variable/icon.png | Bin 0 -> 639 bytes .../dialogic/Modules/Variable/icon.png.import | 40 + addons/dialogic/Modules/Variable/index.gd | 12 + addons/dialogic/Modules/Variable/index.gd.uid | 1 + .../Modules/Variable/subsystem_variables.gd | 279 ++++ .../Variable/subsystem_variables.gd.uid | 1 + addons/dialogic/Modules/Variable/variable.svg | 3 + .../Modules/Variable/variable.svg.import | 44 + .../variables_editor/variable_tree.gd | 545 +++++++ .../variables_editor/variable_tree.gd.uid | 1 + .../variables_editor/variables_editor.gd | 62 + .../variables_editor/variables_editor.gd.uid | 1 + .../variables_editor/variables_editor.tscn | 197 +++ addons/dialogic/Modules/Voice/event_voice.gd | 82 + .../dialogic/Modules/Voice/event_voice.gd.uid | 1 + addons/dialogic/Modules/Voice/icon.png | Bin 0 -> 1808 bytes addons/dialogic/Modules/Voice/icon.png.import | 40 + addons/dialogic/Modules/Voice/index.gd | 10 + addons/dialogic/Modules/Voice/index.gd.uid | 1 + .../dialogic/Modules/Voice/subsystem_voice.gd | 137 ++ .../Modules/Voice/subsystem_voice.gd.uid | 1 + addons/dialogic/Modules/Wait/event_wait.gd | 96 ++ .../dialogic/Modules/Wait/event_wait.gd.uid | 1 + addons/dialogic/Modules/Wait/icon.svg | 3 + addons/dialogic/Modules/Wait/icon.svg.import | 44 + addons/dialogic/Modules/Wait/index.gd | 6 + addons/dialogic/Modules/Wait/index.gd.uid | 1 + .../Modules/WaitInput/event_wait_input.gd | 48 + .../Modules/WaitInput/event_wait_input.gd.uid | 1 + addons/dialogic/Modules/WaitInput/icon.svg | 13 + .../Modules/WaitInput/icon.svg.import | 44 + addons/dialogic/Modules/WaitInput/index.gd | 6 + .../dialogic/Modules/WaitInput/index.gd.uid | 1 + .../Resources/CharacterResourceLoader.gd | 74 + .../Resources/CharacterResourceLoader.gd.uid | 1 + .../Resources/CharacterResourceSaver.gd | 34 + .../Resources/CharacterResourceSaver.gd.uid | 1 + .../Resources/TimelineResourceLoader.gd | 67 + .../Resources/TimelineResourceLoader.gd.uid | 1 + .../Resources/TimelineResourceSaver.gd | 33 + .../Resources/TimelineResourceSaver.gd.uid | 1 + addons/dialogic/Resources/character.gd | 157 ++ addons/dialogic/Resources/character.gd.uid | 1 + .../dialogic_identifiable_resource.gd | 36 + .../dialogic_identifiable_resource.gd.uid | 1 + .../Resources/dialogic_layout_base.gd | 80 + .../Resources/dialogic_layout_base.gd.uid | 1 + .../Resources/dialogic_layout_layer.gd | 44 + .../Resources/dialogic_layout_layer.gd.uid | 1 + addons/dialogic/Resources/dialogic_style.gd | 298 ++++ .../dialogic/Resources/dialogic_style.gd.uid | 1 + .../Resources/dialogic_style_layer.gd | 21 + .../Resources/dialogic_style_layer.gd.uid | 1 + addons/dialogic/Resources/event.gd | 590 +++++++ addons/dialogic/Resources/event.gd.uid | 1 + addons/dialogic/Resources/timeline.gd | 207 +++ addons/dialogic/Resources/timeline.gd.uid | 1 + addons/dialogic/plugin.cfg | 8 + addons/dialogic/plugin.gd | 157 ++ addons/dialogic/plugin.gd.uid | 1 + 884 files changed, 49385 insertions(+) create mode 100644 addons/dialogic/Core/DialogicGameHandler.gd create mode 100644 addons/dialogic/Core/DialogicGameHandler.gd.uid create mode 100644 addons/dialogic/Core/DialogicResourceUtil.gd create mode 100644 addons/dialogic/Core/DialogicResourceUtil.gd.uid create mode 100644 addons/dialogic/Core/DialogicUtil.gd create mode 100644 addons/dialogic/Core/DialogicUtil.gd.uid create mode 100644 addons/dialogic/Core/Dialogic_Subsystem.gd create mode 100644 addons/dialogic/Core/Dialogic_Subsystem.gd.uid create mode 100644 addons/dialogic/Core/index_class.gd create mode 100644 addons/dialogic/Core/index_class.gd.uid create mode 100644 addons/dialogic/Editor/CharacterEditor/char_edit_p_section_exports.gd create mode 100644 addons/dialogic/Editor/CharacterEditor/char_edit_p_section_exports.gd.uid create mode 100644 addons/dialogic/Editor/CharacterEditor/char_edit_p_section_exports.tscn create mode 100644 addons/dialogic/Editor/CharacterEditor/char_edit_p_section_layout.gd create mode 100644 addons/dialogic/Editor/CharacterEditor/char_edit_p_section_layout.gd.uid create mode 100644 addons/dialogic/Editor/CharacterEditor/char_edit_p_section_layout.tscn create mode 100644 addons/dialogic/Editor/CharacterEditor/char_edit_p_section_main.gd create mode 100644 addons/dialogic/Editor/CharacterEditor/char_edit_p_section_main.gd.uid create mode 100644 addons/dialogic/Editor/CharacterEditor/char_edit_p_section_main.tscn create mode 100644 addons/dialogic/Editor/CharacterEditor/char_edit_p_section_main_exports.gd create mode 100644 addons/dialogic/Editor/CharacterEditor/char_edit_p_section_main_exports.gd.uid create mode 100644 addons/dialogic/Editor/CharacterEditor/char_edit_p_section_main_exports.tscn create mode 100644 addons/dialogic/Editor/CharacterEditor/char_edit_section_general.gd create mode 100644 addons/dialogic/Editor/CharacterEditor/char_edit_section_general.gd.uid create mode 100644 addons/dialogic/Editor/CharacterEditor/char_edit_section_general.tscn create mode 100644 addons/dialogic/Editor/CharacterEditor/char_edit_section_portraits.gd create mode 100644 addons/dialogic/Editor/CharacterEditor/char_edit_section_portraits.gd.uid create mode 100644 addons/dialogic/Editor/CharacterEditor/char_edit_section_portraits.tscn create mode 100644 addons/dialogic/Editor/CharacterEditor/character_editor.gd create mode 100644 addons/dialogic/Editor/CharacterEditor/character_editor.gd.uid create mode 100644 addons/dialogic/Editor/CharacterEditor/character_editor.tscn create mode 100644 addons/dialogic/Editor/CharacterEditor/character_editor_main_settings_section.gd create mode 100644 addons/dialogic/Editor/CharacterEditor/character_editor_main_settings_section.gd.uid create mode 100644 addons/dialogic/Editor/CharacterEditor/character_editor_portrait_settings_section.gd create mode 100644 addons/dialogic/Editor/CharacterEditor/character_editor_portrait_settings_section.gd.uid create mode 100644 addons/dialogic/Editor/CharacterEditor/character_editor_portrait_tree.gd create mode 100644 addons/dialogic/Editor/CharacterEditor/character_editor_portrait_tree.gd.uid create mode 100644 addons/dialogic/Editor/CharacterEditor/character_prefix_suffix.gd create mode 100644 addons/dialogic/Editor/CharacterEditor/character_prefix_suffix.gd.uid create mode 100644 addons/dialogic/Editor/CharacterEditor/character_prefix_suffix.tscn create mode 100644 addons/dialogic/Editor/CharacterEditor/portrait_scene_browser.gd create mode 100644 addons/dialogic/Editor/CharacterEditor/portrait_scene_browser.gd.uid create mode 100644 addons/dialogic/Editor/CharacterEditor/portrait_scene_browser.tscn create mode 100644 addons/dialogic/Editor/Common/BrowserItem.gd create mode 100644 addons/dialogic/Editor/Common/BrowserItem.gd.uid create mode 100644 addons/dialogic/Editor/Common/BrowserItem.tscn create mode 100644 addons/dialogic/Editor/Common/DCSS.gd create mode 100644 addons/dialogic/Editor/Common/DCSS.gd.uid create mode 100644 addons/dialogic/Editor/Common/ReferenceManager_AddReplacementPanel.gd create mode 100644 addons/dialogic/Editor/Common/ReferenceManager_AddReplacementPanel.gd.uid create mode 100644 addons/dialogic/Editor/Common/TitleBgStylebox.tres create mode 100644 addons/dialogic/Editor/Common/broken_reference_manager.gd create mode 100644 addons/dialogic/Editor/Common/broken_reference_manager.gd.uid create mode 100644 addons/dialogic/Editor/Common/hint_tooltip_icon.gd create mode 100644 addons/dialogic/Editor/Common/hint_tooltip_icon.gd.uid create mode 100644 addons/dialogic/Editor/Common/hint_tooltip_icon.tscn create mode 100644 addons/dialogic/Editor/Common/reference_manager.gd create mode 100644 addons/dialogic/Editor/Common/reference_manager.gd.uid create mode 100644 addons/dialogic/Editor/Common/reference_manager.tscn create mode 100644 addons/dialogic/Editor/Common/reference_manager_window.gd create mode 100644 addons/dialogic/Editor/Common/reference_manager_window.gd.uid create mode 100644 addons/dialogic/Editor/Common/side_bar.tscn create mode 100644 addons/dialogic/Editor/Common/sidebar.gd create mode 100644 addons/dialogic/Editor/Common/sidebar.gd.uid create mode 100644 addons/dialogic/Editor/Common/toolbar.gd create mode 100644 addons/dialogic/Editor/Common/toolbar.gd.uid create mode 100644 addons/dialogic/Editor/Common/unique_identifiers_manager.gd create mode 100644 addons/dialogic/Editor/Common/unique_identifiers_manager.gd.uid create mode 100644 addons/dialogic/Editor/Common/update_install_window.gd create mode 100644 addons/dialogic/Editor/Common/update_install_window.gd.uid create mode 100644 addons/dialogic/Editor/Common/update_install_window.tscn create mode 100644 addons/dialogic/Editor/Common/update_manager.gd create mode 100644 addons/dialogic/Editor/Common/update_manager.gd.uid create mode 100644 addons/dialogic/Editor/Events/BranchEnd.gd create mode 100644 addons/dialogic/Editor/Events/BranchEnd.gd.uid create mode 100644 addons/dialogic/Editor/Events/BranchEnd.tscn create mode 100644 addons/dialogic/Editor/Events/EventBlock/event_block.gd create mode 100644 addons/dialogic/Editor/Events/EventBlock/event_block.gd.uid create mode 100644 addons/dialogic/Editor/Events/EventBlock/event_block.tscn create mode 100644 addons/dialogic/Editor/Events/EventBlock/event_right_click_menu.gd create mode 100644 addons/dialogic/Editor/Events/EventBlock/event_right_click_menu.gd.uid create mode 100644 addons/dialogic/Editor/Events/Fields/array_part.gd create mode 100644 addons/dialogic/Editor/Events/Fields/array_part.gd.uid create mode 100644 addons/dialogic/Editor/Events/Fields/array_part.tscn create mode 100644 addons/dialogic/Editor/Events/Fields/dictionary_part.gd create mode 100644 addons/dialogic/Editor/Events/Fields/dictionary_part.gd.uid create mode 100644 addons/dialogic/Editor/Events/Fields/dictionary_part.tscn create mode 100644 addons/dialogic/Editor/Events/Fields/field_array.gd create mode 100644 addons/dialogic/Editor/Events/Fields/field_array.gd.uid create mode 100644 addons/dialogic/Editor/Events/Fields/field_array.tscn create mode 100644 addons/dialogic/Editor/Events/Fields/field_audio_preview.gd create mode 100644 addons/dialogic/Editor/Events/Fields/field_audio_preview.gd.uid create mode 100644 addons/dialogic/Editor/Events/Fields/field_audio_preview.tscn create mode 100644 addons/dialogic/Editor/Events/Fields/field_bool_button.gd create mode 100644 addons/dialogic/Editor/Events/Fields/field_bool_button.gd.uid create mode 100644 addons/dialogic/Editor/Events/Fields/field_bool_button.tscn create mode 100644 addons/dialogic/Editor/Events/Fields/field_bool_check.gd create mode 100644 addons/dialogic/Editor/Events/Fields/field_bool_check.gd.uid create mode 100644 addons/dialogic/Editor/Events/Fields/field_bool_check.tscn create mode 100644 addons/dialogic/Editor/Events/Fields/field_color.gd create mode 100644 addons/dialogic/Editor/Events/Fields/field_color.gd.uid create mode 100644 addons/dialogic/Editor/Events/Fields/field_color.tscn create mode 100644 addons/dialogic/Editor/Events/Fields/field_condition.gd create mode 100644 addons/dialogic/Editor/Events/Fields/field_condition.gd.uid create mode 100644 addons/dialogic/Editor/Events/Fields/field_condition.tscn create mode 100644 addons/dialogic/Editor/Events/Fields/field_dictionary.gd create mode 100644 addons/dialogic/Editor/Events/Fields/field_dictionary.gd.uid create mode 100644 addons/dialogic/Editor/Events/Fields/field_dictionary.tscn create mode 100644 addons/dialogic/Editor/Events/Fields/field_file.gd create mode 100644 addons/dialogic/Editor/Events/Fields/field_file.gd.uid create mode 100644 addons/dialogic/Editor/Events/Fields/field_file.tscn create mode 100644 addons/dialogic/Editor/Events/Fields/field_flex_value.gd create mode 100644 addons/dialogic/Editor/Events/Fields/field_flex_value.gd.uid create mode 100644 addons/dialogic/Editor/Events/Fields/field_flex_value.tscn create mode 100644 addons/dialogic/Editor/Events/Fields/field_image_preview.gd create mode 100644 addons/dialogic/Editor/Events/Fields/field_image_preview.gd.uid create mode 100644 addons/dialogic/Editor/Events/Fields/field_image_preview.tscn create mode 100644 addons/dialogic/Editor/Events/Fields/field_number.gd create mode 100644 addons/dialogic/Editor/Events/Fields/field_number.gd.uid create mode 100644 addons/dialogic/Editor/Events/Fields/field_number.tscn create mode 100644 addons/dialogic/Editor/Events/Fields/field_options_dynamic.gd create mode 100644 addons/dialogic/Editor/Events/Fields/field_options_dynamic.gd.uid create mode 100644 addons/dialogic/Editor/Events/Fields/field_options_dynamic.tscn create mode 100644 addons/dialogic/Editor/Events/Fields/field_options_fixed.gd create mode 100644 addons/dialogic/Editor/Events/Fields/field_options_fixed.gd.uid create mode 100644 addons/dialogic/Editor/Events/Fields/field_options_fixed.tscn create mode 100644 addons/dialogic/Editor/Events/Fields/field_text_multiline.gd create mode 100644 addons/dialogic/Editor/Events/Fields/field_text_multiline.gd.uid create mode 100644 addons/dialogic/Editor/Events/Fields/field_text_multiline.tscn create mode 100644 addons/dialogic/Editor/Events/Fields/field_text_singleline.gd create mode 100644 addons/dialogic/Editor/Events/Fields/field_text_singleline.gd.uid create mode 100644 addons/dialogic/Editor/Events/Fields/field_text_singleline.tscn create mode 100644 addons/dialogic/Editor/Events/Fields/field_vector2.gd create mode 100644 addons/dialogic/Editor/Events/Fields/field_vector2.gd.uid create mode 100644 addons/dialogic/Editor/Events/Fields/field_vector2.tscn create mode 100644 addons/dialogic/Editor/Events/Fields/field_vector3.gd create mode 100644 addons/dialogic/Editor/Events/Fields/field_vector3.gd.uid create mode 100644 addons/dialogic/Editor/Events/Fields/field_vector3.tscn create mode 100644 addons/dialogic/Editor/Events/Fields/field_vector4.gd create mode 100644 addons/dialogic/Editor/Events/Fields/field_vector4.gd.uid create mode 100644 addons/dialogic/Editor/Events/Fields/field_vector4.tscn create mode 100644 addons/dialogic/Editor/Events/Fields/field_vector_base.gd create mode 100644 addons/dialogic/Editor/Events/Fields/field_vector_base.gd.uid create mode 100644 addons/dialogic/Editor/Events/event_field.gd create mode 100644 addons/dialogic/Editor/Events/event_field.gd.uid create mode 100644 addons/dialogic/Editor/Events/styles/InputFieldsStyle.tres create mode 100644 addons/dialogic/Editor/Events/styles/ResourceMenuHover.tres create mode 100644 addons/dialogic/Editor/Events/styles/ResourceMenuNormal.tres create mode 100644 addons/dialogic/Editor/Events/styles/ResourceMenuPanelBackground.tres create mode 100644 addons/dialogic/Editor/Events/styles/SectionPanel.tres create mode 100644 addons/dialogic/Editor/Events/styles/SimpleButtonHover.tres create mode 100644 addons/dialogic/Editor/Events/styles/SimpleButtonNormal.tres create mode 100644 addons/dialogic/Editor/Events/styles/TextBackground.tres create mode 100644 addons/dialogic/Editor/Events/styles/selected_styleboxflat.tres create mode 100644 addons/dialogic/Editor/Events/styles/unselected_stylebox.tres create mode 100644 addons/dialogic/Editor/HomePage/home_page.gd create mode 100644 addons/dialogic/Editor/HomePage/home_page.gd.uid create mode 100644 addons/dialogic/Editor/HomePage/home_page.tscn create mode 100644 addons/dialogic/Editor/HomePage/icon_bg.png create mode 100644 addons/dialogic/Editor/HomePage/icon_bg.png.import create mode 100644 addons/dialogic/Editor/HomePage/tips.txt create mode 100644 addons/dialogic/Editor/Images/Dropdown/default.svg create mode 100644 addons/dialogic/Editor/Images/Dropdown/default.svg.import create mode 100644 addons/dialogic/Editor/Images/Dropdown/divide.svg create mode 100644 addons/dialogic/Editor/Images/Dropdown/divide.svg.import create mode 100644 addons/dialogic/Editor/Images/Dropdown/join.svg create mode 100644 addons/dialogic/Editor/Images/Dropdown/join.svg.import create mode 100644 addons/dialogic/Editor/Images/Dropdown/leave.svg create mode 100644 addons/dialogic/Editor/Images/Dropdown/leave.svg.import create mode 100644 addons/dialogic/Editor/Images/Dropdown/minus.svg create mode 100644 addons/dialogic/Editor/Images/Dropdown/minus.svg.import create mode 100644 addons/dialogic/Editor/Images/Dropdown/multiply.svg create mode 100644 addons/dialogic/Editor/Images/Dropdown/multiply.svg.import create mode 100644 addons/dialogic/Editor/Images/Dropdown/plus.svg create mode 100644 addons/dialogic/Editor/Images/Dropdown/plus.svg.import create mode 100644 addons/dialogic/Editor/Images/Dropdown/set.svg create mode 100644 addons/dialogic/Editor/Images/Dropdown/set.svg.import create mode 100644 addons/dialogic/Editor/Images/Dropdown/update.svg create mode 100644 addons/dialogic/Editor/Images/Dropdown/update.svg.import create mode 100644 addons/dialogic/Editor/Images/Interactable/decrement_icon.svg create mode 100644 addons/dialogic/Editor/Images/Interactable/decrement_icon.svg.import create mode 100644 addons/dialogic/Editor/Images/Interactable/increment_icon.svg create mode 100644 addons/dialogic/Editor/Images/Interactable/increment_icon.svg.import create mode 100644 addons/dialogic/Editor/Images/Pieces/add-folder.svg create mode 100644 addons/dialogic/Editor/Images/Pieces/add-folder.svg.import create mode 100644 addons/dialogic/Editor/Images/Pieces/close-icon.svg create mode 100644 addons/dialogic/Editor/Images/Pieces/close-icon.svg.import create mode 100644 addons/dialogic/Editor/Images/Pieces/closed-icon.svg create mode 100644 addons/dialogic/Editor/Images/Pieces/closed-icon.svg.import create mode 100644 addons/dialogic/Editor/Images/Pieces/expand-icon.svg create mode 100644 addons/dialogic/Editor/Images/Pieces/expand-icon.svg.import create mode 100644 addons/dialogic/Editor/Images/Pieces/open-icon.svg create mode 100644 addons/dialogic/Editor/Images/Pieces/open-icon.svg.import create mode 100644 addons/dialogic/Editor/Images/Pieces/variable.svg create mode 100644 addons/dialogic/Editor/Images/Pieces/variable.svg.import create mode 100644 addons/dialogic/Editor/Images/Pieces/variable_icon.png create mode 100644 addons/dialogic/Editor/Images/Pieces/variable_icon.png.import create mode 100644 addons/dialogic/Editor/Images/Pieces/warning.svg create mode 100644 addons/dialogic/Editor/Images/Pieces/warning.svg.import create mode 100644 addons/dialogic/Editor/Images/Resources/character.svg create mode 100644 addons/dialogic/Editor/Images/Resources/character.svg.import create mode 100644 addons/dialogic/Editor/Images/Resources/icon_character.png create mode 100644 addons/dialogic/Editor/Images/Resources/icon_character.png.import create mode 100644 addons/dialogic/Editor/Images/Resources/portrait.svg create mode 100644 addons/dialogic/Editor/Images/Resources/portrait.svg.import create mode 100644 addons/dialogic/Editor/Images/Resources/timeline.svg create mode 100644 addons/dialogic/Editor/Images/Resources/timeline.svg.import create mode 100644 addons/dialogic/Editor/Images/Toolbar/add-character.svg create mode 100644 addons/dialogic/Editor/Images/Toolbar/add-character.svg.import create mode 100644 addons/dialogic/Editor/Images/Toolbar/add-timeline.svg create mode 100644 addons/dialogic/Editor/Images/Toolbar/add-timeline.svg.import create mode 100644 addons/dialogic/Editor/Images/Unknown.png create mode 100644 addons/dialogic/Editor/Images/Unknown.png.import create mode 100644 addons/dialogic/Editor/Images/dialogic-logo.svg create mode 100644 addons/dialogic/Editor/Images/dialogic-logo.svg.import create mode 100644 addons/dialogic/Editor/Images/plugin-icon.svg create mode 100644 addons/dialogic/Editor/Images/plugin-icon.svg.import create mode 100644 addons/dialogic/Editor/Images/preview_character.png create mode 100644 addons/dialogic/Editor/Images/preview_character.png.import create mode 100644 addons/dialogic/Editor/Images/preview_character_speaker.png create mode 100644 addons/dialogic/Editor/Images/preview_character_speaker.png.import create mode 100644 addons/dialogic/Editor/Inspector/inspector_plugin.gd create mode 100644 addons/dialogic/Editor/Inspector/inspector_plugin.gd.uid create mode 100644 addons/dialogic/Editor/Inspector/timeline_inspector_field.gd create mode 100644 addons/dialogic/Editor/Inspector/timeline_inspector_field.gd.uid create mode 100644 addons/dialogic/Editor/Settings/CoreSettingsPages/csv_file.gd create mode 100644 addons/dialogic/Editor/Settings/CoreSettingsPages/csv_file.gd.uid create mode 100644 addons/dialogic/Editor/Settings/CoreSettingsPages/settings_editor.gd create mode 100644 addons/dialogic/Editor/Settings/CoreSettingsPages/settings_editor.gd.uid create mode 100644 addons/dialogic/Editor/Settings/CoreSettingsPages/settings_editor.tscn create mode 100644 addons/dialogic/Editor/Settings/CoreSettingsPages/settings_general.gd create mode 100644 addons/dialogic/Editor/Settings/CoreSettingsPages/settings_general.gd.uid create mode 100644 addons/dialogic/Editor/Settings/CoreSettingsPages/settings_general.tscn create mode 100644 addons/dialogic/Editor/Settings/CoreSettingsPages/settings_modules.gd create mode 100644 addons/dialogic/Editor/Settings/CoreSettingsPages/settings_modules.gd.uid create mode 100644 addons/dialogic/Editor/Settings/CoreSettingsPages/settings_modules.tscn create mode 100644 addons/dialogic/Editor/Settings/CoreSettingsPages/settings_tools.gd create mode 100644 addons/dialogic/Editor/Settings/CoreSettingsPages/settings_tools.gd.uid create mode 100644 addons/dialogic/Editor/Settings/CoreSettingsPages/settings_translation.gd create mode 100644 addons/dialogic/Editor/Settings/CoreSettingsPages/settings_translation.gd.uid create mode 100644 addons/dialogic/Editor/Settings/CoreSettingsPages/settings_translation.tscn create mode 100644 addons/dialogic/Editor/Settings/CoreSettingsPages/tool_resave.gd create mode 100644 addons/dialogic/Editor/Settings/CoreSettingsPages/tool_resave.gd.uid create mode 100644 addons/dialogic/Editor/Settings/HintLabelStylingScript.gd create mode 100644 addons/dialogic/Editor/Settings/HintLabelStylingScript.gd.uid create mode 100644 addons/dialogic/Editor/Settings/settings_editor.gd create mode 100644 addons/dialogic/Editor/Settings/settings_editor.gd.uid create mode 100644 addons/dialogic/Editor/Settings/settings_editor.tscn create mode 100644 addons/dialogic/Editor/Settings/settings_page.gd create mode 100644 addons/dialogic/Editor/Settings/settings_page.gd.uid create mode 100644 addons/dialogic/Editor/Theme/MainTheme.tres create mode 100644 addons/dialogic/Editor/Theme/PickerTheme.tres create mode 100644 addons/dialogic/Editor/TimelineEditor/TextEditor/CodeCompletionHelper.gd create mode 100644 addons/dialogic/Editor/TimelineEditor/TextEditor/CodeCompletionHelper.gd.uid create mode 100644 addons/dialogic/Editor/TimelineEditor/TextEditor/syntax_highlighter.gd create mode 100644 addons/dialogic/Editor/TimelineEditor/TextEditor/syntax_highlighter.gd.uid create mode 100644 addons/dialogic/Editor/TimelineEditor/TextEditor/timeline_editor_text.gd create mode 100644 addons/dialogic/Editor/TimelineEditor/TextEditor/timeline_editor_text.gd.uid create mode 100644 addons/dialogic/Editor/TimelineEditor/TextEditor/timeline_editor_text.tscn create mode 100644 addons/dialogic/Editor/TimelineEditor/VisualEditor/AddEventButton.gd create mode 100644 addons/dialogic/Editor/TimelineEditor/VisualEditor/AddEventButton.gd.uid create mode 100644 addons/dialogic/Editor/TimelineEditor/VisualEditor/AddEventButton.tscn create mode 100644 addons/dialogic/Editor/TimelineEditor/VisualEditor/TimelineArea.gd create mode 100644 addons/dialogic/Editor/TimelineEditor/VisualEditor/TimelineArea.gd.uid create mode 100644 addons/dialogic/Editor/TimelineEditor/VisualEditor/timeline_editor_visual.gd create mode 100644 addons/dialogic/Editor/TimelineEditor/VisualEditor/timeline_editor_visual.gd.uid create mode 100644 addons/dialogic/Editor/TimelineEditor/VisualEditor/timeline_editor_visual.tscn create mode 100644 addons/dialogic/Editor/TimelineEditor/shortcut_popup.gd create mode 100644 addons/dialogic/Editor/TimelineEditor/shortcut_popup.gd.uid create mode 100644 addons/dialogic/Editor/TimelineEditor/test_timeline_scene.gd create mode 100644 addons/dialogic/Editor/TimelineEditor/test_timeline_scene.gd.uid create mode 100644 addons/dialogic/Editor/TimelineEditor/test_timeline_scene.tscn create mode 100644 addons/dialogic/Editor/TimelineEditor/timeline_editor.gd create mode 100644 addons/dialogic/Editor/TimelineEditor/timeline_editor.gd.uid create mode 100644 addons/dialogic/Editor/TimelineEditor/timeline_editor.tscn create mode 100644 addons/dialogic/Editor/dialogic_editor.gd create mode 100644 addons/dialogic/Editor/dialogic_editor.gd.uid create mode 100644 addons/dialogic/Editor/editor_main.gd create mode 100644 addons/dialogic/Editor/editor_main.gd.uid create mode 100644 addons/dialogic/Editor/editor_main.tscn create mode 100644 addons/dialogic/Editor/editors_manager.gd create mode 100644 addons/dialogic/Editor/editors_manager.gd.uid create mode 100644 addons/dialogic/Example Assets/Fonts/LICENSE.txt create mode 100644 addons/dialogic/Example Assets/Fonts/Roboto-Bold.ttf create mode 100644 addons/dialogic/Example Assets/Fonts/Roboto-Bold.ttf.import create mode 100644 addons/dialogic/Example Assets/Fonts/Roboto-Italic.ttf create mode 100644 addons/dialogic/Example Assets/Fonts/Roboto-Italic.ttf.import create mode 100644 addons/dialogic/Example Assets/Fonts/Roboto-Regular.ttf create mode 100644 addons/dialogic/Example Assets/Fonts/Roboto-Regular.ttf.import create mode 100644 addons/dialogic/Example Assets/already_read_indicator.gd create mode 100644 addons/dialogic/Example Assets/already_read_indicator.gd.uid create mode 100644 addons/dialogic/Example Assets/backgrounds/BubbleEnd.png create mode 100644 addons/dialogic/Example Assets/backgrounds/BubbleEnd.png.import create mode 100644 addons/dialogic/Example Assets/backgrounds/new-default-dialog.png.import create mode 100644 addons/dialogic/Example Assets/backgrounds/rpg_box.webp create mode 100644 addons/dialogic/Example Assets/backgrounds/rpg_box.webp.import create mode 100644 addons/dialogic/Example Assets/bbcode_transitions/bbcode_transition_effect.gd create mode 100644 addons/dialogic/Example Assets/bbcode_transitions/bbcode_transition_effect.gd.uid create mode 100644 addons/dialogic/Example Assets/bbcode_transitions/fade_in.tres create mode 100644 addons/dialogic/Example Assets/bbcode_transitions/fade_scale_in.tres create mode 100644 addons/dialogic/Example Assets/bbcode_transitions/fancy_in.tres create mode 100644 addons/dialogic/Example Assets/bbcode_transitions/shaky_in.tres create mode 100644 addons/dialogic/Example Assets/default_event.gd create mode 100644 addons/dialogic/Example Assets/default_event.gd.uid create mode 100644 addons/dialogic/Example Assets/next-indicator/next-indicator-dialogic-1.png create mode 100644 addons/dialogic/Example Assets/next-indicator/next-indicator-dialogic-1.png.import create mode 100644 addons/dialogic/Example Assets/next-indicator/next-indicator.png create mode 100644 addons/dialogic/Example Assets/next-indicator/next-indicator.png.import create mode 100644 addons/dialogic/Example Assets/sound-effects/LICENSE.txt create mode 100644 addons/dialogic/Example Assets/sound-effects/typing1.wav create mode 100644 addons/dialogic/Example Assets/sound-effects/typing1.wav.import create mode 100644 addons/dialogic/Example Assets/sound-effects/typing2.wav create mode 100644 addons/dialogic/Example Assets/sound-effects/typing2.wav.import create mode 100644 addons/dialogic/Example Assets/sound-effects/typing3.wav create mode 100644 addons/dialogic/Example Assets/sound-effects/typing3.wav.import create mode 100644 addons/dialogic/Example Assets/sound-effects/typing4.wav create mode 100644 addons/dialogic/Example Assets/sound-effects/typing4.wav.import create mode 100644 addons/dialogic/Example Assets/sound-effects/typing5.wav create mode 100644 addons/dialogic/Example Assets/sound-effects/typing5.wav.import create mode 100644 addons/dialogic/Modules/Audio/event_audio.gd create mode 100644 addons/dialogic/Modules/Audio/event_audio.gd.uid create mode 100644 addons/dialogic/Modules/Audio/icon_music.png create mode 100644 addons/dialogic/Modules/Audio/icon_music.png.import create mode 100644 addons/dialogic/Modules/Audio/icon_sound.png create mode 100644 addons/dialogic/Modules/Audio/icon_sound.png.import create mode 100644 addons/dialogic/Modules/Audio/index.gd create mode 100644 addons/dialogic/Modules/Audio/index.gd.uid create mode 100644 addons/dialogic/Modules/Audio/settings_audio.gd create mode 100644 addons/dialogic/Modules/Audio/settings_audio.gd.uid create mode 100644 addons/dialogic/Modules/Audio/settings_audio.tscn create mode 100644 addons/dialogic/Modules/Audio/subsystem_audio.gd create mode 100644 addons/dialogic/Modules/Audio/subsystem_audio.gd.uid create mode 100644 addons/dialogic/Modules/Background/DefaultBackgroundScene/default_background.gd create mode 100644 addons/dialogic/Modules/Background/DefaultBackgroundScene/default_background.gd.uid create mode 100644 addons/dialogic/Modules/Background/DefaultBackgroundScene/default_background.tscn create mode 100644 addons/dialogic/Modules/Background/Transitions/Defaults/push_down.gd create mode 100644 addons/dialogic/Modules/Background/Transitions/Defaults/push_down.gd.uid create mode 100644 addons/dialogic/Modules/Background/Transitions/Defaults/push_left.gd create mode 100644 addons/dialogic/Modules/Background/Transitions/Defaults/push_left.gd.uid create mode 100644 addons/dialogic/Modules/Background/Transitions/Defaults/push_right.gd create mode 100644 addons/dialogic/Modules/Background/Transitions/Defaults/push_right.gd.uid create mode 100644 addons/dialogic/Modules/Background/Transitions/Defaults/push_up.gd create mode 100644 addons/dialogic/Modules/Background/Transitions/Defaults/push_up.gd.uid create mode 100644 addons/dialogic/Modules/Background/Transitions/Defaults/simple_fade.gd create mode 100644 addons/dialogic/Modules/Background/Transitions/Defaults/simple_fade.gd.uid create mode 100644 addons/dialogic/Modules/Background/Transitions/Defaults/simple_fade.tres create mode 100644 addons/dialogic/Modules/Background/Transitions/Defaults/swipe_diagonal_up_left.gd create mode 100644 addons/dialogic/Modules/Background/Transitions/Defaults/swipe_diagonal_up_left.gd.uid create mode 100644 addons/dialogic/Modules/Background/Transitions/Defaults/swipe_left_to_right.gd create mode 100644 addons/dialogic/Modules/Background/Transitions/Defaults/swipe_left_to_right.gd.uid create mode 100644 addons/dialogic/Modules/Background/Transitions/Defaults/swipe_right_to_left.gd create mode 100644 addons/dialogic/Modules/Background/Transitions/Defaults/swipe_right_to_left.gd.uid create mode 100644 addons/dialogic/Modules/Background/Transitions/class_dialogic_background_transition.gd create mode 100644 addons/dialogic/Modules/Background/Transitions/class_dialogic_background_transition.gd.uid create mode 100644 addons/dialogic/Modules/Background/Transitions/default_transition_shader.gdshader create mode 100644 addons/dialogic/Modules/Background/Transitions/default_transition_shader.gdshader.uid create mode 100644 addons/dialogic/Modules/Background/Transitions/push_transition_shader.gdshader create mode 100644 addons/dialogic/Modules/Background/Transitions/push_transition_shader.gdshader.uid create mode 100644 addons/dialogic/Modules/Background/Transitions/simple_push_transitions.gd create mode 100644 addons/dialogic/Modules/Background/Transitions/simple_push_transitions.gd.uid create mode 100644 addons/dialogic/Modules/Background/Transitions/simple_swipe_gradient.tres create mode 100644 addons/dialogic/Modules/Background/Transitions/simple_swipe_transitions.gd create mode 100644 addons/dialogic/Modules/Background/Transitions/simple_swipe_transitions.gd.uid create mode 100644 addons/dialogic/Modules/Background/dialogic_background.gd create mode 100644 addons/dialogic/Modules/Background/dialogic_background.gd.uid create mode 100644 addons/dialogic/Modules/Background/event_background.gd create mode 100644 addons/dialogic/Modules/Background/event_background.gd.uid create mode 100644 addons/dialogic/Modules/Background/icon.png create mode 100644 addons/dialogic/Modules/Background/icon.png.import create mode 100644 addons/dialogic/Modules/Background/index.gd create mode 100644 addons/dialogic/Modules/Background/index.gd.uid create mode 100644 addons/dialogic/Modules/Background/node_background_holder.gd create mode 100644 addons/dialogic/Modules/Background/node_background_holder.gd.uid create mode 100644 addons/dialogic/Modules/Background/subsystem_backgrounds.gd create mode 100644 addons/dialogic/Modules/Background/subsystem_backgrounds.gd.uid create mode 100644 addons/dialogic/Modules/Call/event_call.gd create mode 100644 addons/dialogic/Modules/Call/event_call.gd.uid create mode 100644 addons/dialogic/Modules/Call/icon.png create mode 100644 addons/dialogic/Modules/Call/icon.png.import create mode 100644 addons/dialogic/Modules/Call/index.gd create mode 100644 addons/dialogic/Modules/Call/index.gd.uid create mode 100644 addons/dialogic/Modules/Character/DefaultAnimations/bounce.gd create mode 100644 addons/dialogic/Modules/Character/DefaultAnimations/bounce.gd.uid create mode 100644 addons/dialogic/Modules/Character/DefaultAnimations/bounce_in_out.gd create mode 100644 addons/dialogic/Modules/Character/DefaultAnimations/bounce_in_out.gd.uid create mode 100644 addons/dialogic/Modules/Character/DefaultAnimations/fade_down_in_out.gd create mode 100644 addons/dialogic/Modules/Character/DefaultAnimations/fade_down_in_out.gd.uid create mode 100644 addons/dialogic/Modules/Character/DefaultAnimations/fade_in_out.gd create mode 100644 addons/dialogic/Modules/Character/DefaultAnimations/fade_in_out.gd.uid create mode 100644 addons/dialogic/Modules/Character/DefaultAnimations/fade_up_in_out.gd create mode 100644 addons/dialogic/Modules/Character/DefaultAnimations/fade_up_in_out.gd.uid create mode 100644 addons/dialogic/Modules/Character/DefaultAnimations/heartbeat.gd create mode 100644 addons/dialogic/Modules/Character/DefaultAnimations/heartbeat.gd.uid create mode 100644 addons/dialogic/Modules/Character/DefaultAnimations/instant_in_out.gd create mode 100644 addons/dialogic/Modules/Character/DefaultAnimations/instant_in_out.gd.uid create mode 100644 addons/dialogic/Modules/Character/DefaultAnimations/shake_x.gd create mode 100644 addons/dialogic/Modules/Character/DefaultAnimations/shake_x.gd.uid create mode 100644 addons/dialogic/Modules/Character/DefaultAnimations/shake_y.gd create mode 100644 addons/dialogic/Modules/Character/DefaultAnimations/shake_y.gd.uid create mode 100644 addons/dialogic/Modules/Character/DefaultAnimations/slide_down_in_out.gd create mode 100644 addons/dialogic/Modules/Character/DefaultAnimations/slide_down_in_out.gd.uid create mode 100644 addons/dialogic/Modules/Character/DefaultAnimations/slide_left_in_out.gd create mode 100644 addons/dialogic/Modules/Character/DefaultAnimations/slide_left_in_out.gd.uid create mode 100644 addons/dialogic/Modules/Character/DefaultAnimations/slide_right_in_out.gd create mode 100644 addons/dialogic/Modules/Character/DefaultAnimations/slide_right_in_out.gd.uid create mode 100644 addons/dialogic/Modules/Character/DefaultAnimations/slide_up_in.gd create mode 100644 addons/dialogic/Modules/Character/DefaultAnimations/slide_up_in.gd.uid create mode 100644 addons/dialogic/Modules/Character/DefaultAnimations/tada.gd create mode 100644 addons/dialogic/Modules/Character/DefaultAnimations/tada.gd.uid create mode 100644 addons/dialogic/Modules/Character/DefaultAnimations/zoom_center_in_out.gd create mode 100644 addons/dialogic/Modules/Character/DefaultAnimations/zoom_center_in_out.gd.uid create mode 100644 addons/dialogic/Modules/Character/DefaultAnimations/zoom_in_out.gd create mode 100644 addons/dialogic/Modules/Character/DefaultAnimations/zoom_in_out.gd.uid create mode 100644 addons/dialogic/Modules/Character/DialogicPortraitAnimationsUtil.gd create mode 100644 addons/dialogic/Modules/Character/DialogicPortraitAnimationsUtil.gd.uid create mode 100644 addons/dialogic/Modules/Character/class_dialogic_animation.gd create mode 100644 addons/dialogic/Modules/Character/class_dialogic_animation.gd.uid create mode 100644 addons/dialogic/Modules/Character/custom_portrait_thumbnail.png create mode 100644 addons/dialogic/Modules/Character/custom_portrait_thumbnail.png.import create mode 100644 addons/dialogic/Modules/Character/default_portrait.gd create mode 100644 addons/dialogic/Modules/Character/default_portrait.gd.uid create mode 100644 addons/dialogic/Modules/Character/default_portrait.tscn create mode 100644 addons/dialogic/Modules/Character/default_portrait_thumbnail.png create mode 100644 addons/dialogic/Modules/Character/default_portrait_thumbnail.png.import create mode 100644 addons/dialogic/Modules/Character/dialogic_portrait.gd create mode 100644 addons/dialogic/Modules/Character/dialogic_portrait.gd.uid create mode 100644 addons/dialogic/Modules/Character/event_character.gd create mode 100644 addons/dialogic/Modules/Character/event_character.gd.uid create mode 100644 addons/dialogic/Modules/Character/icon.png.import create mode 100644 addons/dialogic/Modules/Character/icon.svg create mode 100644 addons/dialogic/Modules/Character/icon.svg.import create mode 100644 addons/dialogic/Modules/Character/icon_position.png create mode 100644 addons/dialogic/Modules/Character/icon_position.png.import create mode 100644 addons/dialogic/Modules/Character/index.gd create mode 100644 addons/dialogic/Modules/Character/index.gd.uid create mode 100644 addons/dialogic/Modules/Character/node_portrait_container.gd create mode 100644 addons/dialogic/Modules/Character/node_portrait_container.gd.uid create mode 100644 addons/dialogic/Modules/Character/portrait_position.svg create mode 100644 addons/dialogic/Modules/Character/portrait_position.svg.import create mode 100644 addons/dialogic/Modules/Character/preview_character.tres create mode 100644 addons/dialogic/Modules/Character/settings_portraits.gd create mode 100644 addons/dialogic/Modules/Character/settings_portraits.gd.uid create mode 100644 addons/dialogic/Modules/Character/settings_portraits.tscn create mode 100644 addons/dialogic/Modules/Character/simple_image_portrait_thumbnail.png create mode 100644 addons/dialogic/Modules/Character/simple_image_portrait_thumbnail.png.import create mode 100644 addons/dialogic/Modules/Character/subsystem_containers.gd create mode 100644 addons/dialogic/Modules/Character/subsystem_containers.gd.uid create mode 100644 addons/dialogic/Modules/Character/subsystem_portraits.gd create mode 100644 addons/dialogic/Modules/Character/subsystem_portraits.gd.uid create mode 100644 addons/dialogic/Modules/Character/update_mirror.svg create mode 100644 addons/dialogic/Modules/Character/update_mirror.svg.import create mode 100644 addons/dialogic/Modules/Character/update_portrait.svg create mode 100644 addons/dialogic/Modules/Character/update_portrait.svg.import create mode 100644 addons/dialogic/Modules/Character/update_position.svg create mode 100644 addons/dialogic/Modules/Character/update_position.svg.2023_09_23_08_37_47.0.svg create mode 100644 addons/dialogic/Modules/Character/update_position.svg.2023_09_23_08_37_47.0.svg.import create mode 100644 addons/dialogic/Modules/Character/update_position.svg.import create mode 100644 addons/dialogic/Modules/Character/update_z_index.svg create mode 100644 addons/dialogic/Modules/Character/update_z_index.svg.import create mode 100644 addons/dialogic/Modules/Choice/event_choice.gd create mode 100644 addons/dialogic/Modules/Choice/event_choice.gd.uid create mode 100644 addons/dialogic/Modules/Choice/icon.svg create mode 100644 addons/dialogic/Modules/Choice/icon.svg.import create mode 100644 addons/dialogic/Modules/Choice/index.gd create mode 100644 addons/dialogic/Modules/Choice/index.gd.uid create mode 100644 addons/dialogic/Modules/Choice/node_button_sound.gd create mode 100644 addons/dialogic/Modules/Choice/node_button_sound.gd.uid create mode 100644 addons/dialogic/Modules/Choice/node_choice_button.gd create mode 100644 addons/dialogic/Modules/Choice/node_choice_button.gd.uid create mode 100644 addons/dialogic/Modules/Choice/settings_choices.gd create mode 100644 addons/dialogic/Modules/Choice/settings_choices.gd.uid create mode 100644 addons/dialogic/Modules/Choice/settings_choices.tscn create mode 100644 addons/dialogic/Modules/Choice/subsystem_choices.gd create mode 100644 addons/dialogic/Modules/Choice/subsystem_choices.gd.uid create mode 100644 addons/dialogic/Modules/Choice/ui_choice_end.gd create mode 100644 addons/dialogic/Modules/Choice/ui_choice_end.gd.uid create mode 100644 addons/dialogic/Modules/Choice/ui_choice_end.tscn create mode 100644 addons/dialogic/Modules/Clear/clear_background.svg create mode 100644 addons/dialogic/Modules/Clear/clear_background.svg.import create mode 100644 addons/dialogic/Modules/Clear/clear_characters.svg create mode 100644 addons/dialogic/Modules/Clear/clear_characters.svg.import create mode 100644 addons/dialogic/Modules/Clear/clear_music.svg create mode 100644 addons/dialogic/Modules/Clear/clear_music.svg.import create mode 100644 addons/dialogic/Modules/Clear/clear_positions.svg create mode 100644 addons/dialogic/Modules/Clear/clear_positions.svg.import create mode 100644 addons/dialogic/Modules/Clear/clear_style.svg create mode 100644 addons/dialogic/Modules/Clear/clear_style.svg.import create mode 100644 addons/dialogic/Modules/Clear/clear_textbox.svg create mode 100644 addons/dialogic/Modules/Clear/clear_textbox.svg.import create mode 100644 addons/dialogic/Modules/Clear/event_clear.gd create mode 100644 addons/dialogic/Modules/Clear/event_clear.gd.uid create mode 100644 addons/dialogic/Modules/Clear/icon.png create mode 100644 addons/dialogic/Modules/Clear/icon.png.import create mode 100644 addons/dialogic/Modules/Clear/index.gd create mode 100644 addons/dialogic/Modules/Clear/index.gd.uid create mode 100644 addons/dialogic/Modules/Comment/event_comment.gd create mode 100644 addons/dialogic/Modules/Comment/event_comment.gd.uid create mode 100644 addons/dialogic/Modules/Comment/icon.png create mode 100644 addons/dialogic/Modules/Comment/icon.png.import create mode 100644 addons/dialogic/Modules/Comment/index.gd create mode 100644 addons/dialogic/Modules/Comment/index.gd.uid create mode 100644 addons/dialogic/Modules/Condition/event_condition.gd create mode 100644 addons/dialogic/Modules/Condition/event_condition.gd.uid create mode 100644 addons/dialogic/Modules/Condition/icon.svg create mode 100644 addons/dialogic/Modules/Condition/icon.svg.import create mode 100644 addons/dialogic/Modules/Condition/index.gd create mode 100644 addons/dialogic/Modules/Condition/index.gd.uid create mode 100644 addons/dialogic/Modules/Condition/ui_condition_end.gd create mode 100644 addons/dialogic/Modules/Condition/ui_condition_end.gd.uid create mode 100644 addons/dialogic/Modules/Condition/ui_condition_end.tscn create mode 100644 addons/dialogic/Modules/Core/event_end_branch.gd create mode 100644 addons/dialogic/Modules/Core/event_end_branch.gd.uid create mode 100644 addons/dialogic/Modules/Core/icon.png create mode 100644 addons/dialogic/Modules/Core/icon.png.import create mode 100644 addons/dialogic/Modules/Core/index.gd create mode 100644 addons/dialogic/Modules/Core/index.gd.uid create mode 100644 addons/dialogic/Modules/Core/subsystem_animation.gd create mode 100644 addons/dialogic/Modules/Core/subsystem_animation.gd.uid create mode 100644 addons/dialogic/Modules/Core/subsystem_expression.gd create mode 100644 addons/dialogic/Modules/Core/subsystem_expression.gd.uid create mode 100644 addons/dialogic/Modules/Core/subsystem_input.gd create mode 100644 addons/dialogic/Modules/Core/subsystem_input.gd.uid create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Base_Default/default_layout_base.gd create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Base_Default/default_layout_base.gd.uid create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Base_Default/default_layout_base.tscn create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Base_Default/part_config.cfg create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Base_TextBubble/part_config.cfg create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Base_TextBubble/text_bubble_base.gd create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Base_TextBubble/text_bubble_base.gd.uid create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Base_TextBubble/text_bubble_base.tscn create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_FullBackground/background_layer_icon.svg create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_FullBackground/background_layer_icon.svg.import create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_FullBackground/full_background_layer.gd create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_FullBackground/full_background_layer.gd.uid create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_FullBackground/full_background_layer.tscn create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_FullBackground/part_config.cfg create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_FullBackground/preview.png create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_FullBackground/preview.png.import create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_Glossary/glossary_popup_layer.gd create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_Glossary/glossary_popup_layer.gd.uid create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_Glossary/glossary_popup_layer.tscn create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_Glossary/part_config.cfg create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_Glossary/popup_glossary_layer_icon.svg create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_Glossary/popup_glossary_layer_icon.svg.import create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_Glossary/preview.png create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_Glossary/preview.png.import create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_History/example_history_item.gd create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_History/example_history_item.gd.uid create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_History/example_history_item.tscn create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_History/history_icon.svg create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_History/history_icon.svg.import create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_History/history_layer.gd create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_History/history_layer.gd.uid create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_History/history_layer.tscn create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_History/part_config.cfg create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_History/preview.png create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_History/preview.png.import create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_Input/full_advance_input_layer.gd create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_Input/full_advance_input_layer.gd.uid create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_Input/full_advance_input_layer.tscn create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_Input/input_layer_icon.svg create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_Input/input_layer_icon.svg.import create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_Input/part_config.cfg create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_Input/preview.png create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_Input/preview.png.import create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_SpeakerPortraitTextbox/default_stylebox.tres create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_SpeakerPortraitTextbox/part_config.cfg create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_SpeakerPortraitTextbox/preview.png create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_SpeakerPortraitTextbox/preview.png.import create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_SpeakerPortraitTextbox/speaker-textbox-icon.svg create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_SpeakerPortraitTextbox/speaker-textbox-icon.svg.import create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_SpeakerPortraitTextbox/speaker_portrait_textbox_layer.gd create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_SpeakerPortraitTextbox/speaker_portrait_textbox_layer.gd.uid create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_SpeakerPortraitTextbox/textbox_with_speaker_portrait.tscn create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_TextInput/part_config.cfg create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_TextInput/preview.png create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_TextInput/preview.png.import create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_TextInput/text_input_layer.gd create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_TextInput/text_input_layer.gd.uid create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_TextInput/text_input_layer.tscn create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_TextInput/text_input_layer_icon.svg create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_TextInput/text_input_layer_icon.svg.import create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/part_config.cfg create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/preview.png create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/preview.png.import create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/speech_bubble.gdshader create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/speech_bubble.gdshader.uid create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/text_bubble.gd create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/text_bubble.gd.uid create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/text_bubble.gdshader create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/text_bubble.gdshader.uid create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/text_bubble.tscn create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/text_bubble_layer.gd create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/text_bubble_layer.gd.uid create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/text_bubble_layer.tscn create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/text_bubble_layer_icon.svg create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/text_bubble_layer_icon.svg.import create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/choice_panel_focus.tres create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/choice_panel_hover.tres create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/choice_panel_normal.tres create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/choices_layer_icon.svg create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/choices_layer_icon.svg.import create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/part_config.cfg create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/preview.png create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/preview.png.import create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/vn_choice_layer.gd create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/vn_choice_layer.gd.uid create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/vn_choice_layer.tscn create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Portraits/part_config.cfg create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Portraits/portrait_layer_icon.svg create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Portraits/portrait_layer_icon.svg.import create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Portraits/preview.png create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Portraits/preview.png.import create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Portraits/vn_portrait_layer.gd create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Portraits/vn_portrait_layer.gd.uid create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Portraits/vn_portrait_layer.tscn create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/animations.gd create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/animations.gd.uid create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/autoadvance_indicator.gd create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/autoadvance_indicator.gd.uid create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/next.svg create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/next.svg.import create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/part_config.cfg create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/preview.png create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/preview.png.import create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/textbox_layer_icon.svg create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/textbox_layer_icon.svg.import create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/vn_textbox_default_panel.tres create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/vn_textbox_layer.gd create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/vn_textbox_layer.gd.uid create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/vn_textbox_layer.tscn create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/vn_textbox_name_label_panel.tres create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Style_SpeakerTextbox/part_config.cfg create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Style_SpeakerTextbox/preview.png create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Style_SpeakerTextbox/preview.png.import create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Style_SpeakerTextbox/speaker_textbox_style.tres create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Style_TextBubbles/part_config.cfg create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Style_TextBubbles/preview.png create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Style_TextBubbles/preview.png.import create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Style_TextBubbles/textbubble_style.tres create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Style_VN_Default/default_vn_style.tres create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Style_VN_Default/part_config.cfg create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Style_VN_Default/preview.png create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/Style_VN_Default/preview.png.import create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/index.gd create mode 100644 addons/dialogic/Modules/DefaultLayoutParts/index.gd.uid create mode 100644 addons/dialogic/Modules/End/event_end.gd create mode 100644 addons/dialogic/Modules/End/event_end.gd.uid create mode 100644 addons/dialogic/Modules/End/icon.png create mode 100644 addons/dialogic/Modules/End/icon.png.import create mode 100644 addons/dialogic/Modules/End/index.gd create mode 100644 addons/dialogic/Modules/End/index.gd.uid create mode 100644 addons/dialogic/Modules/Glossary/add-glossary.svg create mode 100644 addons/dialogic/Modules/Glossary/add-glossary.svg.import create mode 100644 addons/dialogic/Modules/Glossary/event_glossary.gd create mode 100644 addons/dialogic/Modules/Glossary/event_glossary.gd.uid create mode 100644 addons/dialogic/Modules/Glossary/glossary_editor.gd create mode 100644 addons/dialogic/Modules/Glossary/glossary_editor.gd.uid create mode 100644 addons/dialogic/Modules/Glossary/glossary_editor.tscn create mode 100644 addons/dialogic/Modules/Glossary/glossary_resource.gd create mode 100644 addons/dialogic/Modules/Glossary/glossary_resource.gd.uid create mode 100644 addons/dialogic/Modules/Glossary/icon.png.import create mode 100644 addons/dialogic/Modules/Glossary/icon.svg create mode 100644 addons/dialogic/Modules/Glossary/icon.svg.import create mode 100644 addons/dialogic/Modules/Glossary/index.gd create mode 100644 addons/dialogic/Modules/Glossary/index.gd.uid create mode 100644 addons/dialogic/Modules/Glossary/subsystem_glossary.gd create mode 100644 addons/dialogic/Modules/Glossary/subsystem_glossary.gd.uid create mode 100644 addons/dialogic/Modules/HighlightPortrait/highlight_portrait_thumbnail.png create mode 100644 addons/dialogic/Modules/HighlightPortrait/highlight_portrait_thumbnail.png.import create mode 100644 addons/dialogic/Modules/HighlightPortrait/index.gd create mode 100644 addons/dialogic/Modules/HighlightPortrait/index.gd.uid create mode 100644 addons/dialogic/Modules/HighlightPortrait/simple_highlight_portrait.gd create mode 100644 addons/dialogic/Modules/HighlightPortrait/simple_highlight_portrait.gd.uid create mode 100644 addons/dialogic/Modules/HighlightPortrait/simple_highlight_portrait.tscn create mode 100644 addons/dialogic/Modules/History/definition.svg create mode 100644 addons/dialogic/Modules/History/definition.svg.import create mode 100644 addons/dialogic/Modules/History/event_history.gd create mode 100644 addons/dialogic/Modules/History/event_history.gd.uid create mode 100644 addons/dialogic/Modules/History/icon.svg create mode 100644 addons/dialogic/Modules/History/icon.svg.import create mode 100644 addons/dialogic/Modules/History/index.gd create mode 100644 addons/dialogic/Modules/History/index.gd.uid create mode 100644 addons/dialogic/Modules/History/settings_history.gd create mode 100644 addons/dialogic/Modules/History/settings_history.gd.uid create mode 100644 addons/dialogic/Modules/History/settings_history.tscn create mode 100644 addons/dialogic/Modules/History/subsystem_history.gd create mode 100644 addons/dialogic/Modules/History/subsystem_history.gd.uid create mode 100644 addons/dialogic/Modules/Jump/event_jump.gd create mode 100644 addons/dialogic/Modules/Jump/event_jump.gd.uid create mode 100644 addons/dialogic/Modules/Jump/event_label.gd create mode 100644 addons/dialogic/Modules/Jump/event_label.gd.uid create mode 100644 addons/dialogic/Modules/Jump/event_return.gd create mode 100644 addons/dialogic/Modules/Jump/event_return.gd.uid create mode 100644 addons/dialogic/Modules/Jump/icon.png.import create mode 100644 addons/dialogic/Modules/Jump/icon_jump.png create mode 100644 addons/dialogic/Modules/Jump/icon_jump.png.import create mode 100644 addons/dialogic/Modules/Jump/icon_label.png create mode 100644 addons/dialogic/Modules/Jump/icon_label.png.import create mode 100644 addons/dialogic/Modules/Jump/icon_return.svg create mode 100644 addons/dialogic/Modules/Jump/icon_return.svg.import create mode 100644 addons/dialogic/Modules/Jump/index.gd create mode 100644 addons/dialogic/Modules/Jump/index.gd.uid create mode 100644 addons/dialogic/Modules/Jump/subsystem_jump.gd create mode 100644 addons/dialogic/Modules/Jump/subsystem_jump.gd.uid create mode 100644 addons/dialogic/Modules/LayeredPortrait/custom_layered_portrait.gd create mode 100644 addons/dialogic/Modules/LayeredPortrait/custom_layered_portrait.gd.uid create mode 100644 addons/dialogic/Modules/LayeredPortrait/index.gd create mode 100644 addons/dialogic/Modules/LayeredPortrait/index.gd.uid create mode 100644 addons/dialogic/Modules/LayeredPortrait/layered_portrait.gd create mode 100644 addons/dialogic/Modules/LayeredPortrait/layered_portrait.gd.uid create mode 100644 addons/dialogic/Modules/LayeredPortrait/layered_portrait.tscn create mode 100644 addons/dialogic/Modules/LayeredPortrait/layered_portrait_thumbnail.png create mode 100644 addons/dialogic/Modules/LayeredPortrait/layered_portrait_thumbnail.png.import create mode 100644 addons/dialogic/Modules/Save/event_save.gd create mode 100644 addons/dialogic/Modules/Save/event_save.gd.uid create mode 100644 addons/dialogic/Modules/Save/icon.svg create mode 100644 addons/dialogic/Modules/Save/icon.svg.import create mode 100644 addons/dialogic/Modules/Save/index.gd create mode 100644 addons/dialogic/Modules/Save/index.gd.uid create mode 100644 addons/dialogic/Modules/Save/settings_save.gd create mode 100644 addons/dialogic/Modules/Save/settings_save.gd.uid create mode 100644 addons/dialogic/Modules/Save/settings_save.tscn create mode 100644 addons/dialogic/Modules/Save/subsystem_save.gd create mode 100644 addons/dialogic/Modules/Save/subsystem_save.gd.uid create mode 100644 addons/dialogic/Modules/Settings/event_setting.gd create mode 100644 addons/dialogic/Modules/Settings/event_setting.gd.uid create mode 100644 addons/dialogic/Modules/Settings/icon.svg create mode 100644 addons/dialogic/Modules/Settings/icon.svg.import create mode 100644 addons/dialogic/Modules/Settings/index.gd create mode 100644 addons/dialogic/Modules/Settings/index.gd.uid create mode 100644 addons/dialogic/Modules/Settings/subsystem_settings.gd create mode 100644 addons/dialogic/Modules/Settings/subsystem_settings.gd.uid create mode 100644 addons/dialogic/Modules/Signal/event_signal.gd create mode 100644 addons/dialogic/Modules/Signal/event_signal.gd.uid create mode 100644 addons/dialogic/Modules/Signal/icon.png create mode 100644 addons/dialogic/Modules/Signal/icon.png.import create mode 100644 addons/dialogic/Modules/Signal/index.gd create mode 100644 addons/dialogic/Modules/Signal/index.gd.uid create mode 100644 addons/dialogic/Modules/Style/DialogicStylesUtil.gd create mode 100644 addons/dialogic/Modules/Style/DialogicStylesUtil.gd.uid create mode 100644 addons/dialogic/Modules/Style/character_settings_style.gd create mode 100644 addons/dialogic/Modules/Style/character_settings_style.gd.uid create mode 100644 addons/dialogic/Modules/Style/character_settings_style.tscn create mode 100644 addons/dialogic/Modules/Style/event_style.gd create mode 100644 addons/dialogic/Modules/Style/event_style.gd.uid create mode 100644 addons/dialogic/Modules/Style/icon.png create mode 100644 addons/dialogic/Modules/Style/icon.png.import create mode 100644 addons/dialogic/Modules/Style/index.gd create mode 100644 addons/dialogic/Modules/Style/index.gd.uid create mode 100644 addons/dialogic/Modules/Style/node_style.gd create mode 100644 addons/dialogic/Modules/Style/node_style.gd.uid create mode 100644 addons/dialogic/Modules/Style/subsystem_styles.gd create mode 100644 addons/dialogic/Modules/Style/subsystem_styles.gd.uid create mode 100644 addons/dialogic/Modules/StyleEditor/Components/style_browser.gd create mode 100644 addons/dialogic/Modules/StyleEditor/Components/style_browser.gd.uid create mode 100644 addons/dialogic/Modules/StyleEditor/Components/style_browser.tscn create mode 100644 addons/dialogic/Modules/StyleEditor/Components/style_browser_window.gd create mode 100644 addons/dialogic/Modules/StyleEditor/Components/style_browser_window.gd.uid create mode 100644 addons/dialogic/Modules/StyleEditor/Components/style_layer_tree.gd create mode 100644 addons/dialogic/Modules/StyleEditor/Components/style_layer_tree.gd.uid create mode 100644 addons/dialogic/Modules/StyleEditor/index.gd create mode 100644 addons/dialogic/Modules/StyleEditor/index.gd.uid create mode 100644 addons/dialogic/Modules/StyleEditor/style_editor.gd create mode 100644 addons/dialogic/Modules/StyleEditor/style_editor.gd.uid create mode 100644 addons/dialogic/Modules/StyleEditor/style_editor.tscn create mode 100644 addons/dialogic/Modules/StyleEditor/style_layer_editor.gd create mode 100644 addons/dialogic/Modules/StyleEditor/style_layer_editor.gd.uid create mode 100644 addons/dialogic/Modules/StyleEditor/styles_icon.svg create mode 100644 addons/dialogic/Modules/StyleEditor/styles_icon.svg.import create mode 100644 addons/dialogic/Modules/Text/DNextIndicator_icon.svg.import create mode 100644 addons/dialogic/Modules/Text/auto_advance.gd create mode 100644 addons/dialogic/Modules/Text/auto_advance.gd.uid create mode 100644 addons/dialogic/Modules/Text/auto_skip.gd create mode 100644 addons/dialogic/Modules/Text/auto_skip.gd.uid create mode 100644 addons/dialogic/Modules/Text/character_settings/character_moods_settings.gd create mode 100644 addons/dialogic/Modules/Text/character_settings/character_moods_settings.gd.uid create mode 100644 addons/dialogic/Modules/Text/character_settings/character_moods_settings.tscn create mode 100644 addons/dialogic/Modules/Text/character_settings/character_portrait_mood_settings.gd create mode 100644 addons/dialogic/Modules/Text/character_settings/character_portrait_mood_settings.gd.uid create mode 100644 addons/dialogic/Modules/Text/character_settings/character_portrait_mood_settings.tscn create mode 100644 addons/dialogic/Modules/Text/event_text.gd create mode 100644 addons/dialogic/Modules/Text/event_text.gd.uid create mode 100644 addons/dialogic/Modules/Text/icon.svg create mode 100644 addons/dialogic/Modules/Text/icon.svg.import create mode 100644 addons/dialogic/Modules/Text/index.gd create mode 100644 addons/dialogic/Modules/Text/index.gd.uid create mode 100644 addons/dialogic/Modules/Text/manual_advance.gd create mode 100644 addons/dialogic/Modules/Text/manual_advance.gd.uid create mode 100644 addons/dialogic/Modules/Text/node_dialog_text.gd create mode 100644 addons/dialogic/Modules/Text/node_dialog_text.gd.uid create mode 100644 addons/dialogic/Modules/Text/node_dialog_text_icon.svg create mode 100644 addons/dialogic/Modules/Text/node_dialog_text_icon.svg.import create mode 100644 addons/dialogic/Modules/Text/node_input.gd create mode 100644 addons/dialogic/Modules/Text/node_input.gd.uid create mode 100644 addons/dialogic/Modules/Text/node_name_label.gd create mode 100644 addons/dialogic/Modules/Text/node_name_label.gd.uid create mode 100644 addons/dialogic/Modules/Text/node_name_label_icon.svg create mode 100644 addons/dialogic/Modules/Text/node_name_label_icon.svg.import create mode 100644 addons/dialogic/Modules/Text/node_next_indicator.gd create mode 100644 addons/dialogic/Modules/Text/node_next_indicator.gd.uid create mode 100644 addons/dialogic/Modules/Text/node_next_indicator_icon.svg create mode 100644 addons/dialogic/Modules/Text/node_next_indicator_icon.svg.import create mode 100644 addons/dialogic/Modules/Text/node_type_sound.gd create mode 100644 addons/dialogic/Modules/Text/node_type_sound.gd.uid create mode 100644 addons/dialogic/Modules/Text/settings_text.gd create mode 100644 addons/dialogic/Modules/Text/settings_text.gd.uid create mode 100644 addons/dialogic/Modules/Text/settings_text.tscn create mode 100644 addons/dialogic/Modules/Text/subsystem_text.gd create mode 100644 addons/dialogic/Modules/Text/subsystem_text.gd.uid create mode 100644 addons/dialogic/Modules/TextInput/event_text_input.gd create mode 100644 addons/dialogic/Modules/TextInput/event_text_input.gd.uid create mode 100644 addons/dialogic/Modules/TextInput/icon.png create mode 100644 addons/dialogic/Modules/TextInput/icon.png.import create mode 100644 addons/dialogic/Modules/TextInput/index.gd create mode 100644 addons/dialogic/Modules/TextInput/index.gd.uid create mode 100644 addons/dialogic/Modules/TextInput/node_text_input.gd create mode 100644 addons/dialogic/Modules/TextInput/node_text_input.gd.uid create mode 100644 addons/dialogic/Modules/TextInput/subsystem_text_input.gd create mode 100644 addons/dialogic/Modules/TextInput/subsystem_text_input.gd.uid create mode 100644 addons/dialogic/Modules/Variable/add-variable.svg create mode 100644 addons/dialogic/Modules/Variable/add-variable.svg.import create mode 100644 addons/dialogic/Modules/Variable/event_variable.gd create mode 100644 addons/dialogic/Modules/Variable/event_variable.gd.uid create mode 100644 addons/dialogic/Modules/Variable/icon.png create mode 100644 addons/dialogic/Modules/Variable/icon.png.import create mode 100644 addons/dialogic/Modules/Variable/index.gd create mode 100644 addons/dialogic/Modules/Variable/index.gd.uid create mode 100644 addons/dialogic/Modules/Variable/subsystem_variables.gd create mode 100644 addons/dialogic/Modules/Variable/subsystem_variables.gd.uid create mode 100644 addons/dialogic/Modules/Variable/variable.svg create mode 100644 addons/dialogic/Modules/Variable/variable.svg.import create mode 100644 addons/dialogic/Modules/Variable/variables_editor/variable_tree.gd create mode 100644 addons/dialogic/Modules/Variable/variables_editor/variable_tree.gd.uid create mode 100644 addons/dialogic/Modules/Variable/variables_editor/variables_editor.gd create mode 100644 addons/dialogic/Modules/Variable/variables_editor/variables_editor.gd.uid create mode 100644 addons/dialogic/Modules/Variable/variables_editor/variables_editor.tscn create mode 100644 addons/dialogic/Modules/Voice/event_voice.gd create mode 100644 addons/dialogic/Modules/Voice/event_voice.gd.uid create mode 100644 addons/dialogic/Modules/Voice/icon.png create mode 100644 addons/dialogic/Modules/Voice/icon.png.import create mode 100644 addons/dialogic/Modules/Voice/index.gd create mode 100644 addons/dialogic/Modules/Voice/index.gd.uid create mode 100644 addons/dialogic/Modules/Voice/subsystem_voice.gd create mode 100644 addons/dialogic/Modules/Voice/subsystem_voice.gd.uid create mode 100644 addons/dialogic/Modules/Wait/event_wait.gd create mode 100644 addons/dialogic/Modules/Wait/event_wait.gd.uid create mode 100644 addons/dialogic/Modules/Wait/icon.svg create mode 100644 addons/dialogic/Modules/Wait/icon.svg.import create mode 100644 addons/dialogic/Modules/Wait/index.gd create mode 100644 addons/dialogic/Modules/Wait/index.gd.uid create mode 100644 addons/dialogic/Modules/WaitInput/event_wait_input.gd create mode 100644 addons/dialogic/Modules/WaitInput/event_wait_input.gd.uid create mode 100644 addons/dialogic/Modules/WaitInput/icon.svg create mode 100644 addons/dialogic/Modules/WaitInput/icon.svg.import create mode 100644 addons/dialogic/Modules/WaitInput/index.gd create mode 100644 addons/dialogic/Modules/WaitInput/index.gd.uid create mode 100644 addons/dialogic/Resources/CharacterResourceLoader.gd create mode 100644 addons/dialogic/Resources/CharacterResourceLoader.gd.uid create mode 100644 addons/dialogic/Resources/CharacterResourceSaver.gd create mode 100644 addons/dialogic/Resources/CharacterResourceSaver.gd.uid create mode 100644 addons/dialogic/Resources/TimelineResourceLoader.gd create mode 100644 addons/dialogic/Resources/TimelineResourceLoader.gd.uid create mode 100644 addons/dialogic/Resources/TimelineResourceSaver.gd create mode 100644 addons/dialogic/Resources/TimelineResourceSaver.gd.uid create mode 100644 addons/dialogic/Resources/character.gd create mode 100644 addons/dialogic/Resources/character.gd.uid create mode 100644 addons/dialogic/Resources/dialogic_identifiable_resource.gd create mode 100644 addons/dialogic/Resources/dialogic_identifiable_resource.gd.uid create mode 100644 addons/dialogic/Resources/dialogic_layout_base.gd create mode 100644 addons/dialogic/Resources/dialogic_layout_base.gd.uid create mode 100644 addons/dialogic/Resources/dialogic_layout_layer.gd create mode 100644 addons/dialogic/Resources/dialogic_layout_layer.gd.uid create mode 100644 addons/dialogic/Resources/dialogic_style.gd create mode 100644 addons/dialogic/Resources/dialogic_style.gd.uid create mode 100644 addons/dialogic/Resources/dialogic_style_layer.gd create mode 100644 addons/dialogic/Resources/dialogic_style_layer.gd.uid create mode 100644 addons/dialogic/Resources/event.gd create mode 100644 addons/dialogic/Resources/event.gd.uid create mode 100644 addons/dialogic/Resources/timeline.gd create mode 100644 addons/dialogic/Resources/timeline.gd.uid create mode 100644 addons/dialogic/plugin.cfg create mode 100644 addons/dialogic/plugin.gd create mode 100644 addons/dialogic/plugin.gd.uid diff --git a/addons/dialogic/Core/DialogicGameHandler.gd b/addons/dialogic/Core/DialogicGameHandler.gd new file mode 100644 index 0000000..1d07f93 --- /dev/null +++ b/addons/dialogic/Core/DialogicGameHandler.gd @@ -0,0 +1,469 @@ +class_name DialogicGameHandler +extends Node + +## Class that is used as the Dialogic autoload. + +## Autoload script that allows you to interact with all of Dialogic's systems:[br] +## - Holds all important information about the current state of Dialogic.[br] +## - Provides access to all the subsystems.[br] +## - Has methods to start/end timelines.[br] + + +## States indicating different phases of dialog. +enum States { + IDLE, ## Dialogic is awaiting input to advance. + REVEALING_TEXT, ## Dialogic is currently revealing text. + ANIMATING, ## Some animation is happening. + AWAITING_CHOICE, ## Dialogic awaits the selection of a choice + WAITING ## Dialogic is currently awaiting something. + } + +## Flags indicating what to clear when calling [method clear]. +enum ClearFlags { + FULL_CLEAR = 0, ## Clears all subsystems + KEEP_VARIABLES = 1, ## Clears all subsystems and info except for variables + TIMELINE_INFO_ONLY = 2 ## Doesn't clear subsystems but current timeline and index + } + +## Reference to the currently executed timeline. +var current_timeline: DialogicTimeline = null +## Copy of the [member current_timeline]'s events. +var current_timeline_events: Array = [] + +## Index of the event the timeline handling is currently at. +var current_event_idx: int = 0 +## Contains all information that subsystems consider relevant for +## the current situation +var current_state_info: Dictionary = {} + +## Current state (see [member States] enum). +var current_state := States.IDLE: + get: + return current_state + + set(new_state): + current_state = new_state + state_changed.emit(new_state) + +## Emitted when [member current_state] change. +signal state_changed(new_state:States) + +## When `true`, many dialogic processes won't continue until it's `false` again. +var paused := false: + set(value): + paused = value + + if paused: + + for subsystem in get_children(): + + if subsystem is DialogicSubsystem: + (subsystem as DialogicSubsystem).pause() + + dialogic_paused.emit() + + else: + for subsystem in get_children(): + + if subsystem is DialogicSubsystem: + (subsystem as DialogicSubsystem).resume() + + dialogic_resumed.emit() + +## A timeline that will be played when dialog ends. +## By default this timeline only contains a clear event. +var dialog_ending_timeline: DialogicTimeline + +## Emitted when [member paused] changes to `true`. +signal dialogic_paused +## Emitted when [member paused] changes to `false`. +signal dialogic_resumed + + +## Emitted when a timeline starts by calling either [method start] +## or [method start_timeline]. +signal timeline_started +## Emitted when the timeline ends. +## This can be a timeline ending or [method end_timeline] being called. +signal timeline_ended +## Emitted when an event starts being executed. +## The event may not have finished executing yet. +signal event_handled(resource: DialogicEvent) + +## Emitted when a [class SignalEvent] event was reached. +@warning_ignore("unused_signal") # This is emitted by the signal event. +signal signal_event(argument: Variant) + +## Emitted when a signal event gets fired from a [class TextEvent] event. +@warning_ignore("unused_signal") # This is emitted by the text subsystem. +signal text_signal(argument: String) + + +# Careful, this section is repopulated automatically at certain moments. +#region SUBSYSTEMS + +var Animations := preload("res://addons/dialogic/Modules/Core/subsystem_animation.gd").new(): + get: return get_subsystem("Animations") + +var Audio := preload("res://addons/dialogic/Modules/Audio/subsystem_audio.gd").new(): + get: return get_subsystem("Audio") + +var Backgrounds := preload("res://addons/dialogic/Modules/Background/subsystem_backgrounds.gd").new(): + get: return get_subsystem("Backgrounds") + +var Choices := preload("res://addons/dialogic/Modules/Choice/subsystem_choices.gd").new(): + get: return get_subsystem("Choices") + +var Expressions := preload("res://addons/dialogic/Modules/Core/subsystem_expression.gd").new(): + get: return get_subsystem("Expressions") + +var Glossary := preload("res://addons/dialogic/Modules/Glossary/subsystem_glossary.gd").new(): + get: return get_subsystem("Glossary") + +var History := preload("res://addons/dialogic/Modules/History/subsystem_history.gd").new(): + get: return get_subsystem("History") + +var Inputs := preload("res://addons/dialogic/Modules/Core/subsystem_input.gd").new(): + get: return get_subsystem("Inputs") + +var Jump := preload("res://addons/dialogic/Modules/Jump/subsystem_jump.gd").new(): + get: return get_subsystem("Jump") + +var PortraitContainers := preload("res://addons/dialogic/Modules/Character/subsystem_containers.gd").new(): + get: return get_subsystem("PortraitContainers") + +var Portraits := preload("res://addons/dialogic/Modules/Character/subsystem_portraits.gd").new(): + get: return get_subsystem("Portraits") + +var Save := preload("res://addons/dialogic/Modules/Save/subsystem_save.gd").new(): + get: return get_subsystem("Save") + +var Settings := preload("res://addons/dialogic/Modules/Settings/subsystem_settings.gd").new(): + get: return get_subsystem("Settings") + +var Styles := preload("res://addons/dialogic/Modules/Style/subsystem_styles.gd").new(): + get: return get_subsystem("Styles") + +var Text := preload("res://addons/dialogic/Modules/Text/subsystem_text.gd").new(): + get: return get_subsystem("Text") + +var TextInput := preload("res://addons/dialogic/Modules/TextInput/subsystem_text_input.gd").new(): + get: return get_subsystem("TextInput") + +var VAR := preload("res://addons/dialogic/Modules/Variable/subsystem_variables.gd").new(): + get: return get_subsystem("VAR") + +var Voice := preload("res://addons/dialogic/Modules/Voice/subsystem_voice.gd").new(): + get: return get_subsystem("Voice") + +#endregion + + +## Autoloads are added first, so this happens REALLY early on game startup. +func _ready() -> void: + _collect_subsystems() + + clear() + + DialogicResourceUtil.update_event_cache() + + dialog_ending_timeline = DialogicTimeline.new() + dialog_ending_timeline.from_text("[clear]") + + +#region TIMELINE & EVENT HANDLING +################################################################################ + +## Method to start a timeline AND ensure that a layout scene is present. +## For argument info, checkout [method start_timeline]. +## -> returns the layout node +func start(timeline:Variant, label_or_idx:Variant="") -> Node: + # If we don't have a style subsystem, default to just start_timeline() + if not has_subsystem('Styles'): + printerr("[Dialogic] You called Dialogic.start() but the Styles subsystem is missing!") + clear(ClearFlags.KEEP_VARIABLES) + start_timeline(timeline, label_or_idx) + return null + + # Otherwise make sure there is a style active. + var scene: Node = null + if !self.Styles.has_active_layout_node(): + scene = self.Styles.load_style() + else: + scene = self.Styles.get_layout_node() + scene.show() + + if not scene.is_node_ready(): + if not scene.ready.is_connected(clear.bind(ClearFlags.KEEP_VARIABLES)): + scene.ready.connect(clear.bind(ClearFlags.KEEP_VARIABLES)) + if not scene.ready.is_connected(start_timeline.bind(timeline, label_or_idx)): + scene.ready.connect(start_timeline.bind(timeline, label_or_idx)) + else: + start_timeline(timeline, label_or_idx) + + return scene + + +## Method to start a timeline without adding a layout scene. +## @timeline can be either a loaded timeline resource or a path to a timeline file. +## @label_or_idx can be a label (string) or index (int) to skip to immediatly. +func start_timeline(timeline:Variant, label_or_idx:Variant = "") -> void: + # load the resource if only the path is given + if typeof(timeline) in [TYPE_STRING, TYPE_STRING_NAME]: + #check the lookup table if it's not a full file name + if "://" in timeline: + timeline = load(timeline) + else: + timeline = DialogicResourceUtil.get_timeline_resource(timeline) + + if timeline == null: + printerr("[Dialogic] There was an error loading this timeline. Check the filename, and the timeline for errors") + return + + (timeline as DialogicTimeline).process() + + current_timeline = timeline + current_timeline_events = current_timeline.events + for event in current_timeline_events: + event.dialogic = self + current_event_idx = -1 + + if typeof(label_or_idx) in [TYPE_STRING, TYPE_STRING_NAME]: + if label_or_idx: + if has_subsystem('Jump'): + Jump.jump_to_label((label_or_idx as String)) + elif typeof(label_or_idx) == TYPE_INT: + if label_or_idx >-1: + current_event_idx = label_or_idx -1 + + if not current_timeline == dialog_ending_timeline: + timeline_started.emit() + + handle_next_event() + + +## Preloader function, prepares a timeline and returns an object to hold for later +## [param timeline_resource] can be either a path (string) or a loaded timeline (resource) +func preload_timeline(timeline_resource:Variant) -> Variant: + # I think ideally this should be on a new thread, will test + if typeof(timeline_resource) in [TYPE_STRING, TYPE_STRING_NAME]: + if "://" in timeline_resource: + timeline_resource = load(timeline_resource) + else: + timeline_resource = DialogicResourceUtil.get_timeline_resource(timeline_resource) + + if timeline_resource == null: + printerr("[Dialogic] There was an error preloading this timeline. Check the filename, and the timeline for errors") + return null + + (timeline_resource as DialogicTimeline).process() + + return timeline_resource + + +## Clears and stops the current timeline. +## If [param skip_ending] is `true`, the dialog_ending_timeline is not getting played +func end_timeline(skip_ending := false) -> void: + if not skip_ending and dialog_ending_timeline and current_timeline != dialog_ending_timeline: + start(dialog_ending_timeline) + return + + await clear(ClearFlags.TIMELINE_INFO_ONLY) + + if Styles.has_active_layout_node() and Styles.get_layout_node().is_inside_tree(): + match ProjectSettings.get_setting('dialogic/layout/end_behaviour', 0): + 0: + Styles.get_layout_node().get_parent().remove_child(Styles.get_layout_node()) + Styles.get_layout_node().queue_free() + 1: + Styles.get_layout_node().hide() + + timeline_ended.emit() + + +## Method to check if timeline exists. +## @timeline can be either a loaded timeline resource or a path to a timeline file. +func timeline_exists(timeline:Variant) -> bool: + if typeof(timeline) in [TYPE_STRING, TYPE_STRING_NAME]: + if "://" in timeline and ResourceLoader.exists(timeline): + return load(timeline) is DialogicTimeline + else: + return DialogicResourceUtil.timeline_resource_exists(timeline) + + return timeline is DialogicTimeline + + +## Handles the next event. +func handle_next_event(_ignore_argument: Variant = "") -> void: + handle_event(current_event_idx+1) + + +## Handles the event at the given index [param event_index]. +## You can call this manually, but if another event is still executing, it might have unexpected results. +func handle_event(event_index:int) -> void: + if not current_timeline: + return + + _cleanup_previous_event() + + if paused: + await dialogic_resumed + + if event_index >= len(current_timeline_events): + end_timeline() + return + + # TODO: Check if necessary. This should be impossible. + #actually process the event now, since we didnt earlier at runtime + #this needs to happen before we create the copy DialogicEvent variable, so it doesn't throw an error if not ready + if current_timeline_events[event_index].event_node_ready == false: + current_timeline_events[event_index]._load_from_string(current_timeline_events[event_index].event_node_as_text) + + current_event_idx = event_index + + if not current_timeline_events[event_index].event_finished.is_connected(handle_next_event): + current_timeline_events[event_index].event_finished.connect(handle_next_event) + + set_meta('previous_event', current_timeline_events[event_index]) + + current_timeline_events[event_index].execute(self) + event_handled.emit(current_timeline_events[event_index]) + + +## Resets Dialogic's state fully or partially. +## By using the clear flags from the [member ClearFlags] enum you can specify +## what info should be kept. +## For example, at timeline end usually it doesn't clear node or subsystem info. +func clear(clear_flags := ClearFlags.FULL_CLEAR) -> void: + _cleanup_previous_event() + + if !clear_flags & ClearFlags.TIMELINE_INFO_ONLY: + for subsystem in get_children(): + if subsystem is DialogicSubsystem: + (subsystem as DialogicSubsystem).clear_game_state(clear_flags) + + var timeline := current_timeline + + current_timeline = null + current_event_idx = -1 + current_timeline_events = [] + current_state = States.IDLE + + # Resetting variables + if timeline: + await timeline.clean() + + +## Cleanup after previous event (if any). +func _cleanup_previous_event(): + if has_meta('previous_event') and get_meta('previous_event') is DialogicEvent: + var event := get_meta('previous_event') as DialogicEvent + if event.event_finished.is_connected(handle_next_event): + event.event_finished.disconnect(handle_next_event) + event._clear_state() + remove_meta("previous_event") + +#endregion + + +#region SAVING & LOADING +################################################################################ + +## Returns a dictionary containing all necessary information to later recreate the same state with load_full_state. +## The [subsystem Save] subsystem might be more useful for you. +## However, this can be used to integrate the info into your own save system. +func get_full_state() -> Dictionary: + if current_timeline: + current_state_info['current_event_idx'] = current_event_idx + current_state_info['current_timeline'] = current_timeline.resource_path + else: + current_state_info['current_event_idx'] = -1 + current_state_info['current_timeline'] = null + + for subsystem in get_children(): + (subsystem as DialogicSubsystem).save_game_state() + + return current_state_info.duplicate(true) + + +## This method tries to load the state from the given [param state_info]. +## Will automatically start a timeline and add a layout if a timeline was running when +## the dictionary was retrieved with [method get_full_state]. +func load_full_state(state_info:Dictionary) -> void: + clear() + current_state_info = state_info + ## The Style subsystem needs to run first for others to load correctly. + var scene: Node = null + if has_subsystem('Styles'): + get_subsystem('Styles').load_game_state() + scene = self.Styles.get_layout_node() + + var load_subsystems := func() -> void: + for subsystem in get_children(): + if subsystem.name == 'Styles': + continue + (subsystem as DialogicSubsystem).load_game_state() + + if null != scene and not scene.is_node_ready(): + scene.ready.connect(load_subsystems) + else: + await get_tree().process_frame + load_subsystems.call() + + if current_state_info.get('current_timeline', null): + start_timeline(current_state_info.current_timeline, current_state_info.get('current_event_idx', 0)) + else: + end_timeline.call_deferred(true) +#endregion + + +#region SUB-SYTSEMS +################################################################################ + +func _collect_subsystems() -> void: + var subsystem_nodes := [] as Array[DialogicSubsystem] + for indexer in DialogicUtil.get_indexers(): + for subsystem in indexer._get_subsystems(): + var subsystem_node := add_subsystem(str(subsystem.name), str(subsystem.script)) + subsystem_nodes.push_back(subsystem_node) + + for subsystem in subsystem_nodes: + subsystem.post_install() + + +## Returns `true` if a subystem with the given [param subsystem_name] exists. +func has_subsystem(subsystem_name:String) -> bool: + return has_node(subsystem_name) + + +## Returns the subsystem node of the given [param subsystem_name] or null if it doesn't exist. +func get_subsystem(subsystem_name:String) -> DialogicSubsystem: + return get_node(subsystem_name) + + +## Adds a subsystem node with the given [param subsystem_name] and [param script_path]. +func add_subsystem(subsystem_name:String, script_path:String) -> DialogicSubsystem: + var node: Node = Node.new() + node.name = subsystem_name + node.set_script(load(script_path)) + node = node as DialogicSubsystem + node.dialogic = self + add_child(node) + return node + + +#endregion + + +#region HELPERS +################################################################################ + + + +func print_debug_moment() -> void: + if not current_timeline: + return + + printerr("\tAt event ", current_event_idx+1, " (",current_timeline_events[current_event_idx].event_name, ' Event) in timeline "', current_timeline.get_identifier(), '" (',current_timeline.resource_path,').') + print("\n") +#endregion diff --git a/addons/dialogic/Core/DialogicGameHandler.gd.uid b/addons/dialogic/Core/DialogicGameHandler.gd.uid new file mode 100644 index 0000000..1565a56 --- /dev/null +++ b/addons/dialogic/Core/DialogicGameHandler.gd.uid @@ -0,0 +1 @@ +uid://ds2q0uclmolvu diff --git a/addons/dialogic/Core/DialogicResourceUtil.gd b/addons/dialogic/Core/DialogicResourceUtil.gd new file mode 100644 index 0000000..e5449c8 --- /dev/null +++ b/addons/dialogic/Core/DialogicResourceUtil.gd @@ -0,0 +1,376 @@ +@tool +class_name DialogicResourceUtil + +static var label_cache := {} +static var event_cache: Array[DialogicEvent] = [] +static var channel_cache := {} + +static var special_resources := {} + + +static func update() -> void: + update_directory('.dch') + update_directory('.dtl') + update_label_cache() + update_audio_channel_cache() + DialogicStylesUtil.build_style_directory() + + +#region RESOURCE DIRECTORIES +################################################################################ + +static func get_directory(extension:String) -> Dictionary: + extension = extension.trim_prefix('.') + if Engine.has_meta(extension+'_directory'): + return Engine.get_meta(extension+'_directory', {}) + + var directory: Dictionary = ProjectSettings.get_setting("dialogic/directories/"+extension+'_directory', {}) + Engine.set_meta(extension+'_directory', directory) + return directory + + +static func set_directory(extension:String, directory:Dictionary) -> void: + extension = extension.trim_prefix('.') + if Engine.is_editor_hint(): + ProjectSettings.set_setting("dialogic/directories/"+extension+'_directory', directory) + ProjectSettings.save() + Engine.set_meta(extension+'_directory', directory) + + +static func update_directory(extension:String) -> void: + var directory := get_directory(extension) + + for resource in list_resources_of_type(extension): + if not resource in directory.values(): + directory = add_resource_to_directory(resource, directory) + + var keys_to_remove := [] + for key in directory: + if not ResourceLoader.exists(directory[key]): + keys_to_remove.append(key) + for key in keys_to_remove: + directory.erase(key) + + set_directory(extension, directory) + + +static func add_resource_to_directory(file_path:String, directory:Dictionary) -> Dictionary: + var suggested_name := file_path.get_file().trim_suffix("."+file_path.get_extension()) + var temp := suggested_name + while suggested_name in directory: + suggested_name = file_path.trim_suffix("/"+suggested_name+"."+file_path.get_extension()).get_file().path_join(suggested_name) + if suggested_name == temp: + break + temp = suggested_name + directory[suggested_name] = file_path + return directory + + +## Returns the unique identifier for the given resource path. +## Returns an empty string if no identifier was found. +static func get_unique_identifier_by_path(file_path:String) -> String: + if not file_path: return "" + var identifier: Variant = get_directory(file_path.get_extension()).find_key(file_path) + if typeof(identifier) == TYPE_STRING: + return identifier + return "" + + +static func get_resource_path_from_identifier(identifier:String, extension:String) -> String: + var value: Variant = get_directory(extension).get(identifier, '') + if value is String: + return value + return "" + + +## Returns the resource associated with the given unique identifier. +## The expected extension is needed to use the right directory. +static func get_resource_from_identifier(identifier:String, extension:String) -> Resource: + var value: Variant = get_directory(extension).get(identifier, '') + if typeof(value) == TYPE_STRING and ResourceLoader.exists(value): + return load(value) + elif value is Resource: + return value + return null + + +## Returns a boolean that expresses whether the resource exists. +## The expected extension is needed to use the right directory. +static func resource_exists_from_identifier(identifier:String, extension:String) -> bool: + var value: Variant = get_directory(extension).get(identifier, '') + if typeof(value) == TYPE_STRING: + return ResourceLoader.exists(value) + return value is Resource + + +## Editor Only +static func change_unique_identifier(file_path:String, new_identifier:String) -> void: + var directory := get_directory(file_path.get_extension()) + var key: String = directory.find_key(file_path) + while key != null: + if key == new_identifier: + break + directory.erase(key) + directory[new_identifier] = file_path + key = directory.find_key(file_path) + set_directory(file_path.get_extension(), directory) + + +static func change_resource_path(old_path:String, new_path:String) -> void: + var directory := get_directory(new_path.get_extension()) + var key: String = directory.find_key(old_path) + while key != null: + directory[key] = new_path + key = directory.find_key(old_path) + set_directory(new_path.get_extension(), directory) + + +static func remove_resource(file_path:String) -> void: + var directory := get_directory(file_path.get_extension()) + var key: String = directory.find_key(file_path) + while key != null: + directory.erase(key) + key = directory.find_key(file_path) + set_directory(file_path.get_extension(), directory) + + +static func is_identifier_unused(extension:String, identifier:String) -> bool: + return not identifier in get_directory(extension) + + +## While usually the directory maps identifiers to paths, this method (only supposed to be used at runtime) +## allows mapping resources that are not saved to an identifier. +static func register_runtime_resource(resource:Resource, identifier:String, extension:String) -> void: + var directory := get_directory(extension) + directory[identifier] = resource + set_directory(extension, directory) + + +static func get_runtime_unique_identifier(resource:Resource, extension:String) -> String: + var identifier: Variant = get_directory(extension).find_key(resource) + if typeof(identifier) == TYPE_STRING: + return identifier + return "" + +#endregion + +#region LABEL CACHE +################################################################################ +# The label cache is only for the editor so we don't have to scan all timelines +# whenever we want to suggest labels. This has no use in game and is not always perfect. + +static func get_label_cache() -> Dictionary: + if not label_cache.is_empty(): + return label_cache + + label_cache = DialogicUtil.get_editor_setting('label_ref', {}) + return label_cache + + +static func set_label_cache(cache:Dictionary) -> void: + label_cache = cache + + +static func update_label_cache() -> void: + var cache := get_label_cache() + var timelines := get_timeline_directory().values() + for timeline in cache: + if !timeline in timelines: + cache.erase(timeline) + set_label_cache(cache) + +#endregion + +#region AUDIO CHANNEL CACHE +################################################################################ +# The audio channel cache is only for the editor so we don't have to scan all timelines +# whenever we want to suggest channels. This has no use in game and is not always perfect. + +static func get_audio_channel_cache() -> Dictionary: + if not channel_cache.is_empty(): + return channel_cache + + channel_cache = DialogicUtil.get_editor_setting('channel_ref', {}) + return channel_cache + + +static func get_channel_list() -> Array: + if channel_cache.is_empty(): + return [] + + var cached_names := [] + for timeline in channel_cache: + for name in channel_cache[timeline]: + if not cached_names.has(name): + cached_names.append(name) + return cached_names + + +static func set_audio_channel_cache(cache:Dictionary) -> void: + channel_cache = cache + + +static func update_audio_channel_cache() -> void: + var cache := get_audio_channel_cache() + var timelines := get_timeline_directory().values() + for timeline in cache: + if !timeline in timelines: + cache.erase(timeline) + set_audio_channel_cache(cache) + +#endregion + +#region EVENT CACHE +################################################################################ + +## Dialogic keeps a list that has each event once. This allows retrieval of that list. +static func get_event_cache() -> Array: + if not event_cache.is_empty(): + return event_cache + + event_cache = update_event_cache() + return event_cache + + +static func update_event_cache() -> Array: + event_cache = [] + for indexer in DialogicUtil.get_indexers(): + # build event cache + for event in indexer._get_events(): + if not ResourceLoader.exists(event): + continue + if not 'event_end_branch.gd' in event and not 'event_text.gd' in event: + event_cache.append(load(event).new()) + + # Events are checked in order while testing them. EndBranch needs to be first, Text needs to be last + event_cache.push_front(DialogicEndBranchEvent.new()) + event_cache.push_back(DialogicTextEvent.new()) + + return event_cache + +#endregion + +#region SPECIAL RESOURCES +################################################################################ + +static func update_special_resources() -> void: + special_resources.clear() + for indexer in DialogicUtil.get_indexers(): + var additions := indexer._get_special_resources() + for resource_type in additions: + if not resource_type in special_resources: + special_resources[resource_type] = {} + special_resources[resource_type].merge(additions[resource_type]) + + +static func list_special_resources(type:String, filter := {}) -> Dictionary: + if special_resources.is_empty(): + update_special_resources() + if type in special_resources: + if filter.is_empty(): + return special_resources[type] + else: + var results := {} + for i in special_resources[type]: + if match_resource_filter(special_resources[type][i], filter): + results[i] = special_resources[type][i] + return results + return {} + + +static func match_resource_filter(dict:Dictionary, filter:Dictionary) -> bool: + for i in filter: + if not i in dict: + return false + if typeof(filter[i]) == TYPE_ARRAY: + if not dict[i] in filter[i]: + return false + else: + if not dict[i] == filter[i]: + return false + return true + + +static func guess_special_resource(type: String, string: String, default := {}, filter := {}, ignores:PackedStringArray=[]) -> Dictionary: + if string.is_empty(): + return default + + if special_resources.is_empty(): + update_special_resources() + var resources := list_special_resources(type, filter) + if resources.is_empty(): + printerr("[Dialogic] No ", type, "s found, but attempted to use one.") + return default + + if string.begins_with('res://'): + for i in resources.values(): + if i.path == string: + return i + printerr("[Dialogic] Unable to find ", type, " at path '", string, "'.") + return default + + string = string.to_lower() + + if string in resources: + return resources[string] + + if not ignores.is_empty(): + var regex := RegEx.create_from_string(r" ?\b(" + "|".join(ignores) + r")\b") + for name in resources: + if regex.sub(name, "") == regex.sub(string, ""): + return resources[name] + + ## As a last effort check against the unfiltered list + if string in special_resources[type]: + push_warning("[Dialogic] Using ", type, " '", string,"' when not supposed to.") + return special_resources[type][string] + + printerr("[Dialogic] Unable to identify ", type, " based on string '", string, "'.") + return default + +#endregion + +#region HELPERS +################################################################################ + +static func get_character_directory() -> Dictionary: + return get_directory('dch') + + +static func get_timeline_directory() -> Dictionary: + return get_directory('dtl') + + +static func timeline_resource_exists(timeline_identifier:String) -> bool: + return resource_exists_from_identifier(timeline_identifier, 'dtl') + + +static func get_timeline_resource(timeline_identifier:String) -> DialogicTimeline: + return get_resource_from_identifier(timeline_identifier, 'dtl') + + +static func get_character_resource(character_identifier:String) -> DialogicCharacter: + return get_resource_from_identifier(character_identifier, 'dch') + + +static func list_resources_of_type(extension:String) -> Array: + var all_resources := scan_folder('res://', extension) + return all_resources + + +static func scan_folder(path:String, extension:String) -> Array: + var list: Array = [] + if DirAccess.dir_exists_absolute(path) and not FileAccess.file_exists(path + "/" + ".gdignore"): + var dir := DirAccess.open(path) + dir.list_dir_begin() + var file_name := dir.get_next() + while file_name != "": + if dir.current_is_dir() and not file_name.begins_with("."): + list += scan_folder(path.path_join(file_name), extension) + else: + if file_name.ends_with(extension): + list.append(path.path_join(file_name)) + file_name = dir.get_next() + return list + +#endregion diff --git a/addons/dialogic/Core/DialogicResourceUtil.gd.uid b/addons/dialogic/Core/DialogicResourceUtil.gd.uid new file mode 100644 index 0000000..21ba6f9 --- /dev/null +++ b/addons/dialogic/Core/DialogicResourceUtil.gd.uid @@ -0,0 +1 @@ +uid://bdt5bbxxkvab4 diff --git a/addons/dialogic/Core/DialogicUtil.gd b/addons/dialogic/Core/DialogicUtil.gd new file mode 100644 index 0000000..897a61e --- /dev/null +++ b/addons/dialogic/Core/DialogicUtil.gd @@ -0,0 +1,803 @@ +@tool +class_name DialogicUtil + +## Script that container helper methods for both editor and game execution. +## Used whenever the same thing is needed in different parts of the plugin. + +#region EDITOR + +## This method should be used instead of EditorInterface.get_editor_scale(), because if you use that +## it will run perfectly fine from the editor, but crash when the game is exported. +static func get_editor_scale() -> float: + if Engine.is_editor_hint(): + return get_dialogic_plugin().get_editor_interface().get_editor_scale() + return 1.0 + + +## Although this does in fact always return a EditorPlugin node, +## that class is apparently not present in export and referencing it here creates a crash. +static func get_dialogic_plugin() -> Node: + for child in Engine.get_main_loop().get_root().get_children(): + if child.get_class() == "EditorNode": + return child.get_node('DialogicPlugin') + return null + +#endregion + + +## Returns the autoload when in-game. +static func autoload() -> DialogicGameHandler: + if Engine.is_editor_hint(): + return null + if not Engine.get_main_loop().root.has_node("Dialogic"): + return null + return Engine.get_main_loop().root.get_node("Dialogic") + + +#region FILE SYSTEM +################################################################################ +static func listdir(path: String, files_only:= true, _throw_error:= true, full_file_path:= false, include_imports := false) -> Array: + var files: Array = [] + if path.is_empty(): path = "res://" + if DirAccess.dir_exists_absolute(path): + var dir := DirAccess.open(path) + dir.list_dir_begin() + var file_name := dir.get_next() + while file_name != "": + if not file_name.begins_with("."): + if files_only: + if not dir.current_is_dir() and (not file_name.ends_with('.import') or include_imports): + if full_file_path: + files.append(path.path_join(file_name)) + else: + files.append(file_name) + else: + if full_file_path: + files.append(path.path_join(file_name)) + else: + files.append(file_name) + file_name = dir.get_next() + dir.list_dir_end() + return files + + +static func get_module_path(name:String, builtin:=true) -> String: + if builtin: + return "res://addons/dialogic/Modules".path_join(name) + else: + return ProjectSettings.get_setting('dialogic/extensions_folder', 'res://addons/dialogic_additions').path_join(name) + + +## This is a private and editor-only function. +## +## Populates the [class DialogicGameHandler] with new custom subsystems by +## directly manipulating the file's content and then importing the file. +static func _update_autoload_subsystem_access() -> void: + if not Engine.is_editor_hint(): + printerr("[Dialogic] This function is only available in the editor.") + return + + var script: Script = load("res://addons/dialogic/Core/DialogicGameHandler.gd") + var new_subsystem_access_list := "#region SUBSYSTEMS\n" + var subsystems_sorted := [] + + for indexer: DialogicIndexer in get_indexers(true, true): + + for subsystem: Dictionary in indexer._get_subsystems().duplicate(true): + subsystems_sorted.append(subsystem) + + subsystems_sorted.sort_custom(func (a: Dictionary, b: Dictionary) -> bool: + return a.name < b.name + ) + + for subsystem: Dictionary in subsystems_sorted: + new_subsystem_access_list += '\nvar {name} := preload("{script}").new():\n\tget: return get_subsystem("{name}")\n'.format(subsystem) + + new_subsystem_access_list += "\n#endregion" + script.source_code = RegEx.create_from_string(r"#region SUBSYSTEMS\n#*\n((?!#endregion)(.*\n))*#endregion").sub(script.source_code, new_subsystem_access_list) + ResourceSaver.save(script) + Engine.get_singleton("EditorInterface").get_resource_filesystem().reimport_files(["res://addons/dialogic/Core/DialogicGameHandler.gd"]) + + +static func get_indexers(include_custom := true, force_reload := false) -> Array[DialogicIndexer]: + if Engine.get_main_loop().has_meta('dialogic_indexers') and not force_reload: + return Engine.get_main_loop().get_meta('dialogic_indexers') + + var indexers: Array[DialogicIndexer] = [] + for file in listdir(DialogicUtil.get_module_path(''), false): + var possible_script: String = DialogicUtil.get_module_path(file).path_join("index.gd") + if ResourceLoader.exists(possible_script): + indexers.append(load(possible_script).new()) + + if include_custom: + var extensions_folder: String = ProjectSettings.get_setting('dialogic/extensions_folder', "res://addons/dialogic_additions/") + for file in listdir(extensions_folder, false, false): + var possible_script: String = extensions_folder.path_join(file + "/index.gd") + if ResourceLoader.exists(possible_script): + indexers.append(load(possible_script).new()) + + Engine.get_main_loop().set_meta('dialogic_indexers', indexers) + return indexers + + + +## Turns a [param file_path] from `some_file.png` to `Some File`. +static func pretty_name(file_path: String) -> String: + var _name := file_path.get_file().trim_suffix("." + file_path.get_extension()) + _name = _name.replace('_', ' ') + _name = _name.capitalize() + + return _name + +#endregion + + +#region EDITOR SETTINGS & COLORS +################################################################################ + +static func set_editor_setting(setting:String, value:Variant) -> void: + var cfg := ConfigFile.new() + if FileAccess.file_exists('user://dialogic/editor_settings.cfg'): + cfg.load('user://dialogic/editor_settings.cfg') + + cfg.set_value('DES', setting, value) + + if !DirAccess.dir_exists_absolute('user://dialogic'): + DirAccess.make_dir_absolute('user://dialogic') + cfg.save('user://dialogic/editor_settings.cfg') + + +static func get_editor_setting(setting:String, default:Variant=null) -> Variant: + var cfg := ConfigFile.new() + if !FileAccess.file_exists('user://dialogic/editor_settings.cfg'): + return default + + if !cfg.load('user://dialogic/editor_settings.cfg') == OK: + return default + + return cfg.get_value('DES', setting, default) + + +static func get_color_palette(default:bool = false) -> Dictionary: + var defaults := { + 'Color1': Color('#3b8bf2'), # Blue + 'Color2': Color('#00b15f'), # Green + 'Color3': Color('#e868e2'), # Pink + 'Color4': Color('#9468e8'), # Purple + 'Color5': Color('#574fb0'), # DarkPurple + 'Color6': Color('#1fa3a3'), # Aquamarine + 'Color7': Color('#fa952a'), # Orange + 'Color8': Color('#de5c5c'), # Red + 'Color9': Color('#7c7c7c'), # Gray + } + if default: + return defaults + return get_editor_setting('color_palette', defaults) + + +static func get_color(value:String) -> Color: + var colors := get_color_palette() + return colors[value] + +#endregion + + +#region TIMER PROCESS MODE +################################################################################ +static func is_physics_timer() -> bool: + return ProjectSettings.get_setting('dialogic/timer/process_in_physics', false) + + +static func update_timer_process_callback(timer:Timer) -> void: + timer.process_callback = Timer.TIMER_PROCESS_PHYSICS if is_physics_timer() else Timer.TIMER_PROCESS_IDLE + +#endregion + + +#region MULTITWEEN +################################################################################ +static func multitween(tweened_value:Variant, item:Node, property:String, part:String) -> void: + var parts: Dictionary = item.get_meta(property+'_parts', {}) + parts[part] = tweened_value + + if not item.has_meta(property+'_base_value') and not 'base' in parts: + item.set_meta(property+'_base_value', item.get(property)) + + var final_value: Variant = parts.get('base', item.get_meta(property+'_base_value', item.get(property))) + + for key in parts: + if key == 'base': + continue + else: + final_value += parts[key] + + item.set(property, final_value) + item.set_meta(property+'_parts', parts) + +#endregion + + +#region TRANSLATIONS +################################################################################ + +static func get_next_translation_id() -> String: + ProjectSettings.set_setting('dialogic/translation/id_counter', ProjectSettings.get_setting('dialogic/translation/id_counter', 16)+1) + return '%x' % ProjectSettings.get_setting('dialogic/translation/id_counter', 16) + +#endregion + + +#region VARIABLES +################################################################################ + +enum VarTypes {ANY, STRING, FLOAT, INT, BOOL} + + +static func get_default_variables() -> Dictionary: + return ProjectSettings.get_setting('dialogic/variables', {}) + + +# helper that converts a nested variable dictionary into an array with paths +static func list_variables(dict:Dictionary, path := "", type:=VarTypes.ANY) -> Array: + var array := [] + for key in dict.keys(): + if typeof(dict[key]) == TYPE_DICTIONARY: + array.append_array(list_variables(dict[key], path+key+".", type)) + else: + if type == VarTypes.ANY or get_variable_value_type(dict[key]) == type: + array.append(path+key) + return array + + +static func get_variable_value_type(value:Variant) -> VarTypes: + match typeof(value): + TYPE_STRING: + return VarTypes.STRING + TYPE_FLOAT: + return VarTypes.FLOAT + TYPE_INT: + return VarTypes.INT + TYPE_BOOL: + return VarTypes.BOOL + return VarTypes.ANY + + +static func get_variable_type(path:String, dict:Dictionary={}) -> VarTypes: + if dict.is_empty(): + dict = get_default_variables() + return get_variable_value_type(_get_value_in_dictionary(path, dict)) + + +## This will set a value in a dictionary (or a sub-dictionary based on the path) +## e.g. it could set "Something.Something.Something" in {'Something':{'Something':{'Someting':"value"}}} +static func _set_value_in_dictionary(path:String, dictionary:Dictionary, value): + if '.' in path: + var from := path.split('.')[0] + if from in dictionary.keys(): + dictionary[from] = _set_value_in_dictionary(path.trim_prefix(from+"."), dictionary[from], value) + else: + if path in dictionary.keys(): + dictionary[path] = value + return dictionary + + +## This will get a value in a dictionary (or a sub-dictionary based on the path) +## e.g. it could get "Something.Something.Something" in {'Something':{'Something':{'Someting':"value"}}} +static func _get_value_in_dictionary(path:String, dictionary:Dictionary, default= null) -> Variant: + if '.' in path: + var from := path.split('.')[0] + if from in dictionary.keys(): + return _get_value_in_dictionary(path.trim_prefix(from+"."), dictionary[from], default) + else: + if path in dictionary.keys(): + return dictionary[path] + return default + +#endregion + + +#region SCENE EXPORT OVERRIDES +################################################################################ + +static func apply_scene_export_overrides(node:Node, export_overrides:Dictionary, apply := true) -> void: + var default_info := get_scene_export_defaults(node) + if !node.script: + return + var property_info: Array[Dictionary] = node.script.get_script_property_list() + for i in property_info: + if i['usage'] & PROPERTY_USAGE_EDITOR: + if i['name'] in export_overrides: + if str_to_var(export_overrides[i['name']]) == null and typeof(node.get(i['name'])) == TYPE_STRING: + node.set(i['name'], export_overrides[i['name']]) + else: + node.set(i['name'], str_to_var(export_overrides[i['name']])) + elif i['name'] in default_info: + node.set(i['name'], default_info.get(i['name'])) + if apply: + if node.has_method('apply_export_overrides'): + node.apply_export_overrides() + + +static func get_scene_export_defaults(node:Node) -> Dictionary: + if !node.script: + return {} + + if Engine.get_main_loop().has_meta('dialogic_scene_export_defaults') and \ + node.script.resource_path in Engine.get_main_loop().get_meta('dialogic_scene_export_defaults'): + return Engine.get_main_loop().get_meta('dialogic_scene_export_defaults')[node.script.resource_path] + + if !Engine.get_main_loop().has_meta('dialogic_scene_export_defaults'): + Engine.get_main_loop().set_meta('dialogic_scene_export_defaults', {}) + var defaults := {} + var property_info: Array[Dictionary] = node.script.get_script_property_list() + for i in property_info: + if i['usage'] & PROPERTY_USAGE_EDITOR: + defaults[i['name']] = node.get(i['name']) + Engine.get_main_loop().get_meta('dialogic_scene_export_defaults')[node.script.resource_path] = defaults + return defaults + +#endregion + +#region MAKE CUSTOM + +static func make_file_custom(original_file:String, target_folder:String, new_file_name := "", new_folder_name := "") -> String: + if not ResourceLoader.exists(original_file): + push_error("[Dialogic] Unable to make file with invalid path custom!") + return "" + + if new_folder_name: + target_folder = target_folder.path_join(new_folder_name) + DirAccess.make_dir_absolute(target_folder) + + if new_file_name.is_empty(): + new_file_name = "custom_" + original_file.get_file() + + if not new_file_name.ends_with(original_file.get_extension()): + new_file_name += "." + original_file.get_extension() + + var target_file := target_folder.path_join(new_file_name) + + customize_file(original_file, target_file) + + get_dialogic_plugin().get_editor_interface().get_resource_filesystem().scan_sources() + + return target_file + + +static func customize_file(original_file:String, target_file:String) -> String: + #print("\nCUSTOMIZE FILE") + #printt(original_file, "->", target_file) + + DirAccess.copy_absolute(original_file, target_file) + + var file := FileAccess.open(target_file, FileAccess.READ) + var file_text := file.get_as_text() + file.close() + + # If we are customizing a scene, we check for any resources used in that scene that are in the same folder. + # Those will be copied as well and the scene will be modified to point to them. + if file_text.begins_with('[gd_'): + var base_path: String = original_file.get_base_dir() + + var remove_uuid_regex := r'\[gd_.* (?uid="uid:[^"]*")' + var result := RegEx.create_from_string(remove_uuid_regex).search(file_text) + if result: + file_text = file_text.replace(result.get_string("uid"), "") + + # This regex also removes the UID referencing the original resource + var file_regex := r'(uid="[^"]*" )?\Qpath="'+base_path+r'\E(?[^"]*)"' + result = RegEx.create_from_string(file_regex).search(file_text) + while result: + var found_file_name := result.get_string('file') + var found_file_path := base_path.path_join(found_file_name) + var target_file_path := target_file.get_base_dir().path_join(found_file_name) + + # Files found in this file will ALSO be customized. + customize_file(found_file_path, target_file_path) + + file_text = file_text.replace(found_file_path, target_file_path) + + result = RegEx.create_from_string(file_regex).search(file_text) + + file = FileAccess.open(target_file, FileAccess.WRITE) + file.store_string(file_text) + file.close() + + return target_file + +#endregion + +#region INSPECTOR FIELDS +################################################################################ + +static func setup_script_property_edit_node(property_info: Dictionary, value:Variant, property_changed:Callable) -> Control: + var input: Control = null + match property_info['type']: + TYPE_BOOL: + input = CheckBox.new() + if value != null: + input.button_pressed = value + input.toggled.connect(DialogicUtil._on_export_bool_submitted.bind(property_info.name, property_changed)) + TYPE_COLOR: + input = ColorPickerButton.new() + if value != null: + input.color = value + input.color_changed.connect(DialogicUtil._on_export_color_submitted.bind(property_info.name, property_changed)) + input.custom_minimum_size.x = get_editor_scale() * 50 + TYPE_INT: + if property_info['hint'] & PROPERTY_HINT_ENUM: + input = OptionButton.new() + for x in property_info['hint_string'].split(','): + input.add_item(x.split(':')[0]) + if value != null: + input.select(value) + input.item_selected.connect(DialogicUtil._on_export_int_enum_submitted.bind(property_info.name, property_changed)) + else: + input = load("res://addons/dialogic/Editor/Events/Fields/field_number.tscn").instantiate() + input.property_name = property_info['name'] + input.use_int_mode() + + if ',' in property_info.hint_string: + input.min_value = int(property_info.hint_string.get_slice(',', 0)) + input.max_value = int(property_info.hint_string.get_slice(',', 1)) + if property_info.hint_string.count(',') > 1: + input.step = int(property_info.hint_string.get_slice(',', 2)) + else: + input.step = 1 + input.max_value = INF + input.min_value = -INF + + if value != null: + input.set_value(value) + input.value_changed.connect(DialogicUtil._on_export_number_submitted.bind(property_changed)) + TYPE_FLOAT: + input = load("res://addons/dialogic/Editor/Events/Fields/field_number.tscn").instantiate() + input.property_name = property_info['name'] + input.use_float_mode() + input.step = 0.01 + if ',' in property_info.hint_string: + input.min_value = float(property_info.hint_string.get_slice(',', 0)) + input.max_value = float(property_info.hint_string.get_slice(',', 1)) + if property_info.hint_string.count(',') > 1: + input.step = float(property_info.hint_string.get_slice(',', 2)) + if value != null: + input.set_value(value) + input.value_changed.connect(DialogicUtil._on_export_number_submitted.bind(property_changed)) + TYPE_VECTOR2, TYPE_VECTOR3, TYPE_VECTOR4: + var vectorSize: String = type_string(typeof(value))[-1] + input = load("res://addons/dialogic/Editor/Events/Fields/field_vector" + vectorSize + ".tscn").instantiate() + input.property_name = property_info['name'] + input.set_value(value) + input.value_changed.connect(DialogicUtil._on_export_vector_submitted.bind(property_changed)) + TYPE_VECTOR2I, TYPE_VECTOR3I, TYPE_VECTOR4I: + var vectorSize: String = type_string(typeof(value))[-2] + input = load("res://addons/dialogic/Editor/Events/Fields/field_vector" + vectorSize + ".tscn").instantiate() + input.step = 1 + input.property_name = property_info['name'] + input.set_value(value) + input.value_changed.connect(DialogicUtil._on_export_vectori_submitted.bind(property_changed)) + TYPE_STRING: + if property_info['hint'] & PROPERTY_HINT_FILE or property_info['hint'] & PROPERTY_HINT_DIR: + input = load("res://addons/dialogic/Editor/Events/Fields/field_file.tscn").instantiate() + input.show_editing_button = true + input.file_filter = property_info['hint_string'] + input.file_mode = FileDialog.FILE_MODE_OPEN_FILE + if property_info['hint'] == PROPERTY_HINT_DIR: + input.file_mode = FileDialog.FILE_MODE_OPEN_DIR + input.property_name = property_info['name'] + input.placeholder = "Default" + input.hide_reset = true + if value != null: + input.set_value(value) + input.value_changed.connect(DialogicUtil._on_export_file_submitted.bind(property_changed)) + elif property_info['hint'] & PROPERTY_HINT_ENUM: + input = OptionButton.new() + var options: PackedStringArray = [] + for x in property_info['hint_string'].split(','): + options.append(x.split(':')[0].strip_edges()) + input.add_item(options[-1]) + if value != null: + input.select(options.find(value)) + input.item_selected.connect(DialogicUtil._on_export_string_enum_submitted.bind(property_info.name, options, property_changed)) + else: + input = LineEdit.new() + if value != null: + input.text = value + input.text_submitted.connect(DialogicUtil._on_export_input_text_submitted.bind(property_info.name, property_changed)) + TYPE_DICTIONARY: + input = load("res://addons/dialogic/Editor/Events/Fields/field_dictionary.tscn").instantiate() + input.property_name = property_info["name"] + input.set_value(value) + input.value_changed.connect(_on_export_dict_submitted.bind(property_changed)) + TYPE_OBJECT: + input = load("res://addons/dialogic/Editor/Common/hint_tooltip_icon.tscn").instantiate() + input.hint_text = "Objects/Resources as settings are currently not supported. \nUse @export_file('*.extension') instead and load the resource once needed." + + _: + input = LineEdit.new() + if value != null: + input.text = value + input.text_submitted.connect(_on_export_input_text_submitted.bind(property_info.name, property_changed)) + return input + + +static func _on_export_input_text_submitted(text:String, property_name:String, callable: Callable) -> void: + callable.call(property_name, var_to_str(text)) + +static func _on_export_bool_submitted(value:bool, property_name:String, callable: Callable) -> void: + callable.call(property_name, var_to_str(value)) + +static func _on_export_color_submitted(color:Color, property_name:String, callable: Callable) -> void: + callable.call(property_name, var_to_str(color)) + +static func _on_export_int_enum_submitted(item:int, property_name:String, callable: Callable) -> void: + callable.call(property_name, var_to_str(item)) + +static func _on_export_number_submitted(property_name:String, value:float, callable: Callable) -> void: + callable.call(property_name, var_to_str(value)) + +static func _on_export_file_submitted(property_name:String, value:String, callable: Callable) -> void: + callable.call(property_name, var_to_str(value)) + +static func _on_export_string_enum_submitted(value:int, property_name:String, list:PackedStringArray, callable: Callable): + callable.call(property_name, var_to_str(list[value])) + +static func _on_export_vector_submitted(property_name:String, value:Variant, callable: Callable) -> void: + callable.call(property_name, var_to_str(value)) + +static func _on_export_vectori_submitted(property_name:String, value:Variant, callable: Callable) -> void: + match typeof(value): + TYPE_VECTOR2: value = Vector2i(value) + TYPE_VECTOR3: value = Vector3i(value) + TYPE_VECTOR4: value = Vector4i(value) + callable.call(property_name, var_to_str(value)) + +static func _on_export_dict_submitted(property_name:String, value:Variant, callable: Callable) -> void: + callable.call(property_name, var_to_str(value)) + +#endregion + + +#region EVENT DEFAULTS +################################################################################ + +static func get_custom_event_defaults(event_name:String) -> Dictionary: + if Engine.is_editor_hint(): + return ProjectSettings.get_setting('dialogic/event_default_overrides', {}).get(event_name, {}) + else: + if !Engine.get_main_loop().has_meta('dialogic_event_defaults'): + Engine.get_main_loop().set_meta('dialogic_event_defaults', ProjectSettings.get_setting('dialogic/event_default_overrides', {})) + return Engine.get_main_loop().get_meta('dialogic_event_defaults').get(event_name, {}) + +#endregion + + +#region CONVERSION +################################################################################ + +static func str_to_bool(boolstring:String) -> bool: + return true if boolstring == "true" else false + + +static func logical_convert(value:Variant) -> Variant: + if typeof(value) == TYPE_STRING: + if value.is_valid_int(): + return value.to_int() + if value.is_valid_float(): + return value.to_float() + if value == 'true': + return true + if value == 'false': + return false + return value + + +## Takes [param source] and builds a dictionary of keys only. +## The values are `null`. +static func str_to_hash_set(source: String) -> Dictionary: + var dictionary := Dictionary() + + for character in source: + dictionary[character] = null + + return dictionary + +#endregion + + +static func get_character_suggestions(_search_text:String, current_value:DialogicCharacter = null, allow_none := true, allow_all:= false, editor_node:Node = null) -> Dictionary: + var suggestions := {} + + var icon := load("res://addons/dialogic/Editor/Images/Resources/character.svg") + + if allow_none and current_value: + suggestions['(No one)'] = {'value':'', 'editor_icon':["GuiRadioUnchecked", "EditorIcons"]} + + if allow_all: + suggestions['ALL'] = {'value':'--All--', 'tooltip':'All currently joined characters leave', 'editor_icon':["GuiEllipsis", "EditorIcons"]} + + # Get characters in the current timeline and place them at the top of suggestions. + if editor_node: + var recent_characters := [] + var timeline_node := editor_node.get_parent().find_parent("Timeline") as DialogicEditor + for event_node in timeline_node.find_child("Timeline").get_children(): + if event_node == editor_node: + break + if event_node.resource is DialogicCharacterEvent or event_node.resource is DialogicTextEvent: + recent_characters.append(event_node.resource.character) + + recent_characters.reverse() + for character in recent_characters: + if character and not character.get_character_name() in suggestions: + suggestions[character.get_character_name()] = {'value': character.get_character_name(), 'tooltip': character.resource_path, 'icon': icon.duplicate()} + + var character_directory := DialogicResourceUtil.get_character_directory() + for resource in character_directory.keys(): + suggestions[resource] = {'value': resource, 'tooltip': character_directory[resource], 'icon': icon} + + return suggestions + + +static func get_portrait_suggestions(search_text:String, character:DialogicCharacter, allow_empty := false, empty_text := "Don't Change") -> Dictionary: + var icon := load("res://addons/dialogic/Editor/Images/Resources/portrait.svg") + var suggestions := {} + + if allow_empty: + suggestions[empty_text] = {'value':'', 'editor_icon':["GuiRadioUnchecked", "EditorIcons"]} + + if "{" in search_text: + suggestions[search_text] = {'value':search_text, 'editor_icon':["Variant", "EditorIcons"]} + + if character != null: + for portrait in character.portraits: + suggestions[portrait] = {'value':portrait, 'icon':icon} + + return suggestions + + +static func get_portrait_position_suggestions(search_text := "") -> Dictionary: + var icon := load(DialogicUtil.get_module_path("Character").path_join('portrait_position.svg')) + + var setting: String = ProjectSettings.get_setting('dialogic/portraits/position_suggestion_names', 'leftmost, left, center, right, rightmost') + + var suggestions := {} + + if not search_text.is_empty(): + suggestions[search_text] = {'value':search_text.strip_edges(), 'editor_icon':["GuiScrollArrowRight", "EditorIcons"]} + + for position_id in setting.split(','): + suggestions[position_id.strip_edges()] = {'value':position_id.strip_edges(), 'icon':icon} + if not search_text.is_empty() and position_id.strip_edges().begins_with(search_text): + suggestions.erase(search_text) + + return suggestions + + +static func get_autoload_suggestions(filter:String="") -> Dictionary: + var suggestions := {} + + for prop in ProjectSettings.get_property_list(): + if prop.name.begins_with('autoload/'): + var some_autoload: String = prop.name.trim_prefix('autoload/') + suggestions[some_autoload] = {'value': some_autoload, 'tooltip':some_autoload, 'editor_icon': ["Node", "EditorIcons"]} + if filter.begins_with(some_autoload): + suggestions[filter] = {'value': filter, 'editor_icon':["GuiScrollArrowRight", "EditorIcons"]} + return suggestions + + +static func get_autoload_script_resource(autoload_name:String) -> Script: + var script: Script + if autoload_name and ProjectSettings.has_setting('autoload/'+autoload_name): + var loaded_autoload := load(ProjectSettings.get_setting('autoload/'+autoload_name).trim_prefix('*')) + + if loaded_autoload is PackedScene: + var packed_scene: PackedScene = loaded_autoload + script = packed_scene.instantiate().get_script() + + else: + script = loaded_autoload + return script + + +static func get_autoload_method_suggestions(filter:String, autoload_name:String) -> Dictionary: + var suggestions := {} + + var script := get_autoload_script_resource(autoload_name) + if script: + for script_method in script.get_script_method_list(): + if script_method.name.begins_with('@') or script_method.name.begins_with('_'): + continue + suggestions[script_method.name] = {'value': script_method.name, 'tooltip':script_method.name, 'editor_icon': ["Callable", "EditorIcons"]} + + if not filter.is_empty(): + suggestions[filter] = {'value': filter, 'editor_icon':["GuiScrollArrowRight", "EditorIcons"]} + + return suggestions + + +static func get_autoload_property_suggestions(_filter:String, autoload_name:String) -> Dictionary: + var suggestions := {} + var script := get_autoload_script_resource(autoload_name) + if script: + for property in script.get_script_property_list(): + if property.name.ends_with('.gd') or property.name.begins_with('_'): + continue + suggestions[property.name] = {'value': property.name, 'tooltip':property.name, 'editor_icon': ["MemberProperty", "EditorIcons"]} + + return suggestions + + +static func get_audio_bus_suggestions(_filter:= "") -> Dictionary: + var bus_name_list := {} + for i in range(AudioServer.bus_count): + if i == 0: + bus_name_list[AudioServer.get_bus_name(i)] = {'value':''} + else: + bus_name_list[AudioServer.get_bus_name(i)] = {'value':AudioServer.get_bus_name(i)} + return bus_name_list + + +static func get_audio_channel_suggestions(_search_text:String) -> Dictionary: + var suggestions := {} + var channel_defaults := DialogicUtil.get_audio_channel_defaults() + var cached_names := DialogicResourceUtil.get_channel_list() + + for i in channel_defaults.keys(): + if not cached_names.has(i): + cached_names.append(i) + + cached_names.sort() + + for i in cached_names: + if i.is_empty(): + continue + + suggestions[i] = {'value': i} + + if i in channel_defaults.keys(): + suggestions[i]["editor_icon"] = ["ProjectList", "EditorIcons"] + suggestions[i]["tooltip"] = "A default channel defined in the settings." + + else: + suggestions[i]["editor_icon"] = ["AudioStreamPlayer", "EditorIcons"] + suggestions[i]["tooltip"] = "A temporary channel without defaults." + + return suggestions + + +static func get_audio_channel_defaults() -> Dictionary: + return ProjectSettings.get_setting('dialogic/audio/channel_defaults', { + "": { + 'volume': 0.0, + 'audio_bus': '', + 'fade_length': 0.0, + 'loop': false, + }, + "music": { + 'volume': 0.0, + 'audio_bus': '', + 'fade_length': 0.0, + 'loop': true, + }}) + + +static func validate_audio_channel_name(text: String) -> Dictionary: + var result := {} + var channel_name_regex := RegEx.create_from_string(r'(?^-$)|(?[^\w-]{1})') + var matches := channel_name_regex.search_all(text) + var invalid_chars := [] + + for regex_match in matches: + if regex_match.get_string('dash_only'): + result['error_tooltip'] = "Channel name cannot be '-'." + result['valid_text'] = '' + else: + var invalid_char = regex_match.get_string('invalid') + if not invalid_char in invalid_chars: + invalid_chars.append(invalid_char) + + if invalid_chars: + result['valid_text'] = channel_name_regex.sub(text, '', true) + result['error_tooltip'] = "Channel names cannot contain the following characters: " + "".join(invalid_chars) + + return result diff --git a/addons/dialogic/Core/DialogicUtil.gd.uid b/addons/dialogic/Core/DialogicUtil.gd.uid new file mode 100644 index 0000000..a6c1900 --- /dev/null +++ b/addons/dialogic/Core/DialogicUtil.gd.uid @@ -0,0 +1 @@ +uid://c848iwoo6mnms diff --git a/addons/dialogic/Core/Dialogic_Subsystem.gd b/addons/dialogic/Core/Dialogic_Subsystem.gd new file mode 100644 index 0000000..3ff55e6 --- /dev/null +++ b/addons/dialogic/Core/Dialogic_Subsystem.gd @@ -0,0 +1,41 @@ +class_name DialogicSubsystem +extends Node + +var dialogic: DialogicGameHandler = null + +enum LoadFlags {FULL_LOAD, ONLY_DNODES} + +# To be overriden by sub-classes +# Called once after every subsystem has been added to the tree +func post_install() -> void: + pass + + +# To be overriden by sub-classes +# Fill in everything that should be cleared (for example before loading a different state) +func clear_game_state(_clear_flag:=DialogicGameHandler.ClearFlags.FULL_CLEAR) -> void: + pass + + +# To be overriden by sub-classes +# Fill in everything that should be loaded using the dialogic_game_handler.current_state_info +# This is called when a save is loaded +func load_game_state(_load_flag:=LoadFlags.FULL_LOAD) -> void: + pass + + +# To be overriden by sub-classes +# Fill in everything that should be saved into the dialogic_game_handler.current_state_info +# This is called when a save is saved +func save_game_state() -> void: + pass + + +# To be overriden by sub-classes +func pause() -> void: + pass + + +# To be overriden by sub-classes +func resume() -> void: + pass diff --git a/addons/dialogic/Core/Dialogic_Subsystem.gd.uid b/addons/dialogic/Core/Dialogic_Subsystem.gd.uid new file mode 100644 index 0000000..f1010fa --- /dev/null +++ b/addons/dialogic/Core/Dialogic_Subsystem.gd.uid @@ -0,0 +1 @@ +uid://d4iojsqnbdphm diff --git a/addons/dialogic/Core/index_class.gd b/addons/dialogic/Core/index_class.gd new file mode 100644 index 0000000..c6bd7c5 --- /dev/null +++ b/addons/dialogic/Core/index_class.gd @@ -0,0 +1,152 @@ +@tool +class_name DialogicIndexer +extends RefCounted + +## Script that indexes events, subsystems, settings pages and more. [br] +## Place a script of this type in every folder in "addons/Events". [br] +## Overwrite the methods to return the contents of that folder. + + +var this_folder: String = get_script().resource_path.get_base_dir() + +## Overwrite if this module contains any events. [br] +## Return an array with all the paths to the event scripts.[br] +## You can use the [property this_folder].path_join('my_event.gd') +func _get_events() -> Array: + if ResourceLoader.exists(this_folder.path_join('event.gd')): + return [this_folder.path_join('event.gd')] + return [] + + +## Overwrite if this module contains any subsystems. +## Should return an array of dictionaries each with the following keys: [br] +## "name" -> name for this subsystem[br] +## "script" -> array of preview images[br] +func _get_subsystems() -> Array[Dictionary]: + return [] + + +func _get_editors() -> Array[String]: + return [] + + +func _get_settings_pages() -> Array: + return [] + + +func _get_character_editor_sections() -> Array: + return [] + + +#region TEXT EFFECTS & MODIFIERS + +## Should return array of dictionaries with the following keys:[br] +## "command" -> the text e.g. "speed"[br] +## "node_path" or "subsystem" -> whichever contains your effect method[br] +## "method" -> name of the effect method[br] +func _get_text_effects() -> Array[Dictionary]: + return [] + + +## Should return array of dictionaries with the same arguments as _get_text_effects() +func _get_text_modifiers() -> Array[Dictionary]: + return [] + +#endregion + + +## Return a list of resources, scripts, etc. +## These can later be retrieved with DialogicResourceUtil. +## Each dictionary should contain (at least "type" and "path"). +## E.g. {"type":"Animation", "path": "res://..."} +func _get_special_resources() -> Dictionary: + return {} + + +## Return a list of dictionaries, each +func _get_portrait_scene_presets() -> Array[Dictionary]: + return [] + + +#region HELPERS +################################################################################ + +func list_dir(subdir:='') -> Array: + return Array(DirAccess.get_files_at(this_folder.path_join(subdir))).map(func(file):return this_folder.path_join(subdir).path_join(file)) + + +func list_special_resources(subdir:='', extension:="") -> Dictionary: + var dict := {} + for i in list_dir(subdir): + if extension.is_empty() or i.ends_with(extension) or (extension == ".gd" and i.ends_with(".gdc")): + dict[DialogicUtil.pretty_name(i).to_lower()] = {"path":i} + return dict + + +func list_animations(subdir := "") -> Dictionary: + var full_animation_list := {} + for path in list_dir(subdir): + if not path.ends_with(".gd") and not path.ends_with(".gdc"): + continue + var anim_object: DialogicAnimation = load(path).new() + var versions := anim_object._get_named_variations() + for version_name in versions: + full_animation_list[version_name] = versions[version_name] + full_animation_list[version_name]["path"] = path + anim_object.queue_free() + return full_animation_list + +#endregion + + +#region STYLES & LAYOUTS +################################################################################ + +func _get_style_presets() -> Array[Dictionary]: + return [] + + +## Should return an array of dictionaries with the following keys:[br] +## "path" -> the path to the scene[br] +## "name" -> name for this layout[br] +## "description"-> description of this layout. list what features/events are supported[br] +## "preview_image"-> array of preview images[br] +func _get_layout_parts() -> Array[Dictionary]: + return [] + + +## Helper that allows scanning sub directories that might be layout parts or styles +func scan_for_layout_parts() -> Array[Dictionary]: + var dir := DirAccess.open(this_folder) + var style_list: Array[Dictionary] = [] + if !dir: + return style_list + dir.list_dir_begin() + var dir_name := dir.get_next() + while dir_name != "": + if !dir.current_is_dir() or !dir.file_exists(dir_name.path_join('part_config.cfg')): + dir_name = dir.get_next() + continue + var config := ConfigFile.new() + config.load(this_folder.path_join(dir_name).path_join('part_config.cfg')) + var default_image_path: String = this_folder.path_join(dir_name).path_join('preview.png') + style_list.append( + { + 'type': config.get_value('style', 'type', 'Unknown type'), + 'name': config.get_value('style', 'name', 'Unnamed Layout'), + 'path': this_folder.path_join(dir_name).path_join(config.get_value('style', 'scene', '')), + 'author': config.get_value('style', 'author', 'Anonymous'), + 'description': config.get_value('style', 'description', 'No description'), + 'preview_image': [config.get_value('style', 'image', default_image_path)], + 'style_path':config.get_value('style', 'style_path', ''), + 'icon':this_folder.path_join(dir_name).path_join(config.get_value('style', 'icon', '')), + }) + + if not style_list[-1].style_path.begins_with('res://'): + style_list[-1].style_path = this_folder.path_join(dir_name).path_join(style_list[-1].style_path) + + dir_name = dir.get_next() + + return style_list + +#endregion diff --git a/addons/dialogic/Core/index_class.gd.uid b/addons/dialogic/Core/index_class.gd.uid new file mode 100644 index 0000000..92c8db9 --- /dev/null +++ b/addons/dialogic/Core/index_class.gd.uid @@ -0,0 +1 @@ +uid://ciwsx3rjhhmg7 diff --git a/addons/dialogic/Editor/CharacterEditor/char_edit_p_section_exports.gd b/addons/dialogic/Editor/CharacterEditor/char_edit_p_section_exports.gd new file mode 100644 index 0000000..9ad94cb --- /dev/null +++ b/addons/dialogic/Editor/CharacterEditor/char_edit_p_section_exports.gd @@ -0,0 +1,91 @@ +@tool +extends DialogicCharacterEditorPortraitSection + +## Section that allows setting values of exported scene variables +## for custom portrait scenes + +var current_portrait_data := {} +var last_scene := "" + +func _get_title() -> String: + return "Settings" + + +func _load_portrait_data(data:Dictionary) -> void: + _recheck(data, true) + + +## Recheck section visibility and reload export fields. +## This allows reacting to changes of the portrait_scene setting. +func _recheck(data: Dictionary, force:=false): + if last_scene == data.get("scene", "") and not force: + current_portrait_data = data + last_scene = data.get("scene", "") + return + + last_scene = data.get("scene", "") + current_portrait_data = data + + for child in $Grid.get_children(): + child.get_parent().remove_child(child) + child.queue_free() + + var scene: Variant = null + + if current_portrait_data.get('scene', '').is_empty(): + if ProjectSettings.get_setting('dialogic/portraits/default_portrait', '').is_empty(): + scene = load(character_editor.def_portrait_path) + else: + scene = load(ProjectSettings.get_setting('dialogic/portraits/default_portrait', '')) + else: + scene = load(current_portrait_data.get('scene')) + + if not scene: + return + + scene = scene.instantiate() + + var skip := false + for i in scene.script.get_script_property_list(): + if i['usage'] & PROPERTY_USAGE_EDITOR and !skip: + var label := Label.new() + label.text = i['name'].capitalize() + $Grid.add_child(label) + + var current_value: Variant = scene.get(i['name']) + if current_portrait_data.has('export_overrides') and current_portrait_data['export_overrides'].has(i['name']): + current_value = str_to_var(current_portrait_data.export_overrides[i['name']]) + if current_value == null and typeof(scene.get(i['name'])) == TYPE_STRING: + current_value = current_portrait_data['export_overrides'][i['name']] + + var input: Node = DialogicUtil.setup_script_property_edit_node(i, current_value, set_export_override) + input.size_flags_horizontal = SIZE_EXPAND_FILL + $Grid.add_child(input) + + if i['usage'] & PROPERTY_USAGE_GROUP: + if i['name'] == 'Main' or i["name"] == "Private": + skip = true + continue + else: + skip = false + + if $Grid.get_child_count(): + get_parent().get_child(get_index()-1).show() + show() + else: + hide() + get_parent().get_child(get_index()-1).hide() + get_parent().get_child(get_index()+1).hide() + + +## On any change, save the export override to the portrait items metadata. +func set_export_override(property_name:String, value:String = "") -> void: + var data: Dictionary = selected_item.get_metadata(0) + if !data.has('export_overrides'): + data['export_overrides'] = {} + if !value.is_empty(): + data.export_overrides[property_name] = value + else: + data.export_overrides.erase(property_name) + changed.emit() + update_preview.emit() diff --git a/addons/dialogic/Editor/CharacterEditor/char_edit_p_section_exports.gd.uid b/addons/dialogic/Editor/CharacterEditor/char_edit_p_section_exports.gd.uid new file mode 100644 index 0000000..3ed27df --- /dev/null +++ b/addons/dialogic/Editor/CharacterEditor/char_edit_p_section_exports.gd.uid @@ -0,0 +1 @@ +uid://bcsda7vbawlgv diff --git a/addons/dialogic/Editor/CharacterEditor/char_edit_p_section_exports.tscn b/addons/dialogic/Editor/CharacterEditor/char_edit_p_section_exports.tscn new file mode 100644 index 0000000..6b23ccd --- /dev/null +++ b/addons/dialogic/Editor/CharacterEditor/char_edit_p_section_exports.tscn @@ -0,0 +1,16 @@ +[gd_scene load_steps=2 format=3 uid="uid://cfcs7lb6gqnmd"] + +[ext_resource type="Script" uid="uid://bcsda7vbawlgv" path="res://addons/dialogic/Editor/CharacterEditor/char_edit_p_section_exports.gd" id="1_isys8"] + +[node name="Settings" type="VBoxContainer"] +custom_minimum_size = Vector2(0, 35) +offset_right = 367.0 +offset_bottom = 82.0 +script = ExtResource("1_isys8") + +[node name="Grid" type="GridContainer" parent="."] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_override_constants/h_separation = 10 +columns = 2 diff --git a/addons/dialogic/Editor/CharacterEditor/char_edit_p_section_layout.gd b/addons/dialogic/Editor/CharacterEditor/char_edit_p_section_layout.gd new file mode 100644 index 0000000..2c92085 --- /dev/null +++ b/addons/dialogic/Editor/CharacterEditor/char_edit_p_section_layout.gd @@ -0,0 +1,44 @@ +@tool +extends DialogicCharacterEditorPortraitSection + +## Tab that allows setting size, offset and mirror of a portrait. + + +func _get_title() -> String: + return "Scale, Offset & Mirror" + + +func _load_portrait_data(data:Dictionary) -> void: + %IgnoreScale.set_pressed_no_signal(data.get('ignore_char_scale', false)) + %PortraitScale.set_value(data.get('scale', 1.0)*100) + %PortraitOffset.set_value(data.get('offset', Vector2())) + %PortraitOffset._load_display_info({'step':1}) + %PortraitMirror.set_pressed_no_signal(data.get('mirror', false)) + + +func _on_portrait_scale_value_changed(_property:String, value:float) -> void: + var data: Dictionary = selected_item.get_metadata(0) + data['scale'] = value/100.0 + update_preview.emit() + changed.emit() + + +func _on_portrait_mirror_toggled(button_pressed:bool)-> void: + var data: Dictionary = selected_item.get_metadata(0) + data['mirror'] = button_pressed + update_preview.emit() + changed.emit() + + +func _on_ignore_scale_toggled(button_pressed:bool) -> void: + var data: Dictionary = selected_item.get_metadata(0) + data['ignore_char_scale'] = button_pressed + update_preview.emit() + changed.emit() + + +func _on_portrait_offset_value_changed(_property:String, value:Vector2) -> void: + var data: Dictionary = selected_item.get_metadata(0) + data['offset'] = value + update_preview.emit() + changed.emit() diff --git a/addons/dialogic/Editor/CharacterEditor/char_edit_p_section_layout.gd.uid b/addons/dialogic/Editor/CharacterEditor/char_edit_p_section_layout.gd.uid new file mode 100644 index 0000000..4f28f27 --- /dev/null +++ b/addons/dialogic/Editor/CharacterEditor/char_edit_p_section_layout.gd.uid @@ -0,0 +1 @@ +uid://uv6dx3sofwae diff --git a/addons/dialogic/Editor/CharacterEditor/char_edit_p_section_layout.tscn b/addons/dialogic/Editor/CharacterEditor/char_edit_p_section_layout.tscn new file mode 100644 index 0000000..89121d9 --- /dev/null +++ b/addons/dialogic/Editor/CharacterEditor/char_edit_p_section_layout.tscn @@ -0,0 +1,65 @@ +[gd_scene load_steps=4 format=3 uid="uid://crke8suvv52c6"] + +[ext_resource type="Script" uid="uid://uv6dx3sofwae" path="res://addons/dialogic/Editor/CharacterEditor/char_edit_p_section_layout.gd" id="1_76vf2"] +[ext_resource type="PackedScene" uid="uid://dtimnsj014cu" path="res://addons/dialogic/Editor/Events/Fields/field_vector2.tscn" id="2_c8kyi"] +[ext_resource type="PackedScene" uid="uid://kdpp3mibml33" path="res://addons/dialogic/Editor/Events/Fields/field_number.tscn" id="2_daw3l"] + +[node name="Layout" type="HFlowContainer"] +offset_right = 428.0 +offset_bottom = 128.0 +size_flags_horizontal = 3 +script = ExtResource("1_76vf2") + +[node name="Label3" type="Label" parent="."] +layout_mode = 2 +text = "Ignore Main Scale: " + +[node name="IgnoreScale" type="CheckBox" parent="."] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "This portrait will ignore the main scale." + +[node name="HBoxContainer" type="HBoxContainer" parent="."] +layout_mode = 2 + +[node name="Label" type="Label" parent="HBoxContainer"] +layout_mode = 2 +text = "Scale:" + +[node name="PortraitScale" parent="HBoxContainer" instance=ExtResource("2_daw3l")] +unique_name_in_owner = true +layout_mode = 2 +mode = 1 +step = 1.0 +min_value = 0.0 +max_value = 100.0 +suffix = "%" + +[node name="HBoxContainer2" type="HBoxContainer" parent="."] +layout_mode = 2 + +[node name="Label2" type="Label" parent="HBoxContainer2"] +layout_mode = 2 +text = "Offset:" + +[node name="PortraitOffset" parent="HBoxContainer2" instance=ExtResource("2_c8kyi")] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Offset that is applied on top of the main portrait offset." + +[node name="MirrorOption" type="HBoxContainer" parent="."] +layout_mode = 2 + +[node name="Label" type="Label" parent="MirrorOption"] +layout_mode = 2 +text = "Mirror:" + +[node name="PortraitMirror" type="CheckBox" parent="MirrorOption"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Mirroring that is applied on top of the main portrait mirror." + +[connection signal="toggled" from="IgnoreScale" to="." method="_on_ignore_scale_toggled"] +[connection signal="value_changed" from="HBoxContainer/PortraitScale" to="." method="_on_portrait_scale_value_changed"] +[connection signal="value_changed" from="HBoxContainer2/PortraitOffset" to="." method="_on_portrait_offset_value_changed"] +[connection signal="toggled" from="MirrorOption/PortraitMirror" to="." method="_on_portrait_mirror_toggled"] diff --git a/addons/dialogic/Editor/CharacterEditor/char_edit_p_section_main.gd b/addons/dialogic/Editor/CharacterEditor/char_edit_p_section_main.gd new file mode 100644 index 0000000..a4be43e --- /dev/null +++ b/addons/dialogic/Editor/CharacterEditor/char_edit_p_section_main.gd @@ -0,0 +1,101 @@ +@tool +extends DialogicCharacterEditorPortraitSection + +## Tab that allows setting a custom scene for a portrait. + +func _get_title() -> String: + return "Scene" + +func _init() -> void: + hint_text = "You can use a custom scene for this portrait." + +func _start_opened() -> bool: + return true + +func _ready() -> void: + %ChangeSceneButton.icon = get_theme_icon("Loop", "EditorIcons") + %ScenePicker.file_filter = "*.tscn, *.scn; Scenes" + %ScenePicker.resource_icon = get_theme_icon('PackedScene', 'EditorIcons') + %ScenePicker.placeholder = 'Default scene' + + %OpenSceneButton.icon = get_theme_icon("ExternalLink", "EditorIcons") + + +func _load_portrait_data(data:Dictionary) -> void: + reload_ui(data) + + +func _on_open_scene_button_pressed() -> void: + var data: Dictionary = selected_item.get_metadata(0) + if ResourceLoader.exists(data.get("scene", "")): + DialogicUtil.get_dialogic_plugin().get_editor_interface().open_scene_from_path(data.get("scene", "")) + await get_tree().process_frame + EditorInterface.set_main_screen_editor("2D") + + +func _on_change_scene_button_pressed() -> void: + %PortraitSceneBrowserWindow.popup_centered_ratio(0.6) + + +func _on_portrait_scene_browser_activate_part(part_info: Dictionary) -> void: + %PortraitSceneBrowserWindow.hide() + match part_info.type: + "General": + set_scene_path(part_info.path) + "Preset": + find_parent("EditorView").godot_file_dialog( + create_new_portrait_scene.bind(part_info), + '*.tscn,*.scn', + EditorFileDialog.FILE_MODE_SAVE_FILE, + "Select where to save the new scene", + part_info.path.get_file().trim_suffix("."+part_info.path.get_extension())+"_"+character_editor.current_resource.get_character_name().to_lower()) + "Custom": + find_parent("EditorView").godot_file_dialog( + set_scene_path, + '*.tscn, *.scn', + EditorFileDialog.FILE_MODE_OPEN_FILE, + "Select custom portrait scene",) + "Default": + set_scene_path("") + + +func create_new_portrait_scene(target_file: String, info: Dictionary) -> void: + var path := make_portrait_preset_custom(target_file, info) + set_scene_path(path) + + +func make_portrait_preset_custom(target_file:String, info: Dictionary) -> String: + var previous_file: String = info.path + + var result_path := DialogicUtil.make_file_custom(previous_file, target_file.get_base_dir(), target_file.get_file()) + + return result_path + + +func set_scene_path(path:String) -> void: + var data: Dictionary = selected_item.get_metadata(0) + data['scene'] = path + update_preview.emit() + changed.emit() + reload_ui(data) + + +func reload_ui(data: Dictionary) -> void: + var path: String = data.get('scene', '') + %OpenSceneButton.hide() + + if path.is_empty(): + %SceneLabel.text = "Default Portrait Scene" + %SceneLabel.tooltip_text = "Can be changed in the settings." + %SceneLabel.add_theme_color_override("font_color", get_theme_color("readonly_color", "Editor")) + + elif %PortraitSceneBrowser.is_premade_portrait_scene(path): + %SceneLabel.text = %PortraitSceneBrowser.portrait_scenes_info[path].name + %SceneLabel.tooltip_text = path + %SceneLabel.add_theme_color_override("font_color", get_theme_color("accent_color", "Editor")) + + else: + %SceneLabel.text = path.get_file() + %SceneLabel.tooltip_text = path + %SceneLabel.add_theme_color_override("font_color", get_theme_color("property_color_x", "Editor")) + %OpenSceneButton.show() diff --git a/addons/dialogic/Editor/CharacterEditor/char_edit_p_section_main.gd.uid b/addons/dialogic/Editor/CharacterEditor/char_edit_p_section_main.gd.uid new file mode 100644 index 0000000..ca57828 --- /dev/null +++ b/addons/dialogic/Editor/CharacterEditor/char_edit_p_section_main.gd.uid @@ -0,0 +1 @@ +uid://busjn8oo7kl1s diff --git a/addons/dialogic/Editor/CharacterEditor/char_edit_p_section_main.tscn b/addons/dialogic/Editor/CharacterEditor/char_edit_p_section_main.tscn new file mode 100644 index 0000000..431f940 --- /dev/null +++ b/addons/dialogic/Editor/CharacterEditor/char_edit_p_section_main.tscn @@ -0,0 +1,72 @@ +[gd_scene load_steps=6 format=3 uid="uid://djq4aasoihexj"] + +[ext_resource type="Script" uid="uid://busjn8oo7kl1s" path="res://addons/dialogic/Editor/CharacterEditor/char_edit_p_section_main.gd" id="1_ht8lu"] +[ext_resource type="PackedScene" uid="uid://7mvxuaulctcq" path="res://addons/dialogic/Editor/Events/Fields/field_file.tscn" id="2_k8xs0"] +[ext_resource type="PackedScene" uid="uid://b1wn8r84uh11b" path="res://addons/dialogic/Editor/CharacterEditor/portrait_scene_browser.tscn" id="3_ngvgq"] + +[sub_resource type="Image" id="Image_m6kd3"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_f5xt2"] +image = SubResource("Image_m6kd3") + +[node name="Scene" type="GridContainer"] +offset_right = 298.0 +offset_bottom = 86.0 +size_flags_horizontal = 3 +script = ExtResource("1_ht8lu") + +[node name="HBox" type="HBoxContainer" parent="."] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="ChangeSceneButton" type="Button" parent="HBox"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Change Scene" +icon = SubResource("ImageTexture_f5xt2") + +[node name="SceneLabel" type="Label" parent="HBox"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +mouse_filter = 0 +theme_override_colors/font_color = Color(0, 0, 0, 1) +text = "asdsdasdasd" +clip_text = true + +[node name="ScenePicker" parent="HBox" instance=ExtResource("2_k8xs0")] +unique_name_in_owner = true +visible = false +layout_mode = 2 +size_flags_horizontal = 3 +file_filter = "*.tscn, *.scn; Scenes" +placeholder = "Default scene" + +[node name="OpenSceneButton" type="Button" parent="HBox"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Open/Edit Scene" +icon = SubResource("ImageTexture_f5xt2") + +[node name="PortraitSceneBrowserWindow" type="Window" parent="."] +unique_name_in_owner = true +title = "Portrait Scene Browser" +position = Vector2i(0, 36) +visible = false +wrap_controls = true +transient = true +popup_window = true + +[node name="PortraitSceneBrowser" parent="PortraitSceneBrowserWindow" instance=ExtResource("3_ngvgq")] +unique_name_in_owner = true + +[connection signal="pressed" from="HBox/ChangeSceneButton" to="." method="_on_change_scene_button_pressed"] +[connection signal="pressed" from="HBox/OpenSceneButton" to="." method="_on_open_scene_button_pressed"] +[connection signal="activate_part" from="PortraitSceneBrowserWindow/PortraitSceneBrowser" to="." method="_on_portrait_scene_browser_activate_part"] diff --git a/addons/dialogic/Editor/CharacterEditor/char_edit_p_section_main_exports.gd b/addons/dialogic/Editor/CharacterEditor/char_edit_p_section_main_exports.gd new file mode 100644 index 0000000..d9ff6e5 --- /dev/null +++ b/addons/dialogic/Editor/CharacterEditor/char_edit_p_section_main_exports.gd @@ -0,0 +1,80 @@ +@tool +extends DialogicCharacterEditorPortraitSection + +## Portrait Settings Section that only shows the MAIN settings of a portrait scene. + +var current_portrait_data := {} +var last_scene := "" + +func _show_title() -> bool: + return false + + +func _load_portrait_data(data:Dictionary) -> void: + _recheck(data, true) + + +func _recheck(data:Dictionary, force := false) -> void: + get_parent().get_child(get_index()+1).hide() + if last_scene == data.get("scene", "") and not force: + current_portrait_data = data + last_scene = data.get("scene", "") + return + + last_scene = data.get("scene", "") + current_portrait_data = data + + load_portrait_scene_export_variables() + + +func load_portrait_scene_export_variables() -> void: + for child in $Grid.get_children(): + child.queue_free() + + var scene: Variant = null + if current_portrait_data.get('scene', '').is_empty(): + if ProjectSettings.get_setting('dialogic/portraits/default_portrait', '').is_empty(): + scene = load(character_editor.def_portrait_path) + else: + scene = load(ProjectSettings.get_setting('dialogic/portraits/default_portrait', '')) + else: + scene = load(current_portrait_data.get('scene')) + + if not scene: + return + + scene = scene.instantiate() + var skip := true + for i in scene.script.get_script_property_list(): + if i['usage'] & PROPERTY_USAGE_EDITOR and !skip: + var label := Label.new() + label.text = i['name'].capitalize() + $Grid.add_child(label) + + var current_value: Variant = scene.get(i['name']) + if current_portrait_data.has('export_overrides') and current_portrait_data['export_overrides'].has(i['name']): + current_value = str_to_var(current_portrait_data['export_overrides'][i['name']]) + if current_value == null and typeof(scene.get(i['name'])) == TYPE_STRING: + current_value = current_portrait_data['export_overrides'][i['name']] + + var input: Node = DialogicUtil.setup_script_property_edit_node(i, current_value, set_export_override) + input.size_flags_horizontal = SIZE_EXPAND_FILL + $Grid.add_child(input) + + if i['usage'] & PROPERTY_USAGE_GROUP: + if i['name'] == 'Main': + skip = false + else: + skip = true + continue + +func set_export_override(property_name:String, value:String = "") -> void: + var data: Dictionary = selected_item.get_metadata(0) + if !data.has('export_overrides'): + data['export_overrides'] = {} + if !value.is_empty(): + data['export_overrides'][property_name] = value + else: + data['export_overrides'].erase(property_name) + changed.emit() + update_preview.emit() diff --git a/addons/dialogic/Editor/CharacterEditor/char_edit_p_section_main_exports.gd.uid b/addons/dialogic/Editor/CharacterEditor/char_edit_p_section_main_exports.gd.uid new file mode 100644 index 0000000..d21f2ad --- /dev/null +++ b/addons/dialogic/Editor/CharacterEditor/char_edit_p_section_main_exports.gd.uid @@ -0,0 +1 @@ +uid://cp0o6sycac85b diff --git a/addons/dialogic/Editor/CharacterEditor/char_edit_p_section_main_exports.tscn b/addons/dialogic/Editor/CharacterEditor/char_edit_p_section_main_exports.tscn new file mode 100644 index 0000000..98c290f --- /dev/null +++ b/addons/dialogic/Editor/CharacterEditor/char_edit_p_section_main_exports.tscn @@ -0,0 +1,15 @@ +[gd_scene load_steps=2 format=3 uid="uid://ba5w02lm3ewkj"] + +[ext_resource type="Script" uid="uid://cp0o6sycac85b" path="res://addons/dialogic/Editor/CharacterEditor/char_edit_p_section_main_exports.gd" id="1_mttrr"] + +[node name="MainExports" type="VBoxContainer"] +offset_right = 374.0 +offset_bottom = 82.0 +script = ExtResource("1_mttrr") + +[node name="Grid" type="GridContainer" parent="."] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_override_constants/h_separation = 10 +columns = 2 diff --git a/addons/dialogic/Editor/CharacterEditor/char_edit_section_general.gd b/addons/dialogic/Editor/CharacterEditor/char_edit_section_general.gd new file mode 100644 index 0000000..a5fe514 --- /dev/null +++ b/addons/dialogic/Editor/CharacterEditor/char_edit_section_general.gd @@ -0,0 +1,53 @@ +@tool +extends DialogicCharacterEditorMainSection + +var min_width := 200 + +## The general character settings tab +func _get_title() -> String: + return "General" + + +func _start_opened() -> bool: + return true + + +func _ready() -> void: + # Connecting all necessary signals + %ColorPickerButton.custom_minimum_size.x = DialogicUtil.get_editor_scale() * 30 + %ColorPickerButton.color_changed.connect(character_editor.something_changed) + %DisplayNameLineEdit.text_changed.connect(character_editor.something_changed) + %NicknameLineEdit.text_changed.connect(character_editor.something_changed) + %DescriptionTextEdit.text_changed.connect(character_editor.something_changed) + min_width = get_minimum_size().x + resized.connect(_on_resized) + +func _load_character(resource:DialogicCharacter) -> void: + %DisplayNameLineEdit.text = resource.display_name + %ColorPickerButton.color = resource.color + + %NicknameLineEdit.text = "" + for nickname in resource.nicknames: + %NicknameLineEdit.text += nickname +", " + %NicknameLineEdit.text = %NicknameLineEdit.text.trim_suffix(', ') + + %DescriptionTextEdit.text = resource.description + + +func _save_changes(resource:DialogicCharacter) -> DialogicCharacter: + resource.display_name = %DisplayNameLineEdit.text + resource.color = %ColorPickerButton.color + var nicknames := [] + for n_name in %NicknameLineEdit.text.split(','): + nicknames.append(n_name.strip_edges()) + resource.nicknames = nicknames + resource.description = %DescriptionTextEdit.text + + return resource + + +func _on_resized() -> void: + if size.x > min_width+20: + self.columns = 2 + else: + self.columns = 1 diff --git a/addons/dialogic/Editor/CharacterEditor/char_edit_section_general.gd.uid b/addons/dialogic/Editor/CharacterEditor/char_edit_section_general.gd.uid new file mode 100644 index 0000000..3d1db09 --- /dev/null +++ b/addons/dialogic/Editor/CharacterEditor/char_edit_section_general.gd.uid @@ -0,0 +1 @@ +uid://c0nilv2pybryh diff --git a/addons/dialogic/Editor/CharacterEditor/char_edit_section_general.tscn b/addons/dialogic/Editor/CharacterEditor/char_edit_section_general.tscn new file mode 100644 index 0000000..2ce41fe --- /dev/null +++ b/addons/dialogic/Editor/CharacterEditor/char_edit_section_general.tscn @@ -0,0 +1,114 @@ +[gd_scene load_steps=5 format=3 uid="uid://bnkck3hocbkk5"] + +[ext_resource type="Script" uid="uid://c0nilv2pybryh" path="res://addons/dialogic/Editor/CharacterEditor/char_edit_section_general.gd" id="1_3e1i1"] +[ext_resource type="PackedScene" uid="uid://dbpkta2tjsqim" path="res://addons/dialogic/Editor/Common/hint_tooltip_icon.tscn" id="2_cxfqm"] + +[sub_resource type="Image" id="Image_ywoka"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_hx3oq"] +image = SubResource("Image_ywoka") + +[node name="General" type="GridContainer"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = 7.5 +offset_top = 38.5 +offset_right = -7.5 +offset_bottom = -7.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/h_separation = 6 +theme_override_constants/v_separation = 6 +columns = 2 +script = ExtResource("1_3e1i1") + +[node name="HBox" type="HBoxContainer" parent="."] +layout_mode = 2 +size_flags_vertical = 0 + +[node name="Label2" type="Label" parent="HBox"] +layout_mode = 2 +size_flags_vertical = 0 +text = "Display Name" + +[node name="HintTooltip" parent="HBox" instance=ExtResource("2_cxfqm")] +layout_mode = 2 +tooltip_text = "This name will be displayed on the name label. You can use a dialogic variable. E.g. :{Player.name}" +texture = SubResource("ImageTexture_hx3oq") +hint_text = "This name will be displayed on the name label. You can use a dialogic variable. E.g. :{Player.name}" + +[node name="DisplayName" type="HBoxContainer" parent="."] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="DisplayNameLineEdit" type="LineEdit" parent="DisplayName"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +caret_blink = true +caret_blink_interval = 0.5 + +[node name="HintTooltip4" parent="DisplayName" instance=ExtResource("2_cxfqm")] +layout_mode = 2 +tooltip_text = "This color can be used on the name label and for occurences of the characters name in text (autocolor names)." +texture = SubResource("ImageTexture_hx3oq") +hint_text = "This color can be used on the name label and for occurences of the characters name in text (autocolor names)." + +[node name="ColorPickerButton" type="ColorPickerButton" parent="DisplayName"] +unique_name_in_owner = true +custom_minimum_size = Vector2(30, 0) +layout_mode = 2 +color = Color(1, 1, 1, 1) +edit_alpha = false + +[node name="HBox2" type="HBoxContainer" parent="."] +layout_mode = 2 +size_flags_vertical = 0 + +[node name="Label3" type="Label" parent="HBox2"] +layout_mode = 2 +size_flags_vertical = 0 +text = "Nicknames" + +[node name="HintTooltip2" parent="HBox2" instance=ExtResource("2_cxfqm")] +layout_mode = 2 +tooltip_text = "If autocolor names is enabled, these will be colored in the characters color as well." +texture = SubResource("ImageTexture_hx3oq") +hint_text = "If autocolor names is enabled, these will be colored in the characters color as well." + +[node name="NicknameLineEdit" type="LineEdit" parent="."] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +caret_blink = true +caret_blink_interval = 0.5 + +[node name="HBox3" type="HBoxContainer" parent="."] +layout_mode = 2 +size_flags_vertical = 0 + +[node name="Label4" type="Label" parent="HBox3"] +layout_mode = 2 +size_flags_vertical = 0 +text = "Description" + +[node name="HintTooltip3" parent="HBox3" instance=ExtResource("2_cxfqm")] +layout_mode = 2 +tooltip_text = "No effect, just for you." +texture = SubResource("ImageTexture_hx3oq") +hint_text = "No effect, just for you." + +[node name="DescriptionTextEdit" type="TextEdit" parent="."] +unique_name_in_owner = true +custom_minimum_size = Vector2(0, 65) +layout_mode = 2 +size_flags_horizontal = 3 +wrap_mode = 1 diff --git a/addons/dialogic/Editor/CharacterEditor/char_edit_section_portraits.gd b/addons/dialogic/Editor/CharacterEditor/char_edit_section_portraits.gd new file mode 100644 index 0000000..127aa08 --- /dev/null +++ b/addons/dialogic/Editor/CharacterEditor/char_edit_section_portraits.gd @@ -0,0 +1,76 @@ +@tool +extends DialogicCharacterEditorMainSection + +## The general portrait settings section + +var loading := false + +func _get_title() -> String: + return "Portraits" + + +func _ready() -> void: + # Connecting all necessary signals + %DefaultPortraitPicker.value_changed.connect(default_portrait_changed) + %MainScale.value_changed.connect(main_portrait_settings_update) + %MainOffset._load_display_info({'step':1}) + %MainOffset.value_changed.connect(main_portrait_settings_update) + %MainMirror.toggled.connect(main_portrait_settings_update) + + # Setting up Default Portrait Picker + %DefaultPortraitPicker.resource_icon = load("res://addons/dialogic/Editor/Images/Resources/portrait.svg") + %DefaultPortraitPicker.suggestions_func = suggest_portraits + + +## Make sure preview get's updated when portrait settings change +func main_portrait_settings_update(_something=null, _value=null) -> void: + if loading: + return + character_editor.current_resource.scale = %MainScale.value/100.0 + character_editor.current_resource.offset = %MainOffset.current_value + character_editor.current_resource.mirror = %MainMirror.button_pressed + character_editor.update_preview() + character_editor.something_changed() + + +func default_portrait_changed(_property:String, value:String) -> void: + character_editor.current_resource.default_portrait = value + character_editor.update_default_portrait_star(value) + + +func set_default_portrait(portrait_name:String) -> void: + %DefaultPortraitPicker.set_value(portrait_name) + default_portrait_changed("", portrait_name) + + +func _load_character(resource:DialogicCharacter) -> void: + loading = true + %DefaultPortraitPicker.set_value(resource.default_portrait) + + %MainScale.set_value(100*resource.scale) + %MainOffset.set_value(resource.offset) + %MainMirror.button_pressed = resource.mirror + loading = false + + +func _save_changes(resource:DialogicCharacter) -> DialogicCharacter: + # Portrait settings + if %DefaultPortraitPicker.current_value in resource.portraits.keys(): + resource.default_portrait = %DefaultPortraitPicker.current_value + elif !resource.portraits.is_empty(): + resource.default_portrait = resource.portraits.keys()[0] + else: + resource.default_portrait = "" + + resource.scale = %MainScale.value/100.0 + resource.offset = %MainOffset.current_value + resource.mirror = %MainMirror.button_pressed + return resource + + +## Get suggestions for DefaultPortraitPicker +func suggest_portraits(_search:String) -> Dictionary: + var suggestions := {} + for portrait in character_editor.get_updated_portrait_dict().keys(): + suggestions[portrait] = {'value':portrait} + return suggestions diff --git a/addons/dialogic/Editor/CharacterEditor/char_edit_section_portraits.gd.uid b/addons/dialogic/Editor/CharacterEditor/char_edit_section_portraits.gd.uid new file mode 100644 index 0000000..b5a784f --- /dev/null +++ b/addons/dialogic/Editor/CharacterEditor/char_edit_section_portraits.gd.uid @@ -0,0 +1 @@ +uid://yulfiomudcob diff --git a/addons/dialogic/Editor/CharacterEditor/char_edit_section_portraits.tscn b/addons/dialogic/Editor/CharacterEditor/char_edit_section_portraits.tscn new file mode 100644 index 0000000..99bb34c --- /dev/null +++ b/addons/dialogic/Editor/CharacterEditor/char_edit_section_portraits.tscn @@ -0,0 +1,71 @@ +[gd_scene load_steps=5 format=3 uid="uid://cmrgbo8qi145o"] + +[ext_resource type="Script" uid="uid://yulfiomudcob" path="res://addons/dialogic/Editor/CharacterEditor/char_edit_section_portraits.gd" id="1_6sxsl"] +[ext_resource type="PackedScene" uid="uid://dpwhshre1n4t6" path="res://addons/dialogic/Editor/Events/Fields/field_options_dynamic.tscn" id="2_birla"] +[ext_resource type="PackedScene" uid="uid://dtimnsj014cu" path="res://addons/dialogic/Editor/Events/Fields/field_vector2.tscn" id="3_vcvin"] +[ext_resource type="PackedScene" uid="uid://kdpp3mibml33" path="res://addons/dialogic/Editor/Events/Fields/field_number.tscn" id="4_w4pvv"] + +[node name="Portraits" type="GridContainer"] +offset_right = 453.0 +offset_bottom = 141.0 +theme_override_constants/h_separation = 1 +theme_override_constants/v_separation = 6 +columns = 2 +script = ExtResource("1_6sxsl") + +[node name="Label5" type="Label" parent="."] +layout_mode = 2 +size_flags_vertical = 0 +text = "Default" + +[node name="DefaultPortraitPicker" parent="." instance=ExtResource("2_birla")] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +placeholder_text = "Select Default Portrait" +fit_text_length = false + +[node name="Label" type="Label" parent="."] +layout_mode = 2 +size_flags_vertical = 0 +text = "Main Scale" + +[node name="MainScaleOld" type="SpinBox" parent="."] +unique_name_in_owner = true +visible = false +layout_mode = 2 +size_flags_horizontal = 8 +value = 100.0 +allow_greater = true +alignment = 1 +suffix = "%" + +[node name="MainScale" parent="." instance=ExtResource("4_w4pvv")] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 8 +mode = 1 +step = 1.0 +min_value = 0.0 +max_value = 100.0 +suffix = "%" + +[node name="Label2" type="Label" parent="."] +layout_mode = 2 +size_flags_vertical = 0 +text = "Main Offset" + +[node name="MainOffset" parent="." instance=ExtResource("3_vcvin")] +unique_name_in_owner = true +layout_mode = 2 +alignment = 2 + +[node name="Label3" type="Label" parent="."] +layout_mode = 2 +size_flags_vertical = 0 +text = "Main Mirror" + +[node name="MainMirror" type="CheckBox" parent="."] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 8 diff --git a/addons/dialogic/Editor/CharacterEditor/character_editor.gd b/addons/dialogic/Editor/CharacterEditor/character_editor.gd new file mode 100644 index 0000000..3233674 --- /dev/null +++ b/addons/dialogic/Editor/CharacterEditor/character_editor.gd @@ -0,0 +1,694 @@ +@tool +extends DialogicEditor + +## Editor for editing character resources. + +signal character_loaded(resource_path:String) +signal portrait_selected() + + +# Current state +var loading := false +var current_previewed_scene: Variant = null +var current_scene_path: String = "" + +# References +var selected_item: TreeItem +var def_portrait_path: String = DialogicUtil.get_module_path('Character').path_join('default_portrait.tscn') + + +######### EDITOR STUFF and LOADING/SAVING ###################################### + +#region Resource Logic +## Method is called once editors manager is ready to accept registers. +func _register() -> void: + ## Makes the editor open this when a .dch file is selected. + ## Then _open_resource() is called. + editors_manager.register_resource_editor("dch", self) + + ## Add an "add character" button + var add_character_button: Button = editors_manager.add_icon_button( + load("res://addons/dialogic/Editor/Images/Toolbar/add-character.svg"), + 'Add Character', + self) + add_character_button.pressed.connect(_on_create_character_button_pressed) + add_character_button.shortcut = Shortcut.new() + add_character_button.shortcut.events.append(InputEventKey.new()) + add_character_button.shortcut.events[0].keycode = KEY_2 + add_character_button.shortcut.events[0].ctrl_pressed = true + + ## By default show the no character screen + $NoCharacterScreen.show() + + +func _get_title() -> String: + return "Character" + + +func _get_icon() -> Texture: + return load("res://addons/dialogic/Editor/Images/Resources/character.svg") + + +## Called when a character is opened somehow +func _open_resource(resource:Resource) -> void: + if resource == null: + $NoCharacterScreen.show() + return + + ## Update resource + current_resource = (resource as DialogicCharacter) + + ## Make sure changes in the ui won't trigger saving + loading = true + + ## Load other main tabs + for child in %MainSettingsSections.get_children(): + if child is DialogicCharacterEditorMainSection: + child._load_character(current_resource) + + ## Clear and then load Portrait section + %PortraitSearch.text = "" + load_portrait_tree() + + loading = false + character_loaded.emit(current_resource.resource_path) + + %CharacterName.text = current_resource.get_identifier() + + $NoCharacterScreen.hide() + %PortraitChangeInfo.hide() + + +## Called when the character is opened. +func _open(extra_info:Variant="") -> void: + if !ProjectSettings.get_setting('dialogic/portraits/default_portrait', '').is_empty(): + def_portrait_path = ProjectSettings.get_setting('dialogic/portraits/default_portrait', '') + else: + def_portrait_path = DialogicUtil.get_module_path('Character').path_join('default_portrait.tscn') + + if current_resource == null: + $NoCharacterScreen.show() + return + + update_preview(true) + %PortraitChangeInfo.hide() + + +func _clear() -> void: + current_resource = null + current_resource_state = ResourceStates.SAVED + $NoCharacterScreen.show() + + +func _save() -> void: + if ! visible or not current_resource: + return + + ## Portrait list + current_resource.portraits = get_updated_portrait_dict() + + ## Main tabs + for child in %MainSettingsSections.get_children(): + if child is DialogicCharacterEditorMainSection: + current_resource = child._save_changes(current_resource) + + ResourceSaver.save(current_resource, current_resource.resource_path) + current_resource_state = ResourceStates.SAVED + DialogicResourceUtil.update_directory('dch') + + +## Saves a new empty character to the given path +func new_character(path: String) -> void: + if not path.ends_with(".dch"): + path = path.trim_suffix(".") + path += ".dch" + var resource := DialogicCharacter.new() + resource.resource_path = path + resource.display_name = path.get_file().trim_suffix("."+path.get_extension()) + resource.color = Color(1,1,1,1) + resource.default_portrait = "" + resource.custom_info = {} + ResourceSaver.save(resource, path) + EditorInterface.get_resource_filesystem().update_file(path) + DialogicResourceUtil.update_directory('dch') + editors_manager.edit_resource(resource) + +#endregion + + +######### INTERFACE ############################################################ + +#region Interface +func _ready() -> void: + if get_parent() is SubViewport: + return + + DialogicUtil.get_dialogic_plugin().resource_saved.connect(_on_some_resource_saved) + # NOTE: This check is required because up to 4.2 this signal is not exposed. + if DialogicUtil.get_dialogic_plugin().has_signal("scene_saved"): + DialogicUtil.get_dialogic_plugin().scene_saved.connect(_on_some_resource_saved) + + $NoCharacterScreen.color = get_theme_color("dark_color_2", "Editor") + $NoCharacterScreen.show() + setup_portrait_list_tab() + + _on_fit_preview_toggle_toggled(DialogicUtil.get_editor_setting('character_preview_fit', true)) + %PreviewLabel.add_theme_color_override("font_color", get_theme_color("readonly_color", "Editor")) + + %PortraitChangeWarning.add_theme_color_override("font_color", get_theme_color("warning_color", "Editor")) + + %RealPreviewPivot.texture = get_theme_icon("EditorPivot", "EditorIcons") + + %MainSettingsCollapse.icon = get_theme_icon("GuiVisibilityVisible", "EditorIcons") + + set_portrait_settings_position(DialogicUtil.get_editor_setting('portrait_settings_position', true)) + + await find_parent('EditorView').ready + + ## Add general tabs + add_settings_section(load("res://addons/dialogic/Editor/CharacterEditor/char_edit_section_general.tscn").instantiate(), %MainSettingsSections) + add_settings_section(load("res://addons/dialogic/Editor/CharacterEditor/char_edit_section_portraits.tscn").instantiate(), %MainSettingsSections) + add_settings_section(load("res://addons/dialogic/Editor/CharacterEditor/character_prefix_suffix.tscn").instantiate(), %MainSettingsSections) + + + add_settings_section(load("res://addons/dialogic/Editor/CharacterEditor/char_edit_p_section_main_exports.tscn").instantiate(), %PortraitSettingsSection) + add_settings_section(load("res://addons/dialogic/Editor/CharacterEditor/char_edit_p_section_exports.tscn").instantiate(), %PortraitSettingsSection) + add_settings_section(load("res://addons/dialogic/Editor/CharacterEditor/char_edit_p_section_main.tscn").instantiate(), %PortraitSettingsSection) + add_settings_section(load("res://addons/dialogic/Editor/CharacterEditor/char_edit_p_section_layout.tscn").instantiate(), %PortraitSettingsSection) + + ## Load custom sections from modules + for indexer in DialogicUtil.get_indexers(): + for path in indexer._get_character_editor_sections(): + var scene: Control = load(path).instantiate() + if scene is DialogicCharacterEditorMainSection: + add_settings_section(scene, %MainSettingsSections) + elif scene is DialogicCharacterEditorPortraitSection: + add_settings_section(scene, %PortraitSettingsSection) + + +## Add a section (a control) either to the given settings section (Main or Portraits) +## - sets up the title of the section +## - connects to various signals +func add_settings_section(edit:Control, parent:Node) -> void: + edit.changed.connect(something_changed) + edit.character_editor = self + + if edit.has_signal('update_preview'): + edit.update_preview.connect(update_preview) + + var button: Button + + if edit._show_title(): + var hbox := HBoxContainer.new() + hbox.name = edit._get_title()+"BOX" + button = Button.new() + button.flat = true + button.theme_type_variation = "DialogicSection" + button.alignment = HORIZONTAL_ALIGNMENT_LEFT + button.size_flags_horizontal = Control.SIZE_SHRINK_BEGIN + button.text = edit._get_title() + button.icon_alignment = HORIZONTAL_ALIGNMENT_RIGHT + button.pressed.connect(_on_section_button_pressed.bind(button)) + button.focus_mode = Control.FOCUS_NONE + button.icon = get_theme_icon("CodeFoldDownArrow", "EditorIcons") + button.add_theme_color_override('icon_normal_color', get_theme_color("font_color", "DialogicSection")) + + hbox.size_flags_horizontal = Control.SIZE_EXPAND_FILL + hbox.add_child(button) + + if !edit.hint_text.is_empty(): + var hint: Node = load("res://addons/dialogic/Editor/Common/hint_tooltip_icon.tscn").instantiate() + hint.hint_text = edit.hint_text + hbox.add_child(hint) + + parent.add_child(hbox) + parent.add_child(edit) + parent.add_child(HSeparator.new()) + if button and !edit._start_opened(): + _on_section_button_pressed(button) + + +func get_settings_section_by_name(name:String, main:=true) -> Node: + var parent := %MainSettingsSections + if not main: + parent = %PortraitSettingsSection + + if parent.has_node(name): + return parent.get_node(name) + elif parent.has_node(name+"BOX/"+name): + return parent.get_node(name+"BOX/"+name) + else: + return null + + +func _on_section_button_pressed(button:Button) -> void: + var section_header := button.get_parent() + var section := section_header.get_parent().get_child(section_header.get_index()+1) + if section.visible: + button.icon = get_theme_icon("CodeFoldedRightArrow", "EditorIcons") + section.visible = false + else: + button.icon = get_theme_icon("CodeFoldDownArrow", "EditorIcons") + section.visible = true + + if section_header.get_parent().get_child_count() > section_header.get_index()+2 and section_header.get_parent().get_child(section_header.get_index()+2) is Separator: + section_header.get_parent().get_child(section_header.get_index()+2).visible = section_header.get_parent().get_child(section_header.get_index()+1).visible + + +func something_changed(fake_argument = "", fake_arg2 = null) -> void: + if not loading: + current_resource_state = ResourceStates.UNSAVED + + +func _on_main_settings_collapse_toggled(button_pressed:bool) -> void: + %MainSettingsTitle.visible = !button_pressed + %MainSettingsScroll.visible = !button_pressed + if button_pressed: + %MainSettings.hide() + %MainSettingsCollapse.icon = get_theme_icon("GuiVisibilityHidden", "EditorIcons") + else: + %MainSettings.show() + %MainSettingsCollapse.icon = get_theme_icon("GuiVisibilityVisible", "EditorIcons") + + +func _on_switch_portrait_settings_position_pressed() -> void: + set_portrait_settings_position(!%RightSection.vertical) + + +func set_portrait_settings_position(is_below:bool) -> void: + %RightSection.vertical = is_below + DialogicUtil.set_editor_setting('portrait_settings_position', is_below) + if is_below: + %SwitchPortraitSettingsPosition.icon = get_theme_icon("ControlAlignRightWide", "EditorIcons") + else: + %SwitchPortraitSettingsPosition.icon = get_theme_icon("ControlAlignBottomWide", "EditorIcons") + +#endregion + + +########## PORTRAIT SECTION #################################################### + +#region Portrait Section +func setup_portrait_list_tab() -> void: + %PortraitTree.editor = self + + ## Portrait section styling/connections + %AddPortraitButton.icon = get_theme_icon("Add", "EditorIcons") + %AddPortraitButton.pressed.connect(add_portrait) + %AddPortraitGroupButton.icon = load("res://addons/dialogic/Editor/Images/Pieces/add-folder.svg") + %AddPortraitGroupButton.pressed.connect(add_portrait_group) + %ImportPortraitsButton.icon = get_theme_icon("Load", "EditorIcons") + %ImportPortraitsButton.pressed.connect(open_portrait_folder_select) + %PortraitSearch.right_icon = get_theme_icon("Search", "EditorIcons") + %PortraitSearch.text_changed.connect(filter_portrait_list) + + %PortraitTree.item_selected.connect(load_selected_portrait) + %PortraitTree.item_edited.connect(_on_item_edited) + %PortraitTree.item_activated.connect(_on_item_activated) + + +func open_portrait_folder_select() -> void: + find_parent("EditorView").godot_file_dialog( + import_portraits_from_folder, "*.svg, *.png", + EditorFileDialog.FILE_MODE_OPEN_DIR) + + +func import_portraits_from_folder(path:String) -> void: + var parent: TreeItem = %PortraitTree.get_root() + + if %PortraitTree.get_selected() and %PortraitTree.get_selected() != parent and %PortraitTree.get_selected().get_metadata(0).has('group'): + parent = %PortraitTree.get_selected() + + var dir := DirAccess.open(path) + dir.list_dir_begin() + var file_name: String = dir.get_next() + var files := [] + while file_name != "": + if not dir.current_is_dir(): + var file_lower := file_name.to_lower() + if '.svg' in file_lower or '.png' in file_lower: + if not '.import' in file_lower: + files.append(file_name) + file_name = dir.get_next() + + var prefix: String = files[0] + for file in files: + while true: + if file.begins_with(prefix): + break + if prefix.is_empty(): + break + prefix = prefix.substr(0, len(prefix)-1) + + for file in files: + %PortraitTree.add_portrait_item(file.trim_prefix(prefix).trim_suffix('.'+file.get_extension()), + {'scene':"",'export_overrides':{'image':var_to_str(path.path_join(file))}, 'scale':1, 'offset':Vector2(), 'mirror':false}, parent) + + ## Handle selection + if parent.get_child_count(): + parent.get_first_child().select(0) + else: + # Call anyways to clear preview and hide portrait settings section + load_selected_portrait() + + something_changed() + + +func add_portrait(portrait_name:String='New portrait', portrait_data:Dictionary={'scene':"", 'export_overrides':{'image':''}, 'scale':1, 'offset':Vector2(), 'mirror':false}) -> void: + var parent: TreeItem = %PortraitTree.get_root() + if %PortraitTree.get_selected(): + if %PortraitTree.get_selected().get_metadata(0) and %PortraitTree.get_selected().get_metadata(0).has('group'): + parent = %PortraitTree.get_selected() + else: + parent = %PortraitTree.get_selected().get_parent() + var item: TreeItem = %PortraitTree.add_portrait_item(portrait_name, portrait_data, parent) + item.set_meta('new', true) + item.set_editable(0, true) + item.select(0) + %PortraitTree.call_deferred('edit_selected') + something_changed() + + +func add_portrait_group() -> void: + var parent_item: TreeItem = %PortraitTree.get_root() + if %PortraitTree.get_selected() and %PortraitTree.get_selected().get_metadata(0) and %PortraitTree.get_selected().get_metadata(0).has('group'): + parent_item = %PortraitTree.get_selected() + var item: TreeItem = %PortraitTree.add_portrait_group("Group", parent_item) + item.set_meta('new', true) + item.set_editable(0, true) + item.select(0) + %PortraitTree.call_deferred('edit_selected') + + +func load_portrait_tree() -> void: + %PortraitTree.clear_tree() + var root: TreeItem = %PortraitTree.create_item() + + for portrait in current_resource.portraits.keys(): + var portrait_label: String = portrait + var parent: TreeItem = %PortraitTree.get_root() + if '/' in portrait: + parent = %PortraitTree.create_necessary_group_items(portrait) + portrait_label = portrait.split('/')[-1] + + %PortraitTree.add_portrait_item(portrait_label, current_resource.portraits[portrait], parent) + + update_default_portrait_star(current_resource.default_portrait) + + if root.get_child_count(): + root.get_first_child().select(0) + while %PortraitTree.get_selected().get_child_count(): + %PortraitTree.get_selected().get_child(0).select(0) + else: + # Call anyways to clear preview and hide portrait settings section + load_selected_portrait() + + +func filter_portrait_list(filter_term := "") -> void: + filter_branch(%PortraitTree.get_root(), filter_term) + + +func filter_branch(parent: TreeItem, filter_term: String) -> bool: + var anything_visible := false + for item in parent.get_children(): + if item.get_metadata(0).has('group'): + item.visible = filter_branch(item, filter_term) + anything_visible = item.visible + elif filter_term.is_empty() or filter_term.to_lower() in item.get_text(0).to_lower(): + item.visible = true + anything_visible = true + else: + item.visible = false + return anything_visible + + +## This is used to save the portrait data +func get_updated_portrait_dict() -> Dictionary: + return list_portraits(%PortraitTree.get_root().get_children()) + + +func list_portraits(tree_items: Array[TreeItem], dict := {}, path_prefix := "") -> Dictionary: + for item in tree_items: + if item.get_metadata(0).has('group'): + dict = list_portraits(item.get_children(), dict, path_prefix+item.get_text(0)+"/") + else: + dict[path_prefix +item.get_text(0)] = item.get_metadata(0) + return dict + + +func load_selected_portrait() -> void: + if selected_item and is_instance_valid(selected_item): + selected_item.set_editable(0, false) + + selected_item = %PortraitTree.get_selected() + + if selected_item and selected_item.get_metadata(0) != null and !selected_item.get_metadata(0).has('group'): + %PortraitSettingsSection.show() + var current_portrait_data: Dictionary = selected_item.get_metadata(0) + portrait_selected.emit(%PortraitTree.get_full_item_name(selected_item), current_portrait_data) + + update_preview() + + for child in %PortraitSettingsSection.get_children(): + if child is DialogicCharacterEditorPortraitSection: + child.selected_item = selected_item + child._load_portrait_data(current_portrait_data) + + else: + %PortraitSettingsSection.hide() + update_preview() + + +func delete_portrait_item(item: TreeItem) -> void: + if item.get_next_visible(true) and item.get_next_visible(true) != item: + item.get_next_visible(true).select(0) + else: + selected_item = null + load_selected_portrait() + item.free() + something_changed() + + +func duplicate_item(item: TreeItem) -> void: + var new_item: TreeItem = %PortraitTree.add_portrait_item(item.get_text(0)+'_duplicated', item.get_metadata(0).duplicate(true), item.get_parent()) + new_item.set_meta('new', true) + new_item.select(0) + + +func _input(event: InputEvent) -> void: + if !is_visible_in_tree() or (get_viewport().gui_get_focus_owner()!= null and !name+'/' in str(get_viewport().gui_get_focus_owner().get_path())): + return + if event is InputEventKey and event.pressed: + if event.keycode == KEY_F2 and %PortraitTree.get_selected(): + %PortraitTree.get_selected().set_editable(0, true) + %PortraitTree.edit_selected() + get_viewport().set_input_as_handled() + elif event.keycode == KEY_DELETE and get_viewport().gui_get_focus_owner() is Tree and %PortraitTree.get_selected(): + delete_portrait_item(%PortraitTree.get_selected()) + get_viewport().set_input_as_handled() + + +func _on_portrait_right_click_menu_index_pressed(id: int) -> void: + # RENAME BUTTON + if id == 0: + _on_item_activated() + # DELETE BUTTON + if id == 2: + delete_portrait_item(%PortraitTree.get_selected()) + # DUPLICATE ITEM + elif id == 1: + duplicate_item(%PortraitTree.get_selected()) + elif id == 4: + get_settings_section_by_name("Portraits").set_default_portrait(%PortraitTree.get_full_item_name(%PortraitTree.get_selected())) + + +## This removes/and adds the DEFAULT star on the portrait list +func update_default_portrait_star(default_portrait_name: String) -> void: + var item_list: Array = %PortraitTree.get_root().get_children() + if item_list.is_empty() == false: + while true: + var item: TreeItem = item_list.pop_back() + if item.get_button_by_id(0, 2) != -1: + item.erase_button(0, item.get_button_by_id(0, 2)) + if %PortraitTree.get_full_item_name(item) == default_portrait_name: + item.add_button(0, get_theme_icon("Favorites", "EditorIcons"), 2, true, "Default") + item_list.append_array(item.get_children()) + if item_list.is_empty(): + break + + +func _on_item_edited() -> void: + selected_item = %PortraitTree.get_selected() + something_changed() + if selected_item: + if %PreviewLabel.text.trim_prefix('Preview of "').trim_suffix('"') == current_resource.default_portrait: + current_resource.default_portrait = %PortraitTree.get_full_item_name(selected_item) + selected_item.set_editable(0, false) + + if !selected_item.has_meta('new') and %PortraitTree.get_full_item_name(selected_item) != selected_item.get_meta('previous_name'): + report_name_change(selected_item) + %PortraitChangeInfo.show() + update_preview() + + +func _on_item_activated() -> void: + if %PortraitTree.get_selected() == null: + return + %PortraitTree.get_selected().set_editable(0, true) + %PortraitTree.edit_selected() + + +func report_name_change(item: TreeItem) -> void: + if item.get_metadata(0).has('group'): + for s_item in item.get_children(): + if s_item.get_metadata(0).has('group') or !s_item.has_meta('new'): + report_name_change(s_item) + else: + if item.get_meta('previous_name') == %PortraitTree.get_full_item_name(item): + return + editors_manager.reference_manager.add_portrait_ref_change( + item.get_meta('previous_name'), + %PortraitTree.get_full_item_name(item), + [current_resource.get_identifier()]) + item.set_meta('previous_name', %PortraitTree.get_full_item_name(item)) + %PortraitChangeInfo.show() + +#endregion + +########### PREVIEW ############################################################ + +#region Preview +func update_preview(force := false, ignore_settings_reload := false) -> void: + %ScenePreviewWarning.hide() + + if selected_item and is_instance_valid(selected_item) and selected_item.get_metadata(0) != null and !selected_item.get_metadata(0).has('group'): + %PreviewLabel.text = 'Preview of "'+%PortraitTree.get_full_item_name(selected_item)+'"' + + var current_portrait_data: Dictionary = selected_item.get_metadata(0) + + if not force and current_previewed_scene != null \ + and scene_file_path == current_portrait_data.get('scene') \ + and current_previewed_scene.has_method('_should_do_portrait_update') \ + and is_instance_valid(current_previewed_scene.get_script()) \ + and current_previewed_scene._should_do_portrait_update(current_resource, selected_item.get_text(0)): + # We keep the same scene. + pass + else: + + for node in %RealPreviewPivot.get_children(): + node.queue_free() + + current_previewed_scene = null + current_scene_path = "" + + var scene_path := def_portrait_path + if not current_portrait_data.get('scene', '').is_empty(): + scene_path = current_portrait_data.get('scene') + + if ResourceLoader.exists(scene_path): + current_previewed_scene = load(scene_path).instantiate() + current_scene_path = scene_path + + if not current_previewed_scene == null: + %RealPreviewPivot.add_child(current_previewed_scene) + + if not current_previewed_scene == null: + var scene: Node = current_previewed_scene + + scene.show_behind_parent = true + DialogicUtil.apply_scene_export_overrides(scene, current_portrait_data.get('export_overrides', {})) + + var mirror: bool = current_portrait_data.get('mirror', false) != current_resource.mirror + var scale: float = current_portrait_data.get('scale', 1) * current_resource.scale + + if current_portrait_data.get('ignore_char_scale', false): + scale = current_portrait_data.get('scale', 1) + + var offset: Vector2 = current_portrait_data.get('offset', Vector2()) + current_resource.offset + + if is_instance_valid(scene.get_script()) and scene.script.is_tool(): + + if scene.has_method('_update_portrait'): + ## Create a fake duplicate resource that has all the portrait changes applied already + var preview_character := current_resource.duplicate() + preview_character.portraits = get_updated_portrait_dict() + scene._update_portrait(preview_character, %PortraitTree.get_full_item_name(selected_item)) + + if scene.has_method('_set_mirror'): + scene._set_mirror(mirror) + + if !%FitPreview_Toggle.button_pressed: + scene.position = Vector2() + offset + scene.scale = Vector2(1,1)*scale + else: + + if not scene.get_script() == null and scene.script.is_tool() and scene.has_method('_get_covered_rect'): + var rect: Rect2 = scene._get_covered_rect() + var available_rect: Rect2 = %FullPreviewAvailableRect.get_rect() + scene.scale = Vector2(1,1) * min(available_rect.size.x/rect.size.x, available_rect.size.y/rect.size.y) + %RealPreviewPivot.position = (rect.position)*-1*scene.scale + %RealPreviewPivot.position.x = %FullPreviewAvailableRect.size.x/2 + scene.position = Vector2() + + else: + %ScenePreviewWarning.show() + else: + %PreviewLabel.text = 'Nothing to preview' + + if not ignore_settings_reload: + for child in %PortraitSettingsSection.get_children(): + if child is DialogicCharacterEditorPortraitSection: + child._recheck(current_portrait_data) + + else: + %PreviewLabel.text = 'No portrait to preview.' + + for node in %RealPreviewPivot.get_children(): + node.queue_free() + + current_previewed_scene = null + current_scene_path = "" + + +func _on_some_resource_saved(file:Variant) -> void: + if current_previewed_scene == null: + return + + if file is Resource and file == current_previewed_scene.script: + update_preview(true) + + if typeof(file) == TYPE_STRING and file == current_previewed_scene.get_meta("path", ""): + update_preview(true) + + +func _on_full_preview_available_rect_resized() -> void: + if %FitPreview_Toggle.button_pressed: + update_preview(false, true) + + +func _on_create_character_button_pressed() -> void: + editors_manager.show_add_resource_dialog( + new_character, + '*.dch; DialogicCharacter', + 'Create new character', + 'character', + ) + + +func _on_fit_preview_toggle_toggled(button_pressed): + %FitPreview_Toggle.set_pressed_no_signal(button_pressed) + if button_pressed: + %FitPreview_Toggle.icon = get_theme_icon("ScrollContainer", "EditorIcons") + %FitPreview_Toggle.tooltip_text = "Real scale" + else: + %FitPreview_Toggle.tooltip_text = "Fit into preview" + %FitPreview_Toggle.icon = get_theme_icon("CenterContainer", "EditorIcons") + DialogicUtil.set_editor_setting('character_preview_fit', button_pressed) + update_preview(false, true) + +#endregion + +## Open the reference manager +func _on_reference_manger_button_pressed() -> void: + editors_manager.reference_manager.open() + %PortraitChangeInfo.hide() diff --git a/addons/dialogic/Editor/CharacterEditor/character_editor.gd.uid b/addons/dialogic/Editor/CharacterEditor/character_editor.gd.uid new file mode 100644 index 0000000..4997d86 --- /dev/null +++ b/addons/dialogic/Editor/CharacterEditor/character_editor.gd.uid @@ -0,0 +1 @@ +uid://cwhe7tpe75oh7 diff --git a/addons/dialogic/Editor/CharacterEditor/character_editor.tscn b/addons/dialogic/Editor/CharacterEditor/character_editor.tscn new file mode 100644 index 0000000..49fc117 --- /dev/null +++ b/addons/dialogic/Editor/CharacterEditor/character_editor.tscn @@ -0,0 +1,456 @@ +[gd_scene load_steps=11 format=3 uid="uid://dlskc36c5hrwv"] + +[ext_resource type="Script" uid="uid://cwhe7tpe75oh7" path="res://addons/dialogic/Editor/CharacterEditor/character_editor.gd" id="2"] +[ext_resource type="PackedScene" uid="uid://dbpkta2tjsqim" path="res://addons/dialogic/Editor/Common/hint_tooltip_icon.tscn" id="2_uhhqs"] +[ext_resource type="Script" uid="uid://deliic6d8vajo" path="res://addons/dialogic/Editor/CharacterEditor/character_editor_portrait_tree.gd" id="2_vad0i"] +[ext_resource type="Texture2D" uid="uid://babwe22dqjta" path="res://addons/dialogic/Editor/Images/Pieces/add-folder.svg" id="3_v1qnr"] + +[sub_resource type="Image" id="Image_r5ayh"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_oab13"] +image = SubResource("Image_r5ayh") + +[sub_resource type="Image" id="Image_2j4b6"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_u1a6g"] +image = SubResource("Image_2j4b6") + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_es2rd"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_4xgdx"] + +[node name="CharacterEditor" type="Control"] +self_modulate = Color(0, 0, 0, 1) +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("2") + +[node name="Scroll" type="ScrollContainer" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="VBox" type="VBoxContainer" parent="Scroll"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +size_flags_stretch_ratio = 0.3 +theme_override_constants/separation = 0 + +[node name="TopSection" type="HBoxContainer" parent="Scroll/VBox"] +layout_mode = 2 + +[node name="NameContainer" type="HBoxContainer" parent="Scroll/VBox/TopSection"] +layout_mode = 2 + +[node name="CharacterName" type="Label" parent="Scroll/VBox/TopSection/NameContainer"] +unique_name_in_owner = true +layout_mode = 2 +theme_type_variation = &"DialogicTitle" +text = "My Character" + +[node name="NameTooltip" parent="Scroll/VBox/TopSection/NameContainer" instance=ExtResource("2_uhhqs")] +layout_mode = 2 +tooltip_text = "This unique identifier is based on the file name. You can change it in the Reference Manager. +Use this name in timelines to reference this character." +texture = SubResource("ImageTexture_oab13") +hint_text = "This unique identifier is based on the file name. You can change it in the Reference Manager. +Use this name in timelines to reference this character." + +[node name="MainSettingsCollapse" type="Button" parent="Scroll/VBox/TopSection"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 10 +size_flags_vertical = 4 +toggle_mode = true +text = "Main Settings" +icon = SubResource("ImageTexture_u1a6g") + +[node name="MainHSplit" type="HSplitContainer" parent="Scroll/VBox"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="MainSettings" type="VBoxContainer" parent="Scroll/VBox/MainHSplit"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 0.2 + +[node name="MainSettingsTitle" type="Label" parent="Scroll/VBox/MainHSplit/MainSettings"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +theme_type_variation = &"DialogicSubTitle" +text = "Main Settings" + +[node name="MainSettingsScroll" type="ScrollContainer" parent="Scroll/VBox/MainHSplit/MainSettings"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 3 +theme_override_styles/panel = SubResource("StyleBoxEmpty_es2rd") +horizontal_scroll_mode = 0 + +[node name="MainSettingsSections" type="VBoxContainer" parent="Scroll/VBox/MainHSplit/MainSettings/MainSettingsScroll"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="Split" type="HSplitContainer" parent="Scroll/VBox/MainHSplit"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="HBoxContainer" type="HBoxContainer" parent="Scroll/VBox/MainHSplit/Split"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 0.2 +theme_override_constants/separation = 0 + +[node name="MarginContainer" type="MarginContainer" parent="Scroll/VBox/MainHSplit/Split/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 0.2 +theme_override_constants/margin_bottom = 10 + +[node name="PortraitListSection" type="PanelContainer" parent="Scroll/VBox/MainHSplit/Split/HBoxContainer/MarginContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +theme_type_variation = &"DialogicPanelA" + +[node name="Portraits" type="VBoxContainer" parent="Scroll/VBox/MainHSplit/Split/HBoxContainer/MarginContainer/PortraitListSection"] +layout_mode = 2 + +[node name="PortraitsTitle" type="Label" parent="Scroll/VBox/MainHSplit/Split/HBoxContainer/MarginContainer/PortraitListSection/Portraits"] +layout_mode = 2 +theme_type_variation = &"DialogicSubTitle" +text = "Portraits" + +[node name="PortraitListTools" type="HBoxContainer" parent="Scroll/VBox/MainHSplit/Split/HBoxContainer/MarginContainer/PortraitListSection/Portraits"] +layout_mode = 2 + +[node name="AddPortraitButton" type="Button" parent="Scroll/VBox/MainHSplit/Split/HBoxContainer/MarginContainer/PortraitListSection/Portraits/PortraitListTools"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Add portrait" +icon = SubResource("ImageTexture_u1a6g") + +[node name="AddPortraitGroupButton" type="Button" parent="Scroll/VBox/MainHSplit/Split/HBoxContainer/MarginContainer/PortraitListSection/Portraits/PortraitListTools"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Add Group" +icon = ExtResource("3_v1qnr") + +[node name="ImportPortraitsButton" type="Button" parent="Scroll/VBox/MainHSplit/Split/HBoxContainer/MarginContainer/PortraitListSection/Portraits/PortraitListTools"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Import images from folder" +icon = SubResource("ImageTexture_u1a6g") + +[node name="PortraitSearch" type="LineEdit" parent="Scroll/VBox/MainHSplit/Split/HBoxContainer/MarginContainer/PortraitListSection/Portraits/PortraitListTools"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 4 +placeholder_text = "Search" +expand_to_text_length = true +clear_button_enabled = true +right_icon = SubResource("ImageTexture_u1a6g") +caret_blink = true +caret_blink_interval = 0.5 + +[node name="PortraitTreePanel" type="PanelContainer" parent="Scroll/VBox/MainHSplit/Split/HBoxContainer/MarginContainer/PortraitListSection/Portraits"] +layout_mode = 2 +size_flags_vertical = 3 +theme_override_styles/panel = SubResource("StyleBoxEmpty_4xgdx") + +[node name="PortraitTree" type="Tree" parent="Scroll/VBox/MainHSplit/Split/HBoxContainer/MarginContainer/PortraitListSection/Portraits/PortraitTreePanel"] +unique_name_in_owner = true +layout_mode = 2 +allow_rmb_select = true +hide_root = true +drop_mode_flags = 3 +script = ExtResource("2_vad0i") + +[node name="PortraitRightClickMenu" type="PopupMenu" parent="Scroll/VBox/MainHSplit/Split/HBoxContainer/MarginContainer/PortraitListSection/Portraits/PortraitTreePanel/PortraitTree"] +size = Vector2i(118, 100) +item_count = 5 +item_0/text = "Rename" +item_0/icon = SubResource("ImageTexture_oab13") +item_0/id = 2 +item_1/text = "Duplicate" +item_1/icon = SubResource("ImageTexture_oab13") +item_1/id = 0 +item_2/text = "Delete" +item_2/icon = SubResource("ImageTexture_oab13") +item_2/id = 1 +item_3/text = "" +item_3/id = 3 +item_3/separator = true +item_4/text = "Make Default" +item_4/icon = SubResource("ImageTexture_oab13") +item_4/id = 4 + +[node name="PortraitChangeInfo" type="HBoxContainer" parent="Scroll/VBox/MainHSplit/Split/HBoxContainer/MarginContainer/PortraitListSection/Portraits"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="PortraitChangeWarning" type="Label" parent="Scroll/VBox/MainHSplit/Split/HBoxContainer/MarginContainer/PortraitListSection/Portraits/PortraitChangeInfo"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_colors/font_color = Color(0, 0, 0, 1) +text = "Some portraits were renamed. Make sure no references broke!" +autowrap_mode = 3 + +[node name="ReferenceMangerButton" type="Button" parent="Scroll/VBox/MainHSplit/Split/HBoxContainer/MarginContainer/PortraitListSection/Portraits/PortraitChangeInfo"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 4 +text = "Reference +Manager" + +[node name="RightSection2" type="VBoxContainer" parent="Scroll/VBox/MainHSplit/Split"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +size_flags_stretch_ratio = 0.5 + +[node name="Spacer" type="Control" parent="Scroll/VBox/MainHSplit/Split/RightSection2"] +custom_minimum_size = Vector2(0, 10) +layout_mode = 2 + +[node name="RightSection" type="SplitContainer" parent="Scroll/VBox/MainHSplit/Split/RightSection2"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +size_flags_stretch_ratio = 0.5 +vertical = true + +[node name="PortraitPreviewSection" type="Panel" parent="Scroll/VBox/MainHSplit/Split/RightSection2/RightSection"] +unique_name_in_owner = true +show_behind_parent = true +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_type_variation = &"DialogicPanelB" + +[node name="ClipRect" type="Control" parent="Scroll/VBox/MainHSplit/Split/RightSection2/RightSection/PortraitPreviewSection"] +clip_contents = true +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="Node2D" type="Node2D" parent="Scroll/VBox/MainHSplit/Split/RightSection2/RightSection/PortraitPreviewSection/ClipRect"] +position = Vector2(13, 17) + +[node name="RealPreviewPivot" type="Sprite2D" parent="Scroll/VBox/MainHSplit/Split/RightSection2/RightSection/PortraitPreviewSection/ClipRect/Node2D"] +unique_name_in_owner = true +position = Vector2(326.5, 267) +texture = SubResource("ImageTexture_u1a6g") + +[node name="ScenePreviewWarning" type="Label" parent="Scroll/VBox/MainHSplit/Split/RightSection2/RightSection/PortraitPreviewSection"] +unique_name_in_owner = true +visible = false +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -143.0 +offset_top = -44.5 +offset_right = 143.0 +offset_bottom = 85.5 +grow_horizontal = 2 +grow_vertical = 2 +text = "Custom scenes can only be viewed in \"Full mode\" if they are in @tool mode and override _get_covered_rect" +horizontal_alignment = 1 +vertical_alignment = 1 +autowrap_mode = 3 +metadata/_edit_layout_mode = 1 + +[node name="PreviewReal" type="CenterContainer" parent="Scroll/VBox/MainHSplit/Split/RightSection2/RightSection/PortraitPreviewSection"] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = 7 +anchor_left = 0.5 +anchor_top = 1.0 +anchor_right = 0.5 +anchor_bottom = 1.0 +offset_left = -302.0 +offset_top = -80.0 +offset_right = 302.0 +grow_horizontal = 2 +grow_vertical = 0 +mouse_filter = 2 +metadata/_edit_layout_mode = 1 + +[node name="Control" type="Control" parent="Scroll/VBox/MainHSplit/Split/RightSection2/RightSection/PortraitPreviewSection/PreviewReal"] +layout_mode = 2 + +[node name="RealSizeRemotePivotTransform" type="RemoteTransform2D" parent="Scroll/VBox/MainHSplit/Split/RightSection2/RightSection/PortraitPreviewSection/PreviewReal/Control"] +unique_name_in_owner = true +remote_path = NodePath("../../../ClipRect/Node2D/RealPreviewPivot") +update_rotation = false +update_scale = false + +[node name="FullPreviewAvailableRect" type="Control" parent="Scroll/VBox/MainHSplit/Split/RightSection2/RightSection/PortraitPreviewSection"] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = 10.0 +offset_top = 28.0 +offset_right = -10.0 +offset_bottom = -16.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +metadata/_edit_layout_mode = 1 + +[node name="HBoxContainer" type="HBoxContainer" parent="Scroll/VBox/MainHSplit/Split/RightSection2/RightSection/PortraitPreviewSection"] +layout_mode = 1 +anchors_preset = 10 +anchor_right = 1.0 +offset_left = 6.0 +offset_top = 7.0 +offset_right = -6.0 +offset_bottom = 43.0 +grow_horizontal = 2 +mouse_filter = 2 + +[node name="PreviewLabel" type="Label" parent="Scroll/VBox/MainHSplit/Split/RightSection2/RightSection/PortraitPreviewSection/HBoxContainer"] +unique_name_in_owner = true +show_behind_parent = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 0 +theme_override_colors/font_color = Color(0, 0, 0, 1) +text = "No portrait to preview." +text_overrun_behavior = 1 + +[node name="FitPreview_Toggle" type="Button" parent="Scroll/VBox/MainHSplit/Split/RightSection2/RightSection/PortraitPreviewSection/HBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 0 +tooltip_text = "Real scale" +focus_mode = 0 +toggle_mode = true +button_pressed = true +icon = SubResource("ImageTexture_u1a6g") +flat = true +metadata/_edit_layout_mode = 1 + +[node name="VBox" type="VBoxContainer" parent="Scroll/VBox/MainHSplit/Split/RightSection2/RightSection"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +size_flags_stretch_ratio = 0.75 + +[node name="Hbox" type="HBoxContainer" parent="Scroll/VBox/MainHSplit/Split/RightSection2/RightSection/VBox"] +layout_mode = 2 + +[node name="PortraitSettingsTitle" type="Label" parent="Scroll/VBox/MainHSplit/Split/RightSection2/RightSection/VBox/Hbox"] +unique_name_in_owner = true +layout_mode = 2 +theme_type_variation = &"DialogicSubTitle" +text = "Portrait Settings" + +[node name="SwitchPortraitSettingsPosition" type="Button" parent="Scroll/VBox/MainHSplit/Split/RightSection2/RightSection/VBox/Hbox"] +unique_name_in_owner = true +modulate = Color(1, 1, 1, 0.647059) +layout_mode = 2 +tooltip_text = "Switch position" +focus_mode = 0 +icon = SubResource("ImageTexture_u1a6g") +flat = true + +[node name="Scroll" type="ScrollContainer" parent="Scroll/VBox/MainHSplit/Split/RightSection2/RightSection/VBox"] +layout_mode = 2 +size_flags_vertical = 3 +size_flags_stretch_ratio = 0.4 + +[node name="PortraitSettingsSection" type="VBoxContainer" parent="Scroll/VBox/MainHSplit/Split/RightSection2/RightSection/VBox/Scroll"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +size_flags_stretch_ratio = 0.3 + +[node name="Spacer2" type="Control" parent="Scroll/VBox/MainHSplit/Split/RightSection2"] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 + +[node name="NoCharacterScreen" type="ColorRect" parent="."] +visible = false +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +color = Color(0, 0, 0, 1) + +[node name="CenterContainer" type="CenterContainer" parent="NoCharacterScreen"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="NoCharacterScreen/CenterContainer"] +custom_minimum_size = Vector2(250, 0) +layout_mode = 2 + +[node name="Label" type="Label" parent="NoCharacterScreen/CenterContainer/VBoxContainer"] +layout_mode = 2 +text = "No character opened. +Create a character or double-click one in the file system dock." +horizontal_alignment = 1 +autowrap_mode = 3 + +[node name="CreateCharacterButton" type="Button" parent="NoCharacterScreen/CenterContainer/VBoxContainer"] +layout_mode = 2 +text = "Create New Character" + +[connection signal="toggled" from="Scroll/VBox/TopSection/MainSettingsCollapse" to="." method="_on_main_settings_collapse_toggled"] +[connection signal="item_mouse_selected" from="Scroll/VBox/MainHSplit/Split/HBoxContainer/MarginContainer/PortraitListSection/Portraits/PortraitTreePanel/PortraitTree" to="Scroll/VBox/MainHSplit/Split/HBoxContainer/MarginContainer/PortraitListSection/Portraits/PortraitTreePanel/PortraitTree" method="_on_item_mouse_selected"] +[connection signal="index_pressed" from="Scroll/VBox/MainHSplit/Split/HBoxContainer/MarginContainer/PortraitListSection/Portraits/PortraitTreePanel/PortraitTree/PortraitRightClickMenu" to="." method="_on_portrait_right_click_menu_index_pressed"] +[connection signal="pressed" from="Scroll/VBox/MainHSplit/Split/HBoxContainer/MarginContainer/PortraitListSection/Portraits/PortraitChangeInfo/ReferenceMangerButton" to="." method="_on_reference_manger_button_pressed"] +[connection signal="resized" from="Scroll/VBox/MainHSplit/Split/RightSection2/RightSection/PortraitPreviewSection/FullPreviewAvailableRect" to="." method="_on_full_preview_available_rect_resized"] +[connection signal="toggled" from="Scroll/VBox/MainHSplit/Split/RightSection2/RightSection/PortraitPreviewSection/HBoxContainer/FitPreview_Toggle" to="." method="_on_fit_preview_toggle_toggled"] +[connection signal="pressed" from="Scroll/VBox/MainHSplit/Split/RightSection2/RightSection/VBox/Hbox/SwitchPortraitSettingsPosition" to="." method="_on_switch_portrait_settings_position_pressed"] +[connection signal="pressed" from="NoCharacterScreen/CenterContainer/VBoxContainer/CreateCharacterButton" to="." method="_on_create_character_button_pressed"] diff --git a/addons/dialogic/Editor/CharacterEditor/character_editor_main_settings_section.gd b/addons/dialogic/Editor/CharacterEditor/character_editor_main_settings_section.gd new file mode 100644 index 0000000..55253f3 --- /dev/null +++ b/addons/dialogic/Editor/CharacterEditor/character_editor_main_settings_section.gd @@ -0,0 +1,42 @@ +@tool +class_name DialogicCharacterEditorMainSection +extends Control + +## Base class for all character editor main sections. Methods should be overriden. + +## Emit this, if something changed +@warning_ignore("unused_signal") # this is used by extending scripts +signal changed + +## Reference to the character editor, set when instantiated +var character_editor: Control + +## If not empty, a hint icon is added to the section title. +var hint_text := "" + + +## Overwrite to set the title of this section +func _get_title() -> String: + return "MainSection" + + +## Overwrite to set the visibility of the section title +func _show_title() -> bool: + return true + + +## Overwrite to set whether this should initially be opened. +func _start_opened() -> bool: + return false + + +## Overwrite to load all the information from the character into this section. +func _load_character(_resource:DialogicCharacter) -> void: + pass + + +## Overwrite to save all changes made in this section to the resource. +## In custom sections you will mostly likely save to the [resource.custom_info] +## dictionary. +func _save_changes(resource:DialogicCharacter) -> DialogicCharacter: + return resource diff --git a/addons/dialogic/Editor/CharacterEditor/character_editor_main_settings_section.gd.uid b/addons/dialogic/Editor/CharacterEditor/character_editor_main_settings_section.gd.uid new file mode 100644 index 0000000..bc89421 --- /dev/null +++ b/addons/dialogic/Editor/CharacterEditor/character_editor_main_settings_section.gd.uid @@ -0,0 +1 @@ +uid://wltbab3qq63b diff --git a/addons/dialogic/Editor/CharacterEditor/character_editor_portrait_settings_section.gd b/addons/dialogic/Editor/CharacterEditor/character_editor_portrait_settings_section.gd new file mode 100644 index 0000000..920f8a5 --- /dev/null +++ b/addons/dialogic/Editor/CharacterEditor/character_editor_portrait_settings_section.gd @@ -0,0 +1,48 @@ +@tool +class_name DialogicCharacterEditorPortraitSection +extends Control + +## Base class for all portrait settings sections. Methods should be overriden. +## Changes made through fields in such a section should instantly be "saved" +## to the portrait_items metadata from where they will be saved to the resource. + +## Emit this, if something changed +signal changed +## Emit this if the preview should reload +signal update_preview + +## Reference to the character editor, set when instantiated +var character_editor: Control +## Reference to the selected portrait item. +## `selected_item.get_metadata(0)` can access the portraits data +var selected_item: TreeItem = null + +## If not empty a hint icon is added to the section title +var hint_text := "" + + +## Overwrite to set the title of this section +func _get_title() -> String: + return "CustomSection" + + +## Overwrite to set the visibility of the section title +func _show_title() -> bool: + return true + + +## Overwrite to set whether this should initially be opened. +func _start_opened() -> bool: + return false + + +## Overwrite to load all the information from the character into this section. +func _load_portrait_data(data:Dictionary) -> void: + pass + + +## Overwrite to recheck visibility of your section and the content of your fields. +## This is called whenever the preview is updated so it allows reacting to major +## changes in other portrait sections. +func _recheck(data:Dictionary) -> void: + pass diff --git a/addons/dialogic/Editor/CharacterEditor/character_editor_portrait_settings_section.gd.uid b/addons/dialogic/Editor/CharacterEditor/character_editor_portrait_settings_section.gd.uid new file mode 100644 index 0000000..0067938 --- /dev/null +++ b/addons/dialogic/Editor/CharacterEditor/character_editor_portrait_settings_section.gd.uid @@ -0,0 +1 @@ +uid://ckblurnjla80i diff --git a/addons/dialogic/Editor/CharacterEditor/character_editor_portrait_tree.gd b/addons/dialogic/Editor/CharacterEditor/character_editor_portrait_tree.gd new file mode 100644 index 0000000..82ac137 --- /dev/null +++ b/addons/dialogic/Editor/CharacterEditor/character_editor_portrait_tree.gd @@ -0,0 +1,142 @@ +@tool +extends Tree + +## Tree that displays the portrait list as a hirarchy + +var editor := find_parent('Character Editor') +var current_group_nodes := {} + + +func _ready() -> void: + $PortraitRightClickMenu.set_item_icon(0, get_theme_icon('Rename', 'EditorIcons')) + $PortraitRightClickMenu.set_item_icon(1, get_theme_icon('Duplicate', 'EditorIcons')) + $PortraitRightClickMenu.set_item_icon(2, get_theme_icon('Remove', 'EditorIcons')) + $PortraitRightClickMenu.set_item_icon(4, get_theme_icon("Favorites", "EditorIcons")) + + +func clear_tree() -> void: + clear() + current_group_nodes = {} + + +func add_portrait_item(portrait_name: String, portrait_data: Dictionary, parent_item: TreeItem, previous_name := "") -> TreeItem: + var item: TreeItem = %PortraitTree.create_item(parent_item) + item.set_text(0, portrait_name) + item.set_metadata(0, portrait_data) + if previous_name.is_empty(): + item.set_meta('previous_name', get_full_item_name(item)) + else: + item.set_meta('previous_name', previous_name) + if portrait_name == editor.current_resource.default_portrait: + item.add_button(0, get_theme_icon('Favorites', 'EditorIcons'), 2, true, 'Default') + return item + + +func add_portrait_group(goup_name := "Group", parent_item: TreeItem = get_root(), previous_name := "") -> TreeItem: + var item: TreeItem = %PortraitTree.create_item(parent_item) + item.set_icon(0, get_theme_icon("Folder", "EditorIcons")) + item.set_text(0, goup_name) + item.set_metadata(0, {'group':true}) + if previous_name.is_empty(): + item.set_meta('previous_name', get_full_item_name(item)) + else: + item.set_meta('previous_name', previous_name) + return item + + +func get_full_item_name(item: TreeItem) -> String: + var item_name := item.get_text(0) + while item.get_parent() != get_root() and item != get_root(): + item_name = item.get_parent().get_text(0)+"/"+item_name + item = item.get_parent() + return item_name + + +## Will create all not yet existing folders in the given path. +## Returns the last folder (the parent of the portrait item of this path). +func create_necessary_group_items(path: String) -> TreeItem: + var last_item := get_root() + var item_path := "" + + for i in Array(path.split('/')).slice(0, -1): + item_path += "/"+i + item_path = item_path.trim_prefix('/') + if current_group_nodes.has(item_path+"/"+i): + last_item = current_group_nodes[item_path+"/"+i] + else: + var new_item: TreeItem = add_portrait_group(i, last_item) + current_group_nodes[item_path+"/"+i] = new_item + last_item = new_item + return last_item + + +func _on_item_mouse_selected(pos: Vector2, mouse_button_index: int) -> void: + if mouse_button_index == MOUSE_BUTTON_RIGHT: + $PortraitRightClickMenu.set_item_disabled(1, get_selected().get_metadata(0).has('group')) + $PortraitRightClickMenu.popup_on_parent(Rect2(get_global_mouse_position(),Vector2())) + + +################################################################################ +## DRAG AND DROP +################################################################################ + +func _get_drag_data(at_position: Vector2) -> Variant: + var drag_item := get_item_at_position(at_position) + if not drag_item: + return null + + drop_mode_flags = DROP_MODE_INBETWEEN + var preview := Label.new() + preview.text = " "+drag_item.get_text(0) + preview.add_theme_stylebox_override('normal', get_theme_stylebox("Background", "EditorStyles")) + set_drag_preview(preview) + + return drag_item + + +func _can_drop_data(_at_position: Vector2, data: Variant) -> bool: + return data is TreeItem + + +func _drop_data(at_position: Vector2, item: Variant) -> void: + var to_item := get_item_at_position(at_position) + if to_item: + var test_item := to_item + while true: + if test_item == item: + return + test_item = test_item.get_parent() + if test_item == get_root(): + break + + var drop_section := get_drop_section_at_position(at_position) + var parent := get_root() + if to_item: + parent = to_item.get_parent() + + if to_item and to_item.get_metadata(0).has('group') and drop_section == 1: + parent = to_item + + var new_item := copy_branch_or_item(item, parent) + + if to_item and !to_item.get_metadata(0).has('group') and drop_section == 1: + new_item.move_after(to_item) + + if drop_section == -1: + new_item.move_before(to_item) + + editor.report_name_change(new_item) + + item.free() + + +func copy_branch_or_item(item: TreeItem, new_parent: TreeItem) -> TreeItem: + var new_item: TreeItem = null + if item.get_metadata(0).has('group'): + new_item = add_portrait_group(item.get_text(0), new_parent, item.get_meta('previous_name')) + else: + new_item = add_portrait_item(item.get_text(0), item.get_metadata(0), new_parent, item.get_meta('previous_name')) + + for child in item.get_children(): + copy_branch_or_item(child, new_item) + return new_item diff --git a/addons/dialogic/Editor/CharacterEditor/character_editor_portrait_tree.gd.uid b/addons/dialogic/Editor/CharacterEditor/character_editor_portrait_tree.gd.uid new file mode 100644 index 0000000..9f24a8c --- /dev/null +++ b/addons/dialogic/Editor/CharacterEditor/character_editor_portrait_tree.gd.uid @@ -0,0 +1 @@ +uid://deliic6d8vajo diff --git a/addons/dialogic/Editor/CharacterEditor/character_prefix_suffix.gd b/addons/dialogic/Editor/CharacterEditor/character_prefix_suffix.gd new file mode 100644 index 0000000..6c54255 --- /dev/null +++ b/addons/dialogic/Editor/CharacterEditor/character_prefix_suffix.gd @@ -0,0 +1,79 @@ +@tool +class_name DialogicCharacterPrefixSuffixSection +extends DialogicCharacterEditorMainSection +## Character Editor Section for setting the prefix and suffix of a character. +## +## loads and sets the prefix and suffix of a character. +## Provides [const PREFIX_CUSTOM_KEY] and [const SUFFIX_CUSTOM_KEY] to +## access the `custom_info` dictionary of the [class DialogicCharacter]. + +@export var prefix_input: LineEdit +@export var suffix_input: LineEdit + +## We won't force any prefixes or suffixes onto the player, +## to ensure their games are working as previously when updating. +const DEFAULT_PREFIX = "" +const DEFAULT_SUFFIX = "" + +## `custom_info` dictionary keys for the prefix. +const PREFIX_CUSTOM_KEY = "prefix" + +## `custom_info` dictionary keys for the prefix. +const SUFFIX_CUSTOM_KEY = "suffix" + +var suffix := "" +var prefix := "" + + +func _ready() -> void: + suffix_input.text_changed.connect(_suffix_changed) + prefix_input.text_changed.connect(_prefix_changed) + + +func _suffix_changed(text: String) -> void: + suffix = text + + +func _prefix_changed(text: String) -> void: + prefix = text + + +func _get_title() -> String: + return "Character Prefix & Suffix" + + +func _show_title() -> bool: + return true + + +func _start_opened() -> bool: + return false + + +func _load_portrait_data(portrait_data: Dictionary) -> void: + _load_prefix_data(portrait_data) + + +## We load the prefix and suffix from the character's `custom_info` dictionary. +func _load_character(resource: DialogicCharacter) -> void: + _load_prefix_data(resource.custom_info) + + +func _load_prefix_data(data: Dictionary) -> void: + suffix = data.get(SUFFIX_CUSTOM_KEY, DEFAULT_SUFFIX) + prefix = data.get(PREFIX_CUSTOM_KEY, DEFAULT_PREFIX) + + suffix_input.text = suffix + prefix_input.text = prefix + + +## Whenever the user makes a save to the character, we save the prefix and suffix. +func _save_changes(character: DialogicCharacter) -> DialogicCharacter: + if not character: + printerr("[Dialogic] Unable to save Prefix and Suffix, the character is missing.") + return character + + character.custom_info[PREFIX_CUSTOM_KEY] = prefix + character.custom_info[SUFFIX_CUSTOM_KEY] = suffix + + return character diff --git a/addons/dialogic/Editor/CharacterEditor/character_prefix_suffix.gd.uid b/addons/dialogic/Editor/CharacterEditor/character_prefix_suffix.gd.uid new file mode 100644 index 0000000..7a3aeb7 --- /dev/null +++ b/addons/dialogic/Editor/CharacterEditor/character_prefix_suffix.gd.uid @@ -0,0 +1 @@ +uid://i1ujoar8jf80 diff --git a/addons/dialogic/Editor/CharacterEditor/character_prefix_suffix.tscn b/addons/dialogic/Editor/CharacterEditor/character_prefix_suffix.tscn new file mode 100644 index 0000000..2ab9c95 --- /dev/null +++ b/addons/dialogic/Editor/CharacterEditor/character_prefix_suffix.tscn @@ -0,0 +1,48 @@ +[gd_scene load_steps=3 format=3 uid="uid://1ctcs6ywjjtd"] + +[ext_resource type="PackedScene" uid="uid://dbpkta2tjsqim" path="res://addons/dialogic/Editor/Common/hint_tooltip_icon.tscn" id="1_o3alv"] +[ext_resource type="Script" uid="uid://i1ujoar8jf80" path="res://addons/dialogic/Editor/CharacterEditor/character_prefix_suffix.gd" id="1_tkxff"] + +[node name="CharacterPrefixSuffix" type="GridContainer" node_paths=PackedStringArray("prefix_input", "suffix_input")] +offset_right = 121.0 +offset_bottom = 66.0 +columns = 2 +script = ExtResource("1_tkxff") +prefix_input = NodePath("PrefixInput") +suffix_input = NodePath("SuffixInput") + +[node name="Prefix" type="HBoxContainer" parent="."] +layout_mode = 2 + +[node name="Label" type="Label" parent="Prefix"] +layout_mode = 2 +text = "Prefix" + +[node name="HintTooltip" parent="Prefix" instance=ExtResource("1_o3alv")] +layout_mode = 2 +texture = null +hint_text = "If a character speaks, this appears before their text. +Example: Color Tags or Quotation Marks." + +[node name="PrefixInput" type="LineEdit" parent="."] +layout_mode = 2 +size_flags_horizontal = 3 +caret_blink = true + +[node name="Suffix" type="HBoxContainer" parent="."] +layout_mode = 2 + +[node name="Label" type="Label" parent="Suffix"] +layout_mode = 2 +text = "Suffix" + +[node name="HintTooltip" parent="Suffix" instance=ExtResource("1_o3alv")] +layout_mode = 2 +texture = null +hint_text = "If a character speaks, this appears after their text. +Example: Color Tags or Quotation Marks." + +[node name="SuffixInput" type="LineEdit" parent="."] +layout_mode = 2 +size_flags_horizontal = 3 +caret_blink = true diff --git a/addons/dialogic/Editor/CharacterEditor/portrait_scene_browser.gd b/addons/dialogic/Editor/CharacterEditor/portrait_scene_browser.gd new file mode 100644 index 0000000..119f813 --- /dev/null +++ b/addons/dialogic/Editor/CharacterEditor/portrait_scene_browser.gd @@ -0,0 +1,126 @@ +@tool +extends Control + +var ListItem := load("res://addons/dialogic/Editor/Common/BrowserItem.tscn") + +enum Types {ALL, GENERAL, PRESET} +var current_type := Types.ALL +var current_info := {} + +var portrait_scenes_info := {} + +signal activate_part(part_info:Dictionary) + + +func _ready() -> void: + collect_portrait_scenes() + + %Search.right_icon = get_theme_icon("Search", "EditorIcons") + %CloseButton.icon = get_theme_icon("Close", "EditorIcons") + + get_parent().close_requested.connect(_on_close_button_pressed) + get_parent().visibility_changed.connect(func():if get_parent().visible: open()) + + +func collect_portrait_scenes() -> void: + for indexer in DialogicUtil.get_indexers(): + for element in indexer._get_portrait_scene_presets(): + portrait_scenes_info[element.get('path', '')] = element + + +func open() -> void: + collect_portrait_scenes() + load_parts() + + +func is_premade_portrait_scene(scene_path:String) -> bool: + return scene_path in portrait_scenes_info + + +func load_parts() -> void: + for i in %PartGrid.get_children(): + i.queue_free() + + %Search.placeholder_text = "Search for " + %Search.text = "" + match current_type: + Types.GENERAL: %Search.placeholder_text += "general portrait scenes" + Types.PRESET: %Search.placeholder_text += "portrait scene presets" + Types.ALL: %Search.placeholder_text += "general portrait scenes and presets" + + for info in portrait_scenes_info.values(): + var type: String = info.get('type', '_') + if (current_type == Types.GENERAL and type != "General") or (current_type == Types.PRESET and type != "Preset"): + continue + + var item: Node = ListItem.instantiate() + item.load_info(info) + %PartGrid.add_child(item) + item.set_meta('info', info) + item.clicked.connect(_on_item_clicked.bind(item, info)) + item.focused.connect(_on_item_clicked.bind(item, info)) + item.double_clicked.connect(emit_signal.bind('activate_part', info)) + + await get_tree().process_frame + + if %PartGrid.get_child_count() > 0: + %PartGrid.get_child(0).clicked.emit() + %PartGrid.get_child(0).grab_focus() + + +func _on_item_clicked(item: Node, info:Dictionary) -> void: + load_part_info(info) + + +func load_part_info(info:Dictionary) -> void: + current_info = info + %PartTitle.text = info.get('name', 'Unknown Part') + %PartAuthor.text = "by "+info.get('author', 'Anonymus') + %PartDescription.text = info.get('description', '') + + if info.get('preview_image', null) and ResourceLoader.exists(info.preview_image[0]): + %PreviewImage.texture = load(info.preview_image[0]) + %PreviewImage.show() + else: + %PreviewImage.hide() + + match info.type: + "General": + %ActivateButton.text = "Use this scene" + %TypeDescription.text = "This is a general use scene, it can be used directly." + "Preset": + %ActivateButton.text = "Customize this scene" + %TypeDescription.text = "This is a preset you can use for a custom portrait scene. Dialogic will promt you to save a copy of this scene that you can then use and customize." + "Default": + %ActivateButton.text = "Use default scene" + %TypeDescription.text = "" + "Custom": + %ActivateButton.text = "Select a custom scene" + %TypeDescription.text = "" + + if info.get("documentation", ""): + %DocumentationButton.show() + %DocumentationButton.uri = info.documentation + else: + %DocumentationButton.hide() + + +func _on_activate_button_pressed() -> void: + activate_part.emit(current_info) + + +func _on_close_button_pressed() -> void: + get_parent().hide() + + +func _on_search_text_changed(new_text: String) -> void: + for item in %PartGrid.get_children(): + if new_text.is_empty(): + item.show() + continue + + if new_text.to_lower() in item.get_meta('info').name.to_lower(): + item.show() + continue + + item.hide() diff --git a/addons/dialogic/Editor/CharacterEditor/portrait_scene_browser.gd.uid b/addons/dialogic/Editor/CharacterEditor/portrait_scene_browser.gd.uid new file mode 100644 index 0000000..f8b8094 --- /dev/null +++ b/addons/dialogic/Editor/CharacterEditor/portrait_scene_browser.gd.uid @@ -0,0 +1 @@ +uid://iwv7qff6g0f0 diff --git a/addons/dialogic/Editor/CharacterEditor/portrait_scene_browser.tscn b/addons/dialogic/Editor/CharacterEditor/portrait_scene_browser.tscn new file mode 100644 index 0000000..f760591 --- /dev/null +++ b/addons/dialogic/Editor/CharacterEditor/portrait_scene_browser.tscn @@ -0,0 +1,260 @@ +[gd_scene load_steps=11 format=3 uid="uid://b1wn8r84uh11b"] + +[ext_resource type="Script" uid="uid://iwv7qff6g0f0" path="res://addons/dialogic/Editor/CharacterEditor/portrait_scene_browser.gd" id="1_an6nc"] + +[sub_resource type="Gradient" id="Gradient_0o1u0"] +colors = PackedColorArray(0.100572, 0.303996, 0.476999, 1, 0.296448, 0.231485, 0.52887, 1) + +[sub_resource type="GradientTexture2D" id="GradientTexture2D_gxpvv"] +gradient = SubResource("Gradient_0o1u0") +fill = 2 +fill_from = Vector2(0.478632, 1) +fill_to = Vector2(0, 0) + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_we8bq"] +content_margin_left = 6.0 +content_margin_top = 3.0 +content_margin_right = 6.0 +content_margin_bottom = 3.0 +draw_center = false +border_width_left = 2 +border_width_top = 2 +border_width_right = 2 +border_width_bottom = 2 +border_color = Color(1, 1, 1, 0.615686) +corner_radius_top_left = 5 +corner_radius_top_right = 5 +corner_radius_bottom_right = 5 +corner_radius_bottom_left = 5 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_3x0xw"] +content_margin_left = 6.0 +content_margin_top = 3.0 +content_margin_right = 6.0 +content_margin_bottom = 3.0 +draw_center = false +border_width_left = 3 +border_width_top = 3 +border_width_right = 3 +border_width_bottom = 3 +border_color = Color(1, 1, 1, 1) +corner_radius_top_left = 5 +corner_radius_top_right = 5 +corner_radius_bottom_right = 5 +corner_radius_bottom_left = 5 +expand_margin_left = 2.0 +expand_margin_top = 2.0 +expand_margin_right = 2.0 +expand_margin_bottom = 2.0 + +[sub_resource type="Image" id="Image_h0nfr"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_d2gam"] +image = SubResource("Image_h0nfr") + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_lf1ht"] +bg_color = Color(0.0588235, 0.0313726, 0.0980392, 1) +border_width_left = 5 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_a5iyu"] +bg_color = Color(1, 1, 1, 1) +draw_center = false +corner_radius_top_left = 10 +corner_radius_top_right = 10 +corner_radius_bottom_right = 10 +corner_radius_bottom_left = 10 +shadow_color = Color(0.992157, 0.992157, 0.992157, 0.101961) +shadow_size = 10 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_htwsp"] +bg_color = Color(1, 1, 1, 1) +corner_radius_top_left = 10 +corner_radius_top_right = 10 +corner_radius_bottom_right = 10 +corner_radius_bottom_left = 10 + +[node name="PortraitSceneBrowser" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_an6nc") + +[node name="BGColor" type="TextureRect" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = SubResource("GradientTexture2D_gxpvv") + +[node name="HSplitContainer" type="HSplitContainer" parent="."] +clip_contents = true +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_vertical = 3 + +[node name="Margin" type="MarginContainer" parent="HSplitContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 1.5 +theme_override_constants/margin_left = 10 +theme_override_constants/margin_top = 10 +theme_override_constants/margin_right = 10 +theme_override_constants/margin_bottom = 10 + +[node name="VBox" type="VBoxContainer" parent="HSplitContainer/Margin"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="BrowserTitle" type="Label" parent="HSplitContainer/Margin/VBox"] +layout_mode = 2 +theme_type_variation = &"DialogicSubTitle" +theme_override_font_sizes/font_size = 25 +text = "Dialogic Portrait Scene Browser" + +[node name="HBox" type="HBoxContainer" parent="HSplitContainer/Margin/VBox"] +layout_mode = 2 + +[node name="Search" type="LineEdit" parent="HSplitContainer/Margin/VBox/HBox"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_styles/normal = SubResource("StyleBoxFlat_we8bq") +theme_override_styles/focus = SubResource("StyleBoxFlat_3x0xw") +placeholder_text = "Search" +right_icon = SubResource("ImageTexture_d2gam") + +[node name="ScrollContainer" type="ScrollContainer" parent="HSplitContainer/Margin/VBox"] +layout_mode = 2 +size_flags_vertical = 3 + +[node name="PartGrid" type="HFlowContainer" parent="HSplitContainer/Margin/VBox/ScrollContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="Buttons" type="HBoxContainer" parent="HSplitContainer/Margin/VBox"] +layout_mode = 2 +alignment = 1 + +[node name="CloseButton" type="Button" parent="HSplitContainer/Margin/VBox/Buttons"] +unique_name_in_owner = true +layout_mode = 2 +text = "Close" +icon = SubResource("ImageTexture_d2gam") + +[node name="PanelContainer" type="PanelContainer" parent="HSplitContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_styles/panel = SubResource("StyleBoxFlat_lf1ht") + +[node name="Control" type="Control" parent="HSplitContainer/PanelContainer"] +layout_mode = 2 + +[node name="Panel" type="Panel" parent="HSplitContainer/PanelContainer/Control"] +layout_mode = 1 +anchors_preset = 9 +anchor_bottom = 1.0 +offset_left = -4.0 +offset_right = 40.0 +offset_bottom = 71.0 +grow_vertical = 2 +rotation = 0.0349066 +theme_override_styles/panel = SubResource("StyleBoxFlat_lf1ht") + +[node name="MarginContainer" type="MarginContainer" parent="HSplitContainer/PanelContainer"] +layout_mode = 2 +theme_override_constants/margin_left = 5 +theme_override_constants/margin_top = 10 +theme_override_constants/margin_right = 10 +theme_override_constants/margin_bottom = 10 + +[node name="VBox" type="VBoxContainer" parent="HSplitContainer/PanelContainer/MarginContainer"] +layout_mode = 2 +alignment = 1 + +[node name="Panel" type="PanelContainer" parent="HSplitContainer/PanelContainer/MarginContainer/VBox"] +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_a5iyu") + +[node name="Panel" type="PanelContainer" parent="HSplitContainer/PanelContainer/MarginContainer/VBox/Panel"] +clip_children = 1 +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_htwsp") + +[node name="PreviewImage" type="TextureRect" parent="HSplitContainer/PanelContainer/MarginContainer/VBox/Panel/Panel"] +unique_name_in_owner = true +layout_mode = 2 +expand_mode = 5 +stretch_mode = 6 + +[node name="HFlowContainer" type="HFlowContainer" parent="HSplitContainer/PanelContainer/MarginContainer/VBox"] +layout_mode = 2 + +[node name="PartTitle" type="Label" parent="HSplitContainer/PanelContainer/MarginContainer/VBox/HFlowContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 8 +theme_type_variation = &"DialogicTitle" +text = "Cool Style Part" + +[node name="PartAuthor" type="Label" parent="HSplitContainer/PanelContainer/MarginContainer/VBox/HFlowContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 8 +theme_type_variation = &"DialogicHintText" +text = "by Jowan" + +[node name="PartType" type="Label" parent="HSplitContainer/PanelContainer/MarginContainer/VBox/HFlowContainer"] +visible = false +layout_mode = 2 +size_flags_vertical = 8 +theme_type_variation = &"DialogicHintText" +text = "a style" + +[node name="PartDescription" type="Label" parent="HSplitContainer/PanelContainer/MarginContainer/VBox"] +unique_name_in_owner = true +layout_mode = 2 +theme_type_variation = &"DialogicHintText2" +text = "A cool textbox layer" +autowrap_mode = 3 + +[node name="DocumentationButton" type="LinkButton" parent="HSplitContainer/PanelContainer/MarginContainer/VBox"] +unique_name_in_owner = true +layout_mode = 2 +text = "Learn more" + +[node name="HSeparator" type="HSeparator" parent="HSplitContainer/PanelContainer/MarginContainer/VBox"] +layout_mode = 2 + +[node name="ActivateButton" type="Button" parent="HSplitContainer/PanelContainer/MarginContainer/VBox"] +unique_name_in_owner = true +layout_mode = 2 +text = "Use" + +[node name="TypeDescription" type="Label" parent="HSplitContainer/PanelContainer/MarginContainer/VBox"] +unique_name_in_owner = true +layout_mode = 2 +theme_type_variation = &"DialogicHintText" +text = "A cool textbox layer" +autowrap_mode = 3 + +[connection signal="text_changed" from="HSplitContainer/Margin/VBox/HBox/Search" to="." method="_on_search_text_changed"] +[connection signal="pressed" from="HSplitContainer/Margin/VBox/Buttons/CloseButton" to="." method="_on_close_button_pressed"] +[connection signal="pressed" from="HSplitContainer/PanelContainer/MarginContainer/VBox/ActivateButton" to="." method="_on_activate_button_pressed"] diff --git a/addons/dialogic/Editor/Common/BrowserItem.gd b/addons/dialogic/Editor/Common/BrowserItem.gd new file mode 100644 index 0000000..7bfb3cf --- /dev/null +++ b/addons/dialogic/Editor/Common/BrowserItem.gd @@ -0,0 +1,86 @@ +@tool +extends Container + +signal clicked +signal middle_clicked +signal double_clicked +signal focused + +var base_size := 1 + + +func _ready() -> void: + if get_parent() is SubViewport: + return + + %Name.add_theme_font_override("font", get_theme_font("bold", "EditorFonts")) + custom_minimum_size = base_size * Vector2(200, 150) * DialogicUtil.get_editor_scale() + %CurrentIcon.texture = get_theme_icon("Favorites", "EditorIcons") + if %Image.texture == null: + %Image.texture = get_theme_icon("ImportFail", "EditorIcons") + %Image.stretch_mode = TextureRect.STRETCH_KEEP_CENTERED + + +func load_info(info:Dictionary) -> void: + %Name.text = info.name + if not info.has("preview_image"): + pass + elif info.preview_image[0] == 'custom': + await ready + %Image.texture = get_theme_icon("CreateNewSceneFrom", "EditorIcons") + %Image.stretch_mode = TextureRect.STRETCH_KEEP_CENTERED + %Panel.self_modulate = get_theme_color("property_color_z", "Editor") + elif info.preview_image[0].ends_with('scn'): + DialogicUtil.get_dialogic_plugin().get_editor_interface().get_resource_previewer().queue_resource_preview(info.preview_image[0], self, 'set_scene_preview', null) + elif ResourceLoader.exists(info.preview_image[0]): + %Image.texture = load(info.preview_image[0]) + elif info.preview_image[0].is_valid_html_color(): + %Image.texture = null + %Panel.self_modulate = Color(info.preview_image[0]) + + if ResourceLoader.exists(info.get('icon', '')): + %Icon.get_parent().show() + %Icon.texture = load(info.get('icon')) + else: + %Icon.get_parent().hide() + + tooltip_text = info.description + + +func set_scene_preview(path:String, preview:Texture2D, thumbnail:Texture2D, userdata:Variant) -> void: + if preview: + %Image.texture = preview + else: + %Image.texture = get_theme_icon("PackedScene", "EditorIcons") + + + +func set_current(current:bool): + %CurrentIcon.visible = current + + +func _on_mouse_entered() -> void: + %HoverBG.show() + + +func _on_mouse_exited() -> void: + %HoverBG.hide() + + +func _on_gui_input(event): + if event.is_action_pressed('ui_accept') or event.is_action_pressed("ui_select") or ( + event is InputEventMouseButton and event.pressed and event.button_index == MOUSE_BUTTON_LEFT): + clicked.emit() + if not event is InputEventMouseButton or event.double_click: + double_clicked.emit() + elif event is InputEventMouseButton and event.pressed and event.button_index == MOUSE_BUTTON_MIDDLE: + middle_clicked.emit() + + +func _on_focus_entered() -> void: + $FocusFG.show() + focused.emit() + + +func _on_focus_exited() -> void: + $FocusFG.hide() diff --git a/addons/dialogic/Editor/Common/BrowserItem.gd.uid b/addons/dialogic/Editor/Common/BrowserItem.gd.uid new file mode 100644 index 0000000..6dc7cc1 --- /dev/null +++ b/addons/dialogic/Editor/Common/BrowserItem.gd.uid @@ -0,0 +1 @@ +uid://ckthmmkodqqwt diff --git a/addons/dialogic/Editor/Common/BrowserItem.tscn b/addons/dialogic/Editor/Common/BrowserItem.tscn new file mode 100644 index 0000000..8d47d20 --- /dev/null +++ b/addons/dialogic/Editor/Common/BrowserItem.tscn @@ -0,0 +1,154 @@ +[gd_scene load_steps=6 format=3 uid="uid://ddlxjde1cx035"] + +[ext_resource type="Script" uid="uid://ckthmmkodqqwt" path="res://addons/dialogic/Editor/Common/BrowserItem.gd" id="1_s3kf0"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_pfw08"] +bg_color = Color(1, 1, 1, 0.32549) +corner_radius_top_left = 10 +corner_radius_top_right = 10 +corner_radius_bottom_right = 10 +corner_radius_bottom_left = 10 +expand_margin_left = 4.0 +expand_margin_top = 4.0 +expand_margin_right = 4.0 +expand_margin_bottom = 4.0 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ab24c"] +bg_color = Color(1, 1, 1, 1) +corner_radius_top_left = 10 +corner_radius_top_right = 10 +corner_radius_bottom_right = 10 +corner_radius_bottom_left = 10 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_qnehp"] +bg_color = Color(0, 0, 0, 1) +corner_radius_top_left = 10 +corner_radius_top_right = 10 +corner_radius_bottom_right = 10 +corner_radius_bottom_left = 10 +shadow_color = Color(0.847059, 0.847059, 0.847059, 0.384314) +shadow_size = 5 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_nxx8t"] +bg_color = Color(0.435294, 0.435294, 0.435294, 0.211765) +draw_center = false +border_width_left = 2 +border_width_top = 2 +border_width_right = 2 +border_width_bottom = 2 +corner_radius_top_left = 10 +corner_radius_top_right = 10 +corner_radius_bottom_right = 10 +corner_radius_bottom_left = 10 +expand_margin_left = 4.0 +expand_margin_top = 4.0 +expand_margin_right = 4.0 +expand_margin_bottom = 4.0 + +[node name="BrowserItem" type="MarginContainer"] +custom_minimum_size = Vector2(200, 150) +offset_left = 1.0 +offset_top = 1.0 +offset_right = 128.0 +offset_bottom = 102.0 +size_flags_horizontal = 0 +focus_mode = 2 +theme_override_constants/margin_left = 4 +theme_override_constants/margin_top = 4 +theme_override_constants/margin_right = 4 +theme_override_constants/margin_bottom = 4 +script = ExtResource("1_s3kf0") + +[node name="HoverBG" type="Panel" parent="."] +unique_name_in_owner = true +visible = false +layout_mode = 2 +mouse_filter = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_pfw08") + +[node name="VBox" type="VBoxContainer" parent="."] +layout_mode = 2 +mouse_filter = 2 +theme_override_constants/separation = 0 +alignment = 1 + +[node name="Panel" type="PanelContainer" parent="VBox"] +unique_name_in_owner = true +self_modulate = Color(0.0705882, 0.0705882, 0.0705882, 1) +clip_children = 2 +layout_mode = 2 +size_flags_vertical = 3 +mouse_filter = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_ab24c") + +[node name="Image" type="TextureRect" parent="VBox/Panel"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 3 +mouse_filter = 2 +expand_mode = 1 +stretch_mode = 6 + +[node name="CurrentIcon" type="TextureRect" parent="VBox/Panel/Image"] +unique_name_in_owner = true +visible = false +layout_mode = 1 +anchors_preset = 1 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = -22.0 +offset_top = 5.0 +offset_right = -6.0 +offset_bottom = 21.0 +grow_horizontal = 0 +tooltip_text = "Currently in use" +stretch_mode = 2 + +[node name="Panel" type="Panel" parent="VBox/Panel/Image"] +layout_mode = 1 +anchors_preset = 3 +anchor_left = 1.0 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = -37.0 +offset_top = -36.0 +offset_right = -7.0 +offset_bottom = -6.0 +grow_horizontal = 0 +grow_vertical = 0 +theme_override_styles/panel = SubResource("StyleBoxFlat_qnehp") + +[node name="Icon" type="TextureRect" parent="VBox/Panel/Image/Panel"] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = 4.0 +offset_top = 4.0 +offset_right = -4.0 +offset_bottom = -4.0 +grow_horizontal = 2 +grow_vertical = 2 +expand_mode = 1 +stretch_mode = 5 + +[node name="Name" type="Label" parent="VBox"] +unique_name_in_owner = true +layout_mode = 2 +text = "Dialogic Theme" +horizontal_alignment = 1 + +[node name="FocusFG" type="Panel" parent="."] +unique_name_in_owner = true +visible = false +layout_mode = 2 +mouse_filter = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_nxx8t") + +[connection signal="focus_entered" from="." to="." method="_on_focus_entered"] +[connection signal="focus_exited" from="." to="." method="_on_focus_exited"] +[connection signal="gui_input" from="." to="." method="_on_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/dialogic/Editor/Common/DCSS.gd b/addons/dialogic/Editor/Common/DCSS.gd new file mode 100644 index 0000000..2a1f95a --- /dev/null +++ b/addons/dialogic/Editor/Common/DCSS.gd @@ -0,0 +1,47 @@ +@tool +class_name DCSS + +static func inline(style: Dictionary) -> StyleBoxFlat: + var scale: float = DialogicUtil.get_editor_scale() + var s := StyleBoxFlat.new() + for property in style.keys(): + match property: + 'border-left': + s.set('border_width_left', style[property] * scale) + 'border-radius': + var radius: float = style[property] * scale + s.set('corner_radius_top_left', radius) + s.set('corner_radius_top_right', radius) + s.set('corner_radius_bottom_left', radius) + s.set('corner_radius_bottom_right', radius) + 'background': + if typeof(style[property]) == TYPE_STRING and style[property] == "none": + s.set('draw_center', false) + else: + s.set('bg_color', style[property]) + 'border': + var width: float = style[property] * scale + s.set('border_width_left', width) + s.set('border_width_right', width) + s.set('border_width_top', width) + s.set('border_width_bottom', width) + 'border-color': + s.set('border_color', style[property]) + 'padding': + var value_v: float = 0.0 + var value_h: float = 0.0 + if style[property] is int: + value_v = style[property] * scale + value_h = value_v + else: + value_v = style[property][0] * scale + value_h = style[property][1] * scale + s.set('content_margin_top', value_v) + s.set('content_margin_bottom', value_v) + s.set('content_margin_left', value_h) + s.set('content_margin_right', value_h) + 'padding-right': + s.set('content_margin_right', style[property] * scale) + 'padding-left': + s.set('content_margin_left', style[property] * scale) + return s diff --git a/addons/dialogic/Editor/Common/DCSS.gd.uid b/addons/dialogic/Editor/Common/DCSS.gd.uid new file mode 100644 index 0000000..6f4fa14 --- /dev/null +++ b/addons/dialogic/Editor/Common/DCSS.gd.uid @@ -0,0 +1 @@ +uid://m3ufop8ao16l diff --git a/addons/dialogic/Editor/Common/ReferenceManager_AddReplacementPanel.gd b/addons/dialogic/Editor/Common/ReferenceManager_AddReplacementPanel.gd new file mode 100644 index 0000000..7d3f355 --- /dev/null +++ b/addons/dialogic/Editor/Common/ReferenceManager_AddReplacementPanel.gd @@ -0,0 +1,122 @@ +@tool +extends PanelContainer + + +enum Modes {EDIT, ADD} + +var mode := Modes.EDIT +var item: TreeItem = null + + +func _ready() -> void: + hide() + %Character.resource_icon = load("res://addons/dialogic/Editor/Images/Resources/character.svg") + %Character.suggestions_func = get_character_suggestions + + %WholeWords.icon = get_theme_icon("FontItem", "EditorIcons") + %MatchCase.icon = get_theme_icon("MatchCase", "EditorIcons") + +func _on_add_pressed() -> void: + if visible: + if mode == Modes.ADD: + hide() + return + elif mode == Modes.EDIT: + save() + + %AddButton.text = "Add" + mode = Modes.ADD + show() + %Type.selected = 0 + _on_type_item_selected(0) + %Where.selected = 2 + _on_where_item_selected(2) + %Old.text = "" + %New.text = "" + + +func open_existing(_item:TreeItem, info:Dictionary): + mode = Modes.EDIT + item = _item + show() + %AddButton.text = "Update" + %Type.selected = info.type + _on_type_item_selected(info.type) + if !info.character_names.is_empty(): + %Where.selected = 1 + %Character.set_value(info.character_names[0]) + else: + %Where.selected = 0 + _on_where_item_selected(%Where.selected) + + %Old.text = info.what + %New.text = info.forwhat + + %MatchCase.button_pressed = info.case_sensitive + %WholeWords.button_pressed = info.whole_words + +func _on_type_item_selected(index:int) -> void: + match index: + 0: + %Where.select(0) + %Where.set_item_disabled(0, false) + %Where.set_item_disabled(1, false) + %Where.set_item_disabled(2, true) + 1: + %Where.select(0) + %Where.set_item_disabled(0, false) + %Where.set_item_disabled(1, false) + %Where.set_item_disabled(2, true) + 2: + %Where.select(1) + %Where.set_item_disabled(0, true) + %Where.set_item_disabled(1, false) + %Where.set_item_disabled(2, true) + 3,4: + %Where.select(0) + %Where.set_item_disabled(0, false) + %Where.set_item_disabled(1, true) + %Where.set_item_disabled(2, true) + %PureTextFlags.visible = index == 0 + _on_where_item_selected(%Where.selected) + + +func _on_where_item_selected(index:int) -> void: + %Character.visible = index == 1 + + +func get_character_suggestions(search_text:String) -> Dictionary: + var suggestions := {} + + #override the previous _character_directory with the meta, specifically for searching otherwise new nodes wont work + var _character_directory := DialogicResourceUtil.get_character_directory() + + var icon := load("res://addons/dialogic/Editor/Images/Resources/character.svg") + suggestions['(No one)'] = {'value':null, 'editor_icon':["GuiRadioUnchecked", "EditorIcons"]} + + for resource in _character_directory.keys(): + suggestions[resource] = { + 'value' : resource, + 'tooltip' : _character_directory[resource], + 'icon' : icon.duplicate()} + return suggestions + + +func save() -> void: + if %Old.text.is_empty() or %New.text.is_empty(): + return + if %Where.selected == 1 and %Character.current_value == null: + return + + var previous := {} + if mode == Modes.EDIT: + previous = item.get_metadata(0) + item.get_parent() + item.free() + + var ref_manager := find_parent('ReferenceManager') + var character_names := [] + if %Character.current_value != null: + character_names = [%Character.current_value] + ref_manager.add_ref_change(%Old.text, %New.text, %Type.selected, %Where.selected, character_names, %WholeWords.button_pressed, %MatchCase.button_pressed, previous) + hide() diff --git a/addons/dialogic/Editor/Common/ReferenceManager_AddReplacementPanel.gd.uid b/addons/dialogic/Editor/Common/ReferenceManager_AddReplacementPanel.gd.uid new file mode 100644 index 0000000..6b38dc4 --- /dev/null +++ b/addons/dialogic/Editor/Common/ReferenceManager_AddReplacementPanel.gd.uid @@ -0,0 +1 @@ +uid://dca6a1a74jfur diff --git a/addons/dialogic/Editor/Common/TitleBgStylebox.tres b/addons/dialogic/Editor/Common/TitleBgStylebox.tres new file mode 100644 index 0000000..f08bb2c --- /dev/null +++ b/addons/dialogic/Editor/Common/TitleBgStylebox.tres @@ -0,0 +1,8 @@ +[gd_resource type="StyleBoxFlat" format=3 uid="uid://dmsjhgv22dns8"] + +[resource] +content_margin_left = 5.0 +content_margin_top = 5.0 +content_margin_right = 5.0 +content_margin_bottom = 5.0 +bg_color = Color(0.545098, 0.545098, 0.545098, 0.211765) diff --git a/addons/dialogic/Editor/Common/broken_reference_manager.gd b/addons/dialogic/Editor/Common/broken_reference_manager.gd new file mode 100644 index 0000000..5113c54 --- /dev/null +++ b/addons/dialogic/Editor/Common/broken_reference_manager.gd @@ -0,0 +1,391 @@ +@tool +extends VSplitContainer + +## This manager shows a list of changed references and allows searching for them and replacing them. + +var reference_changes: Array[Dictionary] = []: + set(changes): + reference_changes = changes + update_indicator() + +var search_regexes: Array[Array] +var finder_thread: Thread +var progress_mutex: Mutex +var progress_percent: float = 0.0 +var progress_message: String = "" + + +func _ready() -> void: + if owner.get_parent() is SubViewport: + return + + %TabA.text = "Broken References" + %TabA.icon = get_theme_icon("Unlinked", "EditorIcons") + + owner.get_parent().visibility_changed.connect(func(): if is_visible_in_tree(): open()) + + %ReplacementSection.hide() + + %CheckButton.icon = get_theme_icon("Search", "EditorIcons") + %Replace.icon = get_theme_icon("ArrowRight", "EditorIcons") + + %State.add_theme_color_override("font_color", get_theme_color("warning_color", "Editor")) + visibility_changed.connect(func(): if !visible: close()) + await get_parent().ready + + var tab_button: Control = %TabA + var dot := Sprite2D.new() + dot.texture = get_theme_icon("GuiGraphNodePort", "EditorIcons") + dot.scale = Vector2(0.8, 0.8) + dot.z_index = 10 + dot.position = Vector2(tab_button.size.x, tab_button.size.y*0.25) + dot.modulate = get_theme_color("warning_color", "Editor").lightened(0.5) + + tab_button.add_child(dot) + update_indicator() + + +func open() -> void: + %ReplacementEditPanel.hide() + %ReplacementSection.hide() + %ChangeTree.clear() + %ChangeTree.create_item() + %ChangeTree.set_column_expand(0, false) + %ChangeTree.set_column_expand(2, false) + %ChangeTree.set_column_custom_minimum_width(2, 50) + var categories := {null:%ChangeTree.get_root()} + for i in reference_changes: + var parent: TreeItem = null + if !i.get('category', null) in categories: + parent = %ChangeTree.create_item() + parent.set_text(1, i.category) + parent.set_custom_color(1, get_theme_color("disabled_font_color", "Editor")) + categories[i.category] = parent + else: + parent = categories[i.get('category')] + + var item: TreeItem = %ChangeTree.create_item(parent) + item.set_text(1, i.what+" -> "+i.forwhat) + item.add_button(1, get_theme_icon("Edit", "EditorIcons"), 1, false, 'Edit') + item.add_button(1, get_theme_icon("Remove", "EditorIcons"), 0, false, 'Remove Change from List') + item.set_cell_mode(0, TreeItem.CELL_MODE_CHECK) + item.set_checked(0, true) + item.set_editable(0, true) + item.set_metadata(0, i) + %CheckButton.disabled = reference_changes.is_empty() + + +func _on_change_tree_button_clicked(item:TreeItem, column:int, id:int, mouse_button_index:int) -> void: + if id == 0: + reference_changes.erase(item.get_metadata(0)) + if item.get_parent().get_child_count() == 1: + item.get_parent().free() + else: + item.free() + update_indicator() + %CheckButton.disabled = reference_changes.is_empty() + + if id == 1: + %ReplacementEditPanel.open_existing(item, item.get_metadata(0)) + + %ReplacementSection.hide() + + +func _on_change_tree_item_edited() -> void: + if !%ChangeTree.get_selected(): + return + %CheckButton.disabled = false + + +func _on_check_button_pressed() -> void: + var to_be_checked: Array[Dictionary]= [] + var item: TreeItem = %ChangeTree.get_root() + while item.get_next_visible(): + item = item.get_next_visible() + + if item.get_child_count(): + continue + + if item.is_checked(0): + to_be_checked.append(item.get_metadata(0)) + to_be_checked[-1]['item'] = item + to_be_checked[-1]['count'] = 0 + + open_finder(to_be_checked) + %CheckButton.disabled = true + + +func open_finder(replacements:Array[Dictionary]) -> void: + %ReplacementSection.show() + %Progress.show() + %ReferenceTree.hide() + + search_regexes = [] + for i in replacements: + if i.has('character_names') and !i.character_names.is_empty(): + i['character_regex'] = RegEx.create_from_string("(?m)^(join|update|leave)?\\s*("+str(i.character_names).replace('"', '').replace(', ', '|').trim_suffix(']').trim_prefix('[').replace('/', '\\/')+")(?(1).*|.*:)") + + for regex_string in i.regex: + var regex := RegEx.create_from_string(regex_string) + search_regexes.append([regex, i]) + + finder_thread = Thread.new() + progress_mutex = Mutex.new() + finder_thread.start(search_timelines.bind(search_regexes)) + + +func _process(delta: float) -> void: + if finder_thread and finder_thread.is_started(): + if finder_thread.is_alive(): + progress_mutex.lock() + %State.text = progress_message + %Progress.value = progress_percent + progress_mutex.unlock() + else: + var finds: Variant = finder_thread.wait_to_finish() + display_search_results(finds) + + + +func display_search_results(finds:Array[Dictionary]) -> void: + %Progress.hide() + %ReferenceTree.show() + for regex_info in search_regexes: + regex_info[1]['item'].set_text(2, str(regex_info[1]['count'])) + + update_count_coloring() + %State.text = str(len(finds))+ " occurrences found" + + %ReferenceTree.clear() + %ReferenceTree.set_column_expand(0, false) + %ReferenceTree.set_column_expand(1, false) + %ReferenceTree.set_column_custom_minimum_width(1, 50) + %ReferenceTree.create_item() + + var timelines := {} + var height := 0 + for i in finds: + var parent: TreeItem = null + if !i.timeline in timelines: + parent = %ReferenceTree.create_item() + parent.set_text(0, i.timeline) + parent.set_custom_color(0, get_theme_color("disabled_font_color", "Editor")) + parent.set_expand_right(0, true) + timelines[i.timeline] = parent + height += %ReferenceTree.get_item_area_rect(parent).size.y+10 + else: + parent = timelines[i.timeline] + + var item: TreeItem = %ReferenceTree.create_item(parent) + item.set_cell_mode(0, TreeItem.CELL_MODE_CHECK) + item.set_checked(0, true) + item.set_editable(0, true) + item.set_metadata(0, i) + item.set_text(1, str(i.line_number)+':') + item.set_text_alignment(1, HORIZONTAL_ALIGNMENT_RIGHT) + item.set_cell_mode(2, TreeItem.CELL_MODE_CUSTOM) + item.set_text(2, i.line) + item.set_tooltip_text(2, i.info.what+' -> '+i.info.forwhat) + item.set_custom_draw_callback(2, _custom_draw) + height += %ReferenceTree.get_item_area_rect(item).size.y+10 + var change_item: TreeItem = i.info.item + change_item.set_meta('found_items', change_item.get_meta('found_items', [])+[item]) + + %ReferenceTree.custom_minimum_size.y = min(height, 200) + + %ReferenceTree.visible = !finds.is_empty() + %Replace.disabled = finds.is_empty() + if finds.is_empty(): + %State.text = "Nothing found" + else: + %Replace.grab_focus() + + +## Highlights the found text in the result tree +## Inspired by how godot highlights stuff in its search results +func _custom_draw(item:TreeItem, rect:Rect2) -> void: + var text := item.get_text(2) + var find: Dictionary = item.get_metadata(0) + + var font: Font = %ReferenceTree.get_theme_font("font") + var font_size: int = %ReferenceTree.get_theme_font_size("font_size") + + var match_rect := rect + var beginning_index: int = find.match.get_start("replace")-find.line_start-1 + match_rect.position.x += font.get_string_size(text.left(beginning_index), HORIZONTAL_ALIGNMENT_LEFT, -1, font_size).x -1 + match_rect.size.x = font.get_string_size(find.info.what, HORIZONTAL_ALIGNMENT_LEFT, -1, font_size).x + 1 + match_rect.position.y += 1 * DialogicUtil.get_editor_scale() + match_rect.size.y -= 2 * DialogicUtil.get_editor_scale() + match_rect.position.x += 4 + + %ReferenceTree.draw_rect(match_rect, get_theme_color("highlight_color", "Editor"), true) + %ReferenceTree.draw_rect(match_rect, get_theme_color("box_selection_stroke_color", "Editor"), false) + + +func search_timelines(regexes:Array[Array]) -> Array[Dictionary]: + var finds: Array[Dictionary] = [] + + var timeline_paths := DialogicResourceUtil.list_resources_of_type('.dtl') + + var progress := 0 + var progress_max: float = len(timeline_paths)*len(regexes) + + for timeline_path:String in timeline_paths: + + var timeline_file := FileAccess.open(timeline_path, FileAccess.READ) + var timeline_text: String = timeline_file.get_as_text() + var timeline_event: PackedStringArray = timeline_text.split('\n') + timeline_file.close() + + for regex_info in regexes: + progress += 1 + progress_mutex.lock() + progress_percent = 1/progress_max*progress + progress_message = "Searching '"+timeline_path+"' for "+regex_info[1].what+' -> '+regex_info[1].forwhat + progress_mutex.unlock() + for i in regex_info[0].search_all(timeline_text): + if regex_info[1].has('character_regex'): + if regex_info[1].character_regex.search(get_line(timeline_text, i.get_start()+1)) == null: + continue + + var line_number := timeline_text.count('\n', 0, i.get_start()+1)+1 + var line := timeline_text.get_slice('\n', line_number-1) + finds.append({ + 'match':i, + 'timeline':timeline_path, + 'info': regex_info[1], + 'line_number': line_number, + 'line': line, + 'line_start': timeline_text.rfind('\n', i.get_start()) + }) + regex_info[1]['count'] += 1 + return finds + + +func _exit_tree() -> void: + # Shutting of + if finder_thread and finder_thread.is_alive(): + finder_thread.wait_to_finish() + + +func get_line(string:String, at_index:int) -> String: + return string.substr(max(string.rfind('\n', at_index), 0), string.find('\n', at_index)-string.rfind('\n', at_index)) + + +func update_count_coloring() -> void: + var item: TreeItem = %ChangeTree.get_root() + while item.get_next_visible(): + item = item.get_next_visible() + + if item.get_child_count(): + continue + if int(item.get_text(2)) > 0: + item.set_custom_bg_color(1, get_theme_color("warning_color", "Editor").darkened(0.8)) + item.set_custom_color(1, get_theme_color("warning_color", "Editor")) + item.set_custom_color(2, get_theme_color("warning_color", "Editor")) + else: + item.set_custom_color(2, get_theme_color("success_color", "Editor")) + item.set_custom_color(1, get_theme_color("readonly_font_color", "Editor")) + if item.get_button_count(1): + item.erase_button(1, 1) + item.add_button(1, get_theme_icon("Eraser", "EditorIcons"), -1, true, "This reference was not found anywhere and will be removed from this list.") + + +func _on_replace_pressed() -> void: + var to_be_replaced: Array[Dictionary]= [] + var item: TreeItem = %ReferenceTree.get_root() + var affected_timelines: Array[String]= [] + + while item.get_next_visible(): + item = item.get_next_visible() + + if item.get_child_count(): + continue + + if item.is_checked(0): + to_be_replaced.append(item.get_metadata(0)) + to_be_replaced[-1]['f_item'] = item + if !item.get_metadata(0).timeline in affected_timelines: + affected_timelines.append(item.get_metadata(0).timeline) + replace(affected_timelines, to_be_replaced) + + +func replace(timelines:Array[String], replacement_info:Array[Dictionary]) -> void: + var reopen_timeline := "" + var timeline_editor: DialogicEditor = find_parent('EditorView').editors_manager.editors['Timeline'].node + if timeline_editor.current_resource != null and timeline_editor.current_resource.resource_path in timelines: + reopen_timeline = timeline_editor.current_resource.resource_path + find_parent('EditorView').editors_manager.clear_editor(timeline_editor) + + replacement_info.sort_custom(func(a,b): return a.match.get_start() < b.match.get_start()) + + for timeline_path in timelines: + %State.text = "Loading '"+timeline_path+"'" + + var timeline_file := FileAccess.open(timeline_path, FileAccess.READ_WRITE) + var timeline_text: String = timeline_file.get_as_text() + var timeline_events := timeline_text.split('\n') + timeline_file.close() + + var idx := 1 + var offset_correction := 0 + for replacement in replacement_info: + if replacement.timeline != timeline_path: + continue + + %State.text = "Replacing in '"+timeline_path + "' ("+str(idx)+"/"+str(len(replacement_info))+")" + var group := 'replace' + if not 'replace' in replacement.match.names: + group = '' + + + timeline_text = timeline_text.substr(0, replacement.match.get_start(group) + offset_correction) + \ + replacement.info.regex_replacement + \ + timeline_text.substr(replacement.match.get_end(group) + offset_correction) + offset_correction += len(replacement.info.regex_replacement)-len(replacement.match.get_string(group)) + + replacement.info.count -= 1 + replacement.info.item.set_text(2, str(replacement.info.count)) + replacement.f_item.set_custom_bg_color(1, get_theme_color("success_color", "Editor").darkened(0.8)) + + timeline_file = FileAccess.open(timeline_path, FileAccess.WRITE) + timeline_file.store_string(timeline_text.strip_edges(false, true)) + timeline_file.close() + + if ResourceLoader.has_cached(timeline_path): + var tml := load(timeline_path) + tml.from_text(timeline_text) + + if !reopen_timeline.is_empty(): + find_parent('EditorView').editors_manager.edit_resource(load(reopen_timeline), false, true) + + update_count_coloring() + + %Replace.disabled = true + %CheckButton.disabled = false + %State.text = "Done Replacing" + + +func update_indicator() -> void: + %TabA.get_child(0).visible = !reference_changes.is_empty() + + +func close() -> void: + var item: TreeItem = %ChangeTree.get_root() + if item: + while item.get_next_visible(): + item = item.get_next_visible() + + if item.get_child_count(): + continue + if item.get_text(2) != "" and int(item.get_text(2)) == 0: + reference_changes.erase(item.get_metadata(0)) + for i in reference_changes: + i.item = null + DialogicUtil.set_editor_setting('reference_changes', reference_changes) + update_indicator() + find_parent("ReferenceManager").update_indicator() + + +func _on_add_button_pressed() -> void: + %ReplacementEditPanel._on_add_pressed() diff --git a/addons/dialogic/Editor/Common/broken_reference_manager.gd.uid b/addons/dialogic/Editor/Common/broken_reference_manager.gd.uid new file mode 100644 index 0000000..c18902b --- /dev/null +++ b/addons/dialogic/Editor/Common/broken_reference_manager.gd.uid @@ -0,0 +1 @@ +uid://nrhtjk2rgmgk diff --git a/addons/dialogic/Editor/Common/hint_tooltip_icon.gd b/addons/dialogic/Editor/Common/hint_tooltip_icon.gd new file mode 100644 index 0000000..702fe98 --- /dev/null +++ b/addons/dialogic/Editor/Common/hint_tooltip_icon.gd @@ -0,0 +1,12 @@ +@tool +extends TextureRect + +@export_multiline var hint_text := "" + +func _ready() -> void: + if owner and owner.get_parent() is SubViewport: + texture = null + return + texture = get_theme_icon("NodeInfo", "EditorIcons") + modulate = get_theme_color("contrast_color_1", "Editor") + tooltip_text = hint_text diff --git a/addons/dialogic/Editor/Common/hint_tooltip_icon.gd.uid b/addons/dialogic/Editor/Common/hint_tooltip_icon.gd.uid new file mode 100644 index 0000000..9aeec68 --- /dev/null +++ b/addons/dialogic/Editor/Common/hint_tooltip_icon.gd.uid @@ -0,0 +1 @@ +uid://b0vm440bs3ckd diff --git a/addons/dialogic/Editor/Common/hint_tooltip_icon.tscn b/addons/dialogic/Editor/Common/hint_tooltip_icon.tscn new file mode 100644 index 0000000..b12c058 --- /dev/null +++ b/addons/dialogic/Editor/Common/hint_tooltip_icon.tscn @@ -0,0 +1,21 @@ +[gd_scene load_steps=4 format=3 uid="uid://dbpkta2tjsqim"] + +[ext_resource type="Script" uid="uid://b0vm440bs3ckd" path="res://addons/dialogic/Editor/Common/hint_tooltip_icon.gd" id="1_x8t45"] + +[sub_resource type="Image" id="Image_c5s34"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_ydy7j"] +image = SubResource("Image_c5s34") + +[node name="HintTooltip" type="TextureRect"] +modulate = Color(0, 0, 0, 1) +texture = SubResource("ImageTexture_ydy7j") +stretch_mode = 3 +script = ExtResource("1_x8t45") diff --git a/addons/dialogic/Editor/Common/reference_manager.gd b/addons/dialogic/Editor/Common/reference_manager.gd new file mode 100644 index 0000000..915e594 --- /dev/null +++ b/addons/dialogic/Editor/Common/reference_manager.gd @@ -0,0 +1,38 @@ +@tool +extends PanelContainer + + +func _ready() -> void: + if get_parent() is SubViewport: + return + + add_theme_stylebox_override("panel", get_theme_stylebox("Background", "EditorStyles")) + $Tabs/Close.icon = get_theme_icon("Close", "EditorIcons") + + for tab in $Tabs/Tabs.get_children(): + tab.add_theme_color_override("font_selected_color", get_theme_color("accent_color", "Editor")) + tab.add_theme_font_override("font", get_theme_font("main", "EditorFonts")) + tab.toggled.connect(tab_changed.bind(tab.get_index()+1)) + + +func tab_changed(enabled:bool, index:int) -> void: + for child in $Tabs.get_children(): + if child.get_index() == 0 or child.get_index() == index or child is Button: + child.show() + if child.get_index() == index: + child.open() + else: + if child.visible: + child.close() + child.hide() + for child in $Tabs/Tabs.get_children(): + child.set_pressed_no_signal(index-1 == child.get_index()) + + +func open() -> void: + show() + $Tabs/BrokenReferences.update_indicator() + + +func _on_close_pressed() -> void: + get_parent()._on_close_requested() diff --git a/addons/dialogic/Editor/Common/reference_manager.gd.uid b/addons/dialogic/Editor/Common/reference_manager.gd.uid new file mode 100644 index 0000000..566b3ec --- /dev/null +++ b/addons/dialogic/Editor/Common/reference_manager.gd.uid @@ -0,0 +1 @@ +uid://dugy11ebty3yq diff --git a/addons/dialogic/Editor/Common/reference_manager.tscn b/addons/dialogic/Editor/Common/reference_manager.tscn new file mode 100644 index 0000000..3154a38 --- /dev/null +++ b/addons/dialogic/Editor/Common/reference_manager.tscn @@ -0,0 +1,333 @@ +[gd_scene load_steps=14 format=3 uid="uid://c7lmt5cp7bxcm"] + +[ext_resource type="Script" uid="uid://dugy11ebty3yq" path="res://addons/dialogic/Editor/Common/reference_manager.gd" id="1_3t531"] +[ext_resource type="Script" uid="uid://nrhtjk2rgmgk" path="res://addons/dialogic/Editor/Common/broken_reference_manager.gd" id="1_agmg4"] +[ext_resource type="Script" uid="uid://dca6a1a74jfur" path="res://addons/dialogic/Editor/Common/ReferenceManager_AddReplacementPanel.gd" id="2_tt4jd"] +[ext_resource type="PackedScene" uid="uid://dpwhshre1n4t6" path="res://addons/dialogic/Editor/Events/Fields/field_options_dynamic.tscn" id="3_yomsc"] +[ext_resource type="PackedScene" uid="uid://dbpkta2tjsqim" path="res://addons/dialogic/Editor/Common/hint_tooltip_icon.tscn" id="5_sdymt"] +[ext_resource type="Script" uid="uid://bvbsqai5sh0na" path="res://addons/dialogic/Editor/Common/unique_identifiers_manager.gd" id="5_wnvbq"] + +[sub_resource type="ButtonGroup" id="ButtonGroup_l6uiy"] + +[sub_resource type="Image" id="Image_pnutm"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_a0gfq"] +image = SubResource("Image_pnutm") + +[sub_resource type="Image" id="Image_asrh0"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_2hc6a"] +image = SubResource("Image_asrh0") + +[sub_resource type="Image" id="Image_xvpjt"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_lce2m"] +image = SubResource("Image_xvpjt") + +[node name="Manager" type="PanelContainer"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_3t531") + +[node name="Tabs" type="VBoxContainer" parent="."] +layout_mode = 2 + +[node name="Tabs" type="HBoxContainer" parent="Tabs"] +layout_mode = 2 +alignment = 1 + +[node name="TabA" type="Button" parent="Tabs/Tabs"] +unique_name_in_owner = true +layout_mode = 2 +toggle_mode = true +button_pressed = true +text = "Broken References" +flat = true + +[node name="TabB" type="Button" parent="Tabs/Tabs"] +unique_name_in_owner = true +layout_mode = 2 +toggle_mode = true +button_group = SubResource("ButtonGroup_l6uiy") +text = "Unique Identifiers" +flat = true + +[node name="BrokenReferences" type="VSplitContainer" parent="Tabs"] +layout_mode = 2 +size_flags_vertical = 3 +script = ExtResource("1_agmg4") + +[node name="ChangesList" type="PanelContainer" parent="Tabs/BrokenReferences"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 3 +theme_type_variation = &"DialogicPanelA" + +[node name="VBox" type="VBoxContainer" parent="Tabs/BrokenReferences/ChangesList"] +layout_mode = 2 + +[node name="HBoxContainer" type="HBoxContainer" parent="Tabs/BrokenReferences/ChangesList/VBox"] +layout_mode = 2 + +[node name="SectionTitle" type="Label" parent="Tabs/BrokenReferences/ChangesList/VBox/HBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +theme_override_font_sizes/font_size = 16 +text = "Recent renames" + +[node name="AddButton" type="Button" parent="Tabs/BrokenReferences/ChangesList/VBox/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 2 +tooltip_text = "Add custom rename" +icon = SubResource("ImageTexture_a0gfq") + +[node name="ReplacementEditPanel" type="PanelContainer" parent="Tabs/BrokenReferences/ChangesList/VBox"] +unique_name_in_owner = true +visible = false +layout_mode = 2 +script = ExtResource("2_tt4jd") + +[node name="VBox" type="HFlowContainer" parent="Tabs/BrokenReferences/ChangesList/VBox/ReplacementEditPanel"] +layout_mode = 2 + +[node name="HBoxContainer3" type="HBoxContainer" parent="Tabs/BrokenReferences/ChangesList/VBox/ReplacementEditPanel/VBox"] +layout_mode = 2 + +[node name="Type" type="OptionButton" parent="Tabs/BrokenReferences/ChangesList/VBox/ReplacementEditPanel/VBox/HBoxContainer3"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "This decides the regexes for searching. Pure text allows you to enter your own regex into \"Old\". " +selected = 0 +item_count = 5 +popup/item_0/text = "Pure Text" +popup/item_1/text = "Variable" +popup/item_1/id = 1 +popup/item_2/text = "Portrait" +popup/item_2/id = 2 +popup/item_3/text = "Character (Ref)" +popup/item_3/id = 3 +popup/item_4/text = "Timeline (Ref)" +popup/item_4/id = 4 + +[node name="HBoxContainer" type="HBoxContainer" parent="Tabs/BrokenReferences/ChangesList/VBox/ReplacementEditPanel/VBox"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="Old" type="LineEdit" parent="Tabs/BrokenReferences/ChangesList/VBox/ReplacementEditPanel/VBox/HBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +placeholder_text = "Old" + +[node name="Label2" type="Label" parent="Tabs/BrokenReferences/ChangesList/VBox/ReplacementEditPanel/VBox/HBoxContainer"] +layout_mode = 2 +text = "->" + +[node name="New" type="LineEdit" parent="Tabs/BrokenReferences/ChangesList/VBox/ReplacementEditPanel/VBox/HBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +placeholder_text = "New" + +[node name="PureTextFlags" type="HBoxContainer" parent="Tabs/BrokenReferences/ChangesList/VBox/ReplacementEditPanel/VBox"] +unique_name_in_owner = true +layout_mode = 2 +alignment = 2 + +[node name="MatchCase" type="Button" parent="Tabs/BrokenReferences/ChangesList/VBox/ReplacementEditPanel/VBox/PureTextFlags"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Match Case" +toggle_mode = true +icon = SubResource("ImageTexture_2hc6a") + +[node name="WholeWords" type="Button" parent="Tabs/BrokenReferences/ChangesList/VBox/ReplacementEditPanel/VBox/PureTextFlags"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Whole World" +toggle_mode = true +icon = SubResource("ImageTexture_2hc6a") + +[node name="HBoxContainer4" type="HBoxContainer" parent="Tabs/BrokenReferences/ChangesList/VBox/ReplacementEditPanel/VBox"] +layout_mode = 2 + +[node name="Where" type="OptionButton" parent="Tabs/BrokenReferences/ChangesList/VBox/ReplacementEditPanel/VBox/HBoxContainer4"] +unique_name_in_owner = true +layout_mode = 2 +selected = 0 +fit_to_longest_item = false +item_count = 3 +popup/item_0/text = "Everywhere" +popup/item_1/text = "Only for Character" +popup/item_1/id = 1 +popup/item_2/text = "Texts only" +popup/item_2/id = 2 + +[node name="Character" parent="Tabs/BrokenReferences/ChangesList/VBox/ReplacementEditPanel/VBox/HBoxContainer4" instance=ExtResource("3_yomsc")] +unique_name_in_owner = true +layout_mode = 2 + +[node name="AddButton" type="Button" parent="Tabs/BrokenReferences/ChangesList/VBox/ReplacementEditPanel/VBox"] +unique_name_in_owner = true +layout_mode = 2 +text = "Add/Save" + +[node name="ChangeTree" type="Tree" parent="Tabs/BrokenReferences/ChangesList/VBox"] +unique_name_in_owner = true +custom_minimum_size = Vector2(0, 50) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_override_constants/draw_relationship_lines = 1 +columns = 3 +hide_root = true + +[node name="CheckButton" type="Button" parent="Tabs/BrokenReferences/ChangesList/VBox"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 4 +tooltip_text = "Search timelines for occurences of these renames" +text = "Check Selected" +icon = SubResource("ImageTexture_lce2m") + +[node name="ReplacementSection" type="PanelContainer" parent="Tabs/BrokenReferences"] +unique_name_in_owner = true +layout_mode = 2 +theme_type_variation = &"DialogicPanelA" + +[node name="FindList" type="VBoxContainer" parent="Tabs/BrokenReferences/ReplacementSection"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 3 + +[node name="HBox" type="HBoxContainer" parent="Tabs/BrokenReferences/ReplacementSection/FindList"] +layout_mode = 2 + +[node name="SectionTitle2" type="Label" parent="Tabs/BrokenReferences/ReplacementSection/FindList/HBox"] +unique_name_in_owner = true +layout_mode = 2 +theme_override_font_sizes/font_size = 16 +text = "Found references" + +[node name="State" type="Label" parent="Tabs/BrokenReferences/ReplacementSection/FindList/HBox"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 8 +theme_override_colors/font_color = Color(0, 0, 0, 1) +text = "State" + +[node name="ReferenceTree" type="Tree" parent="Tabs/BrokenReferences/ReplacementSection/FindList"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 3 +theme_override_constants/draw_relationship_lines = 1 +columns = 3 +hide_root = true + +[node name="Progress" type="ProgressBar" parent="Tabs/BrokenReferences/ReplacementSection/FindList"] +unique_name_in_owner = true +layout_mode = 2 +max_value = 1.0 + +[node name="HBoxContainer" type="HBoxContainer" parent="Tabs/BrokenReferences/ReplacementSection/FindList"] +layout_mode = 2 +alignment = 1 + +[node name="Replace" type="Button" parent="Tabs/BrokenReferences/ReplacementSection/FindList/HBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 4 +tooltip_text = "Replace all selected findings (Careful, no undo!)" +text = "Replace Selected" +icon = SubResource("ImageTexture_lce2m") + +[node name="HintTooltip" parent="Tabs/BrokenReferences/ReplacementSection/FindList/HBoxContainer" instance=ExtResource("5_sdymt")] +layout_mode = 2 +texture = null +hint_text = "Note that searching and replacing is only implemented for timelines. +E.g. variables used in character display names or glossary entries will have to be replaced manually." + +[node name="UniqueIdentifiers" type="PanelContainer" parent="Tabs"] +visible = false +layout_mode = 2 +size_flags_vertical = 3 +theme_type_variation = &"DialogicPanelA" +script = ExtResource("5_wnvbq") + +[node name="VBox" type="VBoxContainer" parent="Tabs/UniqueIdentifiers"] +layout_mode = 2 + +[node name="Tools" type="HBoxContainer" parent="Tabs/UniqueIdentifiers/VBox"] +layout_mode = 2 +alignment = 1 + +[node name="Search" type="LineEdit" parent="Tabs/UniqueIdentifiers/VBox/Tools"] +unique_name_in_owner = true +custom_minimum_size = Vector2(400, 0) +layout_mode = 2 +placeholder_text = "Search" + +[node name="IdentifierTable" type="Tree" parent="Tabs/UniqueIdentifiers/VBox"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 3 +columns = 2 +column_titles_visible = true +hide_root = true + +[node name="RenameNotification" type="Label" parent="Tabs/UniqueIdentifiers/VBox"] +unique_name_in_owner = true +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +text = "You've renamed some identifier(s)! Use the \"Broken References\" tab to check if you have used this identifier (and fix it if so)." +autowrap_mode = 3 + +[node name="Close" type="Button" parent="Tabs"] +layout_mode = 2 +size_flags_horizontal = 4 +text = "Close" + +[node name="HelpButton" type="LinkButton" parent="."] +layout_mode = 2 +size_flags_horizontal = 8 +size_flags_vertical = 0 +text = "Documentation" +uri = "https://docs.dialogic.pro/reference-manager.html" + +[connection signal="pressed" from="Tabs/BrokenReferences/ChangesList/VBox/HBoxContainer/AddButton" to="Tabs/BrokenReferences" method="_on_add_button_pressed"] +[connection signal="item_selected" from="Tabs/BrokenReferences/ChangesList/VBox/ReplacementEditPanel/VBox/HBoxContainer3/Type" to="Tabs/BrokenReferences/ChangesList/VBox/ReplacementEditPanel" method="_on_type_item_selected"] +[connection signal="item_selected" from="Tabs/BrokenReferences/ChangesList/VBox/ReplacementEditPanel/VBox/HBoxContainer4/Where" to="Tabs/BrokenReferences/ChangesList/VBox/ReplacementEditPanel" method="_on_where_item_selected"] +[connection signal="pressed" from="Tabs/BrokenReferences/ChangesList/VBox/ReplacementEditPanel/VBox/AddButton" to="Tabs/BrokenReferences/ChangesList/VBox/ReplacementEditPanel" method="save"] +[connection signal="button_clicked" from="Tabs/BrokenReferences/ChangesList/VBox/ChangeTree" to="Tabs/BrokenReferences" method="_on_change_tree_button_clicked"] +[connection signal="item_edited" from="Tabs/BrokenReferences/ChangesList/VBox/ChangeTree" to="Tabs/BrokenReferences" method="_on_change_tree_item_edited"] +[connection signal="pressed" from="Tabs/BrokenReferences/ChangesList/VBox/CheckButton" to="Tabs/BrokenReferences" method="_on_check_button_pressed"] +[connection signal="pressed" from="Tabs/BrokenReferences/ReplacementSection/FindList/HBoxContainer/Replace" to="Tabs/BrokenReferences" method="_on_replace_pressed"] +[connection signal="text_changed" from="Tabs/UniqueIdentifiers/VBox/Tools/Search" to="Tabs/UniqueIdentifiers" method="_on_search_text_changed"] +[connection signal="button_clicked" from="Tabs/UniqueIdentifiers/VBox/IdentifierTable" to="Tabs/UniqueIdentifiers" method="_on_identifier_table_button_clicked"] +[connection signal="item_edited" from="Tabs/UniqueIdentifiers/VBox/IdentifierTable" to="Tabs/UniqueIdentifiers" method="_on_identifier_table_item_edited"] +[connection signal="pressed" from="Tabs/Close" to="." method="_on_close_pressed"] diff --git a/addons/dialogic/Editor/Common/reference_manager_window.gd b/addons/dialogic/Editor/Common/reference_manager_window.gd new file mode 100644 index 0000000..c8d8581 --- /dev/null +++ b/addons/dialogic/Editor/Common/reference_manager_window.gd @@ -0,0 +1,196 @@ +@tool +extends Window + +## This window manages communication with the replacement manager it contains. +## Other scripts can call the add_ref_change() method to register changes directly +## or use the helpers add_variable_ref_change() and add_portrait_ref_change() + +@onready var editors_manager := get_node("../EditorsManager") +@onready var broken_manager := get_node("Manager/Tabs/BrokenReferences") +enum Where {EVERYWHERE, BY_CHARACTER, TEXTS_ONLY} +enum Types {TEXT, VARIABLE, PORTRAIT, CHARACTER_NAME, TIMELINE_NAME} + +var icon_button: Button = null + + +func _ready() -> void: + if owner.get_parent() is SubViewport: + return + + $Manager.theme = owner.get_theme() + + icon_button = editors_manager.add_icon_button(get_theme_icon("Unlinked", "EditorIcons"), 'Reference Manager') + icon_button.pressed.connect(open) + + var dot := Sprite2D.new() + dot.texture = get_theme_icon("GuiGraphNodePort", "EditorIcons") + dot.scale = Vector2(0.8, 0.8) + dot.z_index = 10 + dot.position = Vector2(icon_button.size.x*0.8, icon_button.size.x*0.2) + dot.modulate = get_theme_color("warning_color", "Editor").lightened(0.5) + + icon_button.add_child(dot) + + var old_changes: Array = DialogicUtil.get_editor_setting('reference_changes', []) + if !old_changes.is_empty(): + broken_manager.reference_changes = old_changes + + update_indicator() + + hide() + + get_parent().plugin_reference.get_editor_interface().get_file_system_dock().files_moved.connect(_on_file_moved) + get_parent().plugin_reference.get_editor_interface().get_file_system_dock().file_removed.connect(_on_file_removed) + get_parent().get_node('ResourceRenameWarning').confirmed.connect(open) + + +func add_ref_change(old_name:String, new_name:String, type:Types, where:=Where.TEXTS_ONLY, character_names:=[], + whole_words:=false, case_sensitive:=false, previous:Dictionary = {}) -> void: + var regexes := [] + var category_name := "" + match type: + Types.TEXT: + category_name = "Texts" + if '' in old_name: + regexes = [old_name] + else: + regexes = [ + r'(?%s)' % old_name.replace('/', '\\/') + ] + if !case_sensitive: + regexes[0] = '(?i)'+regexes[0] + if whole_words: + regexes = ['\\b'+regexes[0]+'\\b'] + + Types.VARIABLE: + regexes = [ + r'{(?\s*%s\s*)}' % old_name.replace("/", "\\/"), + r'var\s*=\s*"(?\s*%s\s*)"' % old_name.replace("/", "\\/") + ] + category_name = "Variables" + + Types.PORTRAIT: + regexes = [ + r'(?m)^[^:(\n]*\((?%s)\)' % old_name.replace('/', '\\/'), + r'\[\s*portrait\s*=(?\s*%s\s*)\]' % old_name.replace('/', '\\/') + ] + category_name = "Portraits by "+character_names[0] + + Types.CHARACTER_NAME: + # for reference: ((join|leave|update) )?(?NAME)(?!\B)(?(1)|(?!([^:\n]|\\:)*(\n|$))) + regexes = [ + r'((join|leave|update) )?(?%s)(?!\B)(?(1)|(?!([^:\n]|\\:)*(\n|$)))' % old_name + ] + category_name = "Renamed Character Files" + + Types.TIMELINE_NAME: + regexes = [ + r'timeline ?= ?" ?(?%s) ?"' % old_name + ] + category_name = "Renamed Timeline Files" + + if where != Where.BY_CHARACTER: + character_names = [] + + # previous is only given when an existing item is edited + # in that case the old one is removed first + var idx := len(broken_manager.reference_changes) + if previous in broken_manager.reference_changes: + idx = broken_manager.reference_changes.find(previous) + broken_manager.reference_changes.erase(previous) + + if _check_for_ref_change_cycle(old_name, new_name, category_name): + update_indicator() + return + + broken_manager.reference_changes.insert(idx, + {'what':old_name, + 'forwhat':new_name, + 'regex': regexes, + 'regex_replacement':new_name, + 'category':category_name, + 'character_names':character_names, + 'texts_only':where == Where.TEXTS_ONLY, + 'type':type, + 'case_sensitive':case_sensitive, + 'whole_words':whole_words, + }) + + update_indicator() + + if visible: + $Manager.open() + broken_manager.open() + + +## Checks for reference cycles or chains. +## E.g. if you first rename a portrait from "happy" to "happy1" and then to "Happy/happy1" +## This will make sure only a change "happy" -> "Happy/happy1" is remembered +## This is very important for correct replacement +func _check_for_ref_change_cycle(old_name:String, new_name:String, category:String) -> bool: + for ref in broken_manager.reference_changes: + if ref['forwhat'] == old_name and ref['category'] == category: + if new_name == ref['what']: + broken_manager.reference_changes.erase(ref) + else: + broken_manager.reference_changes[broken_manager.reference_changes.find(ref)]['forwhat'] = new_name + broken_manager.reference_changes[broken_manager.reference_changes.find(ref)]['regex_replacement'] = new_name + return true + return false + + +## Helper for adding variable ref changes +func add_variable_ref_change(old_name:String, new_name:String) -> void: + add_ref_change(old_name, new_name, Types.VARIABLE, Where.EVERYWHERE) + + +## Helper for adding portrait ref changes +func add_portrait_ref_change(old_name:String, new_name:String, character_names:PackedStringArray) -> void: + add_ref_change(old_name, new_name, Types.PORTRAIT, Where.BY_CHARACTER, character_names) + + +## Helper for adding character name ref changes +func add_character_name_ref_change(old_name:String, new_name:String) -> void: + add_ref_change(old_name, new_name, Types.CHARACTER_NAME, Where.EVERYWHERE) + + +## Helper for adding timeline name ref changes +func add_timeline_name_ref_change(old_name:String, new_name:String) -> void: + add_ref_change(old_name, new_name, Types.TIMELINE_NAME, Where.EVERYWHERE) + + +func open() -> void: + DialogicResourceUtil.update_directory('dch') + DialogicResourceUtil.update_directory('dtl') + popup_centered_ratio(0.5) + grab_focus() + + +func _on_close_requested() -> void: + hide() + broken_manager.close() + + +func get_change_count() -> int: + return len(broken_manager.reference_changes) + + +func update_indicator() -> void: + icon_button.get_child(0).visible = !broken_manager.reference_changes.is_empty() + + +## FILE MANAGEMENT: +func _on_file_moved(old_file:String, new_file:String) -> void: + if old_file.ends_with('.dch') and new_file.ends_with('.dch'): + DialogicResourceUtil.change_resource_path(old_file, new_file) + if old_file.get_file() != new_file.get_file(): + get_parent().get_node('ResourceRenameWarning').popup_centered() + elif old_file.ends_with('.dtl') and new_file.ends_with('.dtl'): + DialogicResourceUtil.change_resource_path(old_file, new_file) + if old_file.get_file() != new_file.get_file(): + get_parent().get_node('ResourceRenameWarning').popup_centered() + + +func _on_file_removed(file:String) -> void: + if file.get_extension() in ['dch', 'dtl']: + DialogicResourceUtil.remove_resource(file) diff --git a/addons/dialogic/Editor/Common/reference_manager_window.gd.uid b/addons/dialogic/Editor/Common/reference_manager_window.gd.uid new file mode 100644 index 0000000..90b9f2f --- /dev/null +++ b/addons/dialogic/Editor/Common/reference_manager_window.gd.uid @@ -0,0 +1 @@ +uid://bxr2qomm7wm85 diff --git a/addons/dialogic/Editor/Common/side_bar.tscn b/addons/dialogic/Editor/Common/side_bar.tscn new file mode 100644 index 0000000..1950d70 --- /dev/null +++ b/addons/dialogic/Editor/Common/side_bar.tscn @@ -0,0 +1,211 @@ +[gd_scene load_steps=7 format=3 uid="uid://cwe3r2tbh2og1"] + +[ext_resource type="Script" uid="uid://myogqmakusx3" path="res://addons/dialogic/Editor/Common/sidebar.gd" id="1_jnq65"] +[ext_resource type="Texture2D" uid="uid://bff65e82555qr" path="res://addons/dialogic/Editor/Images/Pieces/close-icon.svg" id="2_54pks"] +[ext_resource type="Texture2D" uid="uid://dx3o2ild56i76" path="res://addons/dialogic/Editor/Images/Pieces/closed-icon.svg" id="2_ilyps"] + +[sub_resource type="Theme" id="Theme_pn0f4"] +VBoxContainer/constants/separation = 4 + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_gxwm6"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_n8rql"] + +[node name="SideBar" type="VSplitContainer"] +custom_minimum_size = Vector2(100, 130) +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme = SubResource("Theme_pn0f4") +split_offset = 100 +script = ExtResource("1_jnq65") + +[node name="VBoxHidden" type="VBoxContainer" parent="."] +unique_name_in_owner = true +visible = false +layout_mode = 2 + +[node name="OpenButton" type="Button" parent="VBoxHidden"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 0 +size_flags_vertical = 3 +tooltip_text = "Show Sidebar" +theme_override_constants/icon_max_width = 20 +icon = ExtResource("2_ilyps") +flat = true +icon_alignment = 1 + +[node name="VBoxPrimary" type="VBoxContainer" parent="."] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 3 + +[node name="Margin" type="MarginContainer" parent="VBoxPrimary"] +layout_mode = 2 +size_flags_vertical = 3 + +[node name="MainVSplit" type="VSplitContainer" parent="VBoxPrimary/Margin"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="VBox" type="VBoxContainer" parent="VBoxPrimary/Margin/MainVSplit"] +layout_mode = 2 +size_flags_vertical = 3 + +[node name="Logo" type="TextureRect" parent="VBoxPrimary/Margin/MainVSplit/VBox"] +unique_name_in_owner = true +modulate = Color(1, 1, 1, 0.623529) +texture_filter = 6 +custom_minimum_size = Vector2(0, 25) +layout_mode = 2 +expand_mode = 3 +stretch_mode = 4 + +[node name="HBox" type="HBoxContainer" parent="VBoxPrimary/Margin/MainVSplit/VBox"] +layout_mode = 2 + +[node name="CurrentResource" type="LineEdit" parent="VBoxPrimary/Margin/MainVSplit/VBox/HBox"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +text = "No resource" +alignment = 1 +editable = false + +[node name="CloseButton" type="Button" parent="VBoxPrimary/Margin/MainVSplit/VBox/HBox"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Hide Sidebar" +text = " " +icon = ExtResource("2_54pks") +flat = true +icon_alignment = 1 +expand_icon = true + +[node name="HBoxSearchSort" type="HBoxContainer" parent="VBoxPrimary/Margin/MainVSplit/VBox"] +layout_mode = 2 + +[node name="Search" type="LineEdit" parent="VBoxPrimary/Margin/MainVSplit/VBox/HBoxSearchSort"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +tooltip_text = "Filter Resources" +placeholder_text = "Filter Resources" +caret_blink = true +caret_blink_interval = 0.5 + +[node name="Options" type="Button" parent="VBoxPrimary/Margin/MainVSplit/VBox/HBoxSearchSort"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="OptionsPopup" type="Popup" parent="VBoxPrimary/Margin/MainVSplit/VBox/HBoxSearchSort/Options"] +unique_name_in_owner = true +transparent_bg = true +position = Vector2i(890, 65) +size = Vector2i(165, 101) +visible = true +transparent = true + +[node name="OptionsPanel" type="PanelContainer" parent="VBoxPrimary/Margin/MainVSplit/VBox/HBoxSearchSort/Options/OptionsPopup"] +unique_name_in_owner = true +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="VBox" type="VBoxContainer" parent="VBoxPrimary/Margin/MainVSplit/VBox/HBoxSearchSort/Options/OptionsPopup/OptionsPanel"] +layout_mode = 2 + +[node name="GroupingOptions" type="OptionButton" parent="VBoxPrimary/Margin/MainVSplit/VBox/HBoxSearchSort/Options/OptionsPopup/OptionsPanel/VBox"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Grouping +- None: No Grouping, sorted alphabetically +- Type: Group by type (Characters/Timeilnes) +- Folder: Group based on the parent folder name. +- Path: Group based on folders." +text_overrun_behavior = 1 +clip_text = true +selected = 0 +item_count = 4 +popup/item_0/text = "No Grouping" +popup/item_1/text = "Type Grouping" +popup/item_1/id = 1 +popup/item_2/text = "Folder Grouping" +popup/item_2/id = 2 +popup/item_3/text = "Path Grouping" +popup/item_3/id = 3 + +[node name="FolderColors" type="CheckBox" parent="VBoxPrimary/Margin/MainVSplit/VBox/HBoxSearchSort/Options/OptionsPopup/OptionsPanel/VBox"] +unique_name_in_owner = true +layout_mode = 2 +text = "Use Folder Colors" + +[node name="TrimFolderPaths" type="CheckBox" parent="VBoxPrimary/Margin/MainVSplit/VBox/HBoxSearchSort/Options/OptionsPopup/OptionsPanel/VBox"] +unique_name_in_owner = true +layout_mode = 2 +text = "Trim Folder Paths" + +[node name="ResourceTree" type="Tree" parent="VBoxPrimary/Margin/MainVSplit/VBox"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 3 +allow_rmb_select = true +hide_root = true +scroll_horizontal_enabled = false + +[node name="HBoxContainer" type="HBoxContainer" parent="VBoxPrimary/Margin/MainVSplit/VBox"] +visible = false +layout_mode = 2 + +[node name="Label" type="Label" parent="VBoxPrimary/Margin/MainVSplit/VBox/HBoxContainer"] +layout_mode = 2 +size_flags_vertical = 1 +text = "Sort Order" +vertical_alignment = 1 + +[node name="SortOption" type="OptionButton" parent="VBoxPrimary/Margin/MainVSplit/VBox/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +item_count = 1 +popup/item_0/text = "Alphabetical (All)" + +[node name="ContentListSection" type="VBoxContainer" parent="VBoxPrimary/Margin/MainVSplit"] +unique_name_in_owner = true +custom_minimum_size = Vector2(0, 15) +layout_mode = 2 +size_flags_vertical = 3 + +[node name="ContentList" type="ItemList" parent="VBoxPrimary/Margin/MainVSplit/ContentListSection"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 3 +tooltip_text = "Label events in your timeline will appear here, allowing you to jump to them." +theme_override_styles/selected = SubResource("StyleBoxEmpty_gxwm6") +theme_override_styles/selected_focus = SubResource("StyleBoxEmpty_n8rql") +allow_reselect = true +same_column_width = true + +[node name="CurrentVersion" type="Button" parent="VBoxPrimary"] +unique_name_in_owner = true +layout_mode = 2 +text = "Some Version" +flat = true +clip_text = true + +[node name="RightClickMenu" type="PopupMenu" parent="."] +unique_name_in_owner = true +size = Vector2i(164, 100) + +[connection signal="dragged" from="VBoxPrimary/Margin/MainVSplit" to="." method="_on_main_v_split_dragged"] +[connection signal="gui_input" from="VBoxPrimary/Margin/MainVSplit/VBox/Logo" to="." method="_on_logo_gui_input"] +[connection signal="text_changed" from="VBoxPrimary/Margin/MainVSplit/VBox/HBoxSearchSort/Search" to="." method="_on_search_text_changed"] +[connection signal="text_submitted" from="VBoxPrimary/Margin/MainVSplit/VBox/HBoxSearchSort/Search" to="." method="_on_search_text_submitted"] +[connection signal="pressed" from="VBoxPrimary/Margin/MainVSplit/VBox/HBoxSearchSort/Options" to="." method="_on_options_pressed"] +[connection signal="toggled" from="VBoxPrimary/Margin/MainVSplit/VBox/HBoxSearchSort/Options/OptionsPopup/OptionsPanel/VBox/FolderColors" to="." method="_on_folder_colors_toggled"] +[connection signal="toggled" from="VBoxPrimary/Margin/MainVSplit/VBox/HBoxSearchSort/Options/OptionsPopup/OptionsPanel/VBox/TrimFolderPaths" to="." method="_on_trim_folder_paths_toggled"] +[connection signal="id_pressed" from="RightClickMenu" to="." method="_on_right_click_menu_id_pressed"] diff --git a/addons/dialogic/Editor/Common/sidebar.gd b/addons/dialogic/Editor/Common/sidebar.gd new file mode 100644 index 0000000..dd328f5 --- /dev/null +++ b/addons/dialogic/Editor/Common/sidebar.gd @@ -0,0 +1,529 @@ +@tool +class_name DialogicSidebar extends Control + +## Script that handles the editor sidebar. + +signal content_item_activated(item_name) +signal show_sidebar(show: bool) + +# References +@onready var editors_manager = get_parent().get_parent() +@onready var resource_tree: Tree = %ResourceTree + +var current_resource_list: Array = [] + +enum GroupMode { + NONE, + TYPE, + FOLDER, + PATH, +} +var group_mode: GroupMode = GroupMode.TYPE + + +func _ready() -> void: + if owner != null and owner.get_parent() is SubViewport: + return + if editors_manager is SubViewportContainer: + return + + ## CONNECTIONS + editors_manager.resource_opened.connect(_on_editors_resource_opened) + editors_manager.editor_changed.connect(_on_editors_editor_changed) + + resource_tree.item_activated.connect(_on_resources_tree_item_activated) + resource_tree.item_mouse_selected.connect(_on_resources_tree_item_clicked) + resource_tree.item_collapsed.connect(_on_resources_tree_item_collapsed) + + %ContentList.item_selected.connect( + func(idx: int): content_item_activated.emit(%ContentList.get_item_text(idx)) + ) + + %OpenButton.pressed.connect(_show_sidebar) + %CloseButton.pressed.connect(_hide_sidebar) + + var editor_scale := DialogicUtil.get_editor_scale() + + ## ICONS + %Logo.texture = load("res://addons/dialogic/Editor/Images/dialogic-logo.svg") + %Logo.custom_minimum_size.y = 30 * editor_scale + %Search.right_icon = get_theme_icon("Search", "EditorIcons") + %Options.icon = get_theme_icon("GuiTabMenuHl", "EditorIcons") + %OptionsPanel.add_theme_stylebox_override("panel", get_theme_stylebox("PanelForeground", "EditorStyles")) + %OptionsPopup.hide() + + %ContentList.add_theme_color_override( + "font_hovered_color", get_theme_color("warning_color", "Editor") + ) + %ContentList.add_theme_color_override( + "font_selected_color", get_theme_color("property_color_z", "Editor") + ) + + ## RIGHT CLICK MENU + %RightClickMenu.clear() + %RightClickMenu.add_icon_item(get_theme_icon("Remove", "EditorIcons"), "Remove From List", 1) + %RightClickMenu.add_separator() + %RightClickMenu.add_icon_item(get_theme_icon("ActionCopy", "EditorIcons"), "Copy Identifier", 4) + %RightClickMenu.add_separator() + %RightClickMenu.add_icon_item( + get_theme_icon("Filesystem", "EditorIcons"), "Show in FileSystem", 2 + ) + %RightClickMenu.add_icon_item( + get_theme_icon("ExternalLink", "EditorIcons"), "Open in External Program", 3 + ) + + ## SORT MENU + %GroupingOptions.set_item_icon(0, get_theme_icon("AnimationTrackGroup", "EditorIcons")) + %GroupingOptions.set_item_icon(1, get_theme_icon("Folder", "EditorIcons")) + %GroupingOptions.set_item_icon(2, get_theme_icon("FolderBrowse", "EditorIcons")) + %GroupingOptions.set_item_icon(3, get_theme_icon("AnimationTrackList", "EditorIcons")) + %GroupingOptions.item_selected.connect(_on_grouping_changed) + + await get_tree().process_frame + if DialogicUtil.get_editor_setting("sidebar_collapsed", false): + _hide_sidebar() + + %MainVSplit.split_offset = DialogicUtil.get_editor_setting("sidebar_v_split", 0) + group_mode = DialogicUtil.get_editor_setting("sidebar_group_mode", 0) + %GroupingOptions.select(%GroupingOptions.get_item_index(group_mode)) + + %FolderColors.button_pressed = DialogicUtil.get_editor_setting("sidebar_use_folder_colors", true) + %TrimFolderPaths.button_pressed = DialogicUtil.get_editor_setting("sidebar_trim_folder_paths", true) + + update_resource_list() + + +func set_unsaved_indicator(saved: bool = true) -> void: + if saved and %CurrentResource.text.ends_with("(*)"): + %CurrentResource.text = %CurrentResource.text.trim_suffix("(*)") + if not saved and not %CurrentResource.text.ends_with("(*)"): + %CurrentResource.text = %CurrentResource.text + "(*)" + + +func _on_logo_gui_input(event: InputEvent) -> void: + if event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_LEFT and event.pressed: + editors_manager.open_editor(editors_manager.editors["HomePage"].node) + + +#region SHOW/HIDE SIDEBAR +################################################################################ + +func _show_sidebar() -> void: + %VBoxPrimary.show() + %VBoxHidden.hide() + DialogicUtil.set_editor_setting("sidebar_collapsed", false) + show_sidebar.emit(true) + + +func _hide_sidebar() -> void: + %VBoxPrimary.hide() + %VBoxHidden.show() + DialogicUtil.set_editor_setting("sidebar_collapsed", true) + show_sidebar.emit(false) + +#endregion + + +################################################################################ +## RESOURCE LIST +################################################################################ + + +func _on_editors_resource_opened(_resource: Resource) -> void: + update_resource_list() + + +func _on_editors_editor_changed(_previous: DialogicEditor, current: DialogicEditor) -> void: + %ContentListSection.visible = current.current_resource is DialogicTimeline + update_resource_list() + + +## Cleans resources that have been deleted from the resource list +func clean_resource_list(resources_list: Array = []) -> PackedStringArray: + return PackedStringArray(resources_list.filter(func(x): return ResourceLoader.exists(x))) + + +#region BULDING/FILTERING THE RESOURCE LIST + +func update_resource_list(resources_list: PackedStringArray = []) -> void: + var filter: String = %Search.text + var current_file := "" + if editors_manager.current_editor and editors_manager.current_editor.current_resource: + current_file = editors_manager.current_editor.current_resource.resource_path + + var character_directory: Dictionary = DialogicResourceUtil.get_character_directory() + var timeline_directory: Dictionary = DialogicResourceUtil.get_timeline_directory() + if resources_list.is_empty(): + resources_list = DialogicUtil.get_editor_setting("last_resources", []) + if not current_file in resources_list: + resources_list.append(current_file) + + resources_list = clean_resource_list(resources_list) + + %CurrentResource.text = "No Resource" + %CurrentResource.add_theme_color_override( + "font_uneditable_color", get_theme_color("disabled_font_color", "Editor") + ) + + resource_tree.clear() + + var character_items: Array = get_directory_items.call(character_directory, filter, load("res://addons/dialogic/Editor/Images/Resources/character.svg"), resources_list) + var timeline_items: Array = get_directory_items.call(timeline_directory, filter, load("res://addons/dialogic/Editor/Images/Resources/timeline.svg"), resources_list) + var all_items := character_items + timeline_items + + # BUILD TREE + var root: TreeItem = resource_tree.create_item() + + match group_mode: + GroupMode.NONE: + all_items.sort_custom(_sort_by_item_text) + for item in all_items: + add_item(item, root, current_file) + + + GroupMode.TYPE: + character_items.sort_custom(_sort_by_item_text) + timeline_items.sort_custom(_sort_by_item_text) + if character_items.size() > 0: + var character_tree := add_folder_item("Characters", root) + for item in character_items: + add_item(item, character_tree, current_file) + + if timeline_items.size() > 0: + var timeline_tree := add_folder_item("Timelines", root) + for item in timeline_items: + add_item(item, timeline_tree, current_file) + + + GroupMode.FOLDER: + var dirs := {} + for item in all_items: + var dir := item.get_parent_directory() as String + if not dirs.has(dir): + dirs[dir] = [] + dirs[dir].append(item) + + for dir in dirs: + var dir_item := add_folder_item(dir, root) + + for item in dirs[dir]: + add_item(item, dir_item, current_file) + + + GroupMode.PATH: + # Collect all different directories that contain resources + var dirs := {} + for item in all_items: + var path := (item.metadata.get_base_dir() as String).trim_prefix("res://") + if not dirs.has(path): + dirs[path] = [] + dirs[path].append(item) + + # Sort them into ones with the same folder name + var dir_names := {} + for dir in dirs: + var sliced: String = dir.get_slice("/", dir.get_slice_count("/")-1) + if not sliced in dir_names: + dir_names[sliced] = {"folders":[dir]} + else: + dir_names[sliced].folders.append(dir) + + # Create a dictionary mapping a unique name to each directory + # If two have been found to have the same folder name, the parent directory is added + var unique_folder_names := {} + for dir_name in dir_names: + if dir_names[dir_name].folders.size() > 1: + for i in dir_names[dir_name].folders: + if "/" in i: + unique_folder_names[i.get_slice("/", i.get_slice_count("/")-2)+"/"+i.get_slice("/", i.get_slice_count("/")-1)] = i + else: + unique_folder_names[i] = i + else: + unique_folder_names[dir_name] = dir_names[dir_name].folders[0] + + # Sort the folder names by their folder name (not by the full path) + var sorted_dir_keys := unique_folder_names.keys() + sorted_dir_keys.sort_custom( + func(x, y): + return x.get_slice("/", x.get_slice_count("/")-1) < y.get_slice("/", y.get_slice_count("/")-1) + ) + var folder_colors: Dictionary = ProjectSettings.get_setting("file_customization/folder_colors", {}) + + for dir in sorted_dir_keys: + var display_name: String = dir + if not %TrimFolderPaths.button_pressed: + display_name = unique_folder_names[dir] + var dir_path: String = unique_folder_names[dir] + var dir_color_path := "" + var dir_color := Color.BLACK + if %FolderColors.button_pressed: + for path in folder_colors: + if String("res://"+dir_path+"/").begins_with(path) and len(path) > len(dir_color_path): + dir_color_path = path + dir_color = folder_colors[path] + + var dir_item := add_folder_item(display_name, root, dir_color, dir_path) + + for item in dirs[dir_path]: + add_item(item, dir_item, current_file) + + + if %CurrentResource.text != "No Resource": + %CurrentResource.add_theme_color_override( + "font_uneditable_color", get_theme_color("font_color", "Editor") + ) + + DialogicUtil.set_editor_setting("last_resources", resources_list) + + +func add_item(item:ResourceListItem, parent:TreeItem, current_file := "") -> TreeItem: + var tree_item := resource_tree.create_item(parent) + tree_item.set_text(0, item.text) + tree_item.set_icon(0, item.icon) + tree_item.set_metadata(0, item.metadata) + tree_item.set_tooltip_text(0, item.tooltip) + + if item.metadata == current_file: + %CurrentResource.text = item.metadata.get_file() + resource_tree.set_selected(tree_item, 0) + + var bg_color := parent.get_custom_bg_color(0) + if bg_color != get_theme_color("base_color", "Editor"): + bg_color.a = 0.1 + tree_item.set_custom_bg_color(0, bg_color) + + return tree_item + + +func add_folder_item(label: String, parent:TreeItem, color:= Color.BLACK, tooltip:="") -> TreeItem: + var folder_item := resource_tree.create_item(parent) + folder_item.set_text(0, label) + folder_item.set_icon(0, get_theme_icon("Folder", "EditorIcons")) + folder_item.set_tooltip_text(0, tooltip) + if color == Color.BLACK: + folder_item.set_custom_bg_color(0, get_theme_color("base_color", "Editor")) + else: + color.a = 0.2 + folder_item.set_custom_bg_color(0, color) + + if label in DialogicUtil.get_editor_setting("resource_list_collapsed_info", []): + folder_item.collapsed = true + + return folder_item + + +func get_directory_items(directory:Dictionary, filter:String, icon:Texture2D, resources_list:Array) -> Array: + var items := [] + for item_name in directory: + if (directory[item_name] in resources_list) and (filter.is_empty() or filter.to_lower() in item_name.to_lower()): + var item := ResourceListItem.new() + item.text = item_name + item.icon = icon + item.metadata = directory[item_name] + item.tooltip = directory[item_name] + items.append(item) + return items + + +class ResourceListItem: + extends Object + + var text: String + var index: int = -1 + var icon: Texture + var metadata: String + var tooltip: String + + func _to_string() -> String: + return JSON.stringify( + { + "text": text, + "index": index, + "icon": icon.resource_path, + "metadata": metadata, + "tooltip": tooltip, + "parent_dir": get_parent_directory() + }, + "\t", + false + ) + + func get_parent_directory() -> String: + return (metadata.get_base_dir() as String).split("/")[-1] + + +func _sort_by_item_text(a: ResourceListItem, b: ResourceListItem) -> bool: + return a.text < b.text + +#endregion + + +#region INTERACTING WITH RESOURCES + + +func _on_resources_tree_item_activated() -> void: + if resource_tree.get_selected() == null: + return + var item := resource_tree.get_selected() + if item.get_metadata(0) == null: + return + edit_resource(item.get_metadata(0)) + + +func _on_resources_tree_item_clicked(_pos: Vector2, mouse_button_index: int) -> void: + match mouse_button_index: + MOUSE_BUTTON_LEFT: + var selected_item := resource_tree.get_selected() + if selected_item == null: + return + if selected_item.get_metadata(0) == null: + return + var resource_item := load(selected_item.get_metadata(0)) + call_deferred("edit_resource", resource_item) + + MOUSE_BUTTON_MIDDLE: + remove_item_from_list(resource_tree.get_selected()) + + MOUSE_BUTTON_RIGHT: + if resource_tree.get_selected().get_metadata(0): + %RightClickMenu.popup_on_parent(Rect2(get_global_mouse_position(), Vector2())) + %RightClickMenu.set_meta("item_clicked", resource_tree.get_selected()) + + +func _on_resources_tree_item_collapsed(item:TreeItem) -> void: + var collapsed_info: Array = DialogicUtil.get_editor_setting("resource_list_collapsed_info", []) + if item.get_text(0) in collapsed_info: + if not item.collapsed: + collapsed_info.erase(item.get_text(0)) + else: + if item.collapsed: + collapsed_info.append(item.get_text(0)) + DialogicUtil.set_editor_setting("resource_list_collapsed_info", collapsed_info) + + +func edit_resource(resource_item: Variant) -> void: + if resource_item is Resource: + editors_manager.edit_resource(resource_item) + else: + editors_manager.edit_resource(load(resource_item)) + + +func remove_item_from_list(item: TreeItem) -> void: + var new_list := [] + for entry in DialogicUtil.get_editor_setting("last_resources", []): + if entry != item.get_metadata(0): + new_list.append(entry) + DialogicUtil.set_editor_setting("last_resources", new_list) + update_resource_list(new_list) + + +func _on_right_click_menu_id_pressed(id: int) -> void: + match id: + 1: # REMOVE ITEM FROM LIST + remove_item_from_list(%RightClickMenu.get_meta("item_clicked")) + 2: # OPEN IN FILESYSTEM + EditorInterface.get_file_system_dock().navigate_to_path( + %RightClickMenu.get_meta("item_clicked").get_metadata(0) + ) + 3: # OPEN IN EXTERNAL EDITOR + OS.shell_open( + ProjectSettings.globalize_path( + %RightClickMenu.get_meta("item_clicked").get_metadata(0) + ) + ) + 4: # COPY IDENTIFIER + DisplayServer.clipboard_set( + DialogicResourceUtil.get_unique_identifier_by_path( + %RightClickMenu.get_meta("item_clicked").get_metadata(0) + ) + ) +#endregion + + +#region FILTERING + +func _on_search_text_changed(_new_text: String) -> void: + update_resource_list() + for item in resource_tree.get_root().get_children(): + if item.get_children().size() > 0: + resource_tree.set_selected(item.get_child(0), 0) + break + + +func _on_search_text_submitted(_new_text: String) -> void: + if resource_tree.get_selected() == null: + return + var item := resource_tree.get_selected() + if item.get_metadata(0) == null: + return + edit_resource(item.get_metadata(0)) + %Search.clear() + +#endregion + + +#region CONTENT LIST + +func update_content_list(list: PackedStringArray) -> void: + var prev_selected := "" + if %ContentList.is_anything_selected(): + prev_selected = %ContentList.get_item_text(%ContentList.get_selected_items()[0]) + %ContentList.clear() + %ContentList.add_item("~ Top") + for i in list: + if i.is_empty(): + continue + %ContentList.add_item(i) + if i == prev_selected: + %ContentList.select(%ContentList.item_count - 1) + if list.is_empty(): + return + + var current_resource: Resource = editors_manager.get_current_editor().current_resource + + var timeline_directory := DialogicResourceUtil.get_timeline_directory() + var label_directory := DialogicResourceUtil.get_label_cache() + if current_resource != null: + for i in timeline_directory: + if timeline_directory[i] == current_resource.resource_path: + label_directory[i] = list + + # also always store the current timelines labels for easy access + label_directory[""] = list + + DialogicResourceUtil.set_label_cache(label_directory) + +#endregion + + +#region RESOURCE LIST OPTIONS + +func _on_options_pressed() -> void: + %OptionsPopup.popup_on_parent(Rect2(%Options.global_position+%Options.size*Vector2(0,1), Vector2())) + + +func _on_grouping_changed(idx: int) -> void: + var id: int = %GroupingOptions.get_item_id(idx) + if (GroupMode as Dictionary).values().has(id): + group_mode = (id as GroupMode) + DialogicUtil.set_editor_setting("sidebar_group_mode", id) + update_resource_list() + + %FolderColors.disabled = group_mode != GroupMode.PATH + %TrimFolderPaths.disabled = group_mode != GroupMode.PATH + + +func _on_folder_colors_toggled(toggled_on: bool) -> void: + DialogicUtil.set_editor_setting("sidebar_use_folder_colors", toggled_on) + update_resource_list() + + +func _on_trim_folder_paths_toggled(toggled_on: bool) -> void: + DialogicUtil.set_editor_setting("sidebar_trim_folder_paths", toggled_on) + update_resource_list() + +#endregion + + +func _on_main_v_split_dragged(offset: int) -> void: + DialogicUtil.set_editor_setting("sidebar_v_split", offset) diff --git a/addons/dialogic/Editor/Common/sidebar.gd.uid b/addons/dialogic/Editor/Common/sidebar.gd.uid new file mode 100644 index 0000000..f695352 --- /dev/null +++ b/addons/dialogic/Editor/Common/sidebar.gd.uid @@ -0,0 +1 @@ +uid://myogqmakusx3 diff --git a/addons/dialogic/Editor/Common/toolbar.gd b/addons/dialogic/Editor/Common/toolbar.gd new file mode 100644 index 0000000..e4658d3 --- /dev/null +++ b/addons/dialogic/Editor/Common/toolbar.gd @@ -0,0 +1,46 @@ +@tool +extends HBoxContainer + +# Dialogic Editor toolbar. Works together with editors_mangager. + +################################################################################ +## EDITOR BUTTONS/LABELS +################################################################################ +func _ready() -> void: + if owner.get_parent() is SubViewport: + return + %CustomButtons.custom_minimum_size.y = 33 * DialogicUtil.get_editor_scale() + + for child in get_children(): + if child is Button: + child.queue_free() + + +func add_icon_button(icon: Texture, tooltip: String) -> Button: + var button := Button.new() + button.icon = icon + button.tooltip_text = tooltip + button.flat = true + button.size_flags_vertical = Control.SIZE_SHRINK_BEGIN + button.add_theme_color_override('icon_hover_color', get_theme_color('warning_color', 'Editor')) + button.add_theme_stylebox_override('focus', StyleBoxEmpty.new()) + add_child(button) + move_child(button, -2) + return button + + +func add_custom_button(label:String, icon:Texture) -> Button: + var button := Button.new() + button.text = label + button.icon = icon +# button.flat = true + + button.size_flags_vertical = Control.SIZE_SHRINK_BEGIN + %CustomButtons.add_child(button) +# custom_minimum_size.y = button.size.y + return button + + +func hide_all_custom_buttons() -> void: + for button in %CustomButtons.get_children(): + button.hide() diff --git a/addons/dialogic/Editor/Common/toolbar.gd.uid b/addons/dialogic/Editor/Common/toolbar.gd.uid new file mode 100644 index 0000000..6bebec8 --- /dev/null +++ b/addons/dialogic/Editor/Common/toolbar.gd.uid @@ -0,0 +1 @@ +uid://1m3sqaws1hin diff --git a/addons/dialogic/Editor/Common/unique_identifiers_manager.gd b/addons/dialogic/Editor/Common/unique_identifiers_manager.gd new file mode 100644 index 0000000..fc7c993 --- /dev/null +++ b/addons/dialogic/Editor/Common/unique_identifiers_manager.gd @@ -0,0 +1,95 @@ +@tool +extends PanelContainer + + +func _ready() -> void: + if owner.get_parent() is SubViewport: + return + + %TabB.text = "Unique Identifiers" + %TabB.icon = get_theme_icon("CryptoKey", "EditorIcons") + + owner.get_parent().visibility_changed.connect(func(): if is_visible_in_tree(): open()) + + %RenameNotification.add_theme_color_override("font_color", get_theme_color("warning_color", "Editor")) + + +func open() -> void: + fill_table() + %RenameNotification.hide() + + +func close() -> void: + pass + +func fill_table() -> void: + var t: Tree = %IdentifierTable + t.set_column_expand(1, true) + t.clear() + t.set_column_title(1, "Identifier") + t.set_column_title(0, "Resource Path") + t.set_column_title_alignment(0, 0) + t.set_column_title_alignment(1, 0) + t.create_item() + + for d in [["Characters", 'dch'], ["Timelines", "dtl"]]: + var directory := DialogicResourceUtil.get_directory(d[1]) + var directory_item := t.create_item() + directory_item.set_text(0, d[0]) + directory_item.set_metadata(0, d[1]) + for key in directory: + var item: TreeItem = t.create_item(directory_item) + item.set_text(0, directory[key]) + item.set_text(1, key) + item.set_editable(1, true) + item.set_metadata(1, key) + item.add_button(1, get_theme_icon("Edit", "EditorIcons"), 0, false, "Edit") + + +func _on_identifier_table_item_edited() -> void: + var item: TreeItem = %IdentifierTable.get_edited() + var new_identifier: String = item.get_text(1) + + + if new_identifier == item.get_metadata(1): + return + + if new_identifier.is_empty() or not DialogicResourceUtil.is_identifier_unused(item.get_parent().get_metadata(0), new_identifier): + item.set_text(1, item.get_metadata(1)) + return + + DialogicResourceUtil.change_unique_identifier(item.get_text(0), new_identifier) + + match item.get_parent().get_metadata(0): + 'dch': + owner.get_parent().add_character_name_ref_change(item.get_metadata(1), new_identifier) + 'dtl': + owner.get_parent().add_timeline_name_ref_change(item.get_metadata(1), new_identifier) + + %RenameNotification.show() + item.set_metadata(1, new_identifier) + + +func _on_identifier_table_button_clicked(item: TreeItem, column: int, id: int, mouse_button_index: int) -> void: + item.select(column) + %IdentifierTable.edit_selected(true) + + +func filter_tree(filter:String= "", item:TreeItem = null) -> bool: + if item == null: + item = %IdentifierTable.get_root() + + var any := false + for child in item.get_children(): + if child.get_child_count() > 0: + child.visible = filter_tree(filter, child) + if child.visible: any = true + else: + child.visible = filter.is_empty() or filter.to_lower() in child.get_text(0).to_lower() or filter.to_lower() in child.get_text(1).to_lower() + if child.visible: any = true + + return any + + +func _on_search_text_changed(new_text: String) -> void: + filter_tree(new_text) diff --git a/addons/dialogic/Editor/Common/unique_identifiers_manager.gd.uid b/addons/dialogic/Editor/Common/unique_identifiers_manager.gd.uid new file mode 100644 index 0000000..50b0d67 --- /dev/null +++ b/addons/dialogic/Editor/Common/unique_identifiers_manager.gd.uid @@ -0,0 +1 @@ +uid://bvbsqai5sh0na diff --git a/addons/dialogic/Editor/Common/update_install_window.gd b/addons/dialogic/Editor/Common/update_install_window.gd new file mode 100644 index 0000000..128c62e --- /dev/null +++ b/addons/dialogic/Editor/Common/update_install_window.gd @@ -0,0 +1,179 @@ +@tool +extends Control + +var current_info := {} +@onready var editor_view := find_parent('EditorView') + + +func _ready() -> void: + await editor_view.ready + theme = editor_view.theme + + %Install.icon = editor_view.get_theme_icon("AssetLib", "EditorIcons") + %LoadingIcon.texture = editor_view.get_theme_icon("KeyTrackScale", "EditorIcons") + %InstallWarning.modulate = editor_view.get_theme_color("warning_color", "Editor") + %CloseButton.icon = editor_view.get_theme_icon("Close", "EditorIcons") + DialogicUtil.get_dialogic_plugin().get_editor_interface().get_resource_filesystem().resources_reimported.connect(_on_resources_reimported) + + +func open() -> void: + get_parent().popup_centered_ratio(0.5) + get_parent().mode = Window.MODE_WINDOWED + get_parent().grab_focus() + + +func load_info(info:Dictionary, update_type:int) -> void: + current_info = info + if update_type == 2: + %State.text = "No Information Available" + %UpdateName.text = "Unable to access versions." + %UpdateName.add_theme_color_override("font_color", editor_view.get_theme_color("readonly_color", "Editor")) + %Content.text = "You are probably not connected to the internet. Fair enough." + %ShortInfo.text = "Huh, what happened here?" + %ReadFull.hide() + %Install.disabled = true + return + + # If we are up to date (or beyond): + if info.is_empty(): + info['name'] = "You are in the future, Marty!" + info["body"] = "# 😎 You are using the WIP branch!\nSeems like you are using a version that isn't even released yet. Be careful and give us your feedback ;)" + info["published_at"] = "????T" + info["author"] = {'login':"???"} + %State.text = "Where are we Doc?" + %UpdateName.add_theme_color_override("font_color", editor_view.get_theme_color("property_color_z", "Editor")) + %Install.disabled = true + + elif update_type == 0: + %State.text = "Update Available!" + %UpdateName.add_theme_color_override("font_color", editor_view.get_theme_color("warning_color", "Editor")) + %Install.disabled = false + else: + %State.text = "You are up to date:" + %UpdateName.add_theme_color_override("font_color", editor_view.get_theme_color("success_color", "Editor")) + %Install.disabled = true + + %UpdateName.text = info.name + %Content.text = markdown_to_bbcode(info.body).get_slice("\n[font_size", 0).strip_edges() + %ShortInfo.text = "Published on "+info.published_at.substr(0, info.published_at.find('T'))+" by "+info.author.login + if info.has("html_url"): + %ReadFull.uri = info.html_url + %ReadFull.show() + else: + %ReadFull.hide() + if info.has('reactions'): + %Reactions.show() + var reactions := {"laugh":"😂", "hooray":"🎉", "confused":"😕", "heart":"❤️", "rocket":"🚀", "eyes":"👀"} + for i in reactions: + %Reactions.get_node(i.capitalize()).visible = info.reactions[i] > 0 + %Reactions.get_node(i.capitalize()).text = reactions[i]+" "+str(info.reactions[i]) if info.reactions[i] > 0 else reactions[i] + if info.reactions['+1']+info.reactions['-1'] > 0: + %Reactions.get_node("Likes").visible = true + %Reactions.get_node("Likes").text = "👍 "+str(info.reactions['+1']+info.reactions['-1']) + else: + %Reactions.get_node("Likes").visible = false + else: + %Reactions.hide() + +func _on_window_close_requested() -> void: + get_parent().visible = false + + +func _on_install_pressed() -> void: + find_parent('UpdateManager').request_update_download() + + %InfoLabel.text = "Downloading. This can take a moment." + %Loading.show() + %LoadingIcon.create_tween().set_loops().tween_property(%LoadingIcon, 'rotation', 2*PI, 1).from(0) + + +func _on_refresh_pressed() -> void: + find_parent('UpdateManager').request_update_check() + + +func _on_update_manager_downdload_completed(result:int): + %Loading.hide() + match result: + 0: # success + %InfoLabel.text = "Installed successfully. Restart needed!" + %InfoLabel.modulate = editor_view.get_theme_color("success_color", "Editor") + %Restart.show() + %Restart.grab_focus() + 1: # failure + %InfoLabel.text = "Download failed." + %InfoLabel.modulate = editor_view.get_theme_color("readonly_color", "Editor") + + +func _on_resources_reimported(resources:Array) -> void: + if is_inside_tree(): + await get_tree().process_frame + get_parent().grab_focus() + + +func markdown_to_bbcode(text:String) -> String: + var font_sizes := {1:20, 2:16, 3:16,4:14, 5:14} + var title_regex := RegEx.create_from_string('(^|\n)((?#+)(?.*))\\n') + var res := title_regex.search(text) + while res: + text = text.replace(res.get_string(2), '[font_size='+str(font_sizes[len(res.get_string('level'))])+']'+res.get_string('title').strip_edges()+'[/font_size]') + res = title_regex.search(text) + + var link_regex := RegEx.create_from_string('(?<!\\!)\\[(?<text>[^\\]]*)]\\((?<link>[^)]*)\\)') + res = link_regex.search(text) + while res: + text = text.replace(res.get_string(), '[url='+res.get_string('link')+']'+res.get_string('text').strip_edges()+'[/url]') + res = link_regex.search(text) + + var image_regex := RegEx.create_from_string('\\!\\[(?<text>[^\\]]*)]\\((?<link>[^)]*)\\)\n*') + res = image_regex.search(text) + while res: + text = text.replace(res.get_string(), '[url='+res.get_string('link')+']'+res.get_string('text').strip_edges()+'[/url]') + res = image_regex.search(text) + + var italics_regex := RegEx.create_from_string('\\*(?<text>[^\\*\\n]*)\\*') + res = italics_regex.search(text) + while res: + text = text.replace(res.get_string(), '[i]'+res.get_string('text').strip_edges()+'[/i]') + res = italics_regex.search(text) + + var bullets_regex := RegEx.create_from_string('(?<=\\n)(\\*|-)(?<text>[^\\*\\n]*)\\n') + res = bullets_regex.search(text) + while res: + text = text.replace(res.get_string(), '[ul]'+res.get_string('text').strip_edges()+'[/ul]\n') + res = bullets_regex.search(text) + + var small_code_regex := RegEx.create_from_string('(?<!`)`(?<text>[^`]+)`') + res = small_code_regex.search(text) + while res: + text = text.replace(res.get_string(), '[code][color='+get_theme_color("accent_color", "Editor").to_html()+']'+res.get_string('text').strip_edges()+'[/color][/code]') + res = small_code_regex.search(text) + + var big_code_regex := RegEx.create_from_string('(?<!`)```(?<text>[^`]+)```') + res = big_code_regex.search(text) + while res: + text = text.replace(res.get_string(), '[code][bgcolor='+get_theme_color("box_selection_fill_color", "Editor").to_html()+']'+res.get_string('text').strip_edges()+'[/bgcolor][/code]') + res = big_code_regex.search(text) + + return text + + + +func _on_content_meta_clicked(meta:Variant) -> void: + OS.shell_open(str(meta)) + + +func _on_install_mouse_entered() -> void: + if not %Install.disabled: + %InstallWarning.show() + + +func _on_install_mouse_exited() -> void: + %InstallWarning.hide() + + +func _on_restart_pressed() -> void: + DialogicUtil.get_dialogic_plugin().get_editor_interface().restart_editor(true) + + +func _on_close_button_pressed() -> void: + get_parent().hide() diff --git a/addons/dialogic/Editor/Common/update_install_window.gd.uid b/addons/dialogic/Editor/Common/update_install_window.gd.uid new file mode 100644 index 0000000..4964b43 --- /dev/null +++ b/addons/dialogic/Editor/Common/update_install_window.gd.uid @@ -0,0 +1 @@ +uid://cskkip1wso0pu diff --git a/addons/dialogic/Editor/Common/update_install_window.tscn b/addons/dialogic/Editor/Common/update_install_window.tscn new file mode 100644 index 0000000..58186db --- /dev/null +++ b/addons/dialogic/Editor/Common/update_install_window.tscn @@ -0,0 +1,308 @@ +[gd_scene load_steps=9 format=3 uid="uid://vv3m5m68fwg7"] + +[ext_resource type="Script" uid="uid://cskkip1wso0pu" path="res://addons/dialogic/Editor/Common/update_install_window.gd" id="1_p1pbx"] +[ext_resource type="Texture2D" uid="uid://dybg3l5pwetne" path="res://addons/dialogic/Editor/Images/plugin-icon.svg" id="2_20ke0"] + +[sub_resource type="Gradient" id="Gradient_lt7uf"] +colors = PackedColorArray(0.296484, 0.648457, 1, 1, 0.732014, 0.389374, 1, 1) + +[sub_resource type="GradientTexture2D" id="GradientTexture2D_nl8ke"] +gradient = SubResource("Gradient_lt7uf") +fill_from = Vector2(0.151515, 0.272727) +fill_to = Vector2(1, 1) + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_1g1am"] +content_margin_left = 0.0 +content_margin_top = 15.0 +content_margin_right = 15.0 +content_margin_bottom = 15.0 +bg_color = Color(0.0627451, 0.0627451, 0.0627451, 0.407843) +corner_radius_top_left = 20 +corner_radius_top_right = 20 +corner_radius_bottom_right = 20 +corner_radius_bottom_left = 20 +expand_margin_left = 20.0 +expand_margin_right = 20.0 + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_j1mw2"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_h4v2s"] +content_margin_left = 5.0 +content_margin_top = 3.0 +content_margin_right = 5.0 +content_margin_bottom = 3.0 +bg_color = Color(0, 0, 0, 0.631373) +corner_radius_top_left = 10 +corner_radius_top_right = 10 +corner_radius_bottom_right = 10 +corner_radius_bottom_left = 10 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_utju1"] +content_margin_left = 5.0 +content_margin_top = 3.0 +content_margin_right = 5.0 +content_margin_bottom = 3.0 +bg_color = Color(0.0470588, 0.0470588, 0.0470588, 1) +corner_radius_top_left = 10 +corner_radius_top_right = 10 +corner_radius_bottom_right = 10 +corner_radius_bottom_left = 10 + +[node name="UpdateInstallWindow" type="ColorRect"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +color = Color(0.207843, 0.129412, 0.372549, 1) +script = ExtResource("1_p1pbx") + +[node name="TextureRect" type="TextureRect" parent="."] +modulate = Color(0.447059, 0.447059, 0.447059, 1) +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = SubResource("GradientTexture2D_nl8ke") + +[node name="VBoxContainer" type="VBoxContainer" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = 14.0 +offset_top = 13.0 +offset_right = -14.0 +offset_bottom = -13.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="HBoxContainer2" type="HBoxContainer" parent="VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 + +[node name="Control" type="Control" parent="VBoxContainer/HBoxContainer2"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 7 + +[node name="VBox" type="VBoxContainer" parent="VBoxContainer/HBoxContainer2"] +custom_minimum_size = Vector2(450, 0) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 3.74 +alignment = 1 + +[node name="ScrollContainer" type="ScrollContainer" parent="VBoxContainer/HBoxContainer2/VBox"] +clip_contents = false +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/HBoxContainer2/VBox/ScrollContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +alignment = 1 + +[node name="Panel" type="PanelContainer" parent="VBoxContainer/HBoxContainer2/VBox/ScrollContainer/VBoxContainer"] +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_1g1am") + +[node name="VBox" type="VBoxContainer" parent="VBoxContainer/HBoxContainer2/VBox/ScrollContainer/VBoxContainer/Panel"] +layout_mode = 2 +theme_override_constants/separation = -8 + +[node name="State" type="Label" parent="VBoxContainer/HBoxContainer2/VBox/ScrollContainer/VBoxContainer/Panel/VBox"] +unique_name_in_owner = true +layout_mode = 2 +theme_type_variation = &"DialogicSubTitle" +text = "Update Available!" + +[node name="UpdateName" type="Label" parent="VBoxContainer/HBoxContainer2/VBox/ScrollContainer/VBoxContainer/Panel/VBox"] +unique_name_in_owner = true +layout_mode = 2 +theme_type_variation = &"DialogicTitle" +theme_override_font_sizes/font_size = 25 +text = "Dialogic 2.0 - alpha 9" +uppercase = true + +[node name="ShortInfo" type="Label" parent="VBoxContainer/HBoxContainer2/VBox/ScrollContainer/VBoxContainer/Panel/VBox"] +unique_name_in_owner = true +layout_mode = 2 +theme_type_variation = &"DialogicHintText2" +theme_override_font_sizes/font_size = 10 +text = "12/31/23" + +[node name="Refresh" type="Button" parent="VBoxContainer/HBoxContainer2/VBox/ScrollContainer/VBoxContainer/Panel"] +layout_mode = 2 +size_flags_horizontal = 8 +size_flags_vertical = 0 +text = "Refresh +" +flat = true + +[node name="Content" type="RichTextLabel" parent="VBoxContainer/HBoxContainer2/VBox/ScrollContainer/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/normal_font_size = 14 +theme_override_styles/normal = SubResource("StyleBoxEmpty_j1mw2") +bbcode_enabled = true +text = "[font_size=25]🎉 New alpha, new stuff![/font_size] +If you are using dialogic 2 alphas then we've got an exciting update. It's not the beta yet, but we are getting closer! As always if you have questions or feedback it's best to reach out on [url=https://discord.gg/2hHQzkf2pX]emilios discord[/url]. + +This alpha brings a couple of very useful new features to dialogic as well as some syntax changes and a design overhaul (and many, many bug fixes). +" +fit_content = true + +[node name="Reactions" type="HBoxContainer" parent="VBoxContainer/HBoxContainer2/VBox/ScrollContainer/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="Likes" type="Label" parent="VBoxContainer/HBoxContainer2/VBox/ScrollContainer/VBoxContainer/Reactions"] +layout_mode = 2 +theme_override_font_sizes/font_size = 14 +theme_override_styles/normal = SubResource("StyleBoxFlat_h4v2s") +text = "👍12" + +[node name="Hooray" type="Label" parent="VBoxContainer/HBoxContainer2/VBox/ScrollContainer/VBoxContainer/Reactions"] +layout_mode = 2 +theme_override_font_sizes/font_size = 14 +theme_override_styles/normal = SubResource("StyleBoxFlat_h4v2s") +text = "🎉12" + +[node name="Laugh" type="Label" parent="VBoxContainer/HBoxContainer2/VBox/ScrollContainer/VBoxContainer/Reactions"] +layout_mode = 2 +theme_override_font_sizes/font_size = 14 +theme_override_styles/normal = SubResource("StyleBoxFlat_h4v2s") +text = "👀12" + +[node name="Heart" type="Label" parent="VBoxContainer/HBoxContainer2/VBox/ScrollContainer/VBoxContainer/Reactions"] +layout_mode = 2 +theme_override_font_sizes/font_size = 14 +theme_override_styles/normal = SubResource("StyleBoxFlat_h4v2s") +text = "❤️12" + +[node name="Rocket" type="Label" parent="VBoxContainer/HBoxContainer2/VBox/ScrollContainer/VBoxContainer/Reactions"] +layout_mode = 2 +theme_override_font_sizes/font_size = 14 +theme_override_styles/normal = SubResource("StyleBoxFlat_h4v2s") +text = "😕12" + +[node name="Eyes" type="Label" parent="VBoxContainer/HBoxContainer2/VBox/ScrollContainer/VBoxContainer/Reactions"] +layout_mode = 2 +theme_override_font_sizes/font_size = 14 +theme_override_styles/normal = SubResource("StyleBoxFlat_h4v2s") +text = "🚀12" + +[node name="Confused" type="Label" parent="VBoxContainer/HBoxContainer2/VBox/ScrollContainer/VBoxContainer/Reactions"] +layout_mode = 2 +theme_override_font_sizes/font_size = 14 +theme_override_styles/normal = SubResource("StyleBoxFlat_h4v2s") +text = "😂12" + +[node name="ReadFull" type="LinkButton" parent="VBoxContainer/HBoxContainer2/VBox/ScrollContainer/VBoxContainer/Reactions"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 10 +text = "Read Full Announcement" + +[node name="Control" type="Control" parent="VBoxContainer/HBoxContainer2/VBox/ScrollContainer/VBoxContainer"] +custom_minimum_size = Vector2(0, 20) +layout_mode = 2 + +[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/HBoxContainer2/VBox/ScrollContainer/VBoxContainer"] +layout_mode = 2 +alignment = 2 + +[node name="InfoLabel" type="Label" parent="VBoxContainer/HBoxContainer2/VBox/ScrollContainer/VBoxContainer/HBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +horizontal_alignment = 2 +autowrap_mode = 3 + +[node name="PanelContainer" type="PanelContainer" parent="VBoxContainer/HBoxContainer2/VBox/ScrollContainer/VBoxContainer/HBoxContainer"] +self_modulate = Color(0, 0, 0, 1) +layout_mode = 2 +size_flags_horizontal = 4 +theme_override_styles/panel = SubResource("StyleBoxFlat_h4v2s") + +[node name="HBox" type="HBoxContainer" parent="VBoxContainer/HBoxContainer2/VBox/ScrollContainer/VBoxContainer/HBoxContainer/PanelContainer"] +layout_mode = 2 +alignment = 2 + +[node name="Loading" type="CenterContainer" parent="VBoxContainer/HBoxContainer2/VBox/ScrollContainer/VBoxContainer/HBoxContainer/PanelContainer/HBox"] +unique_name_in_owner = true +visible = false +custom_minimum_size = Vector2(30, 0) +layout_mode = 2 + +[node name="Control" type="Control" parent="VBoxContainer/HBoxContainer2/VBox/ScrollContainer/VBoxContainer/HBoxContainer/PanelContainer/HBox/Loading"] +layout_mode = 2 + +[node name="LoadingIcon" type="Sprite2D" parent="VBoxContainer/HBoxContainer2/VBox/ScrollContainer/VBoxContainer/HBoxContainer/PanelContainer/HBox/Loading/Control"] +unique_name_in_owner = true +texture = ExtResource("2_20ke0") + +[node name="Restart" type="Button" parent="VBoxContainer/HBoxContainer2/VBox/ScrollContainer/VBoxContainer/HBoxContainer/PanelContainer/HBox"] +unique_name_in_owner = true +visible = false +layout_mode = 2 +size_flags_vertical = 4 +text = "Restart Now" +flat = true + +[node name="Install" type="Button" parent="VBoxContainer/HBoxContainer2/VBox/ScrollContainer/VBoxContainer/HBoxContainer/PanelContainer/HBox"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 4 +text = "Install" +flat = true + +[node name="InstallWarning" type="PanelContainer" parent="VBoxContainer/HBoxContainer2/VBox/ScrollContainer/VBoxContainer/HBoxContainer/PanelContainer/HBox/Install"] +unique_name_in_owner = true +visible = false +self_modulate = Color(0, 0, 0, 1) +layout_mode = 1 +anchors_preset = 1 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = -493.0 +offset_top = -92.0 +offset_right = 5.0 +offset_bottom = -8.0 +grow_horizontal = 0 +theme_override_styles/panel = SubResource("StyleBoxFlat_utju1") + +[node name="Label" type="Label" parent="VBoxContainer/HBoxContainer2/VBox/ScrollContainer/VBoxContainer/HBoxContainer/PanelContainer/HBox/Install/InstallWarning"] +layout_mode = 2 +theme_override_font_sizes/font_size = 14 +text = "Be careful. This will delete the addons/dialogic folder and install the new version. Any custom changes in that folder will be lost. +To be on the save side, use version control!" +autowrap_mode = 3 + +[node name="Control2" type="Control" parent="VBoxContainer/HBoxContainer2"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 7 + +[node name="Close" type="HBoxContainer" parent="VBoxContainer"] +layout_mode = 2 +alignment = 1 + +[node name="CloseButton" type="Button" parent="VBoxContainer/Close"] +unique_name_in_owner = true +layout_mode = 2 +text = "Close" + +[connection signal="pressed" from="VBoxContainer/HBoxContainer2/VBox/ScrollContainer/VBoxContainer/Panel/Refresh" to="." method="_on_refresh_pressed"] +[connection signal="meta_clicked" from="VBoxContainer/HBoxContainer2/VBox/ScrollContainer/VBoxContainer/Content" to="." method="_on_content_meta_clicked"] +[connection signal="pressed" from="VBoxContainer/HBoxContainer2/VBox/ScrollContainer/VBoxContainer/HBoxContainer/PanelContainer/HBox/Restart" to="." method="_on_restart_pressed"] +[connection signal="mouse_entered" from="VBoxContainer/HBoxContainer2/VBox/ScrollContainer/VBoxContainer/HBoxContainer/PanelContainer/HBox/Install" to="." method="_on_install_mouse_entered"] +[connection signal="mouse_exited" from="VBoxContainer/HBoxContainer2/VBox/ScrollContainer/VBoxContainer/HBoxContainer/PanelContainer/HBox/Install" to="." method="_on_install_mouse_exited"] +[connection signal="pressed" from="VBoxContainer/HBoxContainer2/VBox/ScrollContainer/VBoxContainer/HBoxContainer/PanelContainer/HBox/Install" to="." method="_on_install_pressed"] +[connection signal="pressed" from="VBoxContainer/Close/CloseButton" to="." method="_on_close_button_pressed"] diff --git a/addons/dialogic/Editor/Common/update_manager.gd b/addons/dialogic/Editor/Common/update_manager.gd new file mode 100644 index 0000000..cb33506 --- /dev/null +++ b/addons/dialogic/Editor/Common/update_manager.gd @@ -0,0 +1,190 @@ +@tool +extends Node + +## Script that checks for new versions and can install them. + +signal update_check_completed(result:UpdateCheckResult) +signal downdload_completed(result:DownloadResult) + +enum UpdateCheckResult {UPDATE_AVAILABLE, UP_TO_DATE, NO_ACCESS} +enum DownloadResult {SUCCESS, FAILURE} +enum ReleaseState {ALPHA, BETA, STABLE} + +const REMOTE_RELEASES_URL := "https://api.github.com/repos/dialogic-godot/dialogic/releases" +const TEMP_FILE_NAME := "user://temp.zip" + +var current_version := "" +var update_info: Dictionary +var current_info: Dictionary + +var version_indicator: Button + +func _ready() -> void: + request_update_check() + + setup_version_indicator() + + + +func get_current_version() -> String: + var plugin_cfg := ConfigFile.new() + plugin_cfg.load("res://addons/dialogic/plugin.cfg") + return plugin_cfg.get_value('plugin', 'version', 'unknown version') + + +func request_update_check() -> void: + if $UpdateCheckRequest.get_http_client_status() == HTTPClient.STATUS_DISCONNECTED: + $UpdateCheckRequest.request(REMOTE_RELEASES_URL) + + +func _on_UpdateCheck_request_completed(result:int, response_code:int, headers:PackedStringArray, body:PackedByteArray) -> void: + if result != HTTPRequest.RESULT_SUCCESS: + update_check_completed.emit(UpdateCheckResult.NO_ACCESS) + return + + # Work out the next version from the releases information on GitHub + var response: Variant = JSON.parse_string(body.get_string_from_utf8()) + if typeof(response) != TYPE_ARRAY: return + + + var current_release_info := get_release_tag_info(get_current_version()) + + # GitHub releases are in order of creation, not order of version + var versions: Array = (response as Array).filter(compare_versions.bind(current_release_info)) + if versions.size() > 0: + update_info = versions[0] + update_check_completed.emit(UpdateCheckResult.UPDATE_AVAILABLE) + else: + update_info = current_info + update_check_completed.emit(UpdateCheckResult.UP_TO_DATE) + + +func compare_versions(release, current_release_info:Dictionary) -> bool: + var checked_release_info := get_release_tag_info(release.tag_name) + + if checked_release_info.major < current_release_info.major: + return false + + if checked_release_info.minor < current_release_info.minor: + return false + + if checked_release_info.state < current_release_info.state: + return false + + elif checked_release_info.state == current_release_info.state: + if checked_release_info.state_version < current_release_info.state_version: + return false + + if checked_release_info.state_version == current_release_info.state_version: + current_info = release + return false + + if checked_release_info.state == ReleaseState.STABLE: + if checked_release_info.minor == current_release_info.minor: + current_info = release + return false + + return true + + +func get_release_tag_info(release_tag:String) -> Dictionary: + release_tag = release_tag.strip_edges().trim_prefix('v') + release_tag = release_tag.substr(0, release_tag.find('(')) + release_tag = release_tag.to_lower() + + var regex := RegEx.create_from_string(r"(?<major>\d+\.\d+)(-(?<state>alpha|beta)-)?(?(2)(?<stateversion>\d*)|\.(?<minor>\d*))?") + + var result: RegExMatch = regex.search(release_tag) + if !result: + return {} + + var info: Dictionary = {'tag':release_tag} + info['major'] = float(result.get_string('major')) + info['minor'] = int(result.get_string('minor')) + + match result.get_string('state'): + 'alpha': + info['state'] = ReleaseState.ALPHA + 'beta': + info['state'] = ReleaseState.BETA + _: + info['state'] = ReleaseState.STABLE + + info['state_version'] = int(result.get_string('stateversion')) + + return info + + +func request_update_download() -> void: + # Safeguard the actual dialogue manager repo from accidentally updating itself + if DirAccess.dir_exists_absolute("res://test-project/"): + prints("[Dialogic] Looks like you are working on the addon. You can't update the addon from within itself.") + downdload_completed.emit(DownloadResult.FAILURE) + return + + $DownloadRequest.request(update_info.zipball_url) + + +func _on_DownloadRequest_completed(result:int, response_code:int, headers:PackedStringArray, body:PackedByteArray): + if result != HTTPRequest.RESULT_SUCCESS: + downdload_completed.emit(DownloadResult.FAILURE) + return + + # Save the downloaded zip + var zip_file: FileAccess = FileAccess.open(TEMP_FILE_NAME, FileAccess.WRITE) + zip_file.store_buffer(body) + zip_file.close() + + OS.move_to_trash(ProjectSettings.globalize_path("res://addons/dialogic")) + + var zip_reader: ZIPReader = ZIPReader.new() + zip_reader.open(TEMP_FILE_NAME) + var files: PackedStringArray = zip_reader.get_files() + + var base_path: String = files[0].path_join('addons/') + for path in files: + if not "dialogic/" in path: + continue + + var new_file_path: String = path.replace(base_path, "") + if path.ends_with("/"): + DirAccess.make_dir_recursive_absolute("res://addons/".path_join(new_file_path)) + else: + var file: FileAccess = FileAccess.open("res://addons/".path_join(new_file_path), FileAccess.WRITE) + file.store_buffer(zip_reader.read_file(path)) + + zip_reader.close() + DirAccess.remove_absolute(TEMP_FILE_NAME) + + downdload_completed.emit(DownloadResult.SUCCESS) + + +###################### SOME UI MANAGEMENT ##################################### +################################################################################ + +func setup_version_indicator() -> void: + version_indicator = %Sidebar.get_node('%CurrentVersion') + version_indicator.pressed.connect($Window/UpdateInstallWindow.open) + version_indicator.text = get_current_version() + + +func _on_update_check_completed(result:int): + var result_color: Color + match result: + UpdateCheckResult.UPDATE_AVAILABLE: + result_color = version_indicator.get_theme_color("warning_color", "Editor") + version_indicator.icon = version_indicator.get_theme_icon("StatusWarning", "EditorIcons") + $Window/UpdateInstallWindow.load_info(update_info, result) + UpdateCheckResult.UP_TO_DATE: + result_color = version_indicator.get_theme_color("success_color", "Editor") + version_indicator.icon = version_indicator.get_theme_icon("StatusSuccess", "EditorIcons") + $Window/UpdateInstallWindow.load_info(current_info, result) + UpdateCheckResult.NO_ACCESS: + result_color = version_indicator.get_theme_color("success_color", "Editor") + version_indicator.icon = version_indicator.get_theme_icon("GuiRadioCheckedDisabled", "EditorIcons") + $Window/UpdateInstallWindow.load_info(update_info, result) + + version_indicator.add_theme_color_override('font_color', result_color) + version_indicator.add_theme_color_override('font_hover_color', result_color.lightened(0.5)) + version_indicator.add_theme_color_override('font_pressed_color', result_color) + version_indicator.add_theme_color_override('font_focus_color', result_color) diff --git a/addons/dialogic/Editor/Common/update_manager.gd.uid b/addons/dialogic/Editor/Common/update_manager.gd.uid new file mode 100644 index 0000000..c6e01cf --- /dev/null +++ b/addons/dialogic/Editor/Common/update_manager.gd.uid @@ -0,0 +1 @@ +uid://1tph6ios6ry2 diff --git a/addons/dialogic/Editor/Events/BranchEnd.gd b/addons/dialogic/Editor/Events/BranchEnd.gd new file mode 100644 index 0000000..d43ebe3 --- /dev/null +++ b/addons/dialogic/Editor/Events/BranchEnd.gd @@ -0,0 +1,85 @@ +@tool +extends Control +## A scene shown at the end of events that contain other events + +var resource: DialogicEndBranchEvent + +# References +var parent_node: Control = null +var end_control: Control = null + +# Indent +var indent_size := 22 +var current_indent_level := 1 + +var selected := false + +func _ready() -> void: + $Icon.icon = get_theme_icon("GuiSpinboxUpdown", "EditorIcons") + $Spacer.custom_minimum_size.x = 90 * DialogicUtil.get_editor_scale() + visual_deselect() + parent_node_changed() + + +## Called by the visual timeline editor +func visual_select() -> void: + modulate = get_theme_color("highlighted_font_color", "Editor") + selected = true + + +## Called by the visual timeline editor +func visual_deselect() -> void: + if !parent_node:return + selected = false + modulate = parent_node.resource.event_color.lerp(get_theme_color("font_color", "Editor"), 0.3) + + +func is_selected() -> bool: + return selected + + +## Called by the visual timeline editor +func highlight() -> void: + if !parent_node:return + modulate = parent_node.resource.event_color.lerp(get_theme_color("font_color", "Editor"), 0.6) + + +## Called by the visual timeline editor +func unhighlight() -> void: + modulate = parent_node.resource.event_color + + +func update_hidden_events_indicator(hidden_events_count:int = 0) -> void: + $HiddenEventsLabel.visible = hidden_events_count > 0 + if hidden_events_count == 1: + $HiddenEventsLabel.text = "[1 event hidden]" + else: + $HiddenEventsLabel.text = "["+str(hidden_events_count)+ " events hidden]" + + +## Called by the visual timeline editor +func set_indent(indent: int) -> void: + $Indent.custom_minimum_size = Vector2(indent_size * indent * DialogicUtil.get_editor_scale(), 0) + $Indent.visible = indent != 0 + current_indent_level = indent + queue_redraw() + + +## Called by the visual timeline editor if something was edited on the parent event block +func parent_node_changed() -> void: + if parent_node and end_control and end_control.has_method('refresh'): + end_control.refresh() + + +## Called on creation if the parent event provides an end control +func add_end_control(control:Control) -> void: + if !control: + return + add_child(control) + control.size_flags_vertical = SIZE_SHRINK_CENTER + if "parent_resource" in control: + control.parent_resource = parent_node.resource + if control.has_method('refresh'): + control.refresh() + end_control = control + diff --git a/addons/dialogic/Editor/Events/BranchEnd.gd.uid b/addons/dialogic/Editor/Events/BranchEnd.gd.uid new file mode 100644 index 0000000..f190a6c --- /dev/null +++ b/addons/dialogic/Editor/Events/BranchEnd.gd.uid @@ -0,0 +1 @@ +uid://cyjmcay08lmr8 diff --git a/addons/dialogic/Editor/Events/BranchEnd.tscn b/addons/dialogic/Editor/Events/BranchEnd.tscn new file mode 100644 index 0000000..63df64e --- /dev/null +++ b/addons/dialogic/Editor/Events/BranchEnd.tscn @@ -0,0 +1,48 @@ +[gd_scene load_steps=4 format=3 uid="uid://de13fdeebrkcb"] + +[ext_resource type="Script" uid="uid://cyjmcay08lmr8" path="res://addons/dialogic/Editor/Events/BranchEnd.gd" id="1"] + +[sub_resource type="Image" id="Image_6aqdp"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_44ap0"] +image = SubResource("Image_6aqdp") + +[node name="EndBranch" type="HBoxContainer"] +anchors_preset = 10 +anchor_right = 1.0 +offset_bottom = 24.0 +grow_horizontal = 2 +mouse_filter = 0 +script = ExtResource("1") + +[node name="Indent" type="Control" parent="."] +layout_mode = 2 +size_flags_vertical = 0 + +[node name="Spacer" type="Control" parent="."] +custom_minimum_size = Vector2(90, 0) +layout_mode = 2 +size_flags_vertical = 0 + +[node name="Icon" type="Button" parent="."] +unique_name_in_owner = true +custom_minimum_size = Vector2(20, 0) +layout_mode = 2 +size_flags_vertical = 4 +tooltip_text = "Click and drag" +focus_mode = 0 +mouse_filter = 1 +icon = SubResource("ImageTexture_44ap0") +flat = true + +[node name="HiddenEventsLabel" type="Label" parent="."] +visible = false +layout_mode = 2 +text = "XX Events hidden" diff --git a/addons/dialogic/Editor/Events/EventBlock/event_block.gd b/addons/dialogic/Editor/Events/EventBlock/event_block.gd new file mode 100644 index 0000000..47fa94d --- /dev/null +++ b/addons/dialogic/Editor/Events/EventBlock/event_block.gd @@ -0,0 +1,430 @@ +@tool +extends MarginContainer + +## Scene that represents an event in the visual timeline editor. + +signal content_changed() + +## REFERENCES +var resource: DialogicEvent +var editor_reference +# for choice and condition +var end_node: Node = null: + get: + return end_node + set(node): + end_node = node + %ToggleChildrenVisibilityButton.visible = true if end_node else false + + +## FLAGS +var selected := false +# Whether the body is visible +var expanded := true +var body_was_build := false +var has_any_enabled_body_content := false +# Whether contained events (e.g. in choices) are visible +var collapsed := false + + +## CONSTANTS +const icon_size := 28 +const indent_size := 22 + +## STATE +# List that stores visibility conditions +var field_list := [] +var current_indent_level := 1 + + +#region UI AND LOGIC INITIALIZATION +################################################################################ + +func _ready() -> void: + if get_parent() is SubViewport: + return + + if not resource: + printerr("[Dialogic] Event block was added without a resource specified.") + return + + initialize_ui() + initialize_logic() + + +func initialize_ui() -> void: + var _scale := DialogicUtil.get_editor_scale() + + add_theme_constant_override("margin_bottom", DialogicUtil.get_editor_setting("event_block_margin", 0) * _scale) + + $PanelContainer.self_modulate = get_theme_color("accent_color", "Editor") + + # Warning Icon + %Warning.texture = get_theme_icon("NodeWarning", "EditorIcons") + %Warning.size = Vector2(16 * _scale, 16 * _scale) + %Warning.position = Vector2(-5 * _scale, -10 * _scale) + + # Expand Button + %ToggleBodyVisibilityButton.icon = get_theme_icon("CodeFoldedRightArrow", "EditorIcons") + %ToggleBodyVisibilityButton.set("theme_override_colors/icon_normal_color", get_theme_color("contrast_color_2", "Editor")) + %ToggleBodyVisibilityButton.set("theme_override_colors/icon_hover_color", get_theme_color("accent_color", "Editor")) + %ToggleBodyVisibilityButton.set("theme_override_colors/icon_pressed_color", get_theme_color("contrast_color_2", "Editor")) + %ToggleBodyVisibilityButton.set("theme_override_colors/icon_hover_pressed_color", get_theme_color("accent_color", "Editor")) + %ToggleBodyVisibilityButton.add_theme_stylebox_override('hover_pressed', StyleBoxEmpty.new()) + + # Icon Panel + %IconPanel.tooltip_text = resource.event_name + %IconPanel.self_modulate = resource.event_color + + # Event Icon + %IconTexture.texture = resource._get_icon() + + %IconPanel.custom_minimum_size = Vector2(icon_size, icon_size) * _scale + %IconTexture.custom_minimum_size = %IconPanel.custom_minimum_size + + var custom_style: StyleBoxFlat = %IconPanel.get_theme_stylebox('panel') + custom_style.set_corner_radius_all(5 * _scale) + + # Focus Mode + set_focus_mode(1) # Allowing this node to grab focus + + # Separation on the header + %Header.add_theme_constant_override("custom_constants/separation", 5 * _scale) + + # Collapse Button + %ToggleChildrenVisibilityButton.toggled.connect(_on_collapse_toggled) + %ToggleChildrenVisibilityButton.icon = get_theme_icon("Collapse", "EditorIcons") + %ToggleChildrenVisibilityButton.hide() + + %Body.add_theme_constant_override("margin_left", icon_size * _scale) + + visual_deselect() + + +func initialize_logic() -> void: + resized.connect(get_parent().get_parent().queue_redraw) + + resource.ui_update_needed.connect(_on_resource_ui_update_needed) + resource.ui_update_warning.connect(set_warning) + + content_changed.connect(recalculate_field_visibility) + + _on_ToggleBodyVisibility_toggled(resource.expand_by_default or resource.created_by_button) + +#endregion + + +#region VISUAL METHODS +################################################################################ + +func visual_select() -> void: + $PanelContainer.add_theme_stylebox_override('panel', load("res://addons/dialogic/Editor/Events/styles/selected_styleboxflat.tres")) + selected = true + %IconPanel.self_modulate = resource.event_color + %IconTexture.modulate = get_theme_color("icon_saturation", "Editor") + + +func visual_deselect() -> void: + $PanelContainer.add_theme_stylebox_override('panel', load("res://addons/dialogic/Editor/Events/styles/unselected_stylebox.tres")) + selected = false + %IconPanel.self_modulate = resource.event_color.lerp(Color.DARK_SLATE_GRAY, 0.1) + %IconTexture.modulate = get_theme_color('font_color', 'Label') + + +func is_selected() -> bool: + return selected + + +func set_warning(text:String= "") -> void: + if !text.is_empty(): + %Warning.show() + %Warning.tooltip_text = text + else: + %Warning.hide() + + +func set_indent(indent: int) -> void: + add_theme_constant_override("margin_left", indent_size * indent * DialogicUtil.get_editor_scale()) + current_indent_level = indent + +#endregion + + +#region EVENT FIELDS +################################################################################ + +var FIELD_SCENES := { + DialogicEvent.ValueType.MULTILINE_TEXT: "res://addons/dialogic/Editor/Events/Fields/field_text_multiline.tscn", + DialogicEvent.ValueType.SINGLELINE_TEXT: "res://addons/dialogic/Editor/Events/Fields/field_text_singleline.tscn", + DialogicEvent.ValueType.FILE: "res://addons/dialogic/Editor/Events/Fields/field_file.tscn", + DialogicEvent.ValueType.BOOL: "res://addons/dialogic/Editor/Events/Fields/field_bool_check.tscn", + DialogicEvent.ValueType.BOOL_BUTTON: "res://addons/dialogic/Editor/Events/Fields/field_bool_button.tscn", + DialogicEvent.ValueType.CONDITION: "res://addons/dialogic/Editor/Events/Fields/field_condition.tscn", + DialogicEvent.ValueType.ARRAY: "res://addons/dialogic/Editor/Events/Fields/field_array.tscn", + DialogicEvent.ValueType.DICTIONARY: "res://addons/dialogic/Editor/Events/Fields/field_dictionary.tscn", + DialogicEvent.ValueType.DYNAMIC_OPTIONS: "res://addons/dialogic/Editor/Events/Fields/field_options_dynamic.tscn", + DialogicEvent.ValueType.FIXED_OPTIONS : "res://addons/dialogic/Editor/Events/Fields/field_options_fixed.tscn", + DialogicEvent.ValueType.NUMBER: "res://addons/dialogic/Editor/Events/Fields/field_number.tscn", + DialogicEvent.ValueType.VECTOR2: "res://addons/dialogic/Editor/Events/Fields/field_vector2.tscn", + DialogicEvent.ValueType.VECTOR3: "res://addons/dialogic/Editor/Events/Fields/field_vector3.tscn", + DialogicEvent.ValueType.VECTOR4: "res://addons/dialogic/Editor/Events/Fields/field_vector4.tscn", + DialogicEvent.ValueType.COLOR: "res://addons/dialogic/Editor/Events/Fields/field_color.tscn", + DialogicEvent.ValueType.AUDIO_PREVIEW: "res://addons/dialogic/Editor/Events/Fields/field_audio_preview.tscn", + DialogicEvent.ValueType.IMAGE_PREVIEW: "res://addons/dialogic/Editor/Events/Fields/field_image_preview.tscn", + } + +func build_editor(build_header:bool = true, build_body:bool = false) -> void: + var current_body_container: HFlowContainer = null + + if build_body and body_was_build: + build_body = false + + if build_body: + if body_was_build: + return + current_body_container = HFlowContainer.new() + %BodyContent.add_child(current_body_container) + body_was_build = true + + for p in resource.get_event_editor_info(): + field_list.append({'node':null, 'location':p.location}) + if p.has('condition'): + field_list[-1]['condition'] = p.condition + + if !build_body and p.location == 1: + continue + elif !build_header and p.location == 0: + continue + + ### -------------------------------------------------------------------- + ### 1. CREATE A NODE OF THE CORRECT TYPE FOR THE PROPERTY + var editor_node: Control + + ### LINEBREAK + if p.name == "linebreak": + field_list.remove_at(field_list.size()-1) + if !current_body_container.get_child_count(): + current_body_container.queue_free() + current_body_container = HFlowContainer.new() + %BodyContent.add_child(current_body_container) + continue + + elif p.field_type in FIELD_SCENES: + editor_node = load(FIELD_SCENES[p.field_type]).instantiate() + + elif p.field_type == resource.ValueType.LABEL: + editor_node = Label.new() + editor_node.text = p.display_info.text + editor_node.vertical_alignment = VERTICAL_ALIGNMENT_CENTER + editor_node.set('custom_colors/font_color', Color("#7b7b7b")) + editor_node.add_theme_color_override('font_color', resource.event_color.lerp(get_theme_color("font_color", "Editor"), 0.8)) + + elif p.field_type == resource.ValueType.BUTTON: + editor_node = Button.new() + editor_node.text = p.display_info.text + editor_node.tooltip_text = p.display_info.get('tooltip', '') + if typeof(p.display_info.icon) == TYPE_ARRAY: + editor_node.icon = callv('get_theme_icon', p.display_info.icon) + else: + editor_node.icon = p.display_info.icon + editor_node.flat = true + editor_node.custom_minimum_size.x = 30 * DialogicUtil.get_editor_scale() + editor_node.pressed.connect(p.display_info.callable) + + ## CUSTOM + elif p.field_type == resource.ValueType.CUSTOM: + if p.display_info.has('path'): + editor_node = load(p.display_info.path).instantiate() + + ## ELSE + else: + editor_node = Label.new() + editor_node.text = p.name + editor_node.add_theme_color_override('font_color', resource.event_color.lerp(get_theme_color("font_color", "Editor"), 0.8)) + + + field_list[-1]['node'] = editor_node + ### -------------------------------------------------------------------- + # Some things need to be called BEFORE the field is added to the tree + if editor_node is DialogicVisualEditorField: + editor_node.event_resource = resource + + editor_node.property_name = p.name + field_list[-1]['property'] = p.name + + editor_node._load_display_info(p.display_info) + + var location: Control = %HeaderContent + if p.location == 1: + location = current_body_container + location.add_child(editor_node) + + # Some things need to be called AFTER the field is added to the tree + if editor_node is DialogicVisualEditorField: + # Only set the value if the field is visible + # + # This prevents events with varied value types (event_setting, event_variable) + # from injecting incorrect types into hidden fields, which then throw errors + # in the console. + if p.has('condition') and not p.condition.is_empty(): + if _evaluate_visibility_condition(p): + editor_node._set_value(resource.get(p.name)) + else: + editor_node._set_value(resource.get(p.name)) + + editor_node.value_changed.connect(set_property) + + editor_node.tooltip_text = p.display_info.get('tooltip', '') + + # Apply autofocus + if resource.created_by_button and p.display_info.get('autofocus', false): + editor_node.call_deferred('take_autofocus') + + ### -------------------------------------------------------------------- + ### 4. ADD LEFT AND RIGHT TEXT + var left_label: Label = null + var right_label: Label = null + if !p.get('left_text', '').is_empty(): + left_label = Label.new() + left_label.text = p.get('left_text') + left_label.vertical_alignment = VERTICAL_ALIGNMENT_CENTER + left_label.add_theme_color_override('font_color', resource.event_color.lerp(get_theme_color("font_color", "Editor"), 0.8)) + location.add_child(left_label) + location.move_child(left_label, editor_node.get_index()) + if !p.get('right_text', '').is_empty(): + right_label = Label.new() + right_label.text = p.get('right_text') + right_label.vertical_alignment = VERTICAL_ALIGNMENT_CENTER + right_label.add_theme_color_override('font_color', resource.event_color.lerp(get_theme_color("font_color", "Editor"), 0.8)) + location.add_child(right_label) + location.move_child(right_label, editor_node.get_index()+1) + + ### -------------------------------------------------------------------- + ### 5. REGISTER CONDITION + if p.has('condition'): + field_list[-1]['condition'] = p.condition + if left_label: + field_list.append({'node': left_label, 'condition':p.condition, 'location':p.location}) + if right_label: + field_list.append({'node': right_label, 'condition':p.condition, 'location':p.location}) + + + if build_body: + if current_body_container.get_child_count() == 0: + expanded = false + %Body.visible = false + + recalculate_field_visibility() + + +func recalculate_field_visibility() -> void: + has_any_enabled_body_content = false + for p in field_list: + if !p.has('condition') or p.condition.is_empty(): + if p.node != null: + p.node.show() + if p.location == 1: + has_any_enabled_body_content = true + else: + if _evaluate_visibility_condition(p): + if p.node != null: + if p.node.visible == false and p.has("property"): + p.node._set_value(resource.get(p.property)) + p.node.show() + if p.location == 1: + has_any_enabled_body_content = true + else: + if p.node != null: + p.node.hide() + %ToggleBodyVisibilityButton.visible = has_any_enabled_body_content + + +func set_property(property_name:String, value:Variant) -> void: + resource.set(property_name, value) + content_changed.emit() + if end_node: + end_node.parent_node_changed() + + +func _evaluate_visibility_condition(p: Dictionary) -> bool: + var expr := Expression.new() + expr.parse(p.condition) + var result: bool + if expr.execute([], resource): + result = true + else: + result = false + if expr.has_execute_failed(): + printerr("[Dialogic] Failed executing visibility condition for '",p.get('property', 'unnamed'),"': " + expr.get_error_text()) + return result + + +func get_field_node(property_name:String) -> Node: + for i in field_list: + if i.get("property", "") == property_name: + return i.node + return null + + +func _on_resource_ui_update_needed() -> void: + for node_info in field_list: + if node_info.node and node_info.node.has_method('set_value'): + # Only set the value if the field is visible + # + # This prevents events with varied value types (event_setting, event_variable) + # from injecting incorrect types into hidden fields, which then throw errors + # in the console. + if node_info.has('condition') and not node_info.condition.is_empty(): + if _evaluate_visibility_condition(node_info): + node_info.node.set_value(resource.get(node_info.property)) + else: + node_info.node.set_value(resource.get(node_info.property)) + recalculate_field_visibility() + + +#region SIGNALS +################################################################################ + +func _on_collapse_toggled(toggled:bool) -> void: + collapsed = toggled + var timeline_editor: Node = find_parent('VisualEditor') + if (timeline_editor != null): + # @todo select item and clear selection is marked as "private" in TimelineEditor.gd + # consider to make it "public" or add a public helper function + timeline_editor.indent_events() + + + +func _on_ToggleBodyVisibility_toggled(button_pressed:bool) -> void: + if button_pressed and !body_was_build: + build_editor(false, true) + %ToggleBodyVisibilityButton.set_pressed_no_signal(button_pressed) + + if button_pressed: + %ToggleBodyVisibilityButton.icon = get_theme_icon("CodeFoldDownArrow", "EditorIcons") + else: + %ToggleBodyVisibilityButton.icon = get_theme_icon("CodeFoldedRightArrow", "EditorIcons") + + expanded = button_pressed + %Body.visible = button_pressed + + if find_parent('VisualEditor') != null: + find_parent('VisualEditor').indent_events() + + +func _on_EventNode_gui_input(event:InputEvent) -> void: + if event is InputEventMouseButton and event.is_pressed() and event.button_index == 1: + grab_focus() # Grab focus to avoid copy pasting text or events + if event.double_click: + if has_any_enabled_body_content: + _on_ToggleBodyVisibility_toggled(!expanded) + # For opening the context menu + if event is InputEventMouseButton: + if event.button_index == MOUSE_BUTTON_RIGHT and event.pressed: + var popup: PopupMenu = get_parent().get_parent().get_node('EventPopupMenu') + popup.current_event = self + popup.popup_on_parent(Rect2(get_global_mouse_position(),Vector2())) + if resource.help_page_path == "": + popup.set_item_disabled(4, true) + else: + popup.set_item_disabled(4, false) diff --git a/addons/dialogic/Editor/Events/EventBlock/event_block.gd.uid b/addons/dialogic/Editor/Events/EventBlock/event_block.gd.uid new file mode 100644 index 0000000..d383047 --- /dev/null +++ b/addons/dialogic/Editor/Events/EventBlock/event_block.gd.uid @@ -0,0 +1 @@ +uid://dbncx2w0btjyx diff --git a/addons/dialogic/Editor/Events/EventBlock/event_block.tscn b/addons/dialogic/Editor/Events/EventBlock/event_block.tscn new file mode 100644 index 0000000..5402273 --- /dev/null +++ b/addons/dialogic/Editor/Events/EventBlock/event_block.tscn @@ -0,0 +1,133 @@ +[gd_scene load_steps=8 format=3 uid="uid://bwaxj1n401fp4"] + +[ext_resource type="Script" uid="uid://dbncx2w0btjyx" path="res://addons/dialogic/Editor/Events/EventBlock/event_block.gd" id="1"] +[ext_resource type="StyleBox" uid="uid://cl75ikyq2is7c" path="res://addons/dialogic/Editor/Events/styles/unselected_stylebox.tres" id="2_axj84"] +[ext_resource type="Texture2D" uid="uid://dybg3l5pwetne" path="res://addons/dialogic/Editor/Images/plugin-icon.svg" id="6"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_otutu"] +bg_color = Color(1, 1, 1, 1) +corner_radius_top_left = 5 +corner_radius_top_right = 5 +corner_radius_bottom_right = 5 +corner_radius_bottom_left = 5 + +[sub_resource type="Image" id="Image_cl0tj"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_rc1wh"] +image = SubResource("Image_cl0tj") + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_ee4ub"] + +[node name="EventNode" type="MarginContainer"] +anchors_preset = 10 +anchor_right = 1.0 +grow_horizontal = 2 +size_flags_horizontal = 3 +size_flags_vertical = 9 +focus_mode = 1 +script = ExtResource("1") + +[node name="PanelContainer" type="PanelContainer" parent="."] +self_modulate = Color(0, 0, 0, 1) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +mouse_filter = 2 +theme_override_styles/panel = ExtResource("2_axj84") + +[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="Header" type="HBoxContainer" parent="PanelContainer/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="IconPanel" type="Panel" parent="PanelContainer/VBoxContainer/Header"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 4 +mouse_filter = 1 +mouse_default_cursor_shape = 6 +theme_override_styles/panel = SubResource("StyleBoxFlat_otutu") + +[node name="IconTexture" type="TextureRect" parent="PanelContainer/VBoxContainer/Header/IconPanel"] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 0 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +texture = ExtResource("6") +expand_mode = 1 +stretch_mode = 5 + +[node name="Warning" type="TextureRect" parent="PanelContainer/VBoxContainer/Header/IconPanel"] +unique_name_in_owner = true +visible = false +layout_mode = 0 +offset_left = -5.5 +offset_top = -11.0 +offset_right = 12.1 +offset_bottom = 6.6 +texture = SubResource("ImageTexture_rc1wh") +stretch_mode = 5 + +[node name="HeaderContent" type="HBoxContainer" parent="PanelContainer/VBoxContainer/Header"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="ToggleBodyVisibilityButton" type="Button" parent="PanelContainer/VBoxContainer/Header"] +unique_name_in_owner = true +custom_minimum_size = Vector2(20, 0) +layout_mode = 2 +size_flags_horizontal = 0 +tooltip_text = "Fold/Unfold Settings" +theme_override_styles/normal = SubResource("StyleBoxEmpty_ee4ub") +theme_override_styles/hover = SubResource("StyleBoxEmpty_ee4ub") +theme_override_styles/pressed = SubResource("StyleBoxEmpty_ee4ub") +theme_override_styles/disabled = SubResource("StyleBoxEmpty_ee4ub") +theme_override_styles/focus = SubResource("StyleBoxEmpty_ee4ub") +toggle_mode = true +icon = SubResource("ImageTexture_rc1wh") +flat = true + +[node name="ToggleChildrenVisibilityButton" type="Button" parent="PanelContainer/VBoxContainer/Header"] +unique_name_in_owner = true +visible = false +layout_mode = 2 +size_flags_horizontal = 10 +tooltip_text = "Collapse Contained Events" +toggle_mode = true +icon = SubResource("ImageTexture_rc1wh") +flat = true + +[node name="Body" type="MarginContainer" parent="PanelContainer/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_constants/margin_left = 4 + +[node name="BodyContent" type="VBoxContainer" parent="PanelContainer/VBoxContainer/Body"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +mouse_filter = 2 + +[connection signal="gui_input" from="." to="." method="_on_EventNode_gui_input"] +[connection signal="toggled" from="PanelContainer/VBoxContainer/Header/ToggleBodyVisibilityButton" to="." method="_on_ToggleBodyVisibility_toggled"] diff --git a/addons/dialogic/Editor/Events/EventBlock/event_right_click_menu.gd b/addons/dialogic/Editor/Events/EventBlock/event_right_click_menu.gd new file mode 100644 index 0000000..7fad397 --- /dev/null +++ b/addons/dialogic/Editor/Events/EventBlock/event_right_click_menu.gd @@ -0,0 +1,24 @@ +@tool +extends PopupMenu + +var current_event: Node = null + +func _ready() -> void: + clear() + add_icon_item(get_theme_icon("Duplicate", "EditorIcons"), "Duplicate", 0) + add_separator() + add_icon_item(get_theme_icon("PlayStart", "EditorIcons"), "Play from here", 1) + add_separator() + add_icon_item(get_theme_icon("Help", "EditorIcons"), "Documentation", 2) + add_icon_item(get_theme_icon("CodeHighlighter", "EditorIcons"), "Open Code", 3) + add_separator() + add_icon_item(get_theme_icon("ArrowUp", "EditorIcons"), "Move up", 4) + add_icon_item(get_theme_icon("ArrowDown", "EditorIcons"), "Move down", 5) + add_separator() + add_icon_item(get_theme_icon("Remove", "EditorIcons"), "Delete", 6) + + var menu_background := StyleBoxFlat.new() + menu_background.bg_color = get_parent().get_theme_color("base_color", "Editor") + add_theme_stylebox_override('panel', menu_background) + add_theme_stylebox_override('hover', get_theme_stylebox("FocusViewport", "EditorStyles")) + add_theme_color_override('font_color_hover', get_parent().get_theme_color("accent_color", "Editor")) diff --git a/addons/dialogic/Editor/Events/EventBlock/event_right_click_menu.gd.uid b/addons/dialogic/Editor/Events/EventBlock/event_right_click_menu.gd.uid new file mode 100644 index 0000000..1bf4860 --- /dev/null +++ b/addons/dialogic/Editor/Events/EventBlock/event_right_click_menu.gd.uid @@ -0,0 +1 @@ +uid://n1knm2ohcehu diff --git a/addons/dialogic/Editor/Events/Fields/array_part.gd b/addons/dialogic/Editor/Events/Fields/array_part.gd new file mode 100644 index 0000000..20c7c72 --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/array_part.gd @@ -0,0 +1,28 @@ +@tool +extends PanelContainer + +## Event block field part for the Array field. + +signal value_changed() + +var value_field: Node +var value_type: int = -1 + +var current_value: Variant + +func _ready() -> void: + %FlexValue.value_changed.connect(emit_signal.bind("value_changed")) + %Delete.icon = get_theme_icon("Remove", "EditorIcons") + + +func set_value(value:Variant): + %FlexValue.set_value(value) + + +func get_value() -> Variant: + return %FlexValue.current_value + + +func _on_delete_pressed() -> void: + queue_free() + value_changed.emit() diff --git a/addons/dialogic/Editor/Events/Fields/array_part.gd.uid b/addons/dialogic/Editor/Events/Fields/array_part.gd.uid new file mode 100644 index 0000000..693d1c8 --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/array_part.gd.uid @@ -0,0 +1 @@ +uid://cm8w2iamuulp7 diff --git a/addons/dialogic/Editor/Events/Fields/array_part.tscn b/addons/dialogic/Editor/Events/Fields/array_part.tscn new file mode 100644 index 0000000..75932ec --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/array_part.tscn @@ -0,0 +1,39 @@ +[gd_scene load_steps=5 format=3 uid="uid://ch4j2lesn1sis"] + +[ext_resource type="Script" uid="uid://cm8w2iamuulp7" path="res://addons/dialogic/Editor/Events/Fields/array_part.gd" id="1"] +[ext_resource type="PackedScene" uid="uid://dl08ubinx6ugu" path="res://addons/dialogic/Editor/Events/Fields/field_flex_value.tscn" id="3_s4j7i"] + +[sub_resource type="Image" id="Image_28ws6"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_cpbga"] +image = SubResource("Image_28ws6") + +[node name="ArrayValue" type="PanelContainer"] +offset_left = 2.0 +offset_right = 76.0 +offset_bottom = 24.0 +theme_type_variation = &"DialogicEventEditGroup" +script = ExtResource("1") + +[node name="Value" type="HBoxContainer" parent="."] +layout_mode = 2 + +[node name="FlexValue" parent="Value" instance=ExtResource("3_s4j7i")] +unique_name_in_owner = true +layout_mode = 2 + +[node name="Delete" type="Button" parent="Value"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Remove" +icon = SubResource("ImageTexture_cpbga") +flat = true + +[connection signal="pressed" from="Value/Delete" to="." method="_on_delete_pressed"] diff --git a/addons/dialogic/Editor/Events/Fields/dictionary_part.gd b/addons/dialogic/Editor/Events/Fields/dictionary_part.gd new file mode 100644 index 0000000..c5b8b39 --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/dictionary_part.gd @@ -0,0 +1,43 @@ +@tool +extends PanelContainer + +## Event block field part for the Dictionary field. + +signal value_changed() + + +func set_key(value:String) -> void: + %Key.text = str(value) + + +func get_key() -> String: + return %Key.text + + +func set_value(value:Variant) -> void: + %FlexValue.set_value(value) + + +func get_value() -> Variant: + return %FlexValue.current_value + + +func _ready() -> void: + %Delete.icon = get_theme_icon("Remove", "EditorIcons") + + +func focus_key() -> void: + %Key.grab_focus() + + +func _on_key_text_changed(new_text: String) -> void: + value_changed.emit() + + +func _on_flex_value_value_changed() -> void: + value_changed.emit() + + +func _on_delete_pressed() -> void: + queue_free() + value_changed.emit() diff --git a/addons/dialogic/Editor/Events/Fields/dictionary_part.gd.uid b/addons/dialogic/Editor/Events/Fields/dictionary_part.gd.uid new file mode 100644 index 0000000..a73c516 --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/dictionary_part.gd.uid @@ -0,0 +1 @@ +uid://b41laec1d54io diff --git a/addons/dialogic/Editor/Events/Fields/dictionary_part.tscn b/addons/dialogic/Editor/Events/Fields/dictionary_part.tscn new file mode 100644 index 0000000..e0824b1 --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/dictionary_part.tscn @@ -0,0 +1,54 @@ +[gd_scene load_steps=5 format=3 uid="uid://b27yweami3mxi"] + +[ext_resource type="Script" uid="uid://b41laec1d54io" path="res://addons/dialogic/Editor/Events/Fields/dictionary_part.gd" id="2_q88pg"] +[ext_resource type="PackedScene" uid="uid://dl08ubinx6ugu" path="res://addons/dialogic/Editor/Events/Fields/field_flex_value.tscn" id="3_p082d"] + +[sub_resource type="Image" id="Image_teqf1"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_cpbga"] +image = SubResource("Image_teqf1") + +[node name="DictionaryPart" type="PanelContainer"] +offset_left = 1.0 +offset_top = -1.0 +offset_right = 131.0 +offset_bottom = 32.0 +theme_type_variation = &"DialogicEventEditGroup" +script = ExtResource("2_q88pg") + +[node name="HBox" type="HBoxContainer" parent="."] +layout_mode = 2 + +[node name="Key" type="LineEdit" parent="HBox"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +theme_type_variation = &"DialogicEventEdit" +expand_to_text_length = true +select_all_on_focus = true + +[node name="Label" type="Label" parent="HBox"] +layout_mode = 2 +text = ":" + +[node name="FlexValue" parent="HBox" instance=ExtResource("3_p082d")] +unique_name_in_owner = true +layout_mode = 2 + +[node name="Delete" type="Button" parent="HBox"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Remove" +icon = SubResource("ImageTexture_cpbga") +flat = true + +[connection signal="text_changed" from="HBox/Key" to="." method="_on_key_text_changed"] +[connection signal="value_changed" from="HBox/FlexValue" to="." method="_on_flex_value_value_changed"] +[connection signal="pressed" from="HBox/Delete" to="." method="_on_delete_pressed"] diff --git a/addons/dialogic/Editor/Events/Fields/field_array.gd b/addons/dialogic/Editor/Events/Fields/field_array.gd new file mode 100644 index 0000000..301ade5 --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_array.gd @@ -0,0 +1,48 @@ +@tool +extends DialogicVisualEditorField + +## Event block field for editing arrays. + + +const ArrayValue := "res://addons/dialogic/Editor/Events/Fields/array_part.tscn" + + +func _ready() -> void: + %Add.icon = get_theme_icon("Add", "EditorIcons") + %Add.pressed.connect(_on_AddButton_pressed) + + +func _set_value(value:Variant) -> void: + value = value as Array + for child in get_children(): + if child != %Add: + child.queue_free() + + for item in value: + var x: Node = load(ArrayValue).instantiate() + add_child(x) + x.set_value(item) + x.value_changed.connect(recalculate_values) + move_child(%Add, -1) + + +func _on_value_changed(value:Variant) -> void: + value_changed.emit(property_name, value) + + +func recalculate_values() -> void: + var arr := [] + for child in get_children(): + if child != %Add and !child.is_queued_for_deletion(): + arr.append(child.get_value()) + _on_value_changed(arr) + + +func _on_AddButton_pressed() -> void: + var x: Control = load(ArrayValue).instantiate() + add_child(x) + x.set_value("") + x.value_changed.connect(recalculate_values) + recalculate_values() + move_child(%Add, -1) + diff --git a/addons/dialogic/Editor/Events/Fields/field_array.gd.uid b/addons/dialogic/Editor/Events/Fields/field_array.gd.uid new file mode 100644 index 0000000..5c155b8 --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_array.gd.uid @@ -0,0 +1 @@ +uid://kmn7rns1g4fc diff --git a/addons/dialogic/Editor/Events/Fields/field_array.tscn b/addons/dialogic/Editor/Events/Fields/field_array.tscn new file mode 100644 index 0000000..4ba17ff --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_array.tscn @@ -0,0 +1,28 @@ +[gd_scene load_steps=4 format=3 uid="uid://btmy7ageqpyq1"] + +[ext_resource type="Script" uid="uid://kmn7rns1g4fc" path="res://addons/dialogic/Editor/Events/Fields/field_array.gd" id="2"] + +[sub_resource type="Image" id="Image_v6fhx"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_cpbga"] +image = SubResource("Image_v6fhx") + +[node name="Field_Array" type="HFlowContainer"] +offset_right = 329.0 +offset_bottom = 256.0 +size_flags_horizontal = 3 +script = ExtResource("2") + +[node name="Add" type="Button" parent="."] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Add value" +icon = SubResource("ImageTexture_cpbga") +flat = true diff --git a/addons/dialogic/Editor/Events/Fields/field_audio_preview.gd b/addons/dialogic/Editor/Events/Fields/field_audio_preview.gd new file mode 100644 index 0000000..d7da2bc --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_audio_preview.gd @@ -0,0 +1,52 @@ +@tool +extends DialogicVisualEditorField + + +var file_path: String + + +func _ready() -> void: + self.pressed.connect(_on_pressed) + %AudioStreamPlayer.finished.connect(_on_finished) + + +#region OVERWRITES +################################################################################ + + +## To be overwritten +func _set_value(value:Variant) -> void: + file_path = value + self.disabled = file_path.is_empty() + _stop() + +#endregion + + +#region SIGNAL METHODS +################################################################################ + +func _on_pressed() -> void: + if %AudioStreamPlayer.playing: + _stop() + elif not file_path.is_empty(): + _play() + + +func _on_finished() -> void: + _stop() + +#endregion + + +func _stop() -> void: + %AudioStreamPlayer.stop() + %AudioStreamPlayer.stream = null + self.icon = get_theme_icon("Play", "EditorIcons") + + +func _play() -> void: + if ResourceLoader.exists(file_path): + %AudioStreamPlayer.stream = load(file_path) + %AudioStreamPlayer.play() + self.icon = get_theme_icon("Stop", "EditorIcons") diff --git a/addons/dialogic/Editor/Events/Fields/field_audio_preview.gd.uid b/addons/dialogic/Editor/Events/Fields/field_audio_preview.gd.uid new file mode 100644 index 0000000..185e71c --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_audio_preview.gd.uid @@ -0,0 +1 @@ +uid://lnr24bngydn2 diff --git a/addons/dialogic/Editor/Events/Fields/field_audio_preview.tscn b/addons/dialogic/Editor/Events/Fields/field_audio_preview.tscn new file mode 100644 index 0000000..949d94c --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_audio_preview.tscn @@ -0,0 +1,12 @@ +[gd_scene load_steps=2 format=3 uid="uid://dotvrsumm5y5c"] + +[ext_resource type="Script" uid="uid://lnr24bngydn2" path="res://addons/dialogic/Editor/Events/Fields/field_audio_preview.gd" id="1_7wm54"] + +[node name="Field_Audio_Preview" type="Button"] +offset_right = 8.0 +offset_bottom = 8.0 +flat = true +script = ExtResource("1_7wm54") + +[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] +unique_name_in_owner = true diff --git a/addons/dialogic/Editor/Events/Fields/field_bool_button.gd b/addons/dialogic/Editor/Events/Fields/field_bool_button.gd new file mode 100644 index 0000000..1593be3 --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_bool_button.gd @@ -0,0 +1,38 @@ +@tool +extends DialogicVisualEditorField + +## Event block field for boolean values. + +#region MAIN METHODS +################################################################################ + +func _ready() -> void: + add_theme_color_override("icon_normal_color", get_theme_color("disabled_font_color", "Editor")) + add_theme_color_override("icon_hover_color", get_theme_color("warning_color", "Editor")) + add_theme_color_override("icon_pressed_color", get_theme_color("icon_saturation", "Editor")) + add_theme_color_override("icon_hover_pressed_color", get_theme_color("warning_color", "Editor")) + add_theme_color_override("icon_focus_color", get_theme_color("disabled_font_color", "Editor")) + self.toggled.connect(_on_value_changed) + + +func _load_display_info(info:Dictionary) -> void: + if info.has('editor_icon'): + if not is_inside_tree(): + await ready + self.icon = callv('get_theme_icon', info.editor_icon) + else: + self.icon = info.get('icon', null) + + +func _set_value(value:Variant) -> void: + self.button_pressed = true if value else false + +#endregion + + +#region SIGNAL METHODS +################################################################################ + +func _on_value_changed(value:bool) -> void: + value_changed.emit(property_name, value) +#endregion diff --git a/addons/dialogic/Editor/Events/Fields/field_bool_button.gd.uid b/addons/dialogic/Editor/Events/Fields/field_bool_button.gd.uid new file mode 100644 index 0000000..7696868 --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_bool_button.gd.uid @@ -0,0 +1 @@ +uid://do3x030t162u1 diff --git a/addons/dialogic/Editor/Events/Fields/field_bool_button.tscn b/addons/dialogic/Editor/Events/Fields/field_bool_button.tscn new file mode 100644 index 0000000..9a8a4df --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_bool_button.tscn @@ -0,0 +1,13 @@ +[gd_scene load_steps=2 format=3 uid="uid://iypxcctv080u"] + +[ext_resource type="Script" uid="uid://do3x030t162u1" path="res://addons/dialogic/Editor/Events/Fields/field_bool_button.gd" id="1_t1n1f"] + +[node name="Field_BoolButton" type="Button"] +theme_override_colors/icon_normal_color = Color(0, 0, 0, 1) +theme_override_colors/icon_pressed_color = Color(0, 0, 0, 1) +theme_override_colors/icon_hover_color = Color(0, 0, 0, 1) +theme_override_colors/icon_hover_pressed_color = Color(0, 0, 0, 1) +theme_override_colors/icon_focus_color = Color(0, 0, 0, 1) +toggle_mode = true +flat = true +script = ExtResource("1_t1n1f") diff --git a/addons/dialogic/Editor/Events/Fields/field_bool_check.gd b/addons/dialogic/Editor/Events/Fields/field_bool_check.gd new file mode 100644 index 0000000..d01a116 --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_bool_check.gd @@ -0,0 +1,30 @@ +@tool +extends DialogicVisualEditorField + +## Event block field for boolean values. + +#region MAIN METHODS +################################################################################ +func _ready() -> void: + self.toggled.connect(_on_value_changed) + + +func _load_display_info(info:Dictionary) -> void: + pass + + +func _set_value(value:Variant) -> void: + match DialogicUtil.get_variable_value_type(value): + DialogicUtil.VarTypes.STRING: + self.button_pressed = value and not value.strip_edges() == "false" + _: + self.button_pressed = value and true +#endregion + + +#region SIGNAL METHODS +################################################################################ +func _on_value_changed(value:bool) -> void: + value_changed.emit(property_name, value) + +#endregion diff --git a/addons/dialogic/Editor/Events/Fields/field_bool_check.gd.uid b/addons/dialogic/Editor/Events/Fields/field_bool_check.gd.uid new file mode 100644 index 0000000..716669b --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_bool_check.gd.uid @@ -0,0 +1 @@ +uid://ddxcyihcistll diff --git a/addons/dialogic/Editor/Events/Fields/field_bool_check.tscn b/addons/dialogic/Editor/Events/Fields/field_bool_check.tscn new file mode 100644 index 0000000..3eb2eda --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_bool_check.tscn @@ -0,0 +1,8 @@ +[gd_scene load_steps=2 format=3 uid="uid://dm5hxmhyyxgq"] + +[ext_resource type="Script" uid="uid://ddxcyihcistll" path="res://addons/dialogic/Editor/Events/Fields/field_bool_check.gd" id="1_ckmtx"] + +[node name="Field_BoolCheck" type="CheckButton"] +offset_right = 44.0 +offset_bottom = 24.0 +script = ExtResource("1_ckmtx") diff --git a/addons/dialogic/Editor/Events/Fields/field_color.gd b/addons/dialogic/Editor/Events/Fields/field_color.gd new file mode 100644 index 0000000..707dfc5 --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_color.gd @@ -0,0 +1,30 @@ +@tool +extends DialogicVisualEditorField + +## Event block field for color values. + +#region MAIN METHODS +################################################################################ + +func _ready() -> void: + self.color_changed.connect(_on_value_changed) + + +func _load_display_info(info:Dictionary) -> void: + self.edit_alpha = info.get("edit_alpha", true) + + +func _set_value(value:Variant) -> void: + if value is Color: + self.color = Color(value) + +#endregion + + +#region SIGNAL METHODS +################################################################################ + +func _on_value_changed(value: Color) -> void: + value_changed.emit(property_name, value) + +#endregion diff --git a/addons/dialogic/Editor/Events/Fields/field_color.gd.uid b/addons/dialogic/Editor/Events/Fields/field_color.gd.uid new file mode 100644 index 0000000..8bdd8f6 --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_color.gd.uid @@ -0,0 +1 @@ +uid://o26ppdmyst02 diff --git a/addons/dialogic/Editor/Events/Fields/field_color.tscn b/addons/dialogic/Editor/Events/Fields/field_color.tscn new file mode 100644 index 0000000..3b8fb36 --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_color.tscn @@ -0,0 +1,12 @@ +[gd_scene load_steps=2 format=3 uid="uid://4e0kjekan5e7"] + +[ext_resource type="Script" uid="uid://o26ppdmyst02" path="res://addons/dialogic/Editor/Events/Fields/field_color.gd" id="1_l666a"] + +[node name="Field_Color" type="ColorPickerButton"] +custom_minimum_size = Vector2(48, 0) +offset_right = 64.0 +offset_bottom = 31.0 +theme_type_variation = &"DialogicEventEdit" +text = " " +color = Color(1, 1, 1, 1) +script = ExtResource("1_l666a") diff --git a/addons/dialogic/Editor/Events/Fields/field_condition.gd b/addons/dialogic/Editor/Events/Fields/field_condition.gd new file mode 100644 index 0000000..9e0ef1a --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_condition.gd @@ -0,0 +1,266 @@ +@tool +extends DialogicVisualEditorField + +## Event block field for displaying conditions in either a simple or complex way. + +var _current_value1: Variant = "" +var _current_value2: Variant = "" + +#region MAIN METHODS +################################################################################ + +func _set_value(value:Variant) -> void: + var too_complex := is_too_complex(value) + %ToggleComplex.disabled = too_complex + %ToggleComplex.button_pressed = too_complex + %ComplexEditor.visible = too_complex + %SimpleEditor.visible = !too_complex + %ComplexEditor.text = value + if not too_complex: + load_simple_editor(value) + + + +func _autofocus() -> void: + %Value1Variable.grab_focus() + +#endregion + +func _ready() -> void: + for i in [%Value1Type, %Value2Type]: + i.options = [{ + 'label': 'String', + 'icon': ["String", "EditorIcons"], + 'value': 0 + },{ + 'label': 'Number', + 'icon': ["float", "EditorIcons"], + 'value': 1 + },{ + 'label': 'Variable', + 'icon': load("res://addons/dialogic/Editor/Images/Pieces/variable.svg"), + 'value': 2 + },{ + 'label': 'Bool', + 'icon': ["bool", "EditorIcons"], + 'value': 3 + },{ + 'label': 'Expression', + 'icon': ["Variant", "EditorIcons"], + 'value': 4 + }] + i.symbol_only = true + i.value_changed.connect(value_type_changed.bind(i.name)) + i.value_changed.connect(something_changed) + i.tooltip_text = "Change type" + + + for i in [%Value1Variable, %Value2Variable]: + i.suggestions_func = get_variable_suggestions + i.value_changed.connect(something_changed) + + %Value1Number.value_changed.connect(something_changed) + %Value2Number.value_changed.connect(something_changed) + %Value1Text.value_changed.connect(something_changed) + %Value2Text.value_changed.connect(something_changed) + %Value1Bool.value_changed.connect(something_changed) + %Value2Bool.value_changed.connect(something_changed) + + %ToggleComplex.icon = get_theme_icon("Enum", "EditorIcons") + + %Operator.value_changed.connect(something_changed) + %Operator.options = [ + {'label': '==', 'value': '=='}, + {'label': '>', 'value': '>'}, + {'label': '<', 'value': '<'}, + {'label': '<=', 'value': '<='}, + {'label': '>=', 'value': '>='}, + {'label': '!=', 'value': '!='} + ] + + +func load_simple_editor(condition_string:String) -> void: + var data := complex2simple(condition_string) + %Value1Type.set_value(get_value_type(data[0], 2)) + _current_value1 = data[0] + value_type_changed('', get_value_type(data[0], 2), 'Value1') + %Operator.set_value(data[1].strip_edges()) + %Value2Type.set_value(get_value_type(data[2], 0)) + _current_value2 = data[2] + value_type_changed('', get_value_type(data[2], 0), 'Value2') + + +func value_type_changed(property:String, value_type:int, value_name:String) -> void: + value_name = value_name.trim_suffix('Type') + get_node('%'+value_name+'Variable').hide() + get_node('%'+value_name+'Text').hide() + get_node('%'+value_name+'Number').hide() + get_node('%'+value_name+'Bool').hide() + var current_val: Variant = "" + if '1' in value_name: + current_val = _current_value1 + else: + current_val = _current_value2 + match value_type: + 0: + get_node('%'+value_name+'Text').show() + get_node('%'+value_name+'Text').set_value(trim_value(current_val, value_type)) + 1: + get_node('%'+value_name+'Number').show() + get_node('%'+value_name+'Number').set_value(float(current_val.strip_edges())) + 2: + get_node('%'+value_name+'Variable').show() + get_node('%'+value_name+'Variable').set_value(trim_value(current_val, value_type)) + 3: + get_node('%'+value_name+'Bool').show() + get_node('%'+value_name+'Bool').set_value(trim_value(current_val, value_type)) + 4: + get_node('%'+value_name+'Text').show() + get_node('%'+value_name+'Text').set_value(str(current_val)) + + +func get_value_type(value:String, default:int) -> int: + value = value.strip_edges() + if value.begins_with('"') and value.ends_with('"') and value.count('"')-value.count('\\"') == 2: + return 0 + elif value.begins_with('{') and value.ends_with('}') and value.count('{') == 1: + return 2 + elif value == "true" or value == "false": + return 3 + else: + if value.is_empty(): + return default + if value.is_valid_float(): + return 1 + else: + return 4 + + +func prep_value(value:Variant, value_type:int) -> String: + if value != null: value = str(value) + else: value = "" + value = value.strip_edges() + match value_type: + 0: return '"'+value.replace('"', '\\"')+'"' + 2: return '{'+value+'}' + _: return value + + +func trim_value(value:Variant, value_type:int) -> String: + value = value.strip_edges() + match value_type: + 0: return value.trim_prefix('"').trim_suffix('"').replace('\\"', '"') + 2: return value.trim_prefix('{').trim_suffix('}') + 3: + if value == "true" or (value and (typeof(value) != TYPE_STRING or value != "false")): + return "true" + else: + return "false" + _: return value + + +func something_changed(fake_arg1=null, fake_arg2 = null): + if %ComplexEditor.visible: + value_changed.emit(property_name, %ComplexEditor.text) + return + + + match %Value1Type.current_value: + 0: _current_value1 = prep_value(%Value1Text.text, %Value1Type.current_value) + 1: _current_value1 = str(%Value1Number.get_value()) + 2: _current_value1 = prep_value(%Value1Variable.current_value, %Value1Type.current_value) + 3: _current_value1 = prep_value(%Value1Bool.button_pressed, %Value1Type.current_value) + _: _current_value1 = prep_value(%Value1Text.text, %Value1Type.current_value) + + match %Value2Type.current_value: + 0: _current_value2 = prep_value(%Value2Text.text, %Value2Type.current_value) + 1: _current_value2 = str(%Value2Number.get_value()) + 2: _current_value2 = prep_value(%Value2Variable.current_value, %Value2Type.current_value) + 3: _current_value2 = prep_value(%Value2Bool.button_pressed, %Value2Type.current_value) + _: _current_value2 = prep_value(%Value2Text.text, %Value2Type.current_value) + + if event_resource: + if not %Operator.text in ['==', '!='] and get_value_type(_current_value2, 0) in [0, 3]: + event_resource.ui_update_warning.emit("This operator doesn't work with strings and booleans.") + else: + event_resource.ui_update_warning.emit("") + + value_changed.emit(property_name, get_simple_condition()) + + +func is_too_complex(condition:String) -> bool: + if condition.strip_edges().is_empty(): + return false + + var comparison_count: int = 0 + for i in ['==', '!=', '<=', '<', '>', '>=']: + comparison_count += condition.count(i) + if comparison_count == 1: + return false + + return true + + +## Combines the info from the simple editor fields into a string condition +func get_simple_condition() -> String: + return _current_value1 +" "+ %Operator.text +" "+ _current_value2 + + +func complex2simple(condition:String) -> Array: + if is_too_complex(condition) or condition.strip_edges().is_empty(): + return ['', '==',''] + + for i in ['==', '!=', '<=', '<', '>', '>=']: + if i in condition: + var cond_split := Array(condition.split(i, false)) + return [cond_split[0], i, cond_split[1]] + + return ['', '==',''] + + +func _on_toggle_complex_toggled(button_pressed:bool) -> void: + if button_pressed: + %ComplexEditor.show() + %SimpleEditor.hide() + %ComplexEditor.text = get_simple_condition() + else: + if !is_too_complex(%ComplexEditor.text): + %ComplexEditor.hide() + %SimpleEditor.show() + load_simple_editor(%ComplexEditor.text) + + +func _on_complex_editor_text_changed(new_text:String) -> void: + %ToggleComplex.disabled = is_too_complex(%ComplexEditor.text) + something_changed() + + +func get_variable_suggestions(filter:String) -> Dictionary: + var suggestions := {} + var vars: Dictionary = ProjectSettings.get_setting('dialogic/variables', {}) + for var_path in DialogicUtil.list_variables(vars): + suggestions[var_path] = {'value':var_path, 'editor_icon':["ClassList", "EditorIcons"]} + return suggestions + + +func _on_value_1_variable_value_changed(property_name: Variant, value: Variant) -> void: + var type := DialogicUtil.get_variable_type(value) + match type: + DialogicUtil.VarTypes.BOOL: + if not %Operator.text in ["==", "!="]: + %Operator.text = "==" + if get_value_type(_current_value2, 3) in [0, 1]: + %Value2Type.insert_options() + %Value2Type.index_pressed(3) + DialogicUtil.VarTypes.STRING: + if not %Operator.text in ["==", "!="]: + %Operator.text = "==" + if get_value_type(_current_value2, 0) in [1, 3]: + %Value2Type.insert_options() + %Value2Type.index_pressed(0) + DialogicUtil.VarTypes.FLOAT, DialogicUtil.VarTypes.INT: + if get_value_type(_current_value2, 1) in [0,3]: + %Value2Type.insert_options() + %Value2Type.index_pressed(1) + + something_changed() diff --git a/addons/dialogic/Editor/Events/Fields/field_condition.gd.uid b/addons/dialogic/Editor/Events/Fields/field_condition.gd.uid new file mode 100644 index 0000000..5c18a72 --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_condition.gd.uid @@ -0,0 +1 @@ +uid://gx1mq5xn4mri diff --git a/addons/dialogic/Editor/Events/Fields/field_condition.tscn b/addons/dialogic/Editor/Events/Fields/field_condition.tscn new file mode 100644 index 0000000..67ef8df --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_condition.tscn @@ -0,0 +1,101 @@ +[gd_scene load_steps=9 format=3 uid="uid://ir6334lqtuwt"] + +[ext_resource type="Script" uid="uid://gx1mq5xn4mri" path="res://addons/dialogic/Editor/Events/Fields/field_condition.gd" id="1_owjj0"] +[ext_resource type="PackedScene" uid="uid://d3bhehatwoio" path="res://addons/dialogic/Editor/Events/Fields/field_options_fixed.tscn" id="2_f6v80"] +[ext_resource type="PackedScene" uid="uid://c0vkcehgjsjy" path="res://addons/dialogic/Editor/Events/Fields/field_text_singleline.tscn" id="3_3kfwc"] +[ext_resource type="PackedScene" uid="uid://kdpp3mibml33" path="res://addons/dialogic/Editor/Events/Fields/field_number.tscn" id="4_6q3a6"] +[ext_resource type="PackedScene" uid="uid://dm5hxmhyyxgq" path="res://addons/dialogic/Editor/Events/Fields/field_bool_check.tscn" id="5_1x02a"] +[ext_resource type="PackedScene" uid="uid://dpwhshre1n4t6" path="res://addons/dialogic/Editor/Events/Fields/field_options_dynamic.tscn" id="6_5a2xd"] + +[sub_resource type="Image" id="Image_dmt4s"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_81s3d"] +image = SubResource("Image_dmt4s") + +[node name="Field_Condition" type="HBoxContainer"] +offset_right = 77.0 +offset_bottom = 31.0 +script = ExtResource("1_owjj0") + +[node name="SimpleEditor" type="HBoxContainer" parent="."] +unique_name_in_owner = true +layout_mode = 2 + +[node name="Value1Type" parent="SimpleEditor" instance=ExtResource("2_f6v80")] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Change type" +text = "" + +[node name="Value1Text" parent="SimpleEditor" instance=ExtResource("3_3kfwc")] +unique_name_in_owner = true +layout_mode = 2 + +[node name="Value1Number" parent="SimpleEditor" instance=ExtResource("4_6q3a6")] +unique_name_in_owner = true +layout_mode = 2 + +[node name="Value1Bool" parent="SimpleEditor" instance=ExtResource("5_1x02a")] +unique_name_in_owner = true +layout_mode = 2 + +[node name="Value1Variable" parent="SimpleEditor" instance=ExtResource("6_5a2xd")] +unique_name_in_owner = true +layout_mode = 2 +placeholder_text = "Variable" + +[node name="Operator" parent="SimpleEditor" instance=ExtResource("2_f6v80")] +unique_name_in_owner = true +layout_mode = 2 + +[node name="Value2Type" parent="SimpleEditor" instance=ExtResource("2_f6v80")] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Change type" +text = "" + +[node name="Value2Text" parent="SimpleEditor" instance=ExtResource("3_3kfwc")] +unique_name_in_owner = true +layout_mode = 2 + +[node name="Value2Number" parent="SimpleEditor" instance=ExtResource("4_6q3a6")] +unique_name_in_owner = true +layout_mode = 2 + +[node name="Value2Variable" parent="SimpleEditor" instance=ExtResource("6_5a2xd")] +unique_name_in_owner = true +layout_mode = 2 +placeholder_text = "Variable" + +[node name="Value2Bool" parent="SimpleEditor" instance=ExtResource("5_1x02a")] +unique_name_in_owner = true +layout_mode = 2 + +[node name="ComplexEditor" type="LineEdit" parent="."] +unique_name_in_owner = true +visible = false +custom_minimum_size = Vector2(150, 0) +layout_mode = 2 +mouse_filter = 1 +theme_type_variation = &"DialogicEventEdit" +text = "VAR.Player.Health > 20 and VAR.Counter < 3 and randi()%3 == 2" +placeholder_text = "Enter condition" +expand_to_text_length = true + +[node name="ToggleComplex" type="Button" parent="."] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Use complex expression" +toggle_mode = true +icon = SubResource("ImageTexture_81s3d") + +[connection signal="value_changed" from="SimpleEditor/Value1Variable" to="." method="_on_value_1_variable_value_changed"] +[connection signal="text_changed" from="ComplexEditor" to="." method="_on_complex_editor_text_changed"] +[connection signal="toggled" from="ToggleComplex" to="." method="_on_toggle_complex_toggled"] diff --git a/addons/dialogic/Editor/Events/Fields/field_dictionary.gd b/addons/dialogic/Editor/Events/Fields/field_dictionary.gd new file mode 100644 index 0000000..f76ef27 --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_dictionary.gd @@ -0,0 +1,60 @@ +@tool +extends DialogicVisualEditorField + +## Event block field for editing dictionaries. + +const DictionaryValue = "res://addons/dialogic/Editor/Events/Fields/dictionary_part.tscn" + +func _ready() -> void: + %Add.icon = get_theme_icon("Add", "EditorIcons") + + +func _set_value(value:Variant) -> void: + for child in get_children(): + if child != %Add: + child.queue_free() + + var dict: Dictionary + + # attempt to take dictionary values, create a fresh one if not possible + if typeof(value) == TYPE_DICTIONARY: + dict = value + elif typeof(value) == TYPE_STRING: + if value.begins_with('{'): + var result: Variant = JSON.parse_string(value) + if result != null: + dict = result as Dictionary + + var keys := dict.keys() + var values := dict.values() + + for index in dict.size(): + var x: Node = load(DictionaryValue).instantiate() + add_child(x) + x.set_value(values[index]) + x.set_key(keys[index]) + x.value_changed.connect(recalculate_values) + move_child(%Add, -1) + + +func _on_value_changed(value:Variant) -> void: + value_changed.emit(property_name, value) + + +func recalculate_values() -> void: + var dict := {} + for child in get_children(): + if child != %Add and !child.is_queued_for_deletion(): + dict[child.get_key()] = child.get_value() + _on_value_changed(dict) + + +func _on_AddButton_pressed() -> void: + var x: Control = load(DictionaryValue).instantiate() + add_child(x) + x.set_key("") + x.set_value("") + x.value_changed.connect(recalculate_values) + x.focus_key() + recalculate_values() + move_child(%Add, -1) diff --git a/addons/dialogic/Editor/Events/Fields/field_dictionary.gd.uid b/addons/dialogic/Editor/Events/Fields/field_dictionary.gd.uid new file mode 100644 index 0000000..4dcbcef --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_dictionary.gd.uid @@ -0,0 +1 @@ +uid://cjhy1b218xsh0 diff --git a/addons/dialogic/Editor/Events/Fields/field_dictionary.tscn b/addons/dialogic/Editor/Events/Fields/field_dictionary.tscn new file mode 100644 index 0000000..801906e --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_dictionary.tscn @@ -0,0 +1,28 @@ +[gd_scene load_steps=4 format=3 uid="uid://c74bnmhefu72w"] + +[ext_resource type="Script" uid="uid://cjhy1b218xsh0" path="res://addons/dialogic/Editor/Events/Fields/field_dictionary.gd" id="1_p4kmu"] + +[sub_resource type="Image" id="Image_mpo34"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_cpbga"] +image = SubResource("Image_mpo34") + +[node name="Field_Dictionary" type="HFlowContainer"] +size_flags_horizontal = 3 +script = ExtResource("1_p4kmu") + +[node name="Add" type="Button" parent="."] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Add key-value pair" +icon = SubResource("ImageTexture_cpbga") +flat = true + +[connection signal="pressed" from="Add" to="." method="_on_AddButton_pressed"] diff --git a/addons/dialogic/Editor/Events/Fields/field_file.gd b/addons/dialogic/Editor/Events/Fields/field_file.gd new file mode 100644 index 0000000..4ad03a0 --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_file.gd @@ -0,0 +1,152 @@ +@tool +extends DialogicVisualEditorField + +## Event block field for selecting a file or directory. + +#region VARIABLES +################################################################################ + +@export var file_filter := "" +@export var placeholder := "" +@export var file_mode: EditorFileDialog.FileMode = EditorFileDialog.FILE_MODE_OPEN_FILE +var resource_icon: Texture: + get: + return resource_icon + set(new_icon): + resource_icon = new_icon + %Icon.texture = new_icon + if new_icon == null: + %Field.theme_type_variation = "" + else: + %Field.theme_type_variation = "LineEditWithIcon" + +var max_width := 200 +var current_value: String +var hide_reset := false +var show_editing_button := false + +#endregion + + +#region MAIN METHODS +################################################################################ + +func _ready() -> void: + $FocusStyle.add_theme_stylebox_override('panel', get_theme_stylebox('focus', 'DialogicEventEdit')) + + %OpenButton.icon = get_theme_icon("Folder", "EditorIcons") + %OpenButton.button_down.connect(_on_OpenButton_pressed) + + %EditButton.icon = get_theme_icon("Edit", "EditorIcons") + %EditButton.button_down.connect(_on_EditButton_pressed) + + %ClearButton.icon = get_theme_icon("Reload", "EditorIcons") + %ClearButton.button_up.connect(clear_path) + %ClearButton.visible = !hide_reset + + %Field.set_drag_forwarding(Callable(), self._can_drop_data_fw, self._drop_data_fw) + %Field.placeholder_text = placeholder + + +func _load_display_info(info:Dictionary) -> void: + file_filter = info.get('file_filter', '') + placeholder = info.get('placeholder', '') + resource_icon = info.get('icon', null) + await ready + + if resource_icon == null and info.has('editor_icon'): + resource_icon = callv('get_theme_icon', info.editor_icon) + + +func _set_value(value: Variant) -> void: + current_value = value + var text: String = value + + if file_mode != EditorFileDialog.FILE_MODE_OPEN_DIR: + text = value.get_file() + %Field.tooltip_text = value + + if %Field.get_theme_font('font').get_string_size( + text, 0, -1, + %Field.get_theme_font_size('font_size')).x > max_width: + %Field.expand_to_text_length = false + %Field.custom_minimum_size.x = max_width + %Field.size.x = 0 + else: + %Field.custom_minimum_size.x = 0 + %Field.expand_to_text_length = true + + %EditButton.visible = show_editing_button and value + + if not %Field.text == text: + value_changed.emit(property_name, current_value) + %Field.text = text + + %ClearButton.visible = not value.is_empty() and not hide_reset + + +#endregion + + +#region BUTTONS +################################################################################ + +func _on_OpenButton_pressed() -> void: + find_parent('EditorView').godot_file_dialog(_on_file_dialog_selected, file_filter, file_mode, "Open "+ property_name) + + +func _on_file_dialog_selected(path:String) -> void: + _set_value(path) + value_changed.emit(property_name, path) + + +func _on_EditButton_pressed() -> void: + if ResourceLoader.exists(current_value): + EditorInterface.inspect_object(load(current_value), "", true) + + +func clear_path() -> void: + _set_value("") + value_changed.emit(property_name, "") + +#endregion + + +#region DRAG AND DROP +################################################################################ + +func _can_drop_data_fw(_at_position: Vector2, data: Variant) -> bool: + if typeof(data) == TYPE_DICTIONARY and data.has('files') and len(data.files) == 1: + + if file_filter: + + if '*.'+data.files[0].get_extension() in file_filter: + return true + + else: return true + + return false + + +func _drop_data_fw(_at_position: Vector2, data: Variant) -> void: + var file: String = data.files[0] + _on_file_dialog_selected(file) + +#endregion + + +#region VISUALS FOR FOCUS +################################################################################ + +func _on_field_focus_entered() -> void: + $FocusStyle.show() + + +func _on_field_focus_exited() -> void: + $FocusStyle.hide() + var field_text: String = %Field.text + if current_value == field_text or (file_mode != EditorFileDialog.FILE_MODE_OPEN_DIR and current_value.get_file() == field_text): + return + _on_file_dialog_selected(field_text) + +#endregion diff --git a/addons/dialogic/Editor/Events/Fields/field_file.gd.uid b/addons/dialogic/Editor/Events/Fields/field_file.gd.uid new file mode 100644 index 0000000..0c00aa9 --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_file.gd.uid @@ -0,0 +1 @@ +uid://buepm260xnmaa diff --git a/addons/dialogic/Editor/Events/Fields/field_file.tscn b/addons/dialogic/Editor/Events/Fields/field_file.tscn new file mode 100644 index 0000000..f8dccd3 --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_file.tscn @@ -0,0 +1,78 @@ +[gd_scene load_steps=6 format=3 uid="uid://7mvxuaulctcq"] + +[ext_resource type="Script" uid="uid://buepm260xnmaa" path="res://addons/dialogic/Editor/Events/Fields/field_file.gd" id="1_0grcf"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_tr837"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_6b7on"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_wq6bt"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ye6ml"] +content_margin_left = 4.0 +content_margin_top = 4.0 +content_margin_right = 4.0 +content_margin_bottom = 4.0 +bg_color = Color(1, 0.365, 0.365, 1) +draw_center = false +border_width_left = 2 +border_width_top = 2 +border_width_right = 2 +border_width_bottom = 2 +corner_detail = 1 + +[node name="Field_File" type="MarginContainer"] +offset_right = 314.0 +offset_bottom = 40.0 +theme_type_variation = &"DialogicEventEdit" +script = ExtResource("1_0grcf") + +[node name="BG" type="PanelContainer" parent="."] +layout_mode = 2 +theme_type_variation = &"DialogicEventEdit" + +[node name="HBox" type="HBoxContainer" parent="BG"] +layout_mode = 2 +alignment = 2 + +[node name="Icon" type="TextureRect" parent="BG/HBox"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 4 +mouse_filter = 2 + +[node name="Field" type="LineEdit" parent="BG/HBox"] +unique_name_in_owner = true +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +size_flags_horizontal = 3 +mouse_filter = 1 +theme_override_styles/normal = SubResource("StyleBoxEmpty_tr837") +theme_override_styles/read_only = SubResource("StyleBoxEmpty_6b7on") +theme_override_styles/focus = SubResource("StyleBoxEmpty_wq6bt") +expand_to_text_length = true + +[node name="OpenButton" type="Button" parent="BG/HBox"] +unique_name_in_owner = true +layout_mode = 2 +flat = true + +[node name="EditButton" type="Button" parent="BG/HBox"] +unique_name_in_owner = true +layout_mode = 2 +flat = true + +[node name="ClearButton" type="Button" parent="BG/HBox"] +unique_name_in_owner = true +layout_mode = 2 +flat = true + +[node name="FocusStyle" type="Panel" parent="."] +visible = false +layout_mode = 2 +mouse_filter = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_ye6ml") + +[connection signal="focus_entered" from="BG/HBox/Field" to="." method="_on_field_focus_entered"] +[connection signal="focus_exited" from="BG/HBox/Field" to="." method="_on_field_focus_exited"] +[connection signal="text_submitted" from="BG/HBox/Field" to="." method="_on_file_dialog_selected"] diff --git a/addons/dialogic/Editor/Events/Fields/field_flex_value.gd b/addons/dialogic/Editor/Events/Fields/field_flex_value.gd new file mode 100644 index 0000000..be7a98d --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_flex_value.gd @@ -0,0 +1,154 @@ +@tool +extends HBoxContainer + +## Event block field part for a value that can change type. + +signal value_changed + +var value_field: Node +var value_type: int = -1 + +var current_value: Variant + +func _ready() -> void: + %ValueType.options = [{ + 'label': 'String', + 'icon': ["String", "EditorIcons"], + 'value': TYPE_STRING + },{ + 'label': 'Number (int)', + 'icon': ["int", "EditorIcons"], + 'value': TYPE_INT + },{ + 'label': 'Number (float)', + 'icon': ["float", "EditorIcons"], + 'value': TYPE_FLOAT + },{ + 'label': 'Boolean', + 'icon': ["bool", "EditorIcons"], + 'value': TYPE_BOOL + },{ + 'label': 'Expression', + 'icon': ["Variant", "EditorIcons"], + 'value': TYPE_MAX + } + ] + %ValueType.symbol_only = true + %ValueType.value_changed.connect(_on_type_changed.bind()) + %ValueType.tooltip_text = "Change type" + + +func set_value(value:Variant): + change_field_type(deduce_type(value)) + %ValueType.set_value(deduce_type(value)) + current_value = value + match value_type: + TYPE_BOOL: + value_field.button_pressed = value + TYPE_STRING: + value_field.text = value + TYPE_FLOAT, TYPE_INT: + value_field.set_value(value) + TYPE_MAX, _: + value_field.text = value.trim_prefix('@') + + +func deduce_type(value:Variant) -> int: + if value is String and value.begins_with('@'): + return TYPE_MAX + else: + return typeof(value) + + +func _on_type_changed(prop:String, type:Variant) -> void: + if type == value_type: + return + + match type: + TYPE_BOOL: + if typeof(current_value) == TYPE_STRING: + current_value = DialogicUtil.str_to_bool(current_value) + elif value_type == TYPE_FLOAT or value_type == TYPE_INT: + current_value = bool(current_value) + else: + current_value = true if current_value else false + set_value(current_value) + TYPE_STRING: + current_value = str(current_value).trim_prefix('@') + set_value(current_value) + TYPE_FLOAT: + current_value = float(current_value) + set_value(current_value) + TYPE_INT: + current_value = int(current_value) + set_value(current_value) + TYPE_MAX,_: + current_value = var_to_str(current_value) + set_value('@'+current_value) + + + emit_signal.call_deferred('value_changed') + + +func get_value() -> Variant: + return current_value + + +func _on_delete_pressed() -> void: + queue_free() + value_changed.emit() + + +func change_field_type(type:int) -> void: + if type == value_type: + return + + value_type = type + + if value_field: + value_field.queue_free() + match type: + TYPE_BOOL: + value_field = CheckBox.new() + value_field.toggled.connect(_on_bool_toggled) + TYPE_STRING: + value_field = LineEdit.new() + value_field.theme_type_variation = "DialogicEventEdit" + value_field.text_changed.connect(_on_str_text_changed) + value_field.expand_to_text_length = true + TYPE_FLOAT, TYPE_INT: + value_field = load("res://addons/dialogic/Editor/Events/Fields/field_number.tscn").instantiate() + if type == TYPE_FLOAT: + value_field.use_float_mode() + else: + value_field.use_int_mode() + value_field.value_changed.connect(_on_number_value_changed.bind(type == TYPE_INT)) + TYPE_MAX, _: + value_field = LineEdit.new() + value_field.expand_to_text_length = true + value_field.text_changed.connect(_on_expression_changed) + add_child(value_field) + move_child(value_field, 1) + + +func _on_bool_toggled(value:bool) -> void: + current_value = value + value_changed.emit() + + +func _on_str_text_changed(value:String) -> void: + current_value = value + value_changed.emit() + + +func _on_expression_changed(value:String) -> void: + current_value = '@'+value + value_changed.emit() + + +func _on_number_value_changed(prop:String, value:float, int := false) -> void: + if int: + current_value = int(value) + else: + current_value = value + value_changed.emit() diff --git a/addons/dialogic/Editor/Events/Fields/field_flex_value.gd.uid b/addons/dialogic/Editor/Events/Fields/field_flex_value.gd.uid new file mode 100644 index 0000000..2bc636d --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_flex_value.gd.uid @@ -0,0 +1 @@ +uid://bl8pqdbnw005y diff --git a/addons/dialogic/Editor/Events/Fields/field_flex_value.tscn b/addons/dialogic/Editor/Events/Fields/field_flex_value.tscn new file mode 100644 index 0000000..18799bb --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_flex_value.tscn @@ -0,0 +1,15 @@ +[gd_scene load_steps=3 format=3 uid="uid://dl08ubinx6ugu"] + +[ext_resource type="Script" uid="uid://bl8pqdbnw005y" path="res://addons/dialogic/Editor/Events/Fields/field_flex_value.gd" id="1_m5nnp"] +[ext_resource type="PackedScene" uid="uid://d3bhehatwoio" path="res://addons/dialogic/Editor/Events/Fields/field_options_fixed.tscn" id="3_h10fc"] + +[node name="FlexValue" type="HBoxContainer"] +offset_right = 65.0 +offset_bottom = 22.0 +script = ExtResource("1_m5nnp") + +[node name="ValueType" parent="." instance=ExtResource("3_h10fc")] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Change type" +text = "" diff --git a/addons/dialogic/Editor/Events/Fields/field_image_preview.gd b/addons/dialogic/Editor/Events/Fields/field_image_preview.gd new file mode 100644 index 0000000..d5e93f4 --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_image_preview.gd @@ -0,0 +1,64 @@ +@tool +extends DialogicVisualEditorField + + +var body: Control +var image_path: String + +func _ready() -> void: + body = find_parent('Body') as Control + body.visibility_changed.connect(_on_body_visibility_toggled) + + +func _enter_tree() -> void: + %HiddenLabel.add_theme_color_override( + 'font_color', + event_resource.event_color.lerp(get_theme_color("font_color", "Editor"), 0.8)) + + +#region OVERWRITES +################################################################################ + +## To be overwritten +func _set_value(value:Variant) -> void: + if ResourceLoader.exists(value): + image_path = value + + if is_preview_enabled(): + self.texture = load(value) + custom_minimum_size.y = get_preview_size() + else: + self.texture = null + + minimum_size_changed.emit() + +#endregion + + +#region SIGNAL METHODS +################################################################################ + + +func _on_body_visibility_toggled() -> void: + custom_minimum_size.y = 0 + + if body.is_visible: + %HiddenLabel.visible = not is_preview_enabled() + + if is_preview_enabled() and ResourceLoader.exists(image_path): + self.texture = load(image_path) + custom_minimum_size.y = get_preview_size() + else: + self.texture = null + + minimum_size_changed.emit() + +#endregion + +func is_preview_enabled() -> bool: + return get_preview_size() != 0 + + +func get_preview_size() -> int: + return DialogicUtil.get_editor_setting( + "image_preview_height", 50) * DialogicUtil.get_editor_scale() diff --git a/addons/dialogic/Editor/Events/Fields/field_image_preview.gd.uid b/addons/dialogic/Editor/Events/Fields/field_image_preview.gd.uid new file mode 100644 index 0000000..4c45621 --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_image_preview.gd.uid @@ -0,0 +1 @@ +uid://u6evsmx7tynf diff --git a/addons/dialogic/Editor/Events/Fields/field_image_preview.tscn b/addons/dialogic/Editor/Events/Fields/field_image_preview.tscn new file mode 100644 index 0000000..e6007f0 --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_image_preview.tscn @@ -0,0 +1,23 @@ +[gd_scene load_steps=2 format=3 uid="uid://bar0t74j5v4sa"] + +[ext_resource type="Script" uid="uid://u6evsmx7tynf" path="res://addons/dialogic/Editor/Events/Fields/field_image_preview.gd" id="1_e5vbc"] + +[node name="Field_Image_Preview" type="TextureRect"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 0 +expand_mode = 2 +stretch_mode = 4 +script = ExtResource("1_e5vbc") + +[node name="HiddenLabel" type="Label" parent="."] +unique_name_in_owner = true +visible = false +layout_mode = 0 +tooltip_text = "Preview hidden because project setting 'dialogic/accessibility/image_preview_height' is 0." +mouse_filter = 1 +text = "(Hidden)" diff --git a/addons/dialogic/Editor/Events/Fields/field_number.gd b/addons/dialogic/Editor/Events/Fields/field_number.gd new file mode 100644 index 0000000..27145d9 --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_number.gd @@ -0,0 +1,204 @@ +@tool +class_name DialogicVisualEditorFieldNumber +extends DialogicVisualEditorField + +## Event block field for integers and floats. Improved version of the native spinbox. + +@export_enum("Float", "Int", "Decible") var mode := 0 : + set(new_mode): + mode = new_mode + match mode: + 0: use_float_mode() #FLOAT + 1: use_int_mode() #INT + 2: use_decibel_mode() #DECIBLE +@export var allow_string: bool = false +@export var step: float = 0.1 +@export var enforce_step: bool = true +@export var min_value: float = -INF +@export var max_value: float = INF +@export var value = 0.0 +@export var prefix: String = "" +@export var suffix: String = "" + +var _is_holding_button: bool = false #For handling incrementing while holding key or click + +#region MAIN METHODS +################################################################################ + +func _ready() -> void: + if %Value.text.is_empty(): + set_value(value) + + update_prefix(prefix) + update_suffix(suffix) + + +func _load_display_info(info: Dictionary) -> void: + + for option in info.keys(): + match option: + 'min': min_value = info[option] + 'max': max_value = info[option] + 'prefix': update_prefix(info[option]) + 'suffix': update_suffix(info[option]) + 'step': + enforce_step = true + step = info[option] + 'hide_step_button': %Spin.hide() + + mode = info.get('mode', mode) + +func _set_value(new_value: Variant) -> void: + _on_value_text_submitted(str(new_value), true) + %Value.tooltip_text = tooltip_text + + +func _autofocus() -> void: + %Value.grab_focus() + + +func get_value() -> float: + return value + + +func use_float_mode() -> void: + update_suffix("") + enforce_step = false + + +func use_int_mode() -> void: + update_suffix("") + enforce_step = true + + +func use_decibel_mode() -> void: + max_value = 6 + update_suffix("dB") + min_value = -80 + +#endregion + +#region UI FUNCTIONALITY +################################################################################ +var _stop_button_holding: Callable = func(button: BaseButton) -> void: + _is_holding_button = false + if button.button_up.get_connections().find(_stop_button_holding): + button.button_up.disconnect(_stop_button_holding) + if button.focus_exited.get_connections().find(_stop_button_holding): + button.focus_exited.disconnect(_stop_button_holding) + if button.mouse_exited.get_connections().find(_stop_button_holding): + button.mouse_exited.disconnect(_stop_button_holding) + + +func _holding_button(value_direction: int, button: BaseButton) -> void: + if _is_holding_button: + return + if _stop_button_holding.get_bound_arguments_count() > 0: + _stop_button_holding.unbind(0) + + _is_holding_button = true + + #Ensure removal of our value changing routine when it shouldn't run anymore + button.button_up.connect(_stop_button_holding.bind(button)) + button.focus_exited.connect(_stop_button_holding.bind(button)) + button.mouse_exited.connect(_stop_button_holding.bind(button)) + + var scene_tree: SceneTree = get_tree() + var delay_timer_ms: int = 600 + + #Instead of awaiting for the duration, await per-frame so we can catch any changes in _is_holding_button and exit completely + while(delay_timer_ms > 0): + if _is_holding_button == false: + return + var pre_time: int = Time.get_ticks_msec() + await scene_tree.process_frame + delay_timer_ms -= Time.get_ticks_msec() - pre_time + + var change_speed: float = 0.25 + + while(_is_holding_button == true): + await scene_tree.create_timer(change_speed).timeout + change_speed = maxf(0.05, change_speed - 0.01) + _on_value_text_submitted(str(value+(step * value_direction))) + + +func update_prefix(to_prefix: String) -> void: + prefix = to_prefix + %Prefix.visible = to_prefix != null and to_prefix != "" + %Prefix.text = prefix + + +func update_suffix(to_suffix: String) -> void: + suffix = to_suffix + %Suffix.visible = to_suffix != null and to_suffix != "" + %Suffix.text = suffix + +#endregion + +#region SIGNAL METHODS +################################################################################ +func _on_gui_input(event: InputEvent) -> void: + if event.is_action('ui_up') and event.get_action_strength('ui_up') > 0.5: + _on_value_text_submitted(str(value+step)) + elif event.is_action('ui_down') and event.get_action_strength('ui_down') > 0.5: + _on_value_text_submitted(str(value-step)) + + +func _on_increment_button_down(button: NodePath) -> void: + _on_value_text_submitted(str(value+step)) + _holding_button(1, get_node(button) as BaseButton) + + +func _on_decrement_button_down(button: NodePath) -> void: + _on_value_text_submitted(str(value-step)) + _holding_button(-1, get_node(button) as BaseButton) + + +func _on_value_text_submitted(new_text: String, no_signal:= false) -> void: + if new_text.is_empty() and not allow_string: + new_text = "0.0" + if new_text.is_valid_float(): + var temp: float = min(max(new_text.to_float(), min_value), max_value) + if not enforce_step: + value = temp + else: + value = snapped(temp, step) + elif allow_string: + value = new_text + + if int(step) == step and step != 0: + %Value.text = str(int(value)) + else: + %Value.text = str(value).pad_decimals( + max( + len(str(float(step)-floorf(step)))-2, + len(str(float(value)-floorf(value)))-2,)) + if not no_signal: + value_changed.emit(property_name, value) + # Visually disable Up or Down arrow when limit is reached to better indicate a limit has been hit + %Spin/Decrement.disabled = value <= min_value + %Spin/Increment.disabled = value >= max_value + + +# If prefix or suffix was clicked, select the actual value box instead and move the caret to the closest side. +func _on_sublabel_clicked(event: InputEvent) -> void: + if event is InputEventMouseButton and event.pressed and event.button_index == MOUSE_BUTTON_LEFT: + var mousePos: Vector2 = get_global_mouse_position() + mousePos.x -= get_minimum_size().x / 2 + if mousePos.x > global_position.x: + (%Value as LineEdit).caret_column = (%Value as LineEdit).text.length() + else: + (%Value as LineEdit).caret_column = 0 + (%Value as LineEdit).grab_focus() + + +func _on_value_focus_exited() -> void: + _on_value_text_submitted(%Value.text) + $Value_Panel.add_theme_stylebox_override('panel', get_theme_stylebox('panel', 'DialogicEventEdit')) + + +func _on_value_focus_entered() -> void: + $Value_Panel.add_theme_stylebox_override('panel', get_theme_stylebox('focus', 'DialogicEventEdit')) + %Value.select_all.call_deferred() + +#endregion diff --git a/addons/dialogic/Editor/Events/Fields/field_number.gd.uid b/addons/dialogic/Editor/Events/Fields/field_number.gd.uid new file mode 100644 index 0000000..57cc0b5 --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_number.gd.uid @@ -0,0 +1 @@ +uid://dbegwhxegm271 diff --git a/addons/dialogic/Editor/Events/Fields/field_number.tscn b/addons/dialogic/Editor/Events/Fields/field_number.tscn new file mode 100644 index 0000000..0e125d5 --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_number.tscn @@ -0,0 +1,160 @@ +[gd_scene load_steps=9 format=3 uid="uid://kdpp3mibml33"] + +[ext_resource type="Script" uid="uid://dbegwhxegm271" path="res://addons/dialogic/Editor/Events/Fields/field_number.gd" id="1_0jdnn"] +[ext_resource type="Texture2D" uid="uid://dh1ycbmw8anqh" path="res://addons/dialogic/Editor/Images/Interactable/increment_icon.svg" id="3_v5cne"] +[ext_resource type="Texture2D" uid="uid://brjikovneb63n" path="res://addons/dialogic/Editor/Images/Interactable/decrement_icon.svg" id="4_ph52o"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_sj3oj"] +content_margin_left = 3.0 +content_margin_right = 1.0 + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_8yqsu"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_smq50"] +content_margin_left = 2.0 +content_margin_right = 1.0 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_increment"] +content_margin_left = 2.0 +content_margin_top = 6.0 +content_margin_right = 2.0 +content_margin_bottom = 2.0 +bg_color = Color(0.94, 0.94, 0.94, 0) +border_color = Color(0, 0, 0, 0) + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_decrement"] +content_margin_left = 2.0 +content_margin_top = 2.0 +content_margin_right = 2.0 +content_margin_bottom = 6.0 +bg_color = Color(0.94, 0.94, 0.94, 0) +border_color = Color(0, 0, 0, 0) + +[node name="Field_Number" type="HBoxContainer"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_right = -1011.0 +offset_bottom = -617.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 +script = ExtResource("1_0jdnn") + +[node name="Value_Panel" type="PanelContainer" parent="."] +layout_mode = 2 +size_flags_horizontal = 3 +theme_type_variation = &"DialogicEventEdit" + +[node name="Layout" type="HBoxContainer" parent="Value_Panel"] +layout_mode = 2 +theme_override_constants/separation = 0 + +[node name="Prefix" type="RichTextLabel" parent="Value_Panel/Layout"] +unique_name_in_owner = true +visible = false +clip_contents = false +layout_direction = 2 +layout_mode = 2 +size_flags_horizontal = 0 +size_flags_vertical = 4 +mouse_filter = 1 +mouse_default_cursor_shape = 1 +theme_override_colors/default_color = Color(0.54099, 0.540991, 0.54099, 1) +theme_override_styles/normal = SubResource("StyleBoxEmpty_sj3oj") +theme_override_styles/focus = SubResource("StyleBoxEmpty_sj3oj") +bbcode_enabled = true +fit_content = true +scroll_active = false +autowrap_mode = 0 +tab_size = 2 +shortcut_keys_enabled = false +drag_and_drop_selection_enabled = false +text_direction = 1 + +[node name="Value" type="LineEdit" parent="Value_Panel/Layout"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +focus_mode = 1 +theme_override_constants/minimum_character_width = 0 +theme_override_styles/normal = SubResource("StyleBoxEmpty_8yqsu") +theme_override_styles/read_only = SubResource("StyleBoxEmpty_8yqsu") +theme_override_styles/focus = SubResource("StyleBoxEmpty_8yqsu") +text = "0" +expand_to_text_length = true +virtual_keyboard_type = 3 + +[node name="Suffix" type="RichTextLabel" parent="Value_Panel/Layout"] +unique_name_in_owner = true +visible = false +clip_contents = false +layout_direction = 2 +layout_mode = 2 +size_flags_horizontal = 8 +size_flags_vertical = 4 +mouse_default_cursor_shape = 1 +theme_override_colors/default_color = Color(0.435192, 0.435192, 0.435192, 1) +theme_override_styles/normal = SubResource("StyleBoxEmpty_smq50") +theme_override_styles/focus = SubResource("StyleBoxEmpty_smq50") +bbcode_enabled = true +fit_content = true +scroll_active = false +autowrap_mode = 0 +tab_size = 2 +shortcut_keys_enabled = false +drag_and_drop_selection_enabled = false +text_direction = 1 + +[node name="Spin" type="VBoxContainer" parent="Value_Panel/Layout"] +unique_name_in_owner = true +layout_mode = 2 +theme_override_constants/separation = 0 +alignment = 1 + +[node name="Increment" type="Button" parent="Value_Panel/Layout/Spin"] +auto_translate_mode = 2 +layout_mode = 2 +size_flags_vertical = 3 +focus_neighbor_left = NodePath("../../Value") +focus_neighbor_top = NodePath(".") +focus_neighbor_bottom = NodePath("../Decrement") +theme_override_colors/icon_focus_color = Color(0.412738, 0.550094, 0.760917, 1) +theme_override_colors/icon_hover_color = Color(0.412738, 0.550094, 0.760917, 1) +theme_override_styles/normal = SubResource("StyleBoxFlat_increment") +theme_override_styles/pressed = SubResource("StyleBoxFlat_increment") +theme_override_styles/hover = SubResource("StyleBoxFlat_increment") +theme_override_styles/disabled = SubResource("StyleBoxFlat_increment") +theme_override_styles/focus = SubResource("StyleBoxFlat_increment") +icon = ExtResource("3_v5cne") +flat = true +vertical_icon_alignment = 2 + +[node name="Decrement" type="Button" parent="Value_Panel/Layout/Spin"] +auto_translate_mode = 2 +layout_mode = 2 +size_flags_vertical = 3 +focus_neighbor_left = NodePath("../../Value") +focus_neighbor_top = NodePath("../Increment") +focus_neighbor_bottom = NodePath(".") +theme_override_colors/icon_focus_color = Color(0.412738, 0.550094, 0.760917, 1) +theme_override_colors/icon_hover_color = Color(0.412738, 0.550094, 0.760917, 1) +theme_override_styles/normal = SubResource("StyleBoxFlat_decrement") +theme_override_styles/pressed = SubResource("StyleBoxFlat_decrement") +theme_override_styles/hover = SubResource("StyleBoxFlat_decrement") +theme_override_styles/disabled = SubResource("StyleBoxFlat_decrement") +theme_override_styles/focus = SubResource("StyleBoxFlat_decrement") +icon = ExtResource("4_ph52o") +flat = true +vertical_icon_alignment = 2 + +[connection signal="gui_input" from="Value_Panel/Layout/Prefix" to="." method="_on_sublabel_clicked"] +[connection signal="focus_entered" from="Value_Panel/Layout/Value" to="." method="_on_value_focus_entered"] +[connection signal="focus_exited" from="Value_Panel/Layout/Value" to="." method="_on_value_focus_exited"] +[connection signal="gui_input" from="Value_Panel/Layout/Value" to="." method="_on_gui_input"] +[connection signal="text_submitted" from="Value_Panel/Layout/Value" to="." method="_on_value_text_submitted"] +[connection signal="gui_input" from="Value_Panel/Layout/Suffix" to="." method="_on_sublabel_clicked"] +[connection signal="button_down" from="Value_Panel/Layout/Spin/Increment" to="." method="_on_increment_button_down" binds= [NodePath("%Spin/Increment")]] +[connection signal="gui_input" from="Value_Panel/Layout/Spin/Increment" to="." method="_on_gui_input"] +[connection signal="button_down" from="Value_Panel/Layout/Spin/Decrement" to="." method="_on_decrement_button_down" binds= [NodePath("%Spin/Decrement")]] +[connection signal="gui_input" from="Value_Panel/Layout/Spin/Decrement" to="." method="_on_gui_input"] diff --git a/addons/dialogic/Editor/Events/Fields/field_options_dynamic.gd b/addons/dialogic/Editor/Events/Fields/field_options_dynamic.gd new file mode 100644 index 0000000..8e1ee7a --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_options_dynamic.gd @@ -0,0 +1,369 @@ +@tool +extends DialogicVisualEditorField +## Event block field for strings. Options are determined by a function. + + +## SETTINGS +@export var placeholder_text := "Select Resource" +@export var empty_text := "" +enum Modes {PURE_STRING, PRETTY_PATH, IDENTIFIER, ANY_VALID_STRING} +@export var mode := Modes.PURE_STRING +@export var fit_text_length := true +var collapse_when_empty := false +var valid_file_drop_extension := "" +var suggestions_func: Callable +var validation_func: Callable + +var resource_icon: Texture = null: + get: + return resource_icon + set(new_icon): + resource_icon = new_icon + %Icon.texture = new_icon + +## STATE +var current_value: String: + set(value): + if current_value != value: + current_value = value + current_value_updated = true +var current_selected := 0 +var current_value_updated := false + +## SUGGESTIONS ITEM LIST +var _v_separation := 0 +var _h_separation := 0 +var _icon_margin := 0 +var _line_height := 24 +var _max_height := 200 * DialogicUtil.get_editor_scale() + + +#region FIELD METHODS +################################################################################ + +func _set_value(value:Variant) -> void: + if value == null or value.is_empty(): + %Search.text = empty_text + update_error_tooltip('') + else: + match mode: + Modes.PRETTY_PATH: + %Search.text = DialogicUtil.pretty_name(value) + Modes.IDENTIFIER when value.begins_with("res://"): + %Search.text = DialogicResourceUtil.get_unique_identifier_by_path(value) + Modes.ANY_VALID_STRING when validation_func: + %Search.text = validation_func.call(value).get('valid_text', value) + _: + %Search.text = str(value) + + %Search.visible = not collapse_when_empty or value + current_value = str(value) + + +func _load_display_info(info:Dictionary) -> void: + valid_file_drop_extension = info.get('file_extension', '') + collapse_when_empty = info.get('collapse_when_empty', false) + suggestions_func = info.get('suggestions_func', suggestions_func) + validation_func = info.get('validation_func', validation_func) + empty_text = info.get('empty_text', '') + placeholder_text = info.get('placeholder', 'Select Resource') + mode = info.get("mode", 0) + resource_icon = info.get('icon', null) + %Search.tooltip_text = info.get('tooltip_text', '') + await ready + if resource_icon == null and info.has('editor_icon'): + resource_icon = callv('get_theme_icon', info.editor_icon) + + +func _autofocus() -> void: + %Search.grab_focus() + +#endregion + + +#region BASIC +################################################################################ + +func _ready() -> void: + var focus := get_theme_stylebox("focus", "LineEdit") + if has_theme_stylebox("focus", "DialogicEventEdit"): + focus = get_theme_stylebox('focus', 'DialogicEventEdit') + %Focus.add_theme_stylebox_override('panel', focus) + + %Search.text_changed.connect(_on_Search_text_changed) + %Search.text_submitted.connect(_on_Search_text_entered) + %Search.placeholder_text = placeholder_text + %Search.expand_to_text_length = fit_text_length + + %SelectButton.icon = get_theme_icon("Collapse", "EditorIcons") + + %Suggestions.add_theme_stylebox_override('bg', load("res://addons/dialogic/Editor/Events/styles/ResourceMenuPanelBackground.tres")) + %Suggestions.hide() + %Suggestions.item_selected.connect(suggestion_selected) + %Suggestions.item_clicked.connect(suggestion_selected) + %Suggestions.fixed_icon_size = Vector2i(16, 16) * DialogicUtil.get_editor_scale() + + _v_separation = %Suggestions.get_theme_constant("v_separation") + _h_separation = %Suggestions.get_theme_constant("h_separation") + _icon_margin = %Suggestions.get_theme_constant("icon_margin") + + if resource_icon == null: + self.resource_icon = null + + var error_label_style := StyleBoxFlat.new() + error_label_style.bg_color = get_theme_color('background', 'Editor') + error_label_style.border_color = get_theme_color('error_color', 'Editor') + error_label_style.set_border_width_all(1) + error_label_style.set_corner_radius_all(4) + error_label_style.set_content_margin_all(6) + + %ErrorTooltip.add_theme_stylebox_override('normal', error_label_style) + + +func change_to_empty() -> void: + update_error_tooltip('') + value_changed.emit(property_name, "") + + +func validate() -> void: + if mode == Modes.ANY_VALID_STRING and validation_func: + var validation_result: Dictionary = validation_func.call(current_value) + current_value = validation_result.get('valid_text', current_value) + update_error_tooltip(validation_result.get('error_tooltip', '')) + + +func update_error_tooltip(text: String) -> void: + %ErrorTooltip.text = text + if text.is_empty(): + %ErrorTooltip.hide() + %Search.remove_theme_color_override("font_color") + else: + %ErrorTooltip.reset_size() + %ErrorTooltip.global_position = global_position - Vector2(0, %ErrorTooltip.size.y + 4) + %ErrorTooltip.show() + %Search.add_theme_color_override("font_color", get_theme_color('error_color', 'Editor')) + +#endregion + + +#region SEARCH & SUGGESTION POPUP +################################################################################ + +func _on_Search_text_entered(new_text:String) -> void: + if mode == Modes.ANY_VALID_STRING: + if validation_func: + var validation_result: Dictionary = validation_func.call(new_text) + new_text = validation_result.get('valid_text', new_text) + update_error_tooltip(validation_result.get('error_tooltip', '')) + + set_value(new_text) + + value_changed.emit(property_name, current_value) + current_value_updated = false + hide_suggestions() + return + + if %Suggestions.get_item_count(): + if %Suggestions.is_anything_selected(): + suggestion_selected(%Suggestions.get_selected_items()[0]) + else: + suggestion_selected(0) + else: + change_to_empty() + + +func _on_Search_text_changed(new_text:String, just_update:bool = false) -> void: + %Suggestions.clear() + + if new_text == "" and not just_update: + change_to_empty() + else: + %Search.show() + + if mode == Modes.ANY_VALID_STRING and !just_update: + if validation_func: + var validation_result: Dictionary = validation_func.call(new_text) + new_text = validation_result.get('valid_text', new_text) + update_error_tooltip(validation_result.get('error_tooltip', '')) + + current_value = new_text + + if just_update and new_text.is_empty() and %Search.text.ends_with("."): + new_text = %Search.text + + var suggestions: Dictionary = suggestions_func.call(new_text) + + var line_length := 0 + var idx := 0 + + if new_text and mode == Modes.ANY_VALID_STRING and not new_text in suggestions.keys(): + %Suggestions.add_item(new_text, get_theme_icon('GuiScrollArrowRight', 'EditorIcons')) + %Suggestions.set_item_metadata(idx, new_text) + line_length = get_theme_font('font', 'Label').get_string_size( + new_text, HORIZONTAL_ALIGNMENT_LEFT, -1, get_theme_font_size("font_size", 'Label') + ).x + %Suggestions.fixed_icon_size.x * %Suggestions.get_icon_scale() + _icon_margin * 2 + _h_separation + idx += 1 + + for element in suggestions: + if new_text.is_empty() or new_text.to_lower() in element.to_lower() or new_text.to_lower() in str(suggestions[element].value).to_lower() or new_text.to_lower() in suggestions[element].get('tooltip', '').to_lower(): + var curr_line_length: int = 0 + curr_line_length = int(get_theme_font('font', 'Label').get_string_size( + element, HORIZONTAL_ALIGNMENT_LEFT, -1, get_theme_font_size("font_size", 'Label') + ).x) + + %Suggestions.add_item(element) + if suggestions[element].has('icon'): + %Suggestions.set_item_icon(idx, suggestions[element].icon) + curr_line_length += %Suggestions.fixed_icon_size.x * %Suggestions.get_icon_scale() + _icon_margin * 2 + _h_separation + elif suggestions[element].has('editor_icon'): + %Suggestions.set_item_icon(idx, get_theme_icon(suggestions[element].editor_icon[0],suggestions[element].editor_icon[1])) + curr_line_length += %Suggestions.fixed_icon_size.x * %Suggestions.get_icon_scale() + _icon_margin * 2 + _h_separation + + line_length = max(line_length, curr_line_length) + + %Suggestions.set_item_tooltip(idx, suggestions[element].get('tooltip', '')) + %Suggestions.set_item_metadata(idx, suggestions[element].value) + idx += 1 + + if not %Suggestions.visible: + %Suggestions.show() + %Suggestions.global_position = $PanelContainer.global_position+Vector2(0,1)*$PanelContainer.size.y + + if %Suggestions.item_count: + %Suggestions.select(0) + current_selected = 0 + else: + current_selected = -1 + %Search.grab_focus() + + var total_height: int = 0 + for item in %Suggestions.item_count: + total_height += int(_line_height * DialogicUtil.get_editor_scale() + _v_separation) + total_height += _v_separation * 2 + if total_height > _max_height: + line_length += %Suggestions.get_v_scroll_bar().get_minimum_size().x + + %Suggestions.size.x = max(%PanelContainer.size.x, line_length) + %Suggestions.size.y = min(total_height, _max_height) + + # Defer setting width to give PanelContainer + # time to update it's size + await get_tree().process_frame + await get_tree().process_frame + + %Suggestions.size.x = max(%PanelContainer.size.x, line_length) + + +func suggestion_selected(index: int, _position := Vector2(), button_index := MOUSE_BUTTON_LEFT) -> void: + if button_index != MOUSE_BUTTON_LEFT: + return + if %Suggestions.is_item_disabled(index): + return + + %Search.text = %Suggestions.get_item_text(index) + + if %Suggestions.get_item_metadata(index) == null: + current_value = "" + + else: + current_value = %Suggestions.get_item_metadata(index) + + update_error_tooltip('') + hide_suggestions() + + grab_focus() + value_changed.emit(property_name, current_value) + current_value_updated = false + + +func _input(event:InputEvent) -> void: + if event is InputEventMouseButton and event.pressed and event.button_index == MOUSE_BUTTON_LEFT: + if %Suggestions.visible: + if !%Suggestions.get_global_rect().has_point(get_global_mouse_position()) and \ + !%SelectButton.get_global_rect().has_point(get_global_mouse_position()): + hide_suggestions() + + +func hide_suggestions() -> void: + %SelectButton.set_pressed_no_signal(false) + %Suggestions.hide() + if !current_value and collapse_when_empty: + %Search.hide() + + +func _on_SelectButton_toggled(button_pressed:bool) -> void: + if button_pressed: + _on_Search_text_changed('', true) + else: + hide_suggestions() + + +func _on_focus_entered() -> void: + %Search.grab_focus() + + +func _on_search_gui_input(event: InputEvent) -> void: + if event is InputEventKey and (event.keycode == KEY_DOWN or event.keycode == KEY_UP) and event.pressed: + if !%Suggestions.visible: + _on_Search_text_changed('', true) + current_selected = -1 + if event.keycode == KEY_DOWN: + current_selected = wrapi(current_selected+1, 0, %Suggestions.item_count) + if event.keycode == KEY_UP: + current_selected = wrapi(current_selected-1, 0, %Suggestions.item_count) + %Suggestions.select(current_selected) + %Suggestions.ensure_current_is_visible() + + if Input.is_key_pressed(KEY_CTRL): + if event is InputEventMouseButton and event.pressed and event.button_index == MOUSE_BUTTON_LEFT: + if valid_file_drop_extension in [".dch", ".dtl"] and not current_value.is_empty(): + EditorInterface.edit_resource(DialogicResourceUtil.get_resource_from_identifier(current_value, valid_file_drop_extension)) + + if valid_file_drop_extension in [".dch", ".dtl"] and not current_value.is_empty(): + %Search.mouse_default_cursor_shape = CURSOR_POINTING_HAND + else: + %Search.mouse_default_cursor_shape = CURSOR_IBEAM + + +func _on_search_focus_entered() -> void: + if %Search.text == "": + _on_Search_text_changed("") + %Search.call_deferred('select_all') + %Focus.show() + validate() + + +func _on_search_focus_exited() -> void: + %Focus.hide() + if !%Suggestions.get_global_rect().has_point(get_global_mouse_position()): + hide_suggestions() + validate() + if current_value_updated: + value_changed.emit(property_name, current_value) + current_value_updated = false + +#endregion + + +#region DRAG AND DROP +################################################################################ + +func _can_drop_data(_position:Vector2, data:Variant) -> bool: + if typeof(data) == TYPE_DICTIONARY and data.has('files') and len(data.files) == 1: + if valid_file_drop_extension: + if data.files[0].ends_with(valid_file_drop_extension): + return true + else: + return false + return false + + +func _drop_data(_position:Vector2, data:Variant) -> void: + var path := str(data.files[0]) + if mode == Modes.IDENTIFIER: + path = DialogicResourceUtil.get_unique_identifier_by_path(path) + _set_value(path) + value_changed.emit(property_name, path) + current_value_updated = false + +#endregion diff --git a/addons/dialogic/Editor/Events/Fields/field_options_dynamic.gd.uid b/addons/dialogic/Editor/Events/Fields/field_options_dynamic.gd.uid new file mode 100644 index 0000000..1e6f222 --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_options_dynamic.gd.uid @@ -0,0 +1 @@ +uid://cowk63wwk126v diff --git a/addons/dialogic/Editor/Events/Fields/field_options_dynamic.tscn b/addons/dialogic/Editor/Events/Fields/field_options_dynamic.tscn new file mode 100644 index 0000000..c2c898e --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_options_dynamic.tscn @@ -0,0 +1,144 @@ +[gd_scene load_steps=7 format=3 uid="uid://dpwhshre1n4t6"] + +[ext_resource type="Script" uid="uid://cowk63wwk126v" path="res://addons/dialogic/Editor/Events/Fields/field_options_dynamic.gd" id="1_b07gq"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_tmt5n"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_vennf"] + +[sub_resource type="Image" id="Image_qw5e6"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_g63da"] +image = SubResource("Image_qw5e6") + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_g74jb"] +content_margin_left = 4.0 +content_margin_top = 4.0 +content_margin_right = 4.0 +content_margin_bottom = 4.0 +bg_color = Color(1, 0.365, 0.365, 1) +draw_center = false +border_width_left = 2 +border_width_top = 2 +border_width_right = 2 +border_width_bottom = 2 +corner_detail = 1 + +[node name="Field_DynamicStringOptions" type="HBoxContainer"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = -2.0 +offset_top = -2.0 +offset_right = -1005.0 +offset_bottom = -622.0 +grow_horizontal = 2 +grow_vertical = 2 +focus_mode = 2 +script = ExtResource("1_b07gq") +placeholder_text = "" + +[node name="PanelContainer" type="MarginContainer" parent="."] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_constants/margin_left = 0 +theme_override_constants/margin_top = 0 +theme_override_constants/margin_right = 0 +theme_override_constants/margin_bottom = 0 + +[node name="BG" type="Panel" parent="PanelContainer"] +unique_name_in_owner = true +layout_mode = 2 +mouse_filter = 2 +theme_type_variation = &"DialogicEventEdit" +metadata/_edit_use_anchors_ = true + +[node name="MarginContainer" type="MarginContainer" parent="PanelContainer"] +layout_mode = 2 +theme_override_constants/margin_left = 2 +theme_override_constants/margin_top = 2 +theme_override_constants/margin_right = 2 +theme_override_constants/margin_bottom = 2 + +[node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer/MarginContainer"] +layout_mode = 2 + +[node name="Icon" type="TextureRect" parent="PanelContainer/MarginContainer/HBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 4 +mouse_filter = 2 +stretch_mode = 5 + +[node name="Search" type="LineEdit" parent="PanelContainer/MarginContainer/HBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 4 +focus_neighbor_bottom = NodePath("Suggestions") +focus_mode = 1 +mouse_filter = 1 +theme_override_styles/normal = SubResource("StyleBoxEmpty_tmt5n") +theme_override_styles/focus = SubResource("StyleBoxEmpty_vennf") +expand_to_text_length = true +flat = true +caret_blink = true + +[node name="Suggestions" type="ItemList" parent="PanelContainer/MarginContainer/HBoxContainer/Search"] +unique_name_in_owner = true +visible = false +top_level = true +custom_minimum_size = Vector2(-1086, 0) +layout_mode = 0 +offset_left = -5.0 +offset_top = 36.0 +offset_right = 195.0 +offset_bottom = 71.0 +size_flags_vertical = 0 +auto_translate = false +focus_neighbor_top = NodePath("..") +max_text_lines = 3 +item_count = 1 +fixed_icon_size = Vector2i(16, 16) +item_0/text = "Hello" + +[node name="SelectButton" type="Button" parent="PanelContainer/MarginContainer/HBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +focus_mode = 0 +toggle_mode = true +shortcut_in_tooltip = false +icon = SubResource("ImageTexture_g63da") +flat = true + +[node name="Focus" type="Panel" parent="PanelContainer"] +unique_name_in_owner = true +visible = false +layout_mode = 2 +mouse_filter = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_g74jb") +metadata/_edit_use_anchors_ = true + +[node name="ErrorTooltip" type="Label" parent="PanelContainer/Focus"] +unique_name_in_owner = true +visible = false +top_level = true +layout_mode = 0 +offset_left = -2.0 +offset_top = -44.5 +offset_right = 11.0 +offset_bottom = -9.5 + +[connection signal="focus_entered" from="." to="." method="_on_focus_entered"] +[connection signal="focus_entered" from="PanelContainer/MarginContainer/HBoxContainer/Search" to="." method="_on_search_focus_entered"] +[connection signal="focus_exited" from="PanelContainer/MarginContainer/HBoxContainer/Search" to="." method="_on_search_focus_exited"] +[connection signal="gui_input" from="PanelContainer/MarginContainer/HBoxContainer/Search" to="." method="_on_search_gui_input"] +[connection signal="toggled" from="PanelContainer/MarginContainer/HBoxContainer/SelectButton" to="." method="_on_SelectButton_toggled"] diff --git a/addons/dialogic/Editor/Events/Fields/field_options_fixed.gd b/addons/dialogic/Editor/Events/Fields/field_options_fixed.gd new file mode 100644 index 0000000..b899b0b --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_options_fixed.gd @@ -0,0 +1,67 @@ +@tool +extends DialogicVisualEditorField + +## Event block field for constant options. For varying options use ComplexPicker. + +var options: Array = []: + set(o): + options = o + if current_value != -1: + set_value(current_value) + +## if true, only the symbol will be displayed. In the dropdown text will be visible. +## Useful for making UI simpler +var symbol_only := false: + set(value): + symbol_only = value + if value: self.text = "" + +var current_value: Variant = -1 + + +func _ready() -> void: + add_theme_color_override("font_disabled_color", get_theme_color("font_color", "MenuButton")) + self.about_to_popup.connect(insert_options) + call("get_popup").index_pressed.connect(index_pressed) + + + +func _load_display_info(info:Dictionary) -> void: + options = info.get('options', []) + self.disabled = info.get('disabled', false) + symbol_only = info.get('symbol_only', false) + + +func _set_value(value:Variant) -> void: + for option in options: + if option['value'] == value: + if typeof(option.get('icon')) == TYPE_ARRAY: + option.icon = callv('get_theme_icon', option.get('icon')) + if !symbol_only: + self.text = option['label'] + self.icon = option.get('icon', null) + current_value = value + + +func get_value() -> Variant: + return current_value + + +func insert_options() -> void: + call("get_popup").clear() + + var idx := 0 + for option in options: + if typeof(option.get('icon')) == TYPE_ARRAY: + option.icon = callv('get_theme_icon', option.get('icon')) + call("get_popup").add_icon_item(option.get('icon', null), option['label']) + call("get_popup").set_item_metadata(idx, option['value']) + idx += 1 + + +func index_pressed(idx:int) -> void: + current_value = idx + if !symbol_only: + self.text = call("get_popup").get_item_text(idx) + self.icon =call("get_popup").get_item_icon(idx) + value_changed.emit(property_name, call("get_popup").get_item_metadata(idx)) diff --git a/addons/dialogic/Editor/Events/Fields/field_options_fixed.gd.uid b/addons/dialogic/Editor/Events/Fields/field_options_fixed.gd.uid new file mode 100644 index 0000000..15187ec --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_options_fixed.gd.uid @@ -0,0 +1 @@ +uid://l6jbshj3y66l diff --git a/addons/dialogic/Editor/Events/Fields/field_options_fixed.tscn b/addons/dialogic/Editor/Events/Fields/field_options_fixed.tscn new file mode 100644 index 0000000..ad909ee --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_options_fixed.tscn @@ -0,0 +1,13 @@ +[gd_scene load_steps=2 format=3 uid="uid://d3bhehatwoio"] + +[ext_resource type="Script" uid="uid://l6jbshj3y66l" path="res://addons/dialogic/Editor/Events/Fields/field_options_fixed.gd" id="1"] + +[node name="Field_FixedOptions" type="MenuButton"] +offset_right = 137.0 +offset_bottom = 43.0 +focus_mode = 2 +theme_type_variation = &"DialogicEventEdit" +theme_override_colors/font_disabled_color = Color(0.875, 0.875, 0.875, 1) +text = "Placeholder Text" +flat = false +script = ExtResource("1") diff --git a/addons/dialogic/Editor/Events/Fields/field_text_multiline.gd b/addons/dialogic/Editor/Events/Fields/field_text_multiline.gd new file mode 100644 index 0000000..db46b51 --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_text_multiline.gd @@ -0,0 +1,74 @@ +@tool +extends DialogicVisualEditorField + +## Event block field that allows entering multiline text (mainly text event). + +@onready var code_completion_helper: Node = find_parent('EditorsManager').get_node('CodeCompletionHelper') + + +#region MAIN METHODS +################################################################################ + +func _ready() -> void: + self.text_changed.connect(_on_text_changed) + self.syntax_highlighter = code_completion_helper.text_syntax_highlighter + + +func _load_display_info(info:Dictionary) -> void: + pass + + +func _set_value(value:Variant) -> void: + self.text = str(value) + + +func _autofocus() -> void: + grab_focus() + +#endregion + + +#region SIGNAL METHODS +################################################################################ + +func _on_text_changed(_value := "") -> void: + value_changed.emit(property_name, self.text) + +#endregion + + +#region AUTO COMPLETION +################################################################################ + +## Called if something was typed +func _request_code_completion(force:bool): + code_completion_helper.request_code_completion(force, self, 0) + + +## Filters the list of all possible options, depending on what was typed +## Purpose of the different Kinds is explained in [_request_code_completion] +func _filter_code_completion_candidates(candidates:Array) -> Array: + return code_completion_helper.filter_code_completion_candidates(candidates, self) + + +## Called when code completion was activated +## Inserts the selected item +func _confirm_code_completion(replace:bool) -> void: + code_completion_helper.confirm_code_completion(replace, self) + +#endregion + + +#region SYMBOL CLICKING +################################################################################ + +## Performs an action (like opening a link) when a valid symbol was clicked +func _on_symbol_lookup(symbol, line, column): + code_completion_helper.symbol_lookup(symbol, line, column) + + +## Called to test if a symbol can be clicked +func _on_symbol_validate(symbol:String) -> void: + code_completion_helper.symbol_validate(symbol, self) + +#endregion diff --git a/addons/dialogic/Editor/Events/Fields/field_text_multiline.gd.uid b/addons/dialogic/Editor/Events/Fields/field_text_multiline.gd.uid new file mode 100644 index 0000000..d2745f7 --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_text_multiline.gd.uid @@ -0,0 +1 @@ +uid://do4y48h30412d diff --git a/addons/dialogic/Editor/Events/Fields/field_text_multiline.tscn b/addons/dialogic/Editor/Events/Fields/field_text_multiline.tscn new file mode 100644 index 0000000..63e095c --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_text_multiline.tscn @@ -0,0 +1,28 @@ +[gd_scene load_steps=4 format=3 uid="uid://dyp7m2nvab1aj"] + +[ext_resource type="Script" uid="uid://bf2nivn8txcw5" path="res://addons/dialogic/Editor/TimelineEditor/TextEditor/syntax_highlighter.gd" id="2_ww6ga"] +[ext_resource type="Script" uid="uid://do4y48h30412d" path="res://addons/dialogic/Editor/Events/Fields/field_text_multiline.gd" id="3_q7600"] + +[sub_resource type="SyntaxHighlighter" id="SyntaxHighlighter_2q5dk"] +script = ExtResource("2_ww6ga") + +[node name="Field_Text_Multiline" type="CodeEdit"] +offset_right = 413.0 +offset_bottom = 15.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_type_variation = &"DialogicTextEventTextEdit" +wrap_mode = 1 +scroll_fit_content_height = true +syntax_highlighter = SubResource("SyntaxHighlighter_2q5dk") +symbol_lookup_on_click = true +delimiter_strings = Array[String]([]) +code_completion_enabled = true +code_completion_prefixes = Array[String](["[", "{"]) +indent_automatic_prefixes = Array[String]([":", "{", "[", ")"]) +auto_brace_completion_enabled = true +auto_brace_completion_pairs = { +"[": "]", +"{": "}" +} +script = ExtResource("3_q7600") diff --git a/addons/dialogic/Editor/Events/Fields/field_text_singleline.gd b/addons/dialogic/Editor/Events/Fields/field_text_singleline.gd new file mode 100644 index 0000000..765f862 --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_text_singleline.gd @@ -0,0 +1,40 @@ +@tool +extends DialogicVisualEditorField + +## Event block field for a single line of text. + + +var placeholder := "": + set(value): + placeholder = value + self.placeholder_text = placeholder + + +#region MAIN METHODS +################################################################################ + +func _ready() -> void: + self.text_changed.connect(_on_text_changed) + + +func _load_display_info(info:Dictionary) -> void: + self.placeholder = info.get('placeholder', '') + + +func _set_value(value:Variant) -> void: + self.text = str(value) + + +func _autofocus() -> void: + grab_focus() + +#endregion + + +#region SIGNAL METHODS +################################################################################ + +func _on_text_changed(value := "") -> void: + value_changed.emit(property_name, self.text) + +#endregion diff --git a/addons/dialogic/Editor/Events/Fields/field_text_singleline.gd.uid b/addons/dialogic/Editor/Events/Fields/field_text_singleline.gd.uid new file mode 100644 index 0000000..1a2799f --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_text_singleline.gd.uid @@ -0,0 +1 @@ +uid://cgx1rn8km87ya diff --git a/addons/dialogic/Editor/Events/Fields/field_text_singleline.tscn b/addons/dialogic/Editor/Events/Fields/field_text_singleline.tscn new file mode 100644 index 0000000..374fcb5 --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_text_singleline.tscn @@ -0,0 +1,10 @@ +[gd_scene load_steps=2 format=3 uid="uid://c0vkcehgjsjy"] + +[ext_resource type="Script" uid="uid://cgx1rn8km87ya" path="res://addons/dialogic/Editor/Events/Fields/field_text_singleline.gd" id="1_4vnxv"] + +[node name="Field_Text_Singleline" type="LineEdit"] +offset_right = 1152.0 +offset_bottom = 81.0 +theme_type_variation = &"DialogicEventEdit" +expand_to_text_length = true +script = ExtResource("1_4vnxv") diff --git a/addons/dialogic/Editor/Events/Fields/field_vector2.gd b/addons/dialogic/Editor/Events/Fields/field_vector2.gd new file mode 100644 index 0000000..8977349 --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_vector2.gd @@ -0,0 +1,31 @@ +@tool +extends DialogicVisualEditorFieldVector +## Event block field for a Vector2. + +var current_value := Vector2() + + +func _set_value(value: Variant) -> void: + current_value = value + super(value) + + +func get_value() -> Vector2: + return current_value + + +func _on_sub_value_changed(sub_component: String, value: float) -> void: + match sub_component: + 'X': current_value.x = value + 'Y': current_value.y = value + _on_value_changed(current_value) + + +func _update_sub_component_text(value: Variant) -> void: + $X._on_value_text_submitted(str(value.x), true) + $Y._on_value_text_submitted(str(value.y), true) + + +func _on_step_changed(new_step:float) -> void: + $X.step = new_step + $Y.step = new_step diff --git a/addons/dialogic/Editor/Events/Fields/field_vector2.gd.uid b/addons/dialogic/Editor/Events/Fields/field_vector2.gd.uid new file mode 100644 index 0000000..23b972e --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_vector2.gd.uid @@ -0,0 +1 @@ +uid://2dk2fuatjwru diff --git a/addons/dialogic/Editor/Events/Fields/field_vector2.tscn b/addons/dialogic/Editor/Events/Fields/field_vector2.tscn new file mode 100644 index 0000000..cd70c10 --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_vector2.tscn @@ -0,0 +1,31 @@ +[gd_scene load_steps=3 format=3 uid="uid://dtimnsj014cu"] + +[ext_resource type="Script" uid="uid://2dk2fuatjwru" path="res://addons/dialogic/Editor/Events/Fields/field_vector2.gd" id="1_v6lp0"] +[ext_resource type="PackedScene" uid="uid://kdpp3mibml33" path="res://addons/dialogic/Editor/Events/Fields/field_number.tscn" id="2_a0b6y"] + +[node name="Field_Vector2" type="HBoxContainer"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_right = -1033.0 +offset_bottom = -617.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 2 +script = ExtResource("1_v6lp0") + +[node name="X" parent="." instance=ExtResource("2_a0b6y")] +layout_mode = 2 +size_flags_horizontal = 3 +enforce_step = false +min = -9999.0 +max = 9999.0 +prefix = "x" + +[node name="Y" parent="." instance=ExtResource("2_a0b6y")] +layout_mode = 2 +size_flags_horizontal = 3 +enforce_step = false +min = -9999.0 +max = 9999.0 +prefix = "y" diff --git a/addons/dialogic/Editor/Events/Fields/field_vector3.gd b/addons/dialogic/Editor/Events/Fields/field_vector3.gd new file mode 100644 index 0000000..cc244a0 --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_vector3.gd @@ -0,0 +1,34 @@ +@tool +extends DialogicVisualEditorFieldVector +## Event block field for a Vector3. + +var current_value := Vector3() + + +func _set_value(value: Variant) -> void: + current_value = value + super(value) + + +func get_value() -> Vector3: + return current_value + + +func _on_sub_value_changed(sub_component: String, value: float) -> void: + match sub_component: + 'X': current_value.x = value + 'Y': current_value.y = value + 'Z': current_value.z = value + _on_value_changed(current_value) + + +func _update_sub_component_text(value: Variant) -> void: + $X._on_value_text_submitted(str(value.x), true) + $Y._on_value_text_submitted(str(value.y), true) + $Z._on_value_text_submitted(str(value.z), true) + + +func _on_step_changed(new_step:float) -> void: + $X.step = new_step + $Y.step = new_step + $Z.step = new_step diff --git a/addons/dialogic/Editor/Events/Fields/field_vector3.gd.uid b/addons/dialogic/Editor/Events/Fields/field_vector3.gd.uid new file mode 100644 index 0000000..c10644a --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_vector3.gd.uid @@ -0,0 +1 @@ +uid://y01tg3q2homo diff --git a/addons/dialogic/Editor/Events/Fields/field_vector3.tscn b/addons/dialogic/Editor/Events/Fields/field_vector3.tscn new file mode 100644 index 0000000..781509a --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_vector3.tscn @@ -0,0 +1,17 @@ +[gd_scene load_steps=4 format=3 uid="uid://cklkpfrcvopgw"] + +[ext_resource type="PackedScene" uid="uid://dtimnsj014cu" path="res://addons/dialogic/Editor/Events/Fields/field_vector2.tscn" id="1_l3y0o"] +[ext_resource type="Script" uid="uid://y01tg3q2homo" path="res://addons/dialogic/Editor/Events/Fields/field_vector3.gd" id="2_gktf1"] +[ext_resource type="PackedScene" uid="uid://kdpp3mibml33" path="res://addons/dialogic/Editor/Events/Fields/field_number.tscn" id="3_k0u0p"] + +[node name="Field_Vector3" instance=ExtResource("1_l3y0o")] +offset_right = -973.0 +script = ExtResource("2_gktf1") + +[node name="Z" parent="." index="2" instance=ExtResource("3_k0u0p")] +layout_mode = 2 +size_flags_horizontal = 3 +enforce_step = false +min = -9999.0 +max = 9999.0 +prefix = "z" diff --git a/addons/dialogic/Editor/Events/Fields/field_vector4.gd b/addons/dialogic/Editor/Events/Fields/field_vector4.gd new file mode 100644 index 0000000..e584b82 --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_vector4.gd @@ -0,0 +1,37 @@ +@tool +extends DialogicVisualEditorFieldVector +## Event block field for a Vector4. + +var current_value := Vector4() + + +func _set_value(value: Variant) -> void: + current_value = value + super(value) + + +func get_value() -> Vector4: + return current_value + + +func _on_sub_value_changed(sub_component: String, value: float) -> void: + match sub_component: + 'X': current_value.x = value + 'Y': current_value.y = value + 'Z': current_value.z = value + 'W': current_value.w = value + _on_value_changed(current_value) + + +func _update_sub_component_text(value: Variant) -> void: + $X._on_value_text_submitted(str(value.x), true) + $Y._on_value_text_submitted(str(value.y), true) + $Z._on_value_text_submitted(str(value.z), true) + $W._on_value_text_submitted(str(value.w), true) + + +func _on_step_changed(new_step:float) -> void: + $X.step = new_step + $Y.step = new_step + $Z.step = new_step + $W.step = new_step diff --git a/addons/dialogic/Editor/Events/Fields/field_vector4.gd.uid b/addons/dialogic/Editor/Events/Fields/field_vector4.gd.uid new file mode 100644 index 0000000..dd8716f --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_vector4.gd.uid @@ -0,0 +1 @@ +uid://chr6fkvkjugep diff --git a/addons/dialogic/Editor/Events/Fields/field_vector4.tscn b/addons/dialogic/Editor/Events/Fields/field_vector4.tscn new file mode 100644 index 0000000..86acc6f --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_vector4.tscn @@ -0,0 +1,25 @@ +[gd_scene load_steps=4 format=3 uid="uid://dykss037r2rsc"] + +[ext_resource type="PackedScene" uid="uid://cklkpfrcvopgw" path="res://addons/dialogic/Editor/Events/Fields/field_vector3.tscn" id="1_20tvl"] +[ext_resource type="Script" uid="uid://chr6fkvkjugep" path="res://addons/dialogic/Editor/Events/Fields/field_vector4.gd" id="2_yksrc"] +[ext_resource type="PackedScene" uid="uid://kdpp3mibml33" path="res://addons/dialogic/Editor/Events/Fields/field_number.tscn" id="3_1jogk"] + +[node name="Field_Vector4" instance=ExtResource("1_20tvl")] +offset_right = -908.0 +script = ExtResource("2_yksrc") + +[node name="X" parent="." index="0"] +size_flags_horizontal = 1 +prefix = "" + +[node name="Y" parent="." index="1"] +size_flags_horizontal = 1 +prefix = "" + +[node name="W" parent="." index="3" instance=ExtResource("3_1jogk")] +layout_mode = 2 +size_flags_horizontal = 3 +enforce_step = false +min = -9999.0 +max = 9999.0 +prefix = "w" diff --git a/addons/dialogic/Editor/Events/Fields/field_vector_base.gd b/addons/dialogic/Editor/Events/Fields/field_vector_base.gd new file mode 100644 index 0000000..c34b41c --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_vector_base.gd @@ -0,0 +1,47 @@ +@tool +class_name DialogicVisualEditorFieldVector +extends DialogicVisualEditorField +## Base type for Vector event blocks + +var step := 0.001 : + set(val): + step = val + _on_step_changed(step) + +func _ready() -> void: + for child in get_children(): + child.tooltip_text = tooltip_text + child.property_name = child.name #to identify the name of the changed sub-component + child.value_changed.connect(_on_sub_value_changed) + + +func _load_display_info(info: Dictionary) -> void: + for child in get_children(): + if child is DialogicVisualEditorFieldNumber: + if info.get('no_prefix', false): + child._load_display_info(info) + else: + var prefixed_info := info.duplicate() + prefixed_info.merge({'prefix':child.name.to_lower()}) + child._load_display_info(prefixed_info) + + +func _set_value(value: Variant) -> void: + _update_sub_component_text(value) + _on_value_changed(value) + + +func _on_value_changed(value: Variant) -> void: + value_changed.emit(property_name, value) + + +func _on_sub_value_changed(sub_component: String, value: float) -> void: + pass + + +func _update_sub_component_text(value: Variant) -> void: + pass + + +func _on_step_changed(step:float) -> void: + pass diff --git a/addons/dialogic/Editor/Events/Fields/field_vector_base.gd.uid b/addons/dialogic/Editor/Events/Fields/field_vector_base.gd.uid new file mode 100644 index 0000000..6273507 --- /dev/null +++ b/addons/dialogic/Editor/Events/Fields/field_vector_base.gd.uid @@ -0,0 +1 @@ +uid://c25u8dv20exfr diff --git a/addons/dialogic/Editor/Events/event_field.gd b/addons/dialogic/Editor/Events/event_field.gd new file mode 100644 index 0000000..920758e --- /dev/null +++ b/addons/dialogic/Editor/Events/event_field.gd @@ -0,0 +1,36 @@ +@tool +class_name DialogicVisualEditorField +extends Control + +@warning_ignore("unused_signal") +signal value_changed(property_name:String, value:Variant) +var property_name := "" + +var event_resource: DialogicEvent = null + +#region OVERWRITES +################################################################################ + +## To be overwritten +func _load_display_info(_info:Dictionary) -> void: + pass + + +## To be overwritten +func _set_value(_value:Variant) -> void: + pass + + +## To be overwritten +func _autofocus() -> void: + pass + +#endregion + + +func set_value(value:Variant) -> void: + _set_value(value) + + +func take_autofocus() -> void: + _autofocus() diff --git a/addons/dialogic/Editor/Events/event_field.gd.uid b/addons/dialogic/Editor/Events/event_field.gd.uid new file mode 100644 index 0000000..47e9cfe --- /dev/null +++ b/addons/dialogic/Editor/Events/event_field.gd.uid @@ -0,0 +1 @@ +uid://cbwisirnxfqtm diff --git a/addons/dialogic/Editor/Events/styles/InputFieldsStyle.tres b/addons/dialogic/Editor/Events/styles/InputFieldsStyle.tres new file mode 100644 index 0000000..fa952ee --- /dev/null +++ b/addons/dialogic/Editor/Events/styles/InputFieldsStyle.tres @@ -0,0 +1,50 @@ +[gd_resource type="Theme" load_steps=3 format=3 uid="uid://d3g4i4dshtdpu"] + +[sub_resource type="StyleBoxFlat" id="1"] +content_margin_left = 30.0 +content_margin_top = 5.0 +content_margin_right = 20.0 +content_margin_bottom = 5.0 +bg_color = Color(0.12549, 0.141176, 0.192157, 1) +border_width_left = 1 +border_width_top = 1 +border_width_right = 1 +border_width_bottom = 1 +border_color = Color(0.0980392, 0.113725, 0.152941, 1) +corner_radius_top_left = 3 +corner_radius_top_right = 3 +corner_radius_bottom_right = 3 +corner_radius_bottom_left = 3 + +[sub_resource type="StyleBoxFlat" id="2"] +content_margin_left = 11.0 +content_margin_top = 5.0 +content_margin_right = 20.0 +content_margin_bottom = 5.0 +bg_color = Color(0.12549, 0.141176, 0.192157, 1) +border_width_left = 1 +border_width_top = 1 +border_width_right = 1 +border_width_bottom = 1 +border_color = Color(0.0980392, 0.113725, 0.152941, 1) +corner_radius_top_left = 3 +corner_radius_top_right = 3 +corner_radius_bottom_right = 3 +corner_radius_bottom_left = 3 + +[resource] +LineEdit/colors/clear_button_color = Color(0, 0, 0, 1) +LineEdit/colors/clear_button_color_pressed = Color(0, 0, 0, 1) +LineEdit/colors/cursor_color = Color(1, 1, 1, 1) +LineEdit/colors/font_color = Color(1, 1, 1, 1) +LineEdit/colors/font_color_selected = Color(1, 1, 1, 1) +LineEdit/colors/font_color_uneditable = Color(1, 1, 1, 1) +LineEdit/colors/selection_color = Color(1, 1, 1, 0.235294) +LineEdit/constants/minimum_spaces = 10 +LineEdit/fonts/font = null +LineEdit/icons/clear = null +LineEdit/styles/focus = SubResource("1") +LineEdit/styles/normal = SubResource("2") +LineEdit/styles/read_only = SubResource("1") +LineEditWithIcon/base_type = &"LineEdit" +LineEditWithIcon/styles/normal = SubResource("1") diff --git a/addons/dialogic/Editor/Events/styles/ResourceMenuHover.tres b/addons/dialogic/Editor/Events/styles/ResourceMenuHover.tres new file mode 100644 index 0000000..ecf8376 --- /dev/null +++ b/addons/dialogic/Editor/Events/styles/ResourceMenuHover.tres @@ -0,0 +1,11 @@ +[gd_resource type="StyleBoxFlat" format=2] + +[resource] +content_margin_left = 25.0 +content_margin_right = 10.0 +content_margin_top = 4.0 +content_margin_bottom = 4.0 +bg_color = Color( 0.466667, 0.466667, 0.466667, 0.141176 ) +border_width_bottom = 2 +corner_radius_top_left = 4 +corner_radius_top_right = 4 diff --git a/addons/dialogic/Editor/Events/styles/ResourceMenuNormal.tres b/addons/dialogic/Editor/Events/styles/ResourceMenuNormal.tres new file mode 100644 index 0000000..d14860a --- /dev/null +++ b/addons/dialogic/Editor/Events/styles/ResourceMenuNormal.tres @@ -0,0 +1,13 @@ +[gd_resource type="StyleBoxFlat" format=2] + +[resource] +content_margin_left = 25.0 +content_margin_right = 10.0 +content_margin_top = 4.0 +content_margin_bottom = 4.0 +bg_color = Color( 0.180392, 0.180392, 0.180392, 0.219608 ) +draw_center = false +border_width_bottom = 2 +border_color = Color( 0.8, 0.8, 0.8, 0.286275 ) +corner_radius_top_left = 4 +corner_radius_top_right = 4 diff --git a/addons/dialogic/Editor/Events/styles/ResourceMenuPanelBackground.tres b/addons/dialogic/Editor/Events/styles/ResourceMenuPanelBackground.tres new file mode 100644 index 0000000..314544b --- /dev/null +++ b/addons/dialogic/Editor/Events/styles/ResourceMenuPanelBackground.tres @@ -0,0 +1,17 @@ +[gd_resource type="StyleBoxFlat" format=3 uid="uid://c8k6tbipodsg"] + +[resource] +content_margin_left = 10.0 +content_margin_top = 10.0 +content_margin_right = 10.0 +content_margin_bottom = 10.0 +bg_color = Color(0, 0, 0, 1) +border_width_left = 1 +border_width_top = 1 +border_width_right = 1 +border_width_bottom = 1 +border_color = Color(0.8, 0.8, 0.8, 0.109804) +corner_radius_top_left = 4 +corner_radius_top_right = 4 +corner_radius_bottom_right = 4 +corner_radius_bottom_left = 4 diff --git a/addons/dialogic/Editor/Events/styles/SectionPanel.tres b/addons/dialogic/Editor/Events/styles/SectionPanel.tres new file mode 100644 index 0000000..b886c6e --- /dev/null +++ b/addons/dialogic/Editor/Events/styles/SectionPanel.tres @@ -0,0 +1,17 @@ +[gd_resource type="StyleBoxFlat" format=2] + +[resource] +content_margin_left = 6.0 +content_margin_right = 6.0 +content_margin_top = 5.0 +content_margin_bottom = 4.0 +bg_color = Color( 0.6, 0.6, 0.6, 0 ) +border_width_left = 1 +border_width_top = 1 +border_width_right = 1 +border_width_bottom = 1 +border_color = Color( 0.2, 0.227451, 0.309804, 1 ) +corner_radius_top_left = 3 +corner_radius_top_right = 3 +corner_radius_bottom_right = 3 +corner_radius_bottom_left = 3 diff --git a/addons/dialogic/Editor/Events/styles/SimpleButtonHover.tres b/addons/dialogic/Editor/Events/styles/SimpleButtonHover.tres new file mode 100644 index 0000000..5be19d4 --- /dev/null +++ b/addons/dialogic/Editor/Events/styles/SimpleButtonHover.tres @@ -0,0 +1,17 @@ +[gd_resource type="StyleBoxFlat" format=2] + +[resource] +content_margin_left = 3.0 +content_margin_right = 3.0 +content_margin_top = 3.0 +content_margin_bottom = 3.0 +bg_color = Color( 0.2, 0.231373, 0.309804, 0.317647 ) +border_width_left = 1 +border_width_top = 1 +border_width_right = 1 +border_width_bottom = 1 +border_color = Color( 0.8, 0.8, 0.8, 0.109804 ) +corner_radius_top_left = 4 +corner_radius_top_right = 4 +corner_radius_bottom_right = 4 +corner_radius_bottom_left = 4 diff --git a/addons/dialogic/Editor/Events/styles/SimpleButtonNormal.tres b/addons/dialogic/Editor/Events/styles/SimpleButtonNormal.tres new file mode 100644 index 0000000..e5c06b4 --- /dev/null +++ b/addons/dialogic/Editor/Events/styles/SimpleButtonNormal.tres @@ -0,0 +1,17 @@ +[gd_resource type="StyleBoxFlat" format=2] + +[resource] +content_margin_left = 3.0 +content_margin_right = 3.0 +content_margin_top = 3.0 +content_margin_bottom = 3.0 +bg_color = Color( 0.2, 0.231373, 0.309804, 0.235294 ) +border_width_left = 1 +border_width_top = 1 +border_width_right = 1 +border_width_bottom = 1 +border_color = Color( 0.8, 0.8, 0.8, 0.109804 ) +corner_radius_top_left = 4 +corner_radius_top_right = 4 +corner_radius_bottom_right = 4 +corner_radius_bottom_left = 4 diff --git a/addons/dialogic/Editor/Events/styles/TextBackground.tres b/addons/dialogic/Editor/Events/styles/TextBackground.tres new file mode 100644 index 0000000..0d74e3d --- /dev/null +++ b/addons/dialogic/Editor/Events/styles/TextBackground.tres @@ -0,0 +1,12 @@ +[gd_resource type="StyleBoxFlat" format=3 uid="uid://cu8otiwksn8ma"] + +[resource] +content_margin_left = 10.0 +content_margin_top = 13.0 +content_margin_bottom = 2.0 +bg_color = Color(1, 1, 1, 0.0784314) +border_color = Color(0.454902, 0.454902, 0.454902, 1) +corner_radius_top_left = 8 +corner_radius_top_right = 8 +corner_radius_bottom_right = 8 +corner_radius_bottom_left = 8 diff --git a/addons/dialogic/Editor/Events/styles/selected_styleboxflat.tres b/addons/dialogic/Editor/Events/styles/selected_styleboxflat.tres new file mode 100644 index 0000000..c9312fb --- /dev/null +++ b/addons/dialogic/Editor/Events/styles/selected_styleboxflat.tres @@ -0,0 +1,16 @@ +[gd_resource type="StyleBoxFlat" format=3 uid="uid://obyrr26pqk2p"] + +[resource] +content_margin_left = 3.0 +content_margin_top = 1.0 +content_margin_right = 4.0 +content_margin_bottom = 1.0 +bg_color = Color(0.776471, 0.776471, 0.776471, 0.207843) +border_color = Color(1, 1, 1, 1) +corner_radius_top_left = 5 +corner_radius_top_right = 5 +corner_radius_bottom_right = 5 +corner_radius_bottom_left = 5 +expand_margin_left = 1.0 +expand_margin_top = 1.0 +expand_margin_bottom = 2.0 diff --git a/addons/dialogic/Editor/Events/styles/unselected_stylebox.tres b/addons/dialogic/Editor/Events/styles/unselected_stylebox.tres new file mode 100644 index 0000000..2fae3b3 --- /dev/null +++ b/addons/dialogic/Editor/Events/styles/unselected_stylebox.tres @@ -0,0 +1,7 @@ +[gd_resource type="StyleBoxEmpty" format=3 uid="uid://cl75ikyq2is7c"] + +[resource] +content_margin_left = 3.0 +content_margin_top = 1.0 +content_margin_right = 4.0 +content_margin_bottom = 1.0 diff --git a/addons/dialogic/Editor/HomePage/home_page.gd b/addons/dialogic/Editor/HomePage/home_page.gd new file mode 100644 index 0000000..15aff25 --- /dev/null +++ b/addons/dialogic/Editor/HomePage/home_page.gd @@ -0,0 +1,86 @@ +@tool +extends DialogicEditor + +## A Main page in the dialogic editor. + +var tips: Array = [] + + + +func _get_icon() -> Texture: + return load("res://addons/dialogic/Editor/Images/plugin-icon.svg") + + +func _ready() -> void: + self_modulate = get_theme_color("font_color", "Editor") + self_modulate.a = 0.2 + + var edit_scale := DialogicUtil.get_editor_scale() + %HomePageBox.custom_minimum_size = Vector2(600, 350)*edit_scale + %TopPanel.custom_minimum_size.y = 100*edit_scale + %VersionLabel.set('theme_override_font_sizes/font_size', 10 * edit_scale) + var plugin_cfg := ConfigFile.new() + plugin_cfg.load("res://addons/dialogic/plugin.cfg") + %VersionLabel.text = plugin_cfg.get_value('plugin', 'version', 'unknown version') + + %BottomPanel.self_modulate = get_theme_color("dark_color_3", "Editor") + + %RandomTipLabel.add_theme_color_override("font_color", get_theme_color("property_color_z", "Editor")) + %RandomTipMoreButton.icon = get_theme_icon("ExternalLink", "EditorIcons") + + + +func _register() -> void: + editors_manager.register_simple_editor(self) + + self.alternative_text = "Welcome to dialogic!" + + + +func _open(extra_info:Variant="") -> void: + if tips.is_empty(): + var file := FileAccess.open('res://addons/dialogic/Editor/HomePage/tips.txt', FileAccess.READ) + tips = file.get_as_text().split('\n') + tips = tips.filter(func(item): return !item.is_empty()) + + randomize() + var tip: String = tips[randi()%len(tips)] + var text := tip.get_slice(';',0).strip_edges() + var action := tip.get_slice(';',1).strip_edges() + if action == text: + action = "" + show_tip(text, action) + + +func show_tip(text:String='', action:String='') -> void: + if text.is_empty(): + %TipBox.hide() + %RandomTipLabel.hide() + return + + %TipBox.show() + %RandomTipLabel.show() + %RandomTip.text = '[i]'+text + + if action.is_empty(): + %RandomTipMoreButton.hide() + return + + %RandomTipMoreButton.show() + + if %RandomTipMoreButton.pressed.is_connected(_on_tip_action): + %RandomTipMoreButton.pressed.disconnect(_on_tip_action) + %RandomTipMoreButton.pressed.connect(_on_tip_action.bind(action)) + + +func _on_tip_action(action:String) -> void: + if action.begins_with('https://'): + OS.shell_open(action) + return + elif action.begins_with('editor://'): + var editor_name := action.trim_prefix('editor://').get_slice('->',0) + var extra_info := action.trim_prefix('editor://').get_slice('->',1) + if editor_name in editors_manager.editors: + editors_manager.open_editor(editors_manager.editors[editor_name].node, false, extra_info) + return + print("Tip button doesn't do anything (", action, ")") diff --git a/addons/dialogic/Editor/HomePage/home_page.gd.uid b/addons/dialogic/Editor/HomePage/home_page.gd.uid new file mode 100644 index 0000000..80bfac7 --- /dev/null +++ b/addons/dialogic/Editor/HomePage/home_page.gd.uid @@ -0,0 +1 @@ +uid://bl3vudjf3wn2x diff --git a/addons/dialogic/Editor/HomePage/home_page.tscn b/addons/dialogic/Editor/HomePage/home_page.tscn new file mode 100644 index 0000000..5e91757 --- /dev/null +++ b/addons/dialogic/Editor/HomePage/home_page.tscn @@ -0,0 +1,373 @@ +[gd_scene load_steps=23 format=3 uid="uid://cqy73hshqqgga"] + +[ext_resource type="Script" uid="uid://bl3vudjf3wn2x" path="res://addons/dialogic/Editor/HomePage/home_page.gd" id="1_6g38w"] +[ext_resource type="Texture2D" uid="uid://cvmlp5nxb2rer" path="res://addons/dialogic/Editor/HomePage/icon_bg.png" id="1_ed1g1"] +[ext_resource type="Texture2D" uid="uid://bt87p6qlso0ya" path="res://addons/dialogic/Editor/Images/dialogic-logo.svg" id="3_3leok"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_imi2d"] +draw_center = false +corner_radius_top_left = 15 +corner_radius_top_right = 15 +shadow_color = Color(0.796078, 0.572549, 0.933333, 0.0627451) +shadow_size = 24 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_n2afh"] +corner_radius_top_left = 15 +corner_radius_top_right = 15 + +[sub_resource type="Gradient" id="Gradient_lt7uf"] +colors = PackedColorArray(0.296484, 0.648457, 1, 1, 0.732014, 0.389374, 1, 1) + +[sub_resource type="GradientTexture2D" id="GradientTexture2D_2klx3"] +gradient = SubResource("Gradient_lt7uf") +fill_from = Vector2(0.151515, 0.272727) +fill_to = Vector2(1, 1) + +[sub_resource type="Gradient" id="Gradient_1gns2"] +offsets = PackedFloat32Array(0.302013, 0.872483) +colors = PackedColorArray(0.365323, 0.360806, 0.260695, 0, 0.615686, 0.615686, 0.615686, 0.592157) + +[sub_resource type="GradientTexture2D" id="GradientTexture2D_u0aw3"] +gradient = SubResource("Gradient_1gns2") +fill = 1 +fill_from = Vector2(0.497835, 0.493506) +fill_to = Vector2(1, 1) + +[sub_resource type="FontVariation" id="FontVariation_vepxx"] +variation_embolden = 2.0 + +[sub_resource type="LabelSettings" id="LabelSettings_w8q1h"] +font = SubResource("FontVariation_vepxx") +font_size = 40 +outline_size = 14 +outline_color = Color(0.0901961, 0.0901961, 0.0901961, 0.258824) + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_p7ka2"] +content_margin_left = 10.0 +content_margin_top = 10.0 +content_margin_right = 10.0 +content_margin_bottom = 10.0 +bg_color = Color(1, 1, 1, 1) +corner_radius_bottom_right = 15 +corner_radius_bottom_left = 15 + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_es88k"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ce6uo"] +content_margin_left = 7.0 +content_margin_top = 7.0 +content_margin_right = 7.0 +content_margin_bottom = 14.0 +bg_color = Color(0.803922, 0.352941, 1, 0.141176) +corner_radius_top_left = 10 +corner_radius_top_right = 10 +corner_radius_bottom_right = 10 +corner_radius_bottom_left = 10 + +[sub_resource type="FontVariation" id="FontVariation_elu6e"] +variation_embolden = 1.1 + +[sub_resource type="FontVariation" id="FontVariation_5kbdj"] +variation_transform = Transform2D(1, 0.239, 0, 1, 0, 0) + +[sub_resource type="FontVariation" id="FontVariation_g0m61"] +variation_embolden = 1.43 +variation_transform = Transform2D(1, 0.343, 0, 1, 0, 0) + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_a8dvw"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ckyhx"] +content_margin_left = 4.0 +content_margin_top = 4.0 +content_margin_right = 4.0 +content_margin_bottom = 4.0 +bg_color = Color(0.470588, 0.196078, 0.6, 1) +corner_radius_top_left = 5 +corner_radius_top_right = 5 +corner_radius_bottom_right = 5 +corner_radius_bottom_left = 5 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_l1doy"] +content_margin_left = 4.0 +content_margin_top = 4.0 +content_margin_right = 4.0 +content_margin_bottom = 4.0 +bg_color = Color(0.470588, 0.196078, 0.6, 1) +border_width_left = 1 +border_width_top = 1 +border_width_right = 1 +border_width_bottom = 1 +corner_radius_top_left = 5 +corner_radius_top_right = 5 +corner_radius_bottom_right = 5 +corner_radius_bottom_left = 5 + +[sub_resource type="Image" id="Image_ipcwk"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_sr7s6"] +image = SubResource("Image_ipcwk") + +[node name="HomePage" type="TextureRect"] +self_modulate = Color(0, 0, 0, 0.2) +clip_contents = true +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_right = -2.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = ExtResource("1_ed1g1") +expand_mode = 1 +stretch_mode = 3 +script = ExtResource("1_6g38w") + +[node name="CenterContainer" type="CenterContainer" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="HomePageBox" type="VBoxContainer" parent="CenterContainer"] +unique_name_in_owner = true +custom_minimum_size = Vector2(600, 350) +layout_mode = 2 +theme_override_constants/separation = 0 + +[node name="TopPanel" type="Panel" parent="CenterContainer/HomePageBox"] +unique_name_in_owner = true +custom_minimum_size = Vector2(0, 100) +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_imi2d") + +[node name="Header2" type="Panel" parent="CenterContainer/HomePageBox/TopPanel"] +clip_children = 1 +clip_contents = true +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_vertical = 3 +size_flags_stretch_ratio = 0.4 +theme_override_styles/panel = SubResource("StyleBoxFlat_n2afh") + +[node name="BG" type="TextureRect" parent="CenterContainer/HomePageBox/TopPanel/Header2"] +modulate = Color(0.65098, 0.65098, 0.65098, 1) +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_vertical = 3 +size_flags_stretch_ratio = 0.3 +texture = SubResource("GradientTexture2D_2klx3") +expand_mode = 1 + +[node name="Vignette" type="TextureRect" parent="CenterContainer/HomePageBox/TopPanel/Header2"] +modulate = Color(0, 0, 0, 1) +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_top = -166.0 +offset_bottom = 166.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = SubResource("GradientTexture2D_u0aw3") +expand_mode = 1 + +[node name="Logo" type="TextureRect" parent="CenterContainer/HomePageBox/TopPanel"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = 19.0 +offset_top = 10.0 +offset_right = -23.0 +offset_bottom = -10.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_vertical = 3 +size_flags_stretch_ratio = 0.3 +texture = ExtResource("3_3leok") +expand_mode = 1 +stretch_mode = 5 + +[node name="Label" type="Label" parent="CenterContainer/HomePageBox/TopPanel/Logo"] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = 155.0 +offset_top = -37.0 +offset_right = 185.0 +offset_bottom = 21.0 +grow_horizontal = 2 +grow_vertical = 2 +rotation = -0.201447 +text = "2" +label_settings = SubResource("LabelSettings_w8q1h") + +[node name="BottomPanel" type="PanelContainer" parent="CenterContainer/HomePageBox"] +unique_name_in_owner = true +self_modulate = Color(0, 0, 0, 1) +layout_mode = 2 +size_flags_vertical = 3 +theme_override_styles/panel = SubResource("StyleBoxFlat_p7ka2") + +[node name="VersionLabel" type="Label" parent="CenterContainer/HomePageBox/BottomPanel"] +unique_name_in_owner = true +modulate = Color(1, 1, 1, 0.501961) +layout_mode = 2 +size_flags_vertical = 8 +theme_override_font_sizes/font_size = 10 +text = "2.0-Alpha-15 WIP (Godot 4.2+)" +horizontal_alignment = 2 + +[node name="ScrollContainer" type="ScrollContainer" parent="CenterContainer/HomePageBox/BottomPanel"] +layout_mode = 2 + +[node name="HBoxContainer" type="HBoxContainer" parent="CenterContainer/HomePageBox/BottomPanel/ScrollContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_override_constants/separation = 50 + +[node name="CenterContainer" type="VBoxContainer" parent="CenterContainer/HomePageBox/BottomPanel/ScrollContainer/HBoxContainer"] +layout_mode = 2 +size_flags_stretch_ratio = 0.4 + +[node name="Label" type="Label" parent="CenterContainer/HomePageBox/BottomPanel/ScrollContainer/HBoxContainer/CenterContainer"] +layout_mode = 2 +theme_type_variation = &"DialogicSection" +theme_override_constants/line_spacing = 0 +text = "Documentation" + +[node name="WikiButton" type="LinkButton" parent="CenterContainer/HomePageBox/BottomPanel/ScrollContainer/HBoxContainer/CenterContainer"] +layout_mode = 2 +theme_type_variation = &"DialogicLink" +text = " Wiki" +underline = 2 +uri = "https://docs.dialogic.pro/" + +[node name="WikiGettingStartedButton" type="LinkButton" parent="CenterContainer/HomePageBox/BottomPanel/ScrollContainer/HBoxContainer/CenterContainer"] +layout_mode = 2 +theme_type_variation = &"DialogicLink" +text = " Getting Started" +underline = 2 +uri = "https://docs.dialogic.pro/getting-started.html" + +[node name="Separator" type="Control" parent="CenterContainer/HomePageBox/BottomPanel/ScrollContainer/HBoxContainer/CenterContainer"] +custom_minimum_size = Vector2(0, 10) +layout_mode = 2 + +[node name="Label2" type="Label" parent="CenterContainer/HomePageBox/BottomPanel/ScrollContainer/HBoxContainer/CenterContainer"] +layout_mode = 2 +theme_type_variation = &"DialogicSection" +text = "Get in touch" + +[node name="BugRequestButton" type="LinkButton" parent="CenterContainer/HomePageBox/BottomPanel/ScrollContainer/HBoxContainer/CenterContainer"] +layout_mode = 2 +theme_type_variation = &"DialogicLink" +text = " Bug / Request" +underline = 2 +uri = "https://github.com/dialogic-godot/dialogic/issues/new/choose" + +[node name="DiscordButton" type="LinkButton" parent="CenterContainer/HomePageBox/BottomPanel/ScrollContainer/HBoxContainer/CenterContainer"] +layout_mode = 2 +theme_type_variation = &"DialogicLink" +text = " Discord" +underline = 2 +uri = "https://discord.gg/2hHQzkf2pX" + +[node name="Website" type="LinkButton" parent="CenterContainer/HomePageBox/BottomPanel/ScrollContainer/HBoxContainer/CenterContainer"] +layout_mode = 2 +theme_type_variation = &"DialogicLink" +text = " Website" +underline = 2 +uri = "https://dialogic.pro/" + +[node name="DonateButton" type="LinkButton" parent="CenterContainer/HomePageBox/BottomPanel/ScrollContainer/HBoxContainer/CenterContainer"] +layout_mode = 2 +theme_type_variation = &"DialogicLink" +text = " Donate" +underline = 2 +uri = "https://www.patreon.com/JowanSpooner" + +[node name="CenterContainer2" type="VBoxContainer" parent="CenterContainer/HomePageBox/BottomPanel/ScrollContainer/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_constants/separation = 15 + +[node name="Control" type="Control" parent="CenterContainer/HomePageBox/BottomPanel/ScrollContainer/HBoxContainer/CenterContainer2"] +layout_mode = 2 + +[node name="WelcomeText" type="RichTextLabel" parent="CenterContainer/HomePageBox/BottomPanel/ScrollContainer/HBoxContainer/CenterContainer2"] +layout_mode = 2 +theme_override_styles/normal = SubResource("StyleBoxEmpty_es88k") +bbcode_enabled = true +text = "[center]Welcome to dialogic, a plugin that lets you easily create stories and dialogs for your game!" +fit_content = true + +[node name="RandomTipSection" type="VBoxContainer" parent="CenterContainer/HomePageBox/BottomPanel/ScrollContainer/HBoxContainer/CenterContainer2"] +unique_name_in_owner = true +layout_mode = 2 +theme_override_constants/separation = -4 +alignment = 1 + +[node name="RandomTipLabel" type="Label" parent="CenterContainer/HomePageBox/BottomPanel/ScrollContainer/HBoxContainer/CenterContainer2/RandomTipSection"] +unique_name_in_owner = true +layout_mode = 2 +theme_type_variation = &"DialogicSection" +theme_override_colors/font_color = Color(0, 0, 0, 1) +text = "Random Tip" + +[node name="TipBox" type="PanelContainer" parent="CenterContainer/HomePageBox/BottomPanel/ScrollContainer/HBoxContainer/CenterContainer2/RandomTipSection"] +unique_name_in_owner = true +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_ce6uo") + +[node name="RandomTip" type="RichTextLabel" parent="CenterContainer/HomePageBox/BottomPanel/ScrollContainer/HBoxContainer/CenterContainer2/RandomTipSection/TipBox"] +unique_name_in_owner = true +clip_contents = false +layout_mode = 2 +theme_override_fonts/bold_font = SubResource("FontVariation_elu6e") +theme_override_fonts/italics_font = SubResource("FontVariation_5kbdj") +theme_override_fonts/bold_italics_font = SubResource("FontVariation_g0m61") +theme_override_styles/normal = SubResource("StyleBoxEmpty_a8dvw") +bbcode_enabled = true +text = "[i]You can[/i] [b]create custom[/b] events, [i][b]subsystems, text effects and even editors for[/b][i] [code]dialogic!" +fit_content = true + +[node name="RandomTipMoreButton" type="Button" parent="CenterContainer/HomePageBox/BottomPanel/ScrollContainer/HBoxContainer/CenterContainer2/RandomTipSection/TipBox/RandomTip"] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = 3 +anchor_left = 1.0 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = -30.0 +offset_top = 1.0 +offset_right = -8.0 +offset_bottom = 23.0 +grow_horizontal = 0 +grow_vertical = 0 +tooltip_text = "Check it out!" +theme_override_styles/normal = SubResource("StyleBoxFlat_ckyhx") +theme_override_styles/hover = SubResource("StyleBoxFlat_l1doy") +icon = SubResource("ImageTexture_sr7s6") +expand_icon = true diff --git a/addons/dialogic/Editor/HomePage/icon_bg.png b/addons/dialogic/Editor/HomePage/icon_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..77f127d8e6683e4fa520d7e48df25435ab78d531 GIT binary patch literal 150354 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ໟ#iWEi#phYP1Ct+w{7yRsJ1Q%+gd&N5^-s{jPC3( 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�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 literal 0 HcmV?d00001 diff --git a/addons/dialogic/Editor/HomePage/icon_bg.png.import b/addons/dialogic/Editor/HomePage/icon_bg.png.import new file mode 100644 index 0000000..2160d4d --- /dev/null +++ b/addons/dialogic/Editor/HomePage/icon_bg.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cvmlp5nxb2rer" +path="res://.godot/imported/icon_bg.png-5937ce0a857c4a8a9d624ea9ebf09a97.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/HomePage/icon_bg.png" +dest_files=["res://.godot/imported/icon_bg.png-5937ce0a857c4a8a9d624ea9ebf09a97.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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/dialogic/Editor/HomePage/tips.txt b/addons/dialogic/Editor/HomePage/tips.txt new file mode 100644 index 0000000..4ca5ec7 --- /dev/null +++ b/addons/dialogic/Editor/HomePage/tips.txt @@ -0,0 +1,11 @@ +Dialogic variables can be changed from timelines [b]and[/b] scripts! They can be used in conditions and inside of texts!; editor://VariablesEditor +You can create [b]custom modules[/b] for dialogic, including events, subsystems, text effects, ui layouts and even editors!; editor://Settings->General +If there are events you never need, you can hide them from the list in the editor!; editor://Settings->Modules +Did you know that dialogic supports translations? It does!; editor://Settings->Translations +You can use [b]bbcode effects[/b] in text events! What are they though???; https://docs.godotengine.org/en/latest/tutorials/ui/bbcode_in_richtextlabel.html +Writing [/i]<Oh hi/Hello you/Well, well>[i] in a text event will pick a random one of the three strings! +There are a number of cool text effects like [pause=x], [speed=x] and [portrait=x]. Try them out!; +You can use scenes as portraits! This gives you basically limitless freedom.; https://dialogic-docs.coppolaemilio.com/custom-portraits.html +You can use scenes as backgrounds. This way they can be animated or whatever you want! +Dialogic has a built in save and load system! It's pretty powerful!; editor://Settings->Saving +You can add multiple glossary files, each containing words that can be hovered for information!; editor://GlossaryEditor diff --git a/addons/dialogic/Editor/Images/Dropdown/default.svg b/addons/dialogic/Editor/Images/Dropdown/default.svg new file mode 100644 index 0000000..1437dbc --- /dev/null +++ b/addons/dialogic/Editor/Images/Dropdown/default.svg @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> +<circle cx="8" cy="8" r="3" fill="#2F80ED"/> +</svg> diff --git a/addons/dialogic/Editor/Images/Dropdown/default.svg.import b/addons/dialogic/Editor/Images/Dropdown/default.svg.import new file mode 100644 index 0000000..3106df7 --- /dev/null +++ b/addons/dialogic/Editor/Images/Dropdown/default.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bsx8dtqf3vych" +path="res://.godot/imported/default.svg-3f34de5e45bef5de4d9c15ef78c00c6c.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/Dropdown/default.svg" +dest_files=["res://.godot/imported/default.svg-3f34de5e45bef5de4d9c15ef78c00c6c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Editor/Images/Dropdown/divide.svg b/addons/dialogic/Editor/Images/Dropdown/divide.svg new file mode 100644 index 0000000..7fb881f --- /dev/null +++ b/addons/dialogic/Editor/Images/Dropdown/divide.svg @@ -0,0 +1,10 @@ +<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> +<g clip-path="url(#clip0_3666_572)"> +<path d="M11.1812 7.46591V8.57955H4.81756V7.46591H11.1812ZM7.99938 11.483C7.7508 11.483 7.53868 11.3968 7.36301 11.2244C7.19067 11.0488 7.10449 10.8366 7.10449 10.5881C7.10449 10.3494 7.19067 10.1439 7.36301 9.97159C7.53868 9.79924 7.7508 9.71307 7.99938 9.71307C8.23802 9.71307 8.44351 9.79924 8.61586 9.97159C8.7882 10.1439 8.87438 10.3494 8.87438 10.5881C8.87438 10.8366 8.7882 11.0488 8.61586 11.2244C8.44351 11.3968 8.23802 11.483 7.99938 11.483ZM7.99938 6.33239C7.83366 6.33239 7.68285 6.29261 7.54696 6.21307C7.41107 6.13352 7.30336 6.0258 7.22381 5.88991C7.14427 5.75402 7.10449 5.60322 7.10449 5.4375C7.10449 5.19886 7.19067 4.99337 7.36301 4.82102C7.53868 4.64867 7.7508 4.5625 7.99938 4.5625C8.23802 4.5625 8.44351 4.64867 8.61586 4.82102C8.7882 4.99337 8.87438 5.19886 8.87438 5.4375C8.87438 5.68608 8.7882 5.8982 8.61586 6.07386C8.44351 6.24621 8.23802 6.33239 7.99938 6.33239Z" fill="#2F80ED"/> +</g> +<defs> +<clipPath id="clip0_3666_572"> +<rect width="16" height="16" fill="white"/> +</clipPath> +</defs> +</svg> diff --git a/addons/dialogic/Editor/Images/Dropdown/divide.svg.import b/addons/dialogic/Editor/Images/Dropdown/divide.svg.import new file mode 100644 index 0000000..b9ee08d --- /dev/null +++ b/addons/dialogic/Editor/Images/Dropdown/divide.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c5laykjsxaxtl" +path="res://.godot/imported/divide.svg-4928f878a07ba93ebc44d8ae73ad4c1f.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/Dropdown/divide.svg" +dest_files=["res://.godot/imported/divide.svg-4928f878a07ba93ebc44d8ae73ad4c1f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Editor/Images/Dropdown/join.svg b/addons/dialogic/Editor/Images/Dropdown/join.svg new file mode 100644 index 0000000..9eb7aa9 --- /dev/null +++ b/addons/dialogic/Editor/Images/Dropdown/join.svg @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M4 7V9H7.5V12L11.5 8L7.5 4V7H4Z" fill="#A5EFAC"/> +</svg> diff --git a/addons/dialogic/Editor/Images/Dropdown/join.svg.import b/addons/dialogic/Editor/Images/Dropdown/join.svg.import new file mode 100644 index 0000000..9a91637 --- /dev/null +++ b/addons/dialogic/Editor/Images/Dropdown/join.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b7j220k0ewh35" +path="res://.godot/imported/join.svg-2f0d7b9e8e01cf0e62b8c3a85aff6213.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/Dropdown/join.svg" +dest_files=["res://.godot/imported/join.svg-2f0d7b9e8e01cf0e62b8c3a85aff6213.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Editor/Images/Dropdown/leave.svg b/addons/dialogic/Editor/Images/Dropdown/leave.svg new file mode 100644 index 0000000..e234619 --- /dev/null +++ b/addons/dialogic/Editor/Images/Dropdown/leave.svg @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M11.5 9L11.5 7L8 7L8 4L4 8L8 12L8 9L11.5 9Z" fill="#D14A4A"/> +</svg> diff --git a/addons/dialogic/Editor/Images/Dropdown/leave.svg.import b/addons/dialogic/Editor/Images/Dropdown/leave.svg.import new file mode 100644 index 0000000..bf243da --- /dev/null +++ b/addons/dialogic/Editor/Images/Dropdown/leave.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cspjyvye6c0r6" +path="res://.godot/imported/leave.svg-c936f6e3d601b8c12c23f205a765084e.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/Dropdown/leave.svg" +dest_files=["res://.godot/imported/leave.svg-c936f6e3d601b8c12c23f205a765084e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Editor/Images/Dropdown/minus.svg b/addons/dialogic/Editor/Images/Dropdown/minus.svg new file mode 100644 index 0000000..eb5d732 --- /dev/null +++ b/addons/dialogic/Editor/Images/Dropdown/minus.svg @@ -0,0 +1,10 @@ +<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> +<g clip-path="url(#clip0_3666_568)"> +<path d="M10.2291 7.08807V8.18182H5.77459V7.08807H10.2291Z" fill="#2F80ED"/> +</g> +<defs> +<clipPath id="clip0_3666_568"> +<rect width="16" height="16" fill="white"/> +</clipPath> +</defs> +</svg> diff --git a/addons/dialogic/Editor/Images/Dropdown/minus.svg.import b/addons/dialogic/Editor/Images/Dropdown/minus.svg.import new file mode 100644 index 0000000..63d5e9a --- /dev/null +++ b/addons/dialogic/Editor/Images/Dropdown/minus.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dwy14qrkfoeb" +path="res://.godot/imported/minus.svg-29f22d1aa24635bae2c03057c07be8bc.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/Dropdown/minus.svg" +dest_files=["res://.godot/imported/minus.svg-29f22d1aa24635bae2c03057c07be8bc.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Editor/Images/Dropdown/multiply.svg b/addons/dialogic/Editor/Images/Dropdown/multiply.svg new file mode 100644 index 0000000..d4327d1 --- /dev/null +++ b/addons/dialogic/Editor/Images/Dropdown/multiply.svg @@ -0,0 +1,10 @@ +<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> +<g clip-path="url(#clip0_3666_570)"> +<path d="M10.4255 11.2045L4.81756 5.59659L5.57324 4.84091L11.1812 10.4489L10.4255 11.2045ZM5.57324 11.2045L4.81756 10.4489L10.4255 4.84091L11.1812 5.59659L5.57324 11.2045Z" fill="#2F80ED"/> +</g> +<defs> +<clipPath id="clip0_3666_570"> +<rect width="16" height="16" fill="white"/> +</clipPath> +</defs> +</svg> diff --git a/addons/dialogic/Editor/Images/Dropdown/multiply.svg.import b/addons/dialogic/Editor/Images/Dropdown/multiply.svg.import new file mode 100644 index 0000000..93bb66a --- /dev/null +++ b/addons/dialogic/Editor/Images/Dropdown/multiply.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ddmapfkunbtg7" +path="res://.godot/imported/multiply.svg-0e9db99aafb66d43ee14adcca26c5b47.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/Dropdown/multiply.svg" +dest_files=["res://.godot/imported/multiply.svg-0e9db99aafb66d43ee14adcca26c5b47.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Editor/Images/Dropdown/plus.svg b/addons/dialogic/Editor/Images/Dropdown/plus.svg new file mode 100644 index 0000000..adf5179 --- /dev/null +++ b/addons/dialogic/Editor/Images/Dropdown/plus.svg @@ -0,0 +1,10 @@ +<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> +<g clip-path="url(#clip0_3666_566)"> +<path d="M7.44256 11.304V4.74148H8.5562V11.304H7.44256ZM4.71813 8.57955V7.46591H11.2806V8.57955H4.71813Z" fill="#2F80ED"/> +</g> +<defs> +<clipPath id="clip0_3666_566"> +<rect width="16" height="16" fill="white"/> +</clipPath> +</defs> +</svg> diff --git a/addons/dialogic/Editor/Images/Dropdown/plus.svg.import b/addons/dialogic/Editor/Images/Dropdown/plus.svg.import new file mode 100644 index 0000000..80d686d --- /dev/null +++ b/addons/dialogic/Editor/Images/Dropdown/plus.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cqqtygfbvgtag" +path="res://.godot/imported/plus.svg-e094b0b8505b5d910717883d06553532.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/Dropdown/plus.svg" +dest_files=["res://.godot/imported/plus.svg-e094b0b8505b5d910717883d06553532.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Editor/Images/Dropdown/set.svg b/addons/dialogic/Editor/Images/Dropdown/set.svg new file mode 100644 index 0000000..16c6a8b --- /dev/null +++ b/addons/dialogic/Editor/Images/Dropdown/set.svg @@ -0,0 +1,10 @@ +<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> +<g clip-path="url(#clip0_3666_561)"> +<path d="M4.93688 7.08807V6.0142H11.0619V7.08807H4.93688ZM4.93688 10.0312V8.95739H11.0619V10.0312H4.93688Z" fill="#2F80ED"/> +</g> +<defs> +<clipPath id="clip0_3666_561"> +<rect width="16" height="16" fill="white"/> +</clipPath> +</defs> +</svg> diff --git a/addons/dialogic/Editor/Images/Dropdown/set.svg.import b/addons/dialogic/Editor/Images/Dropdown/set.svg.import new file mode 100644 index 0000000..948482b --- /dev/null +++ b/addons/dialogic/Editor/Images/Dropdown/set.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ddcfl67v0r1lw" +path="res://.godot/imported/set.svg-f100fad003be2285d5d0da5c58417203.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/Dropdown/set.svg" +dest_files=["res://.godot/imported/set.svg-f100fad003be2285d5d0da5c58417203.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Editor/Images/Dropdown/update.svg b/addons/dialogic/Editor/Images/Dropdown/update.svg new file mode 100644 index 0000000..44f1f3c --- /dev/null +++ b/addons/dialogic/Editor/Images/Dropdown/update.svg @@ -0,0 +1,5 @@ +<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path fill-rule="evenodd" clip-rule="evenodd" d="M3.45082 5.30639L4.73587 5.26497L4.79109 6.97825L6.50437 6.92302L6.54579 8.20807L3.54747 8.30471L3.45082 5.30639Z" fill="#2F80ED"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M13.3458 12H12.0601L12.0601 10.2858H10.3459L10.3459 9.00012L13.3458 9.00012L13.3458 12Z" fill="#2F80ED"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M8.35461 11.7143C9.76618 11.7143 10.9724 10.8651 11.4559 9.66667H12.8546C12.3227 11.5864 10.5095 13 8.35461 13C6.1997 13 4.38656 11.5864 3.85461 9.66667H5.25336C5.73678 10.8651 6.94305 11.7143 8.35461 11.7143ZM5.41117 7C5.96903 5.98047 7.07784 5.28571 8.35461 5.28571C9.63139 5.28571 10.7402 5.98047 11.2981 7H12.7476C12.1082 5.25221 10.3828 4 8.35461 4C6.32646 4 4.60105 5.25221 3.96159 7H5.41117Z" fill="#2F80ED"/> +</svg> diff --git a/addons/dialogic/Editor/Images/Dropdown/update.svg.import b/addons/dialogic/Editor/Images/Dropdown/update.svg.import new file mode 100644 index 0000000..cd0064c --- /dev/null +++ b/addons/dialogic/Editor/Images/Dropdown/update.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://t1roknwygcf3" +path="res://.godot/imported/update.svg-cefa0fe6bfa50911bb9a77982288e485.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/Dropdown/update.svg" +dest_files=["res://.godot/imported/update.svg-cefa0fe6bfa50911bb9a77982288e485.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Editor/Images/Interactable/decrement_icon.svg b/addons/dialogic/Editor/Images/Interactable/decrement_icon.svg new file mode 100644 index 0000000..eb97691 --- /dev/null +++ b/addons/dialogic/Editor/Images/Interactable/decrement_icon.svg @@ -0,0 +1 @@ +<svg width="14" height="6" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><path d="m8.046 5.406 4.91-5.134C13.063.16 12.954 0 12.838 0h-2.432L7.303 3.244c-.173.181-.402.189-.582 0L3.618 0H1.166c-.159 0-.208.19-.13.272l4.942 5.134c.54.56 1.538.554 2.068 0z" fill="#e0e0e0" style="fill:#fff;fill-opacity:1;stroke-width:1.05736"/></svg> diff --git a/addons/dialogic/Editor/Images/Interactable/decrement_icon.svg.import b/addons/dialogic/Editor/Images/Interactable/decrement_icon.svg.import new file mode 100644 index 0000000..26aa135 --- /dev/null +++ b/addons/dialogic/Editor/Images/Interactable/decrement_icon.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://brjikovneb63n" +path="res://.godot/imported/decrement_icon.svg-9556cf56db91e200fb946372e010fd5e.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/Interactable/decrement_icon.svg" +dest_files=["res://.godot/imported/decrement_icon.svg-9556cf56db91e200fb946372e010fd5e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Editor/Images/Interactable/increment_icon.svg b/addons/dialogic/Editor/Images/Interactable/increment_icon.svg new file mode 100644 index 0000000..0b72c07 --- /dev/null +++ b/addons/dialogic/Editor/Images/Interactable/increment_icon.svg @@ -0,0 +1 @@ +<svg width="14" height="6" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><path d="m5.954.418-4.91 5.135c-.107.112.002.271.118.271h2.432l3.103-3.243c.173-.182.402-.19.582 0l3.103 3.243h2.452c.159 0 .208-.19.13-.271L8.021.418c-.54-.56-1.538-.554-2.068 0z" fill="#e0e0e0" style="fill:#fff;fill-opacity:1;stroke-width:1.05736"/></svg> diff --git a/addons/dialogic/Editor/Images/Interactable/increment_icon.svg.import b/addons/dialogic/Editor/Images/Interactable/increment_icon.svg.import new file mode 100644 index 0000000..f411bd0 --- /dev/null +++ b/addons/dialogic/Editor/Images/Interactable/increment_icon.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dh1ycbmw8anqh" +path="res://.godot/imported/increment_icon.svg-081e6509e76349f0628c55a41e85fd65.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/Interactable/increment_icon.svg" +dest_files=["res://.godot/imported/increment_icon.svg-081e6509e76349f0628c55a41e85fd65.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Editor/Images/Pieces/add-folder.svg b/addons/dialogic/Editor/Images/Pieces/add-folder.svg new file mode 100644 index 0000000..7331b61 --- /dev/null +++ b/addons/dialogic/Editor/Images/Pieces/add-folder.svg @@ -0,0 +1,4 @@ +<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M13 10H16V12H13V15H11V12H8V10H11V7H13V10Z" fill="#A5EFAC"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M1.29289 2.29289C1.48043 2.10536 1.73478 2 2 2H8C8.26522 2 8.51957 2.10536 8.70711 2.29289C8.89464 2.48043 9 2.73478 9 3V4C9 4.26522 9.10536 4.51957 9.29289 4.70711C9.48043 4.89464 9.73478 5 10 5H14C14.2652 5 14.5196 5.10536 14.7071 5.29289C14.8946 5.48043 15 5.73478 15 6V9H14V6H10V9H7V9.5V13H10V14H2C1.73478 14 1.48043 13.8946 1.29289 13.7071C1.10536 13.5196 1 13.2652 1 13V11V5V3C1 2.73478 1.10536 2.48043 1.29289 2.29289ZM14 14C14.2652 14 14.5196 13.8946 14.7071 13.7071C14.8946 13.5196 15 13.2652 15 13H14V14Z" fill="#E0E0E0"/> +</svg> diff --git a/addons/dialogic/Editor/Images/Pieces/add-folder.svg.import b/addons/dialogic/Editor/Images/Pieces/add-folder.svg.import new file mode 100644 index 0000000..cd569e7 --- /dev/null +++ b/addons/dialogic/Editor/Images/Pieces/add-folder.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://babwe22dqjta" +path="res://.godot/imported/add-folder.svg-41a970370f904038e63c13bddbdb6450.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/Pieces/add-folder.svg" +dest_files=["res://.godot/imported/add-folder.svg-41a970370f904038e63c13bddbdb6450.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Editor/Images/Pieces/close-icon.svg b/addons/dialogic/Editor/Images/Pieces/close-icon.svg new file mode 100644 index 0000000..3e3f7af --- /dev/null +++ b/addons/dialogic/Editor/Images/Pieces/close-icon.svg @@ -0,0 +1 @@ +<svg viewBox="0 0 22 22" xmlns="http://www.w3.org/2000/svg"><path d="m14 17-6-6 6-6" fill="none" stroke="#fff" stroke-width="2"/></svg> \ No newline at end of file diff --git a/addons/dialogic/Editor/Images/Pieces/close-icon.svg.import b/addons/dialogic/Editor/Images/Pieces/close-icon.svg.import new file mode 100644 index 0000000..bc57609 --- /dev/null +++ b/addons/dialogic/Editor/Images/Pieces/close-icon.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bff65e82555qr" +path="res://.godot/imported/close-icon.svg-c630c93ada599b08938f4854f5376f2f.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/Pieces/close-icon.svg" +dest_files=["res://.godot/imported/close-icon.svg-c630c93ada599b08938f4854f5376f2f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Editor/Images/Pieces/closed-icon.svg b/addons/dialogic/Editor/Images/Pieces/closed-icon.svg new file mode 100644 index 0000000..4032eab --- /dev/null +++ b/addons/dialogic/Editor/Images/Pieces/closed-icon.svg @@ -0,0 +1,3 @@ +<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M8 5L14 11L8 17" stroke="white" stroke-width="2"/> +</svg> diff --git a/addons/dialogic/Editor/Images/Pieces/closed-icon.svg.import b/addons/dialogic/Editor/Images/Pieces/closed-icon.svg.import new file mode 100644 index 0000000..17fd504 --- /dev/null +++ b/addons/dialogic/Editor/Images/Pieces/closed-icon.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dx3o2ild56i76" +path="res://.godot/imported/closed-icon.svg-b4f16653b91d6792313a130565319b2f.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/Pieces/closed-icon.svg" +dest_files=["res://.godot/imported/closed-icon.svg-b4f16653b91d6792313a130565319b2f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Editor/Images/Pieces/expand-icon.svg b/addons/dialogic/Editor/Images/Pieces/expand-icon.svg new file mode 100644 index 0000000..3ec3def --- /dev/null +++ b/addons/dialogic/Editor/Images/Pieces/expand-icon.svg @@ -0,0 +1,5 @@ +<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg"> +<circle cx="10.5" cy="3.5" r="1.5" fill="white"/> +<circle cx="10.5" cy="11" r="1.5" fill="white"/> +<circle cx="10.5" cy="18.5" r="1.5" fill="white"/> +</svg> diff --git a/addons/dialogic/Editor/Images/Pieces/expand-icon.svg.import b/addons/dialogic/Editor/Images/Pieces/expand-icon.svg.import new file mode 100644 index 0000000..0d7d7e7 --- /dev/null +++ b/addons/dialogic/Editor/Images/Pieces/expand-icon.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cl03vrbj5wsjk" +path="res://.godot/imported/expand-icon.svg-26099b197ab0f314e2253848fcc22962.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/Pieces/expand-icon.svg" +dest_files=["res://.godot/imported/expand-icon.svg-26099b197ab0f314e2253848fcc22962.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Editor/Images/Pieces/open-icon.svg b/addons/dialogic/Editor/Images/Pieces/open-icon.svg new file mode 100644 index 0000000..c66c422 --- /dev/null +++ b/addons/dialogic/Editor/Images/Pieces/open-icon.svg @@ -0,0 +1,3 @@ +<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M17 8L11 14L5 8" stroke="white" stroke-width="2"/> +</svg> diff --git a/addons/dialogic/Editor/Images/Pieces/open-icon.svg.import b/addons/dialogic/Editor/Images/Pieces/open-icon.svg.import new file mode 100644 index 0000000..1288c3a --- /dev/null +++ b/addons/dialogic/Editor/Images/Pieces/open-icon.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://mc7a24bcvjo3" +path="res://.godot/imported/open-icon.svg-1a2ae6d0121a79b624c0fb87cc9ceea2.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/Pieces/open-icon.svg" +dest_files=["res://.godot/imported/open-icon.svg-1a2ae6d0121a79b624c0fb87cc9ceea2.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Editor/Images/Pieces/variable.svg b/addons/dialogic/Editor/Images/Pieces/variable.svg new file mode 100644 index 0000000..236ca35 --- /dev/null +++ b/addons/dialogic/Editor/Images/Pieces/variable.svg @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M13.9645 2.62927L12.8459 5.22444C12.6271 5.04546 12.3835 4.89134 12.1151 4.76208C11.8565 4.62287 11.5881 4.55327 11.3097 4.55327C11.0909 4.55327 10.8821 4.59802 10.6832 4.68751C10.4943 4.77699 10.3203 4.89631 10.1612 5.04546C10.0021 5.19461 9.86293 5.36364 9.74361 5.55256C9.6243 5.73154 9.52486 5.91052 9.44532 6.08949L9.14702 6.93964C9.35583 7.37714 9.55966 7.79475 9.75853 8.19248C9.92756 8.53055 10.1016 8.87359 10.2805 9.2216C10.4595 9.55966 10.6087 9.82813 10.728 10.027C10.9169 10.3153 11.1058 10.6136 11.2948 10.9219C11.4837 11.2202 11.6925 11.4936 11.9212 11.7422C12.0206 11.8516 12.1399 11.9261 12.2791 11.9659C12.4283 11.9957 12.5625 12.0107 12.6818 12.0107C12.8707 12.0107 13.0497 11.9858 13.2188 11.9361C13.3878 11.8864 13.5469 11.8217 13.696 11.7422L14.0689 12.2195C13.9297 12.4382 13.7607 12.657 13.5618 12.8757C13.3629 13.0945 13.1442 13.2933 12.9055 13.4723C12.6769 13.6513 12.4283 13.7955 12.1598 13.9048C11.9013 14.0242 11.6378 14.0838 11.3693 14.0838C11.1307 14.0838 10.9169 14.044 10.728 13.9645C10.549 13.8949 10.3849 13.8004 10.2358 13.6811C10.0867 13.5519 9.94745 13.4027 9.81819 13.2337C9.68893 13.0646 9.55469 12.8906 9.41549 12.7117C9.30611 12.5426 9.1868 12.3388 9.05753 12.1001C8.93822 11.8516 8.81393 11.598 8.68466 11.3395C8.5554 11.081 8.42614 10.8324 8.29688 10.5938C8.16762 10.3452 8.04333 10.1364 7.92401 9.96734C7.8743 10.1364 7.82955 10.3054 7.78978 10.4744C7.75001 10.6136 7.70526 10.7578 7.65555 10.907C7.60583 11.0561 7.56109 11.1705 7.52131 11.25C7.37216 11.5682 7.18324 11.8963 6.95455 12.2344C6.72586 12.5724 6.46236 12.8807 6.16407 13.1591C5.87572 13.4276 5.55753 13.6513 5.20952 13.8303C4.86151 13.9993 4.49361 14.0838 4.10583 14.0838C3.75782 14.0838 3.41975 14.0142 3.09162 13.875C2.7635 13.7457 2.46023 13.5717 2.18182 13.353L3.12145 10.8771C3.43964 11.076 3.78765 11.255 4.16549 11.4141C4.54333 11.5632 4.92117 11.6378 5.29901 11.6378C5.41833 11.6378 5.54262 11.6278 5.67188 11.608C5.80114 11.5781 5.92543 11.5384 6.04475 11.4886C6.17401 11.429 6.28836 11.3594 6.38779 11.2798C6.48722 11.1903 6.5618 11.0859 6.61151 10.9666C6.68111 10.8374 6.75569 10.6683 6.83523 10.4595C6.91478 10.2507 6.99432 10.0419 7.07387 9.8331C7.16336 9.59447 7.25285 9.34091 7.34234 9.07245L4.53836 4.5831C4.4091 4.43395 4.25001 4.31464 4.06109 4.22515C3.88211 4.12572 3.69319 4.076 3.49432 4.076C3.32529 4.076 3.1662 4.1108 3.01705 4.1804C2.8679 4.24006 2.72373 4.32458 2.58452 4.43395L2.18182 3.91194C2.32103 3.70313 2.48509 3.4993 2.67401 3.30043C2.87287 3.09162 3.08665 2.90768 3.31535 2.74859C3.54404 2.57955 3.78765 2.44532 4.04617 2.34589C4.30469 2.23651 4.56819 2.18182 4.83665 2.18182C5.16478 2.18182 5.46805 2.26634 5.74645 2.43537C6.02486 2.59447 6.28339 2.79333 6.52202 3.03197C6.76066 3.2706 6.97941 3.52912 7.17827 3.80753C7.37714 4.08594 7.55611 4.34447 7.7152 4.5831C7.79475 4.69248 7.87927 4.83168 7.96876 5.00072C8.06819 5.15981 8.16265 5.3189 8.25214 5.47799C8.36151 5.65697 8.46591 5.85086 8.56535 6.05966C8.66478 5.82103 8.76918 5.58239 8.87856 5.34376C8.96805 5.14489 9.05753 4.94106 9.14702 4.73225C9.24645 4.5135 9.33594 4.32458 9.41549 4.16549C9.56464 3.88708 9.73367 3.62856 9.92259 3.38992C10.1115 3.15128 10.3203 2.94248 10.549 2.7635C10.7876 2.58452 11.0462 2.44532 11.3246 2.34589C11.603 2.23651 11.9063 2.18182 12.2344 2.18182C12.5426 2.18182 12.8409 2.2216 13.1293 2.30114C13.4176 2.38069 13.696 2.49006 13.9645 2.62927Z" fill="white"/> +</svg> diff --git a/addons/dialogic/Editor/Images/Pieces/variable.svg.import b/addons/dialogic/Editor/Images/Pieces/variable.svg.import new file mode 100644 index 0000000..f3eddb1 --- /dev/null +++ b/addons/dialogic/Editor/Images/Pieces/variable.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dih1coellhwm8" +path="res://.godot/imported/variable.svg-50a50248b9d47e5556571e4111e8d5b4.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/Pieces/variable.svg" +dest_files=["res://.godot/imported/variable.svg-50a50248b9d47e5556571e4111e8d5b4.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Editor/Images/Pieces/variable_icon.png b/addons/dialogic/Editor/Images/Pieces/variable_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..779e80f04b53c193feea0e0782266087d9bd1e5f GIT binary patch literal 639 zcmV-_0)YLAP)<h;3K|Lk000e1NJLTq002M$002M;1^@s6s%dfF00009a7bBm000&x z000&x0ZCFM@Bjb+0drDELIAGL9O(c600d`2O+f$vv5yP<VFdsH0u)I^K~#7F?b(5G zf-n>Y;O7P%A>F_c=mw7926Y43KsV409Dxz)25|%2;BRsXB~b7MwFTn)?sC0?yh}oO z34urmA%qY@2qA<J;z0m1Qwmc`IA5l$=?><)H&eEzXw+=H)4ehOjH!_F4ew(stp>#V z3_7vTo~FQ5WEoLe_&fO)5pRn)ipB<a=VKaQDVTWcXT<q8aL?pWyPjCKGj(K)6-@!$ z9V_6HpF*7kIax=nBjRY9I#bC#*9Zjpz;|A#^f7D)Z_peWYnnQ^DU8bvdGP!2?jO;S zEK!d(MRVZq97p-zYX3i%B-vSHQo!ef0?o{?C?$xSCad!YN|9+;jyOw75nMvlOyf&R z8Ql7SGp__U6!^74PALPwHYi_V6mV;UoKlC|YlD{<1zbYRDP@Rz=U0>}#O)!RC`EAF zXFo%o>4c0@gXU|mofdDc4K(JG5KTo_+;fZOmRI4AachGe%|XzxLsv)mhMt0kt%Gx; zJqinY0$;)QM#kBciz!!A>@d#!U+c11EZ&3b?QtEPZ?kbe%r%$RHDr!mX>5q!%&e%6 z7~Ck(egqv*e|Z}J@xbrROitbtCuR?^ZTt-s#DB=Jj!dkWJ;aK}6lMs-e;7GN#^YX@ ztuv;wQiK};nyK(+V9Z;cYCC9JYXi7EQ0>`Qw6Cn9JNS52N0dHxMnVW7gb+dqA%qYQ Z`UX0hjmKjP#Bcxr002ovPDHLkV1lEG4<`Ts literal 0 HcmV?d00001 diff --git a/addons/dialogic/Editor/Images/Pieces/variable_icon.png.import b/addons/dialogic/Editor/Images/Pieces/variable_icon.png.import new file mode 100644 index 0000000..5aed468 --- /dev/null +++ b/addons/dialogic/Editor/Images/Pieces/variable_icon.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ikdhcat2nq2r" +path="res://.godot/imported/variable_icon.png-df9d711980209a7752dc8762037e39ad.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/Pieces/variable_icon.png" +dest_files=["res://.godot/imported/variable_icon.png-df9d711980209a7752dc8762037e39ad.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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/dialogic/Editor/Images/Pieces/warning.svg b/addons/dialogic/Editor/Images/Pieces/warning.svg new file mode 100644 index 0000000..a252bde --- /dev/null +++ b/addons/dialogic/Editor/Images/Pieces/warning.svg @@ -0,0 +1,3 @@ +<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path fill-rule="evenodd" clip-rule="evenodd" d="M12.366 4.5C11.9811 3.83333 11.0189 3.83333 10.634 4.5L3.27276 17.25C2.88786 17.9167 3.36898 18.75 4.13878 18.75H18.8612C19.631 18.75 20.1121 17.9167 19.7272 17.25L12.366 4.5ZM10.6668 14.3809H12.073L12.2723 8.46875H10.4676L10.6668 14.3809ZM12.0555 15.5586C11.8836 15.3906 11.6551 15.3066 11.3699 15.3066C11.0887 15.3066 10.8602 15.3926 10.6844 15.5645C10.5125 15.7324 10.4266 15.9453 10.4266 16.2031C10.4266 16.4609 10.5125 16.6738 10.6844 16.8418C10.8602 17.0098 11.0887 17.0937 11.3699 17.0937C11.6551 17.0937 11.8836 17.0098 12.0555 16.8418C12.2312 16.6738 12.3191 16.4609 12.3191 16.2031C12.3191 15.9414 12.2312 15.7266 12.0555 15.5586Z" fill="#FCFF73"/> +</svg> diff --git a/addons/dialogic/Editor/Images/Pieces/warning.svg.import b/addons/dialogic/Editor/Images/Pieces/warning.svg.import new file mode 100644 index 0000000..06a13ac --- /dev/null +++ b/addons/dialogic/Editor/Images/Pieces/warning.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d4n3j4lvatwxb" +path="res://.godot/imported/warning.svg-a48ae93c4663637f2aca88d055604495.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/Pieces/warning.svg" +dest_files=["res://.godot/imported/warning.svg-a48ae93c4663637f2aca88d055604495.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Editor/Images/Resources/character.svg b/addons/dialogic/Editor/Images/Resources/character.svg new file mode 100644 index 0000000..8871f5e --- /dev/null +++ b/addons/dialogic/Editor/Images/Resources/character.svg @@ -0,0 +1,4 @@ +<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M11.6364 4.36363C11.6364 6.37194 10.0083 7.99999 8 7.99999C5.99169 7.99999 4.36363 6.37194 4.36363 4.36363C4.36363 2.35532 5.99169 0.727264 8 0.727264C10.0083 0.727264 11.6364 2.35532 11.6364 4.36363Z" fill="white"/> +<path d="M12.3636 13.3904C12.3636 15.2727 10.41 15.2727 8 15.2727C5.59003 15.2727 3.63636 15.2727 3.63636 13.3904C3.63636 10.0117 5.59003 7.27272 8 7.27272C10.41 7.27272 12.3636 10.0117 12.3636 13.3904Z" fill="white"/> +</svg> diff --git a/addons/dialogic/Editor/Images/Resources/character.svg.import b/addons/dialogic/Editor/Images/Resources/character.svg.import new file mode 100644 index 0000000..79b6082 --- /dev/null +++ b/addons/dialogic/Editor/Images/Resources/character.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bbea0efx0ybu7" +path="res://.godot/imported/character.svg-48bc1c93fa13733a935ca2c669d933a7.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/Resources/character.svg" +dest_files=["res://.godot/imported/character.svg-48bc1c93fa13733a935ca2c669d933a7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Editor/Images/Resources/icon_character.png b/addons/dialogic/Editor/Images/Resources/icon_character.png new file mode 100644 index 0000000000000000000000000000000000000000..5858854742aa5e2f19debcb1c6310581a24ded7f GIT binary patch literal 569 zcmV-90>=G`P)<h;3K|Lk000e1NJLTq002M$002M;1^@s6s%dfF00009a7bBm000&x z000&x0ZCFM@Bjb+0drDELIAGL9O(c600d`2O+f$vv5yP<VFdsH0nSN8K~#7F?b+dN z!Y~j8;Fm4{BY1;$gJy%W0c=o4U<0}V-2gfPbb_*hVFKC-u1;e_g;13y@2nW^ldSwe z0{h`4XB#la7-NhvMwN&RLz{-S49&~QA+&Y;%;6e^fj!58HnF&xAmYEimjCmiJs@Xs z@Lt+GWF122{Ht{5CCA$#bb2B@OXNnnP5nzsD7gb!?5qRV2ukPyK&P`$P@)mQJ@{Oh zSwkq$2tdot2cSYDfG;R0ied)^8Ubv<r}3RXGy>Rw?;Sajb_<}tIOL=%hJ<H<9LX&& zhAL7ohd-pfL$-rIiXpU_2|oM5|0ebF*f$*fOq9yrOHx&W12ivX$51MJlZ&^&LfV-k zcVQ4)=_cP0Lg(kgQ6e|O-4pbZ@S)gQ=&Td|p5Pq05Z=^3S3&{xH7IrQqP2lJh5~jS zP=dcBd^8e;X8}6^m47L!20sBAEr2-vOX#9+k27aLii1r0Z!iNWp|2{fsUa`}&^Qpe zq_+X2s@5Ecm;pGXK@B>`8885m9gTr!hcxyeVg~SrG&blX(OCwcdqJPY5LUuhoe|8S zpnw87EsGyfza3n>HhEL*;<Y*v-pA`I9FKp(7-Nhv#u%D!yG$Z$N_vVx00000NkvXX Hu0mjf8hqyp literal 0 HcmV?d00001 diff --git a/addons/dialogic/Editor/Images/Resources/icon_character.png.import b/addons/dialogic/Editor/Images/Resources/icon_character.png.import new file mode 100644 index 0000000..a03e360 --- /dev/null +++ b/addons/dialogic/Editor/Images/Resources/icon_character.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bmwrsq48ywc50" +path="res://.godot/imported/icon_character.png-97a1851bbafe2b302ea88c25a87ee2c1.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/Resources/icon_character.png" +dest_files=["res://.godot/imported/icon_character.png-97a1851bbafe2b302ea88c25a87ee2c1.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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/dialogic/Editor/Images/Resources/portrait.svg b/addons/dialogic/Editor/Images/Resources/portrait.svg new file mode 100644 index 0000000..006807a --- /dev/null +++ b/addons/dialogic/Editor/Images/Resources/portrait.svg @@ -0,0 +1,9 @@ +<svg width="16" height="16" xmlns="http://www.w3.org/2000/svg" version="1.1"> + <g> + <title>Layer 1 + + + + + + \ No newline at end of file diff --git a/addons/dialogic/Editor/Images/Resources/portrait.svg.import b/addons/dialogic/Editor/Images/Resources/portrait.svg.import new file mode 100644 index 0000000..d12dd14 --- /dev/null +++ b/addons/dialogic/Editor/Images/Resources/portrait.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dfi7fhfc4dbc3" +path="res://.godot/imported/portrait.svg-7d29c7cfe3e086d65dce33c3d66c48cd.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/Resources/portrait.svg" +dest_files=["res://.godot/imported/portrait.svg-7d29c7cfe3e086d65dce33c3d66c48cd.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Editor/Images/Resources/timeline.svg b/addons/dialogic/Editor/Images/Resources/timeline.svg new file mode 100644 index 0000000..fd0a48a --- /dev/null +++ b/addons/dialogic/Editor/Images/Resources/timeline.svg @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + diff --git a/addons/dialogic/Editor/Images/Resources/timeline.svg.import b/addons/dialogic/Editor/Images/Resources/timeline.svg.import new file mode 100644 index 0000000..aaa5521 --- /dev/null +++ b/addons/dialogic/Editor/Images/Resources/timeline.svg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://j7ym07anlusi" +path="res://.godot/imported/timeline.svg-4b0b3233c6ce249f8277502cd9b13eaf.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/Resources/timeline.svg" +dest_files=["res://.godot/imported/timeline.svg-4b0b3233c6ce249f8277502cd9b13eaf.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/addons/dialogic/Editor/Images/Toolbar/add-character.svg b/addons/dialogic/Editor/Images/Toolbar/add-character.svg new file mode 100644 index 0000000..9a42063 --- /dev/null +++ b/addons/dialogic/Editor/Images/Toolbar/add-character.svg @@ -0,0 +1,4 @@ + + + + diff --git a/addons/dialogic/Editor/Images/Toolbar/add-character.svg.import b/addons/dialogic/Editor/Images/Toolbar/add-character.svg.import new file mode 100644 index 0000000..3ad3985 --- /dev/null +++ b/addons/dialogic/Editor/Images/Toolbar/add-character.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://my600mb32ydt" +path="res://.godot/imported/add-character.svg-a658b65c1225b02657a50d5c965e0d5e.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/Toolbar/add-character.svg" +dest_files=["res://.godot/imported/add-character.svg-a658b65c1225b02657a50d5c965e0d5e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Editor/Images/Toolbar/add-timeline.svg b/addons/dialogic/Editor/Images/Toolbar/add-timeline.svg new file mode 100644 index 0000000..6f09e2e --- /dev/null +++ b/addons/dialogic/Editor/Images/Toolbar/add-timeline.svg @@ -0,0 +1,61 @@ + + + + + + + + + + diff --git a/addons/dialogic/Editor/Images/Toolbar/add-timeline.svg.import b/addons/dialogic/Editor/Images/Toolbar/add-timeline.svg.import new file mode 100644 index 0000000..9f497f9 --- /dev/null +++ b/addons/dialogic/Editor/Images/Toolbar/add-timeline.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bymlbr4o2m3jc" +path="res://.godot/imported/add-timeline.svg-86961b528ebdf01f585931a15fea1755.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/Toolbar/add-timeline.svg" +dest_files=["res://.godot/imported/add-timeline.svg-86961b528ebdf01f585931a15fea1755.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Editor/Images/Unknown.png b/addons/dialogic/Editor/Images/Unknown.png new file mode 100644 index 0000000000000000000000000000000000000000..87ab9137a7d2ab521b1004222cb7070decd02141 GIT binary patch literal 3331 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 N002ovPDHLkV1mh%7zY3V literal 0 HcmV?d00001 diff --git a/addons/dialogic/Editor/Images/Unknown.png.import b/addons/dialogic/Editor/Images/Unknown.png.import new file mode 100644 index 0000000..d05ffc3 --- /dev/null +++ b/addons/dialogic/Editor/Images/Unknown.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bbf2dlmbn12h0" +path="res://.godot/imported/Unknown.png-1cc7645f56036e8d378a70ac1dd772bb.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/Unknown.png" +dest_files=["res://.godot/imported/Unknown.png-1cc7645f56036e8d378a70ac1dd772bb.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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/dialogic/Editor/Images/dialogic-logo.svg b/addons/dialogic/Editor/Images/dialogic-logo.svg new file mode 100644 index 0000000..d6e5b69 --- /dev/null +++ b/addons/dialogic/Editor/Images/dialogic-logo.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/addons/dialogic/Editor/Images/dialogic-logo.svg.import b/addons/dialogic/Editor/Images/dialogic-logo.svg.import new file mode 100644 index 0000000..7003395 --- /dev/null +++ b/addons/dialogic/Editor/Images/dialogic-logo.svg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bt87p6qlso0ya" +path="res://.godot/imported/dialogic-logo.svg-e43201cabc9573eeb3f78fd91ea9d909.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/dialogic-logo.svg" +dest_files=["res://.godot/imported/dialogic-logo.svg-e43201cabc9573eeb3f78fd91ea9d909.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/addons/dialogic/Editor/Images/plugin-icon.svg b/addons/dialogic/Editor/Images/plugin-icon.svg new file mode 100644 index 0000000..6f542b6 --- /dev/null +++ b/addons/dialogic/Editor/Images/plugin-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/addons/dialogic/Editor/Images/plugin-icon.svg.import b/addons/dialogic/Editor/Images/plugin-icon.svg.import new file mode 100644 index 0000000..a6315d5 --- /dev/null +++ b/addons/dialogic/Editor/Images/plugin-icon.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dybg3l5pwetne" +path="res://.godot/imported/plugin-icon.svg-aa6701e8ed73f5fe5d177dfddce3a0e3.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/plugin-icon.svg" +dest_files=["res://.godot/imported/plugin-icon.svg-aa6701e8ed73f5fe5d177dfddce3a0e3.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Editor/Images/preview_character.png b/addons/dialogic/Editor/Images/preview_character.png new file mode 100644 index 0000000000000000000000000000000000000000..0ef6e853644a7d2bb7a1bf98e487c5f15847c3f6 GIT binary patch literal 63720 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๝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 literal 0 HcmV?d00001 diff --git a/addons/dialogic/Editor/Images/preview_character.png.import b/addons/dialogic/Editor/Images/preview_character.png.import new file mode 100644 index 0000000..95b3c15 --- /dev/null +++ b/addons/dialogic/Editor/Images/preview_character.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://41634vnjwsfw" +path="res://.godot/imported/preview_character.png-54f0625ad8281c635fea35a4930d95b6.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/preview_character.png" +dest_files=["res://.godot/imported/preview_character.png-54f0625ad8281c635fea35a4930d95b6.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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/dialogic/Editor/Images/preview_character_speaker.png b/addons/dialogic/Editor/Images/preview_character_speaker.png new file mode 100644 index 0000000000000000000000000000000000000000..1e1562663021c908e055e76ae398a52d9c051b32 GIT binary patch literal 40709 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 n)H4^ml#% literal 0 HcmV?d00001 diff --git a/addons/dialogic/Editor/Images/preview_character_speaker.png.import b/addons/dialogic/Editor/Images/preview_character_speaker.png.import new file mode 100644 index 0000000..80a5a2f --- /dev/null +++ b/addons/dialogic/Editor/Images/preview_character_speaker.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dp7np6b4ipm0a" +path="res://.godot/imported/preview_character_speaker.png-c0667c648e2901adcbe8bf93ddda7f06.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Editor/Images/preview_character_speaker.png" +dest_files=["res://.godot/imported/preview_character_speaker.png-c0667c648e2901adcbe8bf93ddda7f06.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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/dialogic/Editor/Inspector/inspector_plugin.gd b/addons/dialogic/Editor/Inspector/inspector_plugin.gd new file mode 100644 index 0000000..0a40bc3 --- /dev/null +++ b/addons/dialogic/Editor/Inspector/inspector_plugin.gd @@ -0,0 +1,15 @@ +@tool +extends EditorInspectorPlugin + + +func _can_handle(object: Object) -> bool: + return true + + +func _parse_property(object: Object, type: Variant.Type, name: String, hint_type: PropertyHint, hint_string: String, usage_flags: int, wide: bool) -> bool: + if type == TYPE_OBJECT and hint_type == PROPERTY_HINT_RESOURCE_TYPE: + if hint_string == "DialogicTimeline": + var editor: EditorProperty = load("res://addons/dialogic/Editor/Inspector/timeline_inspector_field.gd").new() + add_property_editor(name, editor) + return true + return false diff --git a/addons/dialogic/Editor/Inspector/inspector_plugin.gd.uid b/addons/dialogic/Editor/Inspector/inspector_plugin.gd.uid new file mode 100644 index 0000000..b44f0e5 --- /dev/null +++ b/addons/dialogic/Editor/Inspector/inspector_plugin.gd.uid @@ -0,0 +1 @@ +uid://bok1je25mskp7 diff --git a/addons/dialogic/Editor/Inspector/timeline_inspector_field.gd b/addons/dialogic/Editor/Inspector/timeline_inspector_field.gd new file mode 100644 index 0000000..78274d1 --- /dev/null +++ b/addons/dialogic/Editor/Inspector/timeline_inspector_field.gd @@ -0,0 +1,82 @@ +@tool +extends EditorProperty + +var field: Control = null +var button: Button = null +# An internal value of the property. +var current_value: DialogicTimeline = null +# A guard against internal changes when the property is updated. +var updating = false + + +func _init() -> void: + var hbox := HBoxContainer.new() + add_child(hbox) + + field = load("res://addons/dialogic/Editor/Events/Fields/field_options_dynamic.tscn").instantiate() + hbox.add_child(field) + field.placeholder_text = "No Timeline" + field.size_flags_horizontal = Control.SIZE_EXPAND_FILL + field.size_flags_vertical = Control.SIZE_SHRINK_CENTER + field.mode = field.Modes.IDENTIFIER + field.fit_text_length = false + field.valid_file_drop_extension = ".dtl" + field.value_changed.connect(_on_field_value_changed) + field.suggestions_func = get_timeline_suggestions + + button = Button.new() + hbox.add_child(button) + button.hide() + button.pressed.connect(_on_button_pressed, CONNECT_DEFERRED) + + +func _on_field_value_changed(property:String, value:Variant) -> void: + # Ignore the signal if the property is currently being updated. + if updating: + return + + var new_value: DialogicTimeline = null + if value: + new_value = DialogicResourceUtil.get_timeline_resource(value) + + if current_value != new_value: + current_value = new_value + if current_value: + button.show() + else: + button.hide() + emit_changed(get_edited_property(), current_value) + + +func _update_property() -> void: + field.resource_icon = load("res://addons/dialogic/Editor/Images/Resources/timeline.svg") + button.icon = get_theme_icon("ExternalLink", "EditorIcons") + + # Read the current value from the property. + var new_value = get_edited_object()[get_edited_property()] + if (new_value == current_value): + return + + # Update the control with the new value. + updating = true + current_value = new_value + if current_value: + field.set_value(current_value.get_identifier()) + button.show() + else: + button.hide() + field.set_value("") + updating = false + + +func get_timeline_suggestions(filter:String) -> Dictionary: + var suggestions := {} + var timeline_directory := DialogicResourceUtil.get_timeline_directory() + for identifier in timeline_directory.keys(): + suggestions[identifier] = {'value': identifier, 'tooltip':timeline_directory[identifier], 'editor_icon': ["TripleBar", "EditorIcons"]} + return suggestions + + +func _on_button_pressed() -> void: + if current_value: + EditorInterface.edit_resource(current_value) diff --git a/addons/dialogic/Editor/Inspector/timeline_inspector_field.gd.uid b/addons/dialogic/Editor/Inspector/timeline_inspector_field.gd.uid new file mode 100644 index 0000000..47a91e0 --- /dev/null +++ b/addons/dialogic/Editor/Inspector/timeline_inspector_field.gd.uid @@ -0,0 +1 @@ +uid://58xvx63rw20a diff --git a/addons/dialogic/Editor/Settings/CoreSettingsPages/csv_file.gd b/addons/dialogic/Editor/Settings/CoreSettingsPages/csv_file.gd new file mode 100644 index 0000000..3f8fb3a --- /dev/null +++ b/addons/dialogic/Editor/Settings/CoreSettingsPages/csv_file.gd @@ -0,0 +1,356 @@ +class_name DialogicCsvFile +extends RefCounted +## Handles translation of a [class DialogicTimeline] to a CSV file. + +var lines: Array[PackedStringArray] = [] +## Dictionary of lines from the original file. +## Key: String, Value: PackedStringArray +var old_lines: Dictionary = {} + +## The amount of columns the CSV file has after loading it. +## Used to add trailing commas to new lines. +var column_count := 0 + +## Whether this CSV file was able to be loaded a defined +## file path. +var is_new_file: bool = false + +## The underlying file used to read and write the CSV file. +var file: FileAccess + +## File path used to load the CSV file. +var used_file_path: String + +## The amount of events that were updated in the CSV file. +var updated_rows: int = 0 + +## The amount of events that were added to the CSV file. +var new_rows: int = 0 + +## Whether this CSV handler should add newlines as a separator between sections. +## A section may be a new character, new timeline, or new glossary item inside +## a per-project file. +var add_separator: bool = false + +enum PropertyType { + String = 0, + Array = 1, + Other = 2, +} + +## The translation property used for the glossary item translation. +const TRANSLATION_ID := DialogicGlossary.TRANSLATION_PROPERTY + +## Attempts to load the CSV file from [param file_path]. +## If the file does not exist, a single entry is added to the [member lines] +## array. +## The [param separator_enabled] enables adding newlines as a separator to +## per-project files. This is useful for readability. +func _init(file_path: String, original_locale: String, separator_enabled: bool) -> void: + used_file_path = file_path + add_separator = separator_enabled + + # The first entry must be the locale row. + # [method collect_lines_from_timeline] will add the other locales, if any. + var locale_array_line := PackedStringArray(["keys", original_locale]) + lines.append(locale_array_line) + + if not ResourceLoader.exists(file_path): + is_new_file = true + + # The "keys" and original locale are the only columns in a new file. + # For example: "keys, en" + column_count = 2 + return + + file = FileAccess.open(file_path, FileAccess.READ) + + var locale_csv_row := file.get_csv_line() + column_count = locale_csv_row.size() + var locale_key := locale_csv_row[0] + + old_lines[locale_key] = locale_csv_row + + _read_file_into_lines() + + +## Private function to read the CSV file into the [member lines] array. +## Cannot be called on a new file. +func _read_file_into_lines() -> void: + while not file.eof_reached(): + var line := file.get_csv_line() + var row_key := line[0] + + old_lines[row_key] = line + + +## Collects names from the given [param characters] and adds them to the +## [member lines]. +## +## If this is the character name CSV file, use this method to +## take previously collected characters from other [class DialogicCsvFile]s. +func collect_lines_from_characters(characters: Dictionary) -> void: + for character: DialogicCharacter in characters.values(): + # Add row for display names. + var name_property := DialogicCharacter.TranslatedProperties.NAME + var display_name_key: String = character.get_property_translation_key(name_property) + var line_value: String = character.display_name + var array_line := PackedStringArray([display_name_key, line_value]) + lines.append(array_line) + + var nicknames: Array = character.nicknames + + if not nicknames.is_empty(): + var nick_name_property := DialogicCharacter.TranslatedProperties.NICKNAMES + var nickname_string: String = ",".join(nicknames) + var nickname_name_line_key: String = character.get_property_translation_key(nick_name_property) + var nick_array_line := PackedStringArray([nickname_name_line_key, nickname_string]) + lines.append(nick_array_line) + + # New character item, if needed, add a separator. + if add_separator: + _append_empty() + + +## Appends an empty line to the [member lines] array. +func _append_empty() -> void: + var empty_line := PackedStringArray(["", ""]) + lines.append(empty_line) + + +## Returns the property type for the given [param key]. +func _get_key_type(key: String) -> PropertyType: + if key.ends_with(DialogicGlossary.NAME_PROPERTY): + return PropertyType.String + + if key.ends_with(DialogicGlossary.ALTERNATIVE_PROPERTY): + return PropertyType.Array + + return PropertyType.Other + + +func _process_line_into_array(csv_values: PackedStringArray, property_type: PropertyType) -> Array[String]: + const KEY_VALUE_INDEX := 0 + var values_as_array: Array[String] = [] + + for i in csv_values.size(): + + if i == KEY_VALUE_INDEX: + continue + + var csv_value := csv_values[i] + + if csv_value.is_empty(): + continue + + match property_type: + PropertyType.String: + values_as_array = [csv_value] + + PropertyType.Array: + var split_values := csv_value.split(",") + + for value in split_values: + values_as_array.append(value) + + return values_as_array + + +func _add_keys_to_glossary(glossary: DialogicGlossary, names: Array) -> void: + var glossary_prefix_key := glossary._get_glossary_translation_id_prefix() + var glossary_translation_id_prefix := _get_glossary_translation_key_prefix(glossary) + + for glossary_line: PackedStringArray in names: + + if glossary_line.is_empty(): + continue + + var csv_key := glossary_line[0] + + # CSV line separators will be empty. + if not csv_key.begins_with(glossary_prefix_key): + continue + + var value_type := _get_key_type(csv_key) + + # String and Array are the only valid types. + if (value_type == PropertyType.Other + or not csv_key.begins_with(glossary_translation_id_prefix)): + continue + + var new_line_to_add := _process_line_into_array(glossary_line, value_type) + + for name_to_add: String in new_line_to_add: + glossary._translation_keys[name_to_add.strip_edges()] = csv_key + + + +## Reads all [member lines] and adds them to the given [param glossary]'s +## internal collection of words-to-translation-key mappings. +## +## Populate the CSV's lines with the method [method collect_lines_from_glossary] +## before. +func add_translation_keys_to_glossary(glossary: DialogicGlossary) -> void: + glossary._translation_keys.clear() + _add_keys_to_glossary(glossary, lines) + _add_keys_to_glossary(glossary, old_lines.values()) + + +## Returns the translation key prefix for the given [param glossary_translation_id]. +## The resulting format will look like this: Glossary/a2/ +## You can use this to find entries in [member lines] that to a glossary. +func _get_glossary_translation_key_prefix(glossary: DialogicGlossary) -> String: + return ( + DialogicGlossary.RESOURCE_NAME + .path_join(glossary._translation_id) + ) + + +## Returns whether [param value_b] is greater than [param value_a]. +## +## This method helps to sort glossary entry properties by their importance +## matching the order in the editor. +## +## TODO: Allow Dialogic users to define their own order. +func _sort_glossary_entry_property_keys(property_key_a: String, property_key_b: String) -> bool: + const GLOSSARY_CSV_LINE_ORDER := { + DialogicGlossary.NAME_PROPERTY: 0, + DialogicGlossary.ALTERNATIVE_PROPERTY: 1, + DialogicGlossary.TEXT_PROPERTY: 2, + DialogicGlossary.EXTRA_PROPERTY: 3, + } + const UNKNOWN_PROPERTY_ORDER := 100 + + var value_a: int = GLOSSARY_CSV_LINE_ORDER.get(property_key_a, UNKNOWN_PROPERTY_ORDER) + var value_b: int = GLOSSARY_CSV_LINE_ORDER.get(property_key_b, UNKNOWN_PROPERTY_ORDER) + + return value_a < value_b + + +## Collects properties from glossary entries from the given [param glossary] and +## adds them to the [member lines]. +func collect_lines_from_glossary(glossary: DialogicGlossary) -> void: + + for glossary_value: Variant in glossary.entries.values(): + + if glossary_value is String: + continue + + var glossary_entry: Dictionary = glossary_value + var glossary_entry_name: String = glossary_entry[DialogicGlossary.NAME_PROPERTY] + + var _glossary_translation_id := glossary.get_set_glossary_translation_id() + var entry_translation_id := glossary.get_set_glossary_entry_translation_id(glossary_entry_name) + + var entry_property_keys := glossary_entry.keys().duplicate() + entry_property_keys.sort_custom(_sort_glossary_entry_property_keys) + + var entry_name_property: String = glossary_entry[DialogicGlossary.NAME_PROPERTY] + + for entry_key: String in entry_property_keys: + # Ignore private keys. + if entry_key.begins_with(DialogicGlossary.PRIVATE_PROPERTY_PREFIX): + continue + + var item_value: Variant = glossary_entry[entry_key] + var item_value_str := "" + + if item_value is Array: + var item_array := item_value as Array + # We use a space after the comma to make it easier to read. + item_value_str = " ,".join(item_array) + + elif not item_value is String or item_value.is_empty(): + continue + + else: + item_value_str = item_value + + var glossary_csv_key := glossary._get_glossary_translation_key(entry_translation_id, entry_key) + + if (entry_key == DialogicGlossary.NAME_PROPERTY + or entry_key == DialogicGlossary.ALTERNATIVE_PROPERTY): + glossary.entries[glossary_csv_key] = entry_name_property + + var glossary_line := PackedStringArray([glossary_csv_key, item_value_str]) + + lines.append(glossary_line) + + # New glossary item, if needed, add a separator. + if add_separator: + _append_empty() + + + +## Collects translatable events from the given [param timeline] and adds +## them to the [member lines]. +func collect_lines_from_timeline(timeline: DialogicTimeline) -> void: + for event: DialogicEvent in timeline.events: + + if event.can_be_translated(): + + if event._translation_id.is_empty(): + event.add_translation_id() + event.update_text_version() + + var properties: Array = event._get_translatable_properties() + + for property: String in properties: + var line_key: String = event.get_property_translation_key(property) + var line_value: String = event._get_property_original_translation(property) + var array_line := PackedStringArray([line_key, line_value]) + lines.append(array_line) + + # End of timeline, if needed, add a separator. + if add_separator: + _append_empty() + + +## Clears the CSV file on disk and writes the current [member lines] array to it. +## Uses the [member old_lines] dictionary to update existing translations. +## If a translation row misses a column, a trailing comma will be added to +## conform to the CSV file format. +## +## If the locale CSV line was collected only, a new file won't be created and +## already existing translations won't be updated. +func update_csv_file_on_disk() -> void: + # None or locale row only. + if lines.size() < 2: + print_rich("[color=yellow]No lines for the CSV file, skipping: " + used_file_path) + + return + + # Clear the current CSV file. + file = FileAccess.open(used_file_path, FileAccess.WRITE) + + for line in lines: + var row_key := line[0] + + # In case there might be translations for this line already, + # add them at the end again (orig locale text is replaced). + if row_key in old_lines: + var old_line: PackedStringArray = old_lines[row_key] + var updated_line: PackedStringArray = line + old_line.slice(2) + + var line_columns: int = updated_line.size() + var line_columns_to_add := column_count - line_columns + + # Add trailing commas to match the amount of columns. + for _i in range(line_columns_to_add): + updated_line.append("") + + file.store_csv_line(updated_line) + updated_rows += 1 + + else: + var line_columns: int = line.size() + var line_columns_to_add := column_count - line_columns + + # Add trailing commas to match the amount of columns. + for _i in range(line_columns_to_add): + line.append("") + + file.store_csv_line(line) + new_rows += 1 + + file.close() diff --git a/addons/dialogic/Editor/Settings/CoreSettingsPages/csv_file.gd.uid b/addons/dialogic/Editor/Settings/CoreSettingsPages/csv_file.gd.uid new file mode 100644 index 0000000..6b17b20 --- /dev/null +++ b/addons/dialogic/Editor/Settings/CoreSettingsPages/csv_file.gd.uid @@ -0,0 +1 @@ +uid://ddof34f216ceq diff --git a/addons/dialogic/Editor/Settings/CoreSettingsPages/settings_editor.gd b/addons/dialogic/Editor/Settings/CoreSettingsPages/settings_editor.gd new file mode 100644 index 0000000..5b85512 --- /dev/null +++ b/addons/dialogic/Editor/Settings/CoreSettingsPages/settings_editor.gd @@ -0,0 +1,154 @@ +@tool +extends DialogicSettingsPage + +## Settings tab that holds dialogic editor settings. + +const _SETTING_IMAGE_PREVIEW_HEIGHT = "image_preview_height" +const _SETTING_EVENT_BLOCK_MARGIN = "event_block_margin" +const _SETTING_SHOW_EVENT_NAMES = "show_event_names" + +const _SETTING_EVENT_COLOR_PALETTE = "color_palette" +const _SETTING_EVENT_SECTION_ODER = "event_section_order" + +var do_timeline_editor_refresh_on_close := false + +func _get_title() -> String: + return "Editor" + + +func _get_priority() -> int: + return 98 + + +func _refresh() -> void: + do_timeline_editor_refresh_on_close = false + %ImagePreviewHeight.value = DialogicUtil.get_editor_setting(_SETTING_IMAGE_PREVIEW_HEIGHT, 100) + %EventBlockMargin.value = DialogicUtil.get_editor_setting(_SETTING_EVENT_BLOCK_MARGIN, 0) + %ShowEventNames.set_pressed_no_signal(DialogicUtil.get_editor_setting(_SETTING_SHOW_EVENT_NAMES, false)) + + update_color_palette() + reload_section_list() + + +func _ready() -> void: + %ResetColorsButton.icon = get_theme_icon("Reload", "EditorIcons") + %ResetColorsButton.pressed.connect(_on_reset_colors_button) + + %ImagePreviewHeight.value_changed.connect(_on_ImagePreviewHeight_value_changed) + %EventBlockMargin.value_changed.connect(_on_EventBlockMargin_value_changed) + %ShowEventNames.toggled.connect(_on_ShowEventNames_toggled) + + +func _about_to_close(): + if do_timeline_editor_refresh_on_close: + refresh_visual_timeline_editor() + + +func refresh_visual_timeline_editor() -> void: + var timeline_node: DialogicEditor = settings_editor.editors_manager.editors["Timeline"]["node"] + timeline_node.get_node("%VisualEditor").load_event_buttons() + + # If the visual editor is open, close and reopen the timeline to have the colors reloaded. + if timeline_node.get_node("%VisualEditor").visible: + + var current_timeline := timeline_node.current_resource + settings_editor.editors_manager.clear_editor(timeline_node) + + settings_editor.editors_manager.edit_resource(current_timeline, true, true) + + + +#region SECTION ORDER +################################################################################ + +func reload_section_list(): + %SectionList.clear() + %SectionList.create_item() + var cached_events := DialogicResourceUtil.get_event_cache() + var sections := [] + var section_order: Array = DialogicUtil.get_editor_setting(_SETTING_EVENT_SECTION_ODER, ['Main', 'Logic', 'Flow', 'Audio', 'Visuals','Other', 'Helper']) + for ev in cached_events: + if !ev.event_category in sections: + sections.append(ev.event_category) + var item: TreeItem = %SectionList.create_item(null) + item.set_text(0, ev.event_category) + item.add_button(0, get_theme_icon("ArrowUp", "EditorIcons")) + item.add_button(0, get_theme_icon("ArrowDown", "EditorIcons")) + if ev.event_category in section_order: + + item.move_before(item.get_parent().get_child(min(section_order.find(ev.event_category),item.get_parent().get_child_count()-1))) + + %SectionList.get_root().get_child(0).set_button_disabled(0, 0, true) + %SectionList.get_root().get_child(-1).set_button_disabled(0, 1, true) + + +func _on_section_list_button_clicked(item:TreeItem, column, id, mouse_button_index): + if id == 0: + item.move_before(item.get_parent().get_child(item.get_index()-1)) + else: + item.move_after(item.get_parent().get_child(item.get_index()+1)) + + for child in %SectionList.get_root().get_children(): + child.set_button_disabled(0, 0, false) + child.set_button_disabled(0, 1, false) + + %SectionList.get_root().get_child(0).set_button_disabled(0, 0, true) + %SectionList.get_root().get_child(-1).set_button_disabled(0, 1, true) + + var sections := [] + for child in %SectionList.get_root().get_children(): + sections.append(child.get_text(0)) + + DialogicUtil.set_editor_setting(_SETTING_EVENT_SECTION_ODER, sections) + do_timeline_editor_refresh_on_close = true + +#endregion + + +#region COLOR PALETTE +################################################################################ + +## Completely reloads the color palette buttons +func update_color_palette() -> void: + for child in %Colors.get_children(): + child.queue_free() + for color in DialogicUtil.get_color_palette(): + var button := ColorPickerButton.new() + button.custom_minimum_size = Vector2(50 ,50) * DialogicUtil.get_editor_scale() + %Colors.add_child(button) + button.color = DialogicUtil.get_color(color) + button.popup_closed.connect(_on_palette_color_popup_closed) + + +func _on_palette_color_popup_closed() -> void: + var new_palette := {} + for i in %Colors.get_children(): + new_palette["Color"+str(i.get_index()+1)] = i.color + DialogicUtil.set_editor_setting(_SETTING_EVENT_COLOR_PALETTE, new_palette) + + do_timeline_editor_refresh_on_close = true + + +func _on_reset_colors_button() -> void: + DialogicUtil.set_editor_setting(_SETTING_EVENT_COLOR_PALETTE, null) + update_color_palette() + + do_timeline_editor_refresh_on_close = true + +#endregion + + + + +func _on_ImagePreviewHeight_value_changed(value:float) -> void: + DialogicUtil.set_editor_setting(_SETTING_IMAGE_PREVIEW_HEIGHT, value) + + +func _on_EventBlockMargin_value_changed(value:float) -> void: + DialogicUtil.set_editor_setting(_SETTING_EVENT_BLOCK_MARGIN, value) + do_timeline_editor_refresh_on_close = true + + +func _on_ShowEventNames_toggled(toggled:bool) -> void: + DialogicUtil.set_editor_setting(_SETTING_SHOW_EVENT_NAMES, toggled) + do_timeline_editor_refresh_on_close = true diff --git a/addons/dialogic/Editor/Settings/CoreSettingsPages/settings_editor.gd.uid b/addons/dialogic/Editor/Settings/CoreSettingsPages/settings_editor.gd.uid new file mode 100644 index 0000000..e273fb3 --- /dev/null +++ b/addons/dialogic/Editor/Settings/CoreSettingsPages/settings_editor.gd.uid @@ -0,0 +1 @@ +uid://3akc4p71r5rn diff --git a/addons/dialogic/Editor/Settings/CoreSettingsPages/settings_editor.tscn b/addons/dialogic/Editor/Settings/CoreSettingsPages/settings_editor.tscn new file mode 100644 index 0000000..4587e3f --- /dev/null +++ b/addons/dialogic/Editor/Settings/CoreSettingsPages/settings_editor.tscn @@ -0,0 +1,161 @@ +[gd_scene load_steps=5 format=3 uid="uid://dbdmosh6v536s"] + +[ext_resource type="Script" uid="uid://3akc4p71r5rn" path="res://addons/dialogic/Editor/Settings/CoreSettingsPages/settings_editor.gd" id="1_kdw7t"] +[ext_resource type="PackedScene" uid="uid://dbpkta2tjsqim" path="res://addons/dialogic/Editor/Common/hint_tooltip_icon.tscn" id="2_ey6hj"] + +[sub_resource type="Image" id="Image_1n4qk"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_dfv70"] +image = SubResource("Image_1n4qk") + +[node name="EditorSettingsPage" type="VBoxContainer"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_kdw7t") + +[node name="PaletteTitle" type="HBoxContainer" parent="."] +layout_mode = 2 + +[node name="SectionPaletteTitle" type="Label" parent="PaletteTitle"] +layout_mode = 2 +theme_type_variation = &"DialogicSettingsSection" +text = "Color Palette" + +[node name="HintTooltip" parent="PaletteTitle" instance=ExtResource("2_ey6hj")] +layout_mode = 2 +tooltip_text = "These colors are used for the events." +texture = null +hint_text = "These colors are used for the events." + +[node name="ResetColorsButton" type="Button" parent="PaletteTitle"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 0 +tooltip_text = "Reset Colors to default" +icon = SubResource("ImageTexture_dfv70") +flat = true + +[node name="ScrollContainer" type="ScrollContainer" parent="."] +layout_mode = 2 +horizontal_scroll_mode = 3 +vertical_scroll_mode = 0 + +[node name="Colors" type="HBoxContainer" parent="ScrollContainer"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="HSeparator" type="HSeparator" parent="."] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="TimelineTitle" type="HBoxContainer" parent="."] +layout_mode = 2 + +[node name="SectionTimelineTitle" type="Label" parent="TimelineTitle"] +layout_mode = 2 +theme_type_variation = &"DialogicSettingsSection" +text = "Visual Events" + +[node name="HintTooltip" parent="TimelineTitle" instance=ExtResource("2_ey6hj")] +layout_mode = 2 +texture = null +hint_text = "These settings affect the visual timeline editor." + +[node name="HBoxContainer" type="HBoxContainer" parent="."] +layout_mode = 2 + +[node name="Label" type="Label" parent="HBoxContainer"] +layout_mode = 2 +text = "Image preview height" + +[node name="HintTooltip" parent="HBoxContainer" instance=ExtResource("2_ey6hj")] +layout_mode = 2 +texture = null +hint_text = "If set to 0, image previews will be disabled." + +[node name="ImagePreviewHeight" type="SpinBox" parent="HBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +rounded = true +allow_greater = true +update_on_text_changed = true +suffix = "px" +select_all_on_focus = true + +[node name="HBoxContainer2" type="HBoxContainer" parent="."] +layout_mode = 2 + +[node name="Label" type="Label" parent="HBoxContainer2"] +layout_mode = 2 +text = "Event block bottom margin" + +[node name="HintTooltip" parent="HBoxContainer2" instance=ExtResource("2_ey6hj")] +layout_mode = 2 +texture = null +hint_text = "This adds extra space at the bottom of event blocks." + +[node name="EventBlockMargin" type="SpinBox" parent="HBoxContainer2"] +unique_name_in_owner = true +layout_mode = 2 +rounded = true +allow_greater = true +update_on_text_changed = true +suffix = "px" +select_all_on_focus = true + +[node name="HBoxContainer3" type="HBoxContainer" parent="."] +layout_mode = 2 + +[node name="Label" type="Label" parent="HBoxContainer3"] +layout_mode = 2 +text = "Show event names" + +[node name="HintTooltip" parent="HBoxContainer3" instance=ExtResource("2_ey6hj")] +layout_mode = 2 +texture = null +hint_text = "Enabling this prepends the event name at the beginning of event blocks." + +[node name="ShowEventNames" type="CheckButton" parent="HBoxContainer3"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="HSeparator5" type="HSeparator" parent="."] +layout_mode = 2 + +[node name="HBoxContainer4" type="HBoxContainer" parent="."] +layout_mode = 2 + +[node name="SectionSections" type="Label" parent="HBoxContainer4"] +layout_mode = 2 +theme_type_variation = &"DialogicSettingsSection" +text = "Section Order" + +[node name="HintTooltip" parent="HBoxContainer4" instance=ExtResource("2_ey6hj")] +layout_mode = 2 +tooltip_text = "You can change the order of the event sections here. " +texture = null +hint_text = "You can change the order of the event sections here. " + +[node name="SectionList" type="Tree" parent="."] +unique_name_in_owner = true +custom_minimum_size = Vector2(150, 150) +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_constants/button_margin = 0 +allow_reselect = true +allow_rmb_select = true +hide_folding = true +hide_root = true +drop_mode_flags = 1 + +[connection signal="button_clicked" from="SectionList" to="." method="_on_section_list_button_clicked"] diff --git a/addons/dialogic/Editor/Settings/CoreSettingsPages/settings_general.gd b/addons/dialogic/Editor/Settings/CoreSettingsPages/settings_general.gd new file mode 100644 index 0000000..d44907d --- /dev/null +++ b/addons/dialogic/Editor/Settings/CoreSettingsPages/settings_general.gd @@ -0,0 +1,177 @@ +@tool +extends DialogicSettingsPage + +## Settings tab that holds genreal dialogic settings. + + +func _get_title() -> String: + return "General" + + +func _get_priority() -> int: + return 99 + +func _ready() -> void: + var s := DCSS.inline({ + 'padding': 5, + 'background': Color(0.545098, 0.545098, 0.545098, 0.211765) + }) + %ExtensionsFolderPicker.resource_icon = get_theme_icon("Folder", "EditorIcons") + + # Signals + %ExtensionsFolderPicker.value_changed.connect(_on_ExtensionsFolder_value_changed) + %PhysicsTimerButton.toggled.connect(_on_physics_timer_button_toggled) + + + # Extension creator + %ExtensionCreator.hide() + + +func _refresh() -> void: + %PhysicsTimerButton.button_pressed = DialogicUtil.is_physics_timer() + %LayoutNodeEndBehaviour.select(ProjectSettings.get_setting('dialogic/layout/end_behaviour', 0)) + %ExtensionsFolderPicker.set_value(ProjectSettings.get_setting('dialogic/extensions_folder', 'res://addons/dialogic_additions')) + + + +func _on_physics_timer_button_toggled(is_toggled: bool) -> void: + ProjectSettings.set_setting('dialogic/timer/process_in_physics', is_toggled) + ProjectSettings.save() + + +func _on_ExtensionsFolder_value_changed(property:String, value:String) -> void: + if value == null or value.is_empty(): + value = 'res://addons/dialogic_additions' + ProjectSettings.set_setting('dialogic/extensions_folder', value) + ProjectSettings.save() + + +func _on_layout_node_end_behaviour_item_selected(index:int) -> void: + ProjectSettings.set_setting('dialogic/layout/end_behaviour', index) + ProjectSettings.save() + + +################################################################################ +## EXTENSION CREATOR +################################################################################ + +func _on_create_extension_button_pressed() -> void: + %CreateExtensionButton.hide() + %ExtensionCreator.show() + + %NameEdit.text = "" + %NameEdit.grab_focus() + + +func _on_submit_extension_button_pressed() -> void: + if %NameEdit.text.is_empty(): + return + + var extensions_folder: String = ProjectSettings.get_setting('dialogic/extensions_folder', 'res://addons/dialogic_additions') + + extensions_folder = extensions_folder.path_join(%NameEdit.text.to_pascal_case()) + DirAccess.make_dir_recursive_absolute(extensions_folder) + var mode: int = %ExtensionMode.selected + + var file: FileAccess + var indexer_content := "@tool\nextends DialogicIndexer\n\n" + if mode != 2: # don't add event in Subsystem Only mode + indexer_content += """func _get_events() -> Array: + return [this_folder.path_join('event_"""+%NameEdit.text.to_snake_case()+""".gd')]\n\n""" + file = FileAccess.open(extensions_folder.path_join('event_'+%NameEdit.text.to_snake_case()+'.gd'), FileAccess.WRITE) + file.store_string( + +#region EXTENDED EVENT SCRIPT +"""@tool +extends DialogicEvent +class_name Dialogic"""+%NameEdit.text.to_pascal_case()+"""Event + +# Define properties of the event here + +func _execute() -> void: + # This will execute when the event is reached + finish() # called to continue with the next event + + +#region INITIALIZE +################################################################################ +# Set fixed settings of this event +func _init() -> void: + event_name = \""""+%NameEdit.text.capitalize()+"""\" + event_category = "Other" + +\n +#endregion + +#region SAVING/LOADING +################################################################################ +func get_shortcode() -> String: + return \""""+%NameEdit.text.to_snake_case()+"""\" + +func get_shortcode_parameters() -> Dictionary: + return { + #param_name : property_info + #"my_parameter" : {"property": "property", "default": "Default"}, + } + +# You can alternatively overwrite these 3 functions: to_text(), from_text(), is_valid_event() +#endregion + + +#region EDITOR REPRESENTATION +################################################################################ + +func build_event_editor() -> void: + pass + +#endregion +""") + +#endregion + if mode != 0: # don't add subsystem in event only mode + indexer_content += """func _get_subsystems() -> Array: + return [{'name':'"""+%NameEdit.text.to_pascal_case()+"""', 'script':this_folder.path_join('subsystem_"""+%NameEdit.text.to_snake_case()+""".gd')}]""" + file = FileAccess.open(extensions_folder.path_join('subsystem_'+%NameEdit.text.to_snake_case()+'.gd'), FileAccess.WRITE) + file.store_string( + +# region EXTENDED SUBSYSTEM SCRIPT +"""extends DialogicSubsystem + +## Describe the subsystems purpose here. + + +#region STATE +#################################################################################################### + +func clear_game_state(clear_flag:=Dialogic.ClearFlags.FULL_CLEAR) -> void: + pass + +func load_game_state(load_flag:=LoadFlags.FULL_LOAD) -> void: + pass + +#endregion + + +#region MAIN METHODS +#################################################################################################### + +# Add some useful methods here. + +#endregion +""") + file = FileAccess.open(extensions_folder.path_join('index.gd'), FileAccess.WRITE) + file.store_string(indexer_content) + + %ExtensionCreator.hide() + %CreateExtensionButton.show() + + find_parent('EditorView').plugin_reference.get_editor_interface().get_resource_filesystem().scan_sources() + force_event_button_list_reload() + + +func force_event_button_list_reload() -> void: + find_parent('EditorsManager').editors['Timeline'].node.get_node('%VisualEditor').load_event_buttons() + + +func _on_reload_pressed() -> void: + DialogicUtil._update_autoload_subsystem_access() diff --git a/addons/dialogic/Editor/Settings/CoreSettingsPages/settings_general.gd.uid b/addons/dialogic/Editor/Settings/CoreSettingsPages/settings_general.gd.uid new file mode 100644 index 0000000..7acfdfc --- /dev/null +++ b/addons/dialogic/Editor/Settings/CoreSettingsPages/settings_general.gd.uid @@ -0,0 +1 @@ +uid://chb81lvjh47jr diff --git a/addons/dialogic/Editor/Settings/CoreSettingsPages/settings_general.tscn b/addons/dialogic/Editor/Settings/CoreSettingsPages/settings_general.tscn new file mode 100644 index 0000000..777d634 --- /dev/null +++ b/addons/dialogic/Editor/Settings/CoreSettingsPages/settings_general.tscn @@ -0,0 +1,234 @@ +[gd_scene load_steps=6 format=3 uid="uid://b873ho41sklv8"] + +[ext_resource type="Script" uid="uid://chb81lvjh47jr" path="res://addons/dialogic/Editor/Settings/CoreSettingsPages/settings_general.gd" id="2"] +[ext_resource type="Script" uid="uid://bo0dfmsyky1mm" path="res://addons/dialogic/Editor/Settings/CoreSettingsPages/settings_tools.gd" id="2_3xeuv"] +[ext_resource type="PackedScene" uid="uid://dbpkta2tjsqim" path="res://addons/dialogic/Editor/Common/hint_tooltip_icon.tscn" id="2_kqhx5"] +[ext_resource type="Script" uid="uid://vg4wbm0n64ws" path="res://addons/dialogic/Editor/Settings/CoreSettingsPages/tool_resave.gd" id="3_dbfvv"] +[ext_resource type="PackedScene" uid="uid://7mvxuaulctcq" path="res://addons/dialogic/Editor/Events/Fields/field_file.tscn" id="3_i7rug"] + +[node name="General" type="VBoxContainer"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("2") + +[node name="HBoxContainer2" type="HBoxContainer" parent="."] +layout_mode = 2 + +[node name="SectionToolsTitle" type="Label" parent="HBoxContainer2"] +layout_mode = 2 +theme_type_variation = &"DialogicSettingsSection" +text = "Tools" + +[node name="Tools" type="Node" parent="."] +script = ExtResource("2_3xeuv") + +[node name="ResaveTool" type="Node" parent="Tools"] +script = ExtResource("3_dbfvv") + +[node name="ToolButtons" type="VBoxContainer" parent="."] +unique_name_in_owner = true +layout_mode = 2 + +[node name="ToolProgress" type="ProgressBar" parent="."] +unique_name_in_owner = true +visible = false +layout_mode = 2 +max_value = 1.0 +value = 1.0 + +[node name="HSeparator5" type="HSeparator" parent="."] +layout_mode = 2 + +[node name="HBoxContainer5" type="HBoxContainer" parent="."] +layout_mode = 2 + +[node name="SectionBehaviourTitle" type="Label" parent="HBoxContainer5"] +layout_mode = 2 +theme_type_variation = &"DialogicSettingsSection" +text = "Layout Node Behaviour" + +[node name="HintTooltip" parent="HBoxContainer5" instance=ExtResource("2_kqhx5")] +layout_mode = 2 +tooltip_text = "The layout scene configured in the Layout editor is automatically +instanced when calling Dialogic.start(). Depending on your game, +you might want it to be deleted after the dialogue, be hidden +(as reinstancing often is wasting resources) or kept visible. " +texture = null +hint_text = "The layout scene configured in the Layout editor is automatically +instanced when calling Dialogic.start(). Depending on your game, +you might want it to be deleted after the dialogue, be hidden +(as reinstancing often is wasting resources) or kept visible. " + +[node name="HBoxContainer3" type="HBoxContainer" parent="."] +layout_mode = 2 + +[node name="Label" type="Label" parent="HBoxContainer3"] +layout_mode = 2 +text = "On timeline end" + +[node name="LayoutNodeEndBehaviour" type="OptionButton" parent="HBoxContainer3"] +unique_name_in_owner = true +layout_mode = 2 +selected = 0 +fit_to_longest_item = false +item_count = 3 +popup/item_0/text = "Delete Layout Node" +popup/item_1/text = "Hide Layout Node" +popup/item_1/id = 1 +popup/item_2/text = "Keep Layout Node" +popup/item_2/id = 2 + +[node name="HSeparator4" type="HSeparator" parent="."] +layout_mode = 2 + +[node name="HBoxContainer6" type="HBoxContainer" parent="."] +layout_mode = 2 + +[node name="HBoxContainer4" type="VBoxContainer" parent="HBoxContainer6"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="HBoxContainer5" type="HBoxContainer" parent="HBoxContainer6/HBoxContainer4"] +layout_mode = 2 + +[node name="SectionExtensionsTitle" type="Label" parent="HBoxContainer6/HBoxContainer4/HBoxContainer5"] +layout_mode = 2 +theme_type_variation = &"DialogicSettingsSection" +text = "Extensions" + +[node name="HintTooltip" parent="HBoxContainer6/HBoxContainer4/HBoxContainer5" instance=ExtResource("2_kqhx5")] +layout_mode = 2 +tooltip_text = "Configure where dialogic looks for custom modules. + +You will have to restart the project to see the change take action." +texture = null +hint_text = "Configure where dialogic looks for custom modules. + +You will have to restart the project to see the change take action." + +[node name="Reload" type="Button" parent="HBoxContainer6/HBoxContainer4/HBoxContainer5"] +layout_mode = 2 +text = "Reload" +flat = true + +[node name="HBoxContainer" type="HBoxContainer" parent="HBoxContainer6/HBoxContainer4"] +layout_mode = 2 + +[node name="Label" type="Label" parent="HBoxContainer6/HBoxContainer4/HBoxContainer"] +layout_mode = 2 +text = "Extensions folder" + +[node name="ExtensionsFolderPicker" parent="HBoxContainer6/HBoxContainer4/HBoxContainer" instance=ExtResource("3_i7rug")] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +placeholder = "res://addons/dialogic_additions/Events" +file_mode = 2 + +[node name="VSeparator" type="VSeparator" parent="HBoxContainer6"] +layout_mode = 2 + +[node name="ExtensionsPanel" type="PanelContainer" parent="HBoxContainer6"] +layout_mode = 2 +size_flags_horizontal = 3 +theme_type_variation = &"DialogicPanelA" + +[node name="VBox" type="VBoxContainer" parent="HBoxContainer6/ExtensionsPanel"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="HBoxContainer6" type="HBoxContainer" parent="HBoxContainer6/ExtensionsPanel/VBox"] +layout_mode = 2 + +[node name="Label" type="Label" parent="HBoxContainer6/ExtensionsPanel/VBox/HBoxContainer6"] +layout_mode = 2 +theme_type_variation = &"DialogicSubTitle" +text = "Extension Creator " + +[node name="HintTooltip" parent="HBoxContainer6/ExtensionsPanel/VBox/HBoxContainer6" instance=ExtResource("2_kqhx5")] +layout_mode = 2 +tooltip_text = "Use the Exension Creator to quickly setup custom modules!" +texture = null +hint_text = "Use the Exension Creator to quickly setup custom modules!" + +[node name="CreateExtensionButton" type="Button" parent="HBoxContainer6/ExtensionsPanel/VBox"] +unique_name_in_owner = true +layout_mode = 2 +text = "Create New Extension" + +[node name="ExtensionCreator" type="VBoxContainer" parent="HBoxContainer6/ExtensionsPanel/VBox"] +unique_name_in_owner = true +visible = false +layout_mode = 2 + +[node name="ExtensionCreatorOptions" type="GridContainer" parent="HBoxContainer6/ExtensionsPanel/VBox/ExtensionCreator"] +layout_mode = 2 +columns = 2 + +[node name="NameLabel" type="Label" parent="HBoxContainer6/ExtensionsPanel/VBox/ExtensionCreator/ExtensionCreatorOptions"] +layout_mode = 2 +text = "Name:" + +[node name="NameEdit" type="LineEdit" parent="HBoxContainer6/ExtensionsPanel/VBox/ExtensionCreator/ExtensionCreatorOptions"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +placeholder_text = "e.g. \"Print\", \"Item\", \"Door\", \"Quest\"" + +[node name="ModeLabel" type="Label" parent="HBoxContainer6/ExtensionsPanel/VBox/ExtensionCreator/ExtensionCreatorOptions"] +layout_mode = 2 +text = "Setup mode:" + +[node name="ExtensionMode" type="OptionButton" parent="HBoxContainer6/ExtensionsPanel/VBox/ExtensionCreator/ExtensionCreatorOptions"] +unique_name_in_owner = true +layout_mode = 2 +selected = 0 +item_count = 4 +popup/item_0/text = "Event only" +popup/item_1/text = "Event+Subsystem" +popup/item_1/id = 1 +popup/item_2/text = "Subsystem only" +popup/item_2/id = 2 +popup/item_3/text = "Complex" +popup/item_3/id = 3 + +[node name="SubmitExtensionButton" type="Button" parent="HBoxContainer6/ExtensionsPanel/VBox/ExtensionCreator"] +unique_name_in_owner = true +layout_mode = 2 +text = "Create" + +[node name="HSeparator2" type="HSeparator" parent="."] +layout_mode = 2 + +[node name="HBoxContainer7" type="HBoxContainer" parent="."] +layout_mode = 2 + +[node name="TimerTitle" type="Label" parent="HBoxContainer7"] +layout_mode = 2 +theme_type_variation = &"DialogicSettingsSection" +text = "Timer processing" + +[node name="HintTooltip" parent="HBoxContainer7" instance=ExtResource("2_kqhx5")] +layout_mode = 2 +tooltip_text = "Change whether dialogics timers process in physics_process (frame-rate independent) or process." +texture = null +hint_text = "Change whether dialogics timers process in physics_process (frame-rate independent) or process." + +[node name="HBoxContainer4" type="HBoxContainer" parent="."] +layout_mode = 2 + +[node name="Label" type="Label" parent="HBoxContainer4"] +layout_mode = 2 +text = "Process timers in physics_process" + +[node name="PhysicsTimerButton" type="CheckBox" parent="HBoxContainer4"] +unique_name_in_owner = true +layout_mode = 2 + +[connection signal="item_selected" from="HBoxContainer3/LayoutNodeEndBehaviour" to="." method="_on_layout_node_end_behaviour_item_selected"] +[connection signal="pressed" from="HBoxContainer6/HBoxContainer4/HBoxContainer5/Reload" to="." method="_on_reload_pressed"] +[connection signal="pressed" from="HBoxContainer6/ExtensionsPanel/VBox/CreateExtensionButton" to="." method="_on_create_extension_button_pressed"] +[connection signal="pressed" from="HBoxContainer6/ExtensionsPanel/VBox/ExtensionCreator/SubmitExtensionButton" to="." method="_on_submit_extension_button_pressed"] diff --git a/addons/dialogic/Editor/Settings/CoreSettingsPages/settings_modules.gd b/addons/dialogic/Editor/Settings/CoreSettingsPages/settings_modules.gd new file mode 100644 index 0000000..a9f159d --- /dev/null +++ b/addons/dialogic/Editor/Settings/CoreSettingsPages/settings_modules.gd @@ -0,0 +1,442 @@ +@tool +extends DialogicSettingsPage + + +func _get_title() -> String: + return "Modules" + +func _get_priority() -> int: + return 0 + +func _is_feature_tab() -> bool: + return true + + +func _ready() -> void: + if get_parent() is SubViewport: + return + %Refresh.icon = get_theme_icon("Loop", "EditorIcons") + %Search.right_icon = get_theme_icon("Search", "EditorIcons") + + %Filter_Events.icon = get_theme_icon("Favorites", "EditorIcons") + %Filter_Subsystems.icon = get_theme_icon("Callable", "EditorIcons") + %Filter_Styles.icon = get_theme_icon("PopupMenu", "EditorIcons") + %Filter_EffectsAndModifiers.icon = get_theme_icon("RichTextEffect", "EditorIcons") + %Filter_Editors.icon = get_theme_icon("ConfirmationDialog", "EditorIcons") + %Filter_Settings.icon = get_theme_icon("PluginScript", "EditorIcons") + %Collapse.icon = get_theme_icon("CollapseTree", "EditorIcons") + + %EventDefaultsPanel.add_theme_stylebox_override('panel', get_theme_stylebox("Background", "EditorStyles")) + + %ExternalLink.icon = get_theme_icon("Help", "EditorIcons") + + +func _refresh() -> void: + %EventDefaultsPanel.hide() + load_modules_tree() + + +func _on_refresh_pressed() -> void: + DialogicUtil.get_indexers(true, true) + DialogicResourceUtil.update_event_cache() + load_modules_tree() + + +func filters_updated(fake_arg:Variant) -> void: + load_modules_tree() + + +func _on_collapse_toggled(button_pressed:bool) -> void: + for item in %Tree.get_root().get_children(): + item.collapsed = button_pressed + + if button_pressed: + %Collapse.icon = get_theme_icon("ExpandTree", "EditorIcons") + %Collapse.tooltip_text = "Expand All" + else: + %Collapse.icon = get_theme_icon("CollapseTree", "EditorIcons") + %Collapse.tooltip_text = "Collapse All" + + +func _on_search_text_changed(new_text:String) -> void: + for filter in [%Filter_Events, %Filter_Subsystems, %Filter_Editors, %Filter_EffectsAndModifiers, %Filter_Settings, %Filter_Styles]: + filter.text = "" + filter.set_meta("counter", 0) + + var hidden_events: Array = DialogicUtil.get_editor_setting('hidden_event_buttons', []) + + for child in %Tree.get_root().get_children(): + if new_text.to_lower() in child.get_text(0).to_lower() or new_text.is_empty(): + for sub_child in child.get_children(): + sub_child.visible = sub_child.get_meta('filter_button').button_pressed + sub_child.get_meta('filter_button').set_meta('counter', sub_child.get_meta('filter_button').get_meta('counter')+1) + sub_child.get_meta('filter_button').text = str(sub_child.get_meta('filter_button').get_meta('counter')) + child.visible = true + else: + for sub_child in child.get_children(): + sub_child.visible = sub_child.get_meta('filter_button').button_pressed and new_text.to_lower() in sub_child.get_text(0).to_lower() + + if new_text.to_lower() in sub_child.get_text(0).to_lower(): + sub_child.get_meta('filter_button').set_meta('counter', sub_child.get_meta('filter_button').get_meta('counter')+1) + sub_child.get_meta('filter_button').text = str(sub_child.get_meta('filter_button').get_meta('counter')) + + for i in range(child.get_button_count(0)): + child.erase_button(0, child.get_button_count(0)-1) + var any_visible := false + var counter := 0 + for sub_child in child.get_children(): + if sub_child.visible: + child.add_button(0, sub_child.get_icon(0), counter, false, sub_child.get_text(0)) + if sub_child.get_metadata(0) and sub_child.get_metadata(0)['type'] == 'Event' and sub_child.get_metadata(0)['hidden']: + var color: Color = sub_child.get_icon_modulate(0) + color.a = 0.5 + child.set_button_color(0, counter, color) + else: + child.set_button_color(0, counter, sub_child.get_icon_modulate(0)) + counter += 1 + any_visible = true + child.visible = any_visible + + + +func load_modules_tree() -> void: + %Tree.clear() + var root: TreeItem = %Tree.create_item() + var cached_events := DialogicResourceUtil.get_event_cache() + var hidden_events: Array = DialogicUtil.get_editor_setting('hidden_event_buttons', []) + var indexers := DialogicUtil.get_indexers() + for i in indexers: + var module_item: TreeItem = %Tree.create_item(root) + module_item.set_text(0, i.get_script().resource_path.trim_suffix('/index.gd').get_file()) + module_item.set_metadata(0, {'type':'Module'}) + + # Events + for ev in i._get_events(): + if not ResourceLoader.exists(ev): + continue + var event_item: TreeItem = %Tree.create_item(module_item) + event_item.set_icon(0, get_theme_icon("Favorites", "EditorIcons")) + for cached_event in cached_events: + if cached_event.get_script().resource_path == ev: + event_item.set_text(0, cached_event.event_name + " Event") + event_item.set_icon_modulate(0, cached_event.event_color) + var hidden: bool = cached_event.event_name in hidden_events + event_item.set_metadata(0, {'type':'Event', 'event':cached_event, 'hidden':hidden}) + event_item.add_button(0, get_theme_icon("GuiVisibilityVisible", "EditorIcons"), 0, false, "Toggle Event Button Visibility") + if hidden: + event_item.set_button(0, 0, get_theme_icon("GuiVisibilityHidden", "EditorIcons")) + event_item.set_meta('filter_button', %Filter_Events) + event_item.visible = %Filter_Events.button_pressed + + # Subsystems + for subsys in i._get_subsystems(): + var subsys_item: TreeItem = %Tree.create_item(module_item) + subsys_item.set_icon(0, get_theme_icon("Callable", "EditorIcons")) + subsys_item.set_text(0, subsys.name + " Subsystem") + subsys_item.set_icon_modulate(0, get_theme_color("readonly_color", "Editor")) + subsys_item.set_metadata(0, {'type':'Subsystem', 'info':subsys}) + subsys_item.set_meta('filter_button', %Filter_Subsystems) + subsys_item.visible = %Filter_Subsystems.button_pressed + + # Style scenes + for style in i._get_layout_parts(): + var style_item: TreeItem = %Tree.create_item(module_item) + style_item.set_icon(0, get_theme_icon("PopupMenu", "EditorIcons")) + style_item.set_text(0, style.name) + style_item.set_icon_modulate(0, get_theme_color("property_color_x", "Editor")) + style_item.set_metadata(0, {'type':'Style', 'info':style}) + style_item.set_meta('filter_button', %Filter_Styles) + style_item.visible = %Filter_Styles.button_pressed + + # Text Effects + for effect in i._get_text_effects(): + var effect_item: TreeItem = %Tree.create_item(module_item) + effect_item.set_icon(0, get_theme_icon("RichTextEffect", "EditorIcons")) + effect_item.set_text(0, "Text effect ["+effect.command+"]") + effect_item.set_icon_modulate(0, get_theme_color("property_color_z", "Editor")) + effect_item.set_metadata(0, {'type':'Effect', 'info':effect}) + effect_item.set_meta('filter_button', %Filter_EffectsAndModifiers) + effect_item.visible = %Filter_EffectsAndModifiers.button_pressed + + # Text Modifiers + for mod in i._get_text_modifiers(): + var mod_item: TreeItem = %Tree.create_item(module_item) + mod_item.set_icon(0, get_theme_icon("RichTextEffect", "EditorIcons")) + mod_item.set_text(0, mod.method.capitalize()) + mod_item.set_icon_modulate(0, get_theme_color("property_color_z", "Editor")) + mod_item.set_metadata(0, {'type':'Modifier', 'info':mod}) + mod_item.set_meta('filter_button', %Filter_EffectsAndModifiers) + mod_item.visible = %Filter_EffectsAndModifiers.button_pressed + + # Settings + for settings in i._get_settings_pages(): + var settings_item: TreeItem = %Tree.create_item(module_item) + settings_item.set_icon(0, get_theme_icon("PluginScript", "EditorIcons")) + settings_item.set_text(0, module_item.get_text(0) + " Settings") + settings_item.set_icon_modulate(0, get_theme_color("readonly_color", "Editor")) + settings_item.set_metadata(0, {'type':'Settings', 'info':settings}) + settings_item.set_meta('filter_button', %Filter_Settings) + settings_item.visible = %Filter_Settings.button_pressed + + # Editors + for editor in i._get_editors(): + var editor_item: TreeItem = %Tree.create_item(module_item) + editor_item.set_icon(0, get_theme_icon("ConfirmationDialog", "EditorIcons")) + editor_item.set_text(0, editor.get_file().trim_suffix('.tscn').capitalize()) + editor_item.set_icon_modulate(0, get_theme_color("readonly_color", "Editor")) + editor_item.set_metadata(0, {'type':'Editor', 'info':editor}) + editor_item.set_meta('filter_button', %Filter_Editors) + editor_item.visible = %Filter_Editors.button_pressed + + module_item.collapsed = %Collapse.button_pressed + + _on_search_text_changed(%Search.text) + if %Tree.get_root().get_child_count(): %Tree.set_selected(%Tree.get_root().get_child(0), 0) + + +func _on_tree_button_clicked(item:TreeItem, column:int, id:int, mouse_button_index:int) -> void: + match item.get_metadata(0)['type']: + 'Module': + item.collapsed = false + %Tree.set_selected(item.get_child(id), 0) + 'Event': + # Visibility item clicked + if id == 0: + var meta: Dictionary= item.get_metadata(0) + if meta['hidden']: + item.set_button(0, 0, get_theme_icon("GuiVisibilityVisible", "EditorIcons")) + item.get_parent().set_button_color(0, item.get_index(), item.get_icon_modulate(0)) + if item == %Tree.get_selected(): + %VisibilityToggle.button_pressed = true + else: + item.set_button(0, 0, get_theme_icon("GuiVisibilityHidden", "EditorIcons")) + var color: Color = item.get_icon_modulate(0) + color.a = 0.5 + item.get_parent().set_button_color(0, item.get_index(), color) + if item == %Tree.get_selected(): + %VisibilityToggle.button_pressed = false + meta['hidden'] = !meta['hidden'] + item.set_metadata(0, meta) + change_event_visibility(meta['event'], !meta['hidden']) + + +func _on_tree_item_selected() -> void: + var selected_item: TreeItem = %Tree.get_selected() + + var metadata: Variant = selected_item.get_metadata(0) + + %Title.text = selected_item.get_text(0) + %EventDefaultsPanel.hide() + %Icon.texture = null + %ExternalLink.hide() + %VisibilityToggle.hide() + + if metadata is Dictionary: + match metadata.type: + 'Event': + %GeneralInfo.text = "Events can be used in timelines and do all kinds of things. They often interact with subsystems and dialogic nodes." + + load_event_settings(metadata.event) + if %EventDefaults.get_child_count(): + %EventDefaultsPanel.show() + + if metadata.event.help_page_path: + %ExternalLink.show() + %ExternalLink.set_meta('url', metadata.event.help_page_path) + %Icon.texture = metadata.event._get_icon() + if !metadata.event.disable_editor_button: + %VisibilityToggle.show() + %VisibilityToggle.button_pressed = !metadata.event.event_name in DialogicUtil.get_editor_setting('hidden_event_buttons', []) + if %VisibilityToggle.button_pressed: + %VisibilityToggle.icon = get_theme_icon("GuiVisibilityVisible", "EditorIcons") + else: + %VisibilityToggle.icon = get_theme_icon("GuiVisibilityHidden", "EditorIcons") + # ------------------------------------------------- + 'Subsystem': + %GeneralInfo.text = "Subsystems hold specialized functionality. They mostly manage communication between events and dialogic nodes. Often they provide handy methods that can be accessed by the user like this: Dialogic.Subsystem.a_method()." + # ------------------------------------------------- + 'Effect': + %GeneralInfo.text = "Text effects can be used in text events. They will be executed once reached and can take a single argument." + # ------------------------------------------------- + 'Modifier': + %GeneralInfo.text = "Modifiers can modify text from text events before it is shown." + # ------------------------------------------------- + 'Style': + %GeneralInfo.text = "Style presets can be activated and modified in the Styles editor. They provide the design of the dialog interface in your game." + # ------------------------------------------------- + 'Editor': + %GeneralInfo.text = "Editors provide a user interface for editing dialogic data." + # ------------------------------------------------- + 'Settings': + %GeneralInfo.text = "Settings pages provide settings that are usually used by subsystems, events and dialogic nodes." + # ------------------------------------------------- + '_': + %GeneralInfo.text = "" + + +func _on_external_link_pressed() -> void: + if %ExternalLink.has_meta('url'): + OS.shell_open(%ExternalLink.get_meta('url')) + + +func change_event_visibility(event:DialogicEvent, visibility:bool) -> void: + if event: + var list: Array= DialogicUtil.get_editor_setting('hidden_event_buttons', []) + if visibility: + list.erase(event.event_name) + else: + list.append(event.event_name) + DialogicUtil.set_editor_setting('hidden_event_buttons', list) + force_event_button_list_update() + + +func _on_visibility_toggle_toggled(button_pressed:bool) -> void: + change_event_visibility(%Tree.get_selected().get_metadata(0).event, button_pressed) + + if button_pressed: + %VisibilityToggle.icon = get_theme_icon("GuiVisibilityVisible", "EditorIcons") + %Tree.get_selected().set_button(0, 0, get_theme_icon("GuiVisibilityVisible", "EditorIcons")) + %Tree.get_selected().get_parent().set_button_color(0, %Tree.get_selected().get_index(), %Tree.get_selected().get_icon_modulate(0)) + else: + %VisibilityToggle.icon = get_theme_icon("GuiVisibilityHidden", "EditorIcons") + %Tree.get_selected().set_button(0, 0, get_theme_icon("GuiVisibilityHidden", "EditorIcons")) + var color: Color = %Tree.get_selected().get_icon_modulate(0) + color.a = 0.5 + %Tree.get_selected().get_parent().set_button_color(0, %Tree.get_selected().get_index(), color) + + + +func force_event_button_list_update() -> void: + find_parent('EditorsManager').editors['Timeline'].node.get_node('%VisualEditor').load_event_buttons() + +################################################################################ +## EVENT DEFAULT SETTINGS +################################################################################ +func load_event_settings(event:DialogicEvent) -> void: + for child in %EventDefaults.get_children(): + child.queue_free() + + var event_default_overrides: Dictionary = ProjectSettings.get_setting('dialogic/event_default_overrides', {}) + + var params := event.get_shortcode_parameters() + for prop in params: + var current_value: Variant = params[prop].default + if event_default_overrides.get(event.event_name, {}).has(params[prop].property): + current_value = event_default_overrides.get(event.event_name, {}).get(params[prop].property) + + # Label + var label := Label.new() + label.text = prop.capitalize() + %EventDefaults.add_child(label) + + var reset := Button.new() + reset.icon = get_theme_icon("Clear", "EditorIcons") + reset.flat = true + + %EventDefaults.add_child(reset) + + # Editing field + var editor_node: Node = null + match typeof(event.get(params[prop].property)): + TYPE_STRING: + editor_node = LineEdit.new() + editor_node.custom_minimum_size.x = 150 + editor_node.text = str(current_value) + editor_node.text_changed.connect(_on_event_default_string_submitted.bind(params[prop].property)) + TYPE_INT, TYPE_FLOAT: + if params[prop].has('suggestions'): + editor_node = OptionButton.new() + for i in params[prop].suggestions.call(): + editor_node.add_item(i, int(params[prop].suggestions.call()[i].value)) + editor_node.select(int(current_value)) + editor_node.item_selected.connect(_on_event_default_option_selected.bind(editor_node, params[prop].property)) + else: + editor_node = SpinBox.new() + + editor_node.allow_greater = true + editor_node.allow_lesser = true + if typeof(event.get(params[prop].property)) == TYPE_INT: + editor_node.step = 1 + else: + editor_node.step = 0.001 + + editor_node.value = float(current_value) + editor_node.value_changed.connect(_on_event_default_number_changed.bind(params[prop].property)) + + TYPE_VECTOR2: + editor_node = load("res://addons/dialogic/Editor/Events/Fields/field_vector2.tscn").instantiate() + editor_node.set_value(current_value) + editor_node.property_name = params[prop].property + editor_node.value_changed.connect(_on_event_default_value_changed) + + TYPE_BOOL: + editor_node = CheckBox.new() + editor_node.button_pressed = bool(current_value) + editor_node.toggled.connect(_on_event_default_bool_toggled.bind(params[prop].property)) + + TYPE_ARRAY: + editor_node = load("res://addons/dialogic/Editor/Events/Fields/field_array.tscn").instantiate() + editor_node.set_value(current_value) + editor_node.property_name = params[prop].property + editor_node.value_changed.connect(_on_event_default_value_changed) + + TYPE_DICTIONARY: + editor_node = load("res://addons/dialogic/Editor/Events/Fields/field_dictionary.tscn").instantiate() + editor_node.set_value(current_value) + editor_node.property_name = params[prop].property + editor_node.value_changed.connect(_on_event_default_value_changed) + %EventDefaults.add_child(editor_node) + reset.pressed.connect(reset_event_default_override.bind(prop, editor_node, params[prop].default)) + + +func set_event_default_override(prop:String, value:Variant) -> void: + var event_default_overrides: Dictionary = ProjectSettings.get_setting('dialogic/event_default_overrides', {}) + var event: DialogicEvent = %Tree.get_selected().get_metadata(0).event + + if not event_default_overrides.has(event.event_name): + event_default_overrides[event.event_name] = {} + + event_default_overrides[event.event_name][prop] = value + + ProjectSettings.set_setting('dialogic/event_default_overrides', event_default_overrides) + + +func reset_event_default_override(prop:String, node:Node, default:Variant) -> void: + var event_default_overrides: Dictionary = ProjectSettings.get_setting('dialogic/event_default_overrides', {}) + var event: DialogicEvent = %Tree.get_selected().get_metadata(0).event + + if not event_default_overrides.has(event.event_name): + return + + event_default_overrides[event.event_name].erase(prop) + + ProjectSettings.set_setting('dialogic/event_default_overrides', event_default_overrides) + + if node is CheckBox: + node.button_pressed = default + elif node is LineEdit: + node.text = default + elif node.has_method('set_value'): + node.set_value(default) + elif node is ColorPickerButton: + node.color = default + elif node is OptionButton: + node.select(default) + elif node is SpinBox: + node.value = default + + +func _on_event_default_string_submitted(text:String, prop:String) -> void: + set_event_default_override(prop, text) + +func _on_event_default_option_selected(index:int, option_button:OptionButton, prop:String) -> void: + set_event_default_override(prop, option_button.get_item_id(index)) + +func _on_event_default_number_changed(value:float, prop:String) -> void: + set_event_default_override(prop, value) + +func _on_event_default_value_changed(prop:String, value:Variant) -> void: + set_event_default_override(prop, value) + +func _on_event_default_bool_toggled(value:bool, prop:String) -> void: + set_event_default_override(prop, value) diff --git a/addons/dialogic/Editor/Settings/CoreSettingsPages/settings_modules.gd.uid b/addons/dialogic/Editor/Settings/CoreSettingsPages/settings_modules.gd.uid new file mode 100644 index 0000000..1ad4804 --- /dev/null +++ b/addons/dialogic/Editor/Settings/CoreSettingsPages/settings_modules.gd.uid @@ -0,0 +1 @@ +uid://bcu347pvraog6 diff --git a/addons/dialogic/Editor/Settings/CoreSettingsPages/settings_modules.tscn b/addons/dialogic/Editor/Settings/CoreSettingsPages/settings_modules.tscn new file mode 100644 index 0000000..db242b8 --- /dev/null +++ b/addons/dialogic/Editor/Settings/CoreSettingsPages/settings_modules.tscn @@ -0,0 +1,236 @@ +[gd_scene load_steps=7 format=3 uid="uid://o7ljiritpgap"] + +[ext_resource type="Script" uid="uid://bcu347pvraog6" path="res://addons/dialogic/Editor/Settings/CoreSettingsPages/settings_modules.gd" id="1_l2hk0"] + +[sub_resource type="Image" id="Image_1yyxk"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_lce2m"] +image = SubResource("Image_1yyxk") + +[sub_resource type="Image" id="Image_bclq7"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 131, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 131, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 131, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 93, 93, 55, 255, 97, 97, 58, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 97, 97, 42, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 98, 98, 47, 255, 97, 97, 42, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 93, 93, 233, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 94, 94, 46, 255, 93, 93, 236, 255, 93, 93, 233, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_137g7"] +image = SubResource("Image_bclq7") + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_315cl"] +content_margin_left = 4.0 +content_margin_top = 4.0 +content_margin_right = 4.0 +content_margin_bottom = 4.0 +bg_color = Color(1, 0.365, 0.365, 1) +draw_center = false +border_width_left = 2 +border_width_top = 2 +border_width_right = 2 +border_width_bottom = 2 +corner_detail = 1 + +[node name="ModuleManagement" type="HSplitContainer"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_bottom = -157.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_vertical = 3 +theme_override_constants/separation = 0 +script = ExtResource("1_l2hk0") +short_info = "Here you can manage modules: +- change event defaults +- hide events from the event list" + +[node name="Overview" type="VBoxContainer" parent="."] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="ScrollContainer" type="ScrollContainer" parent="Overview"] +layout_mode = 2 +size_flags_horizontal = 3 +follow_focus = true +horizontal_scroll_mode = 3 +vertical_scroll_mode = 0 + +[node name="HBox" type="HBoxContainer" parent="Overview/ScrollContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 8 +alignment = 2 + +[node name="Filter_Events" type="Button" parent="Overview/ScrollContainer/HBox"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Include Events" +toggle_mode = true +button_pressed = true +text = "0" +flat = true +icon_alignment = 2 + +[node name="Filter_Subsystems" type="Button" parent="Overview/ScrollContainer/HBox"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Include Subsystems" +toggle_mode = true +button_pressed = true +text = "0" +flat = true +icon_alignment = 2 + +[node name="Filter_EffectsAndModifiers" type="Button" parent="Overview/ScrollContainer/HBox"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Include Text Effects and Modifiers" +toggle_mode = true +button_pressed = true +text = "0" +flat = true +icon_alignment = 2 + +[node name="Filter_Styles" type="Button" parent="Overview/ScrollContainer/HBox"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Include Preset Style Scenes" +toggle_mode = true +button_pressed = true +text = "0" +flat = true +icon_alignment = 2 + +[node name="Filter_Settings" type="Button" parent="Overview/ScrollContainer/HBox"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Include Settings Pages" +toggle_mode = true +text = "0" +flat = true +icon_alignment = 2 + +[node name="Filter_Editors" type="Button" parent="Overview/ScrollContainer/HBox"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Include Editors" +toggle_mode = true +text = "0" +flat = true +icon_alignment = 2 + +[node name="Search" type="LineEdit" parent="Overview/ScrollContainer/HBox"] +unique_name_in_owner = true +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +placeholder_text = "Search" +clear_button_enabled = true + +[node name="Refresh" type="Button" parent="Overview/ScrollContainer/HBox"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Refresh" + +[node name="Collapse" type="Button" parent="Overview/ScrollContainer/HBox"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Collapse All" +toggle_mode = true + +[node name="Tree" type="Tree" parent="Overview"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 3 +allow_reselect = true +hide_root = true + +[node name="Scroll" type="ScrollContainer" parent="."] +show_behind_parent = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 0 +size_flags_stretch_ratio = 0.75 +horizontal_scroll_mode = 3 +vertical_scroll_mode = 0 + +[node name="Settings" type="VBoxContainer" parent="Scroll"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="HBox" type="HBoxContainer" parent="Scroll/Settings"] +layout_mode = 2 + +[node name="Icon" type="TextureRect" parent="Scroll/Settings/HBox"] +unique_name_in_owner = true +layout_mode = 2 +expand_mode = 3 + +[node name="Title" type="Label" parent="Scroll/Settings/HBox"] +unique_name_in_owner = true +layout_mode = 2 +theme_type_variation = &"DialogicSubTitle" + +[node name="ExternalLink" type="Button" parent="Scroll/Settings/HBox"] +unique_name_in_owner = true +visible = false +layout_mode = 2 +icon = SubResource("ImageTexture_lce2m") +flat = true + +[node name="VisibilityToggle" type="Button" parent="Scroll/Settings/HBox"] +unique_name_in_owner = true +visible = false +layout_mode = 2 +toggle_mode = true +button_pressed = true +icon = SubResource("ImageTexture_137g7") +flat = true + +[node name="EventDefaultsPanel" type="PanelContainer" parent="Scroll/Settings"] +unique_name_in_owner = true +visible = false +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_315cl") + +[node name="VBox" type="VBoxContainer" parent="Scroll/Settings/EventDefaultsPanel"] +layout_mode = 2 + +[node name="Title" type="Label" parent="Scroll/Settings/EventDefaultsPanel/VBox"] +layout_mode = 2 +text = "Edit event defaults:" + +[node name="EventDefaults" type="GridContainer" parent="Scroll/Settings/EventDefaultsPanel/VBox"] +unique_name_in_owner = true +layout_mode = 2 +columns = 3 + +[node name="GeneralInfo" type="Label" parent="Scroll/Settings"] +unique_name_in_owner = true +layout_mode = 2 +theme_type_variation = &"DialogicHintText2" +autowrap_mode = 3 + +[connection signal="toggled" from="Overview/ScrollContainer/HBox/Filter_Events" to="." method="filters_updated"] +[connection signal="toggled" from="Overview/ScrollContainer/HBox/Filter_Subsystems" to="." method="filters_updated"] +[connection signal="toggled" from="Overview/ScrollContainer/HBox/Filter_EffectsAndModifiers" to="." method="filters_updated"] +[connection signal="toggled" from="Overview/ScrollContainer/HBox/Filter_Styles" to="." method="filters_updated"] +[connection signal="toggled" from="Overview/ScrollContainer/HBox/Filter_Settings" to="." method="filters_updated"] +[connection signal="toggled" from="Overview/ScrollContainer/HBox/Filter_Editors" to="." method="filters_updated"] +[connection signal="text_changed" from="Overview/ScrollContainer/HBox/Search" to="." method="_on_search_text_changed"] +[connection signal="pressed" from="Overview/ScrollContainer/HBox/Refresh" to="." method="_on_refresh_pressed"] +[connection signal="toggled" from="Overview/ScrollContainer/HBox/Collapse" to="." method="_on_collapse_toggled"] +[connection signal="button_clicked" from="Overview/Tree" to="." method="_on_tree_button_clicked"] +[connection signal="item_selected" from="Overview/Tree" to="." method="_on_tree_item_selected"] +[connection signal="pressed" from="Scroll/Settings/HBox/ExternalLink" to="." method="_on_external_link_pressed"] +[connection signal="toggled" from="Scroll/Settings/HBox/VisibilityToggle" to="." method="_on_visibility_toggle_toggled"] diff --git a/addons/dialogic/Editor/Settings/CoreSettingsPages/settings_tools.gd b/addons/dialogic/Editor/Settings/CoreSettingsPages/settings_tools.gd new file mode 100644 index 0000000..6b84a79 --- /dev/null +++ b/addons/dialogic/Editor/Settings/CoreSettingsPages/settings_tools.gd @@ -0,0 +1,80 @@ +@tool +extends Node + +var tool_thread : Thread +var tool_progress := 1.0 +var tool_progress_mutex : Mutex +signal tool_finished_signal + + +func _ready() -> void: + for button in %ToolButtons.get_children(): + button.queue_free() + + for i in get_children(): + var button := Button.new() + button.text = i.button_text + button.tooltip_text = i.tooltip + button.pressed.connect(execute_tool.bind(i.method)) + %ToolButtons.add_child(button) + + +func execute_tool(method:Callable) -> void: + for button in %ToolButtons.get_children(): + button.disabled = true + + var prev_timeline := close_active_timeline() + await get_tree().process_frame + if tool_thread and tool_thread.is_alive(): + tool_thread.wait_to_finish() + + tool_thread = Thread.new() + tool_progress_mutex = Mutex.new() + tool_thread.start(method) + + await tool_finished_signal + silently_open_timeline(prev_timeline) + for button in %ToolButtons.get_children(): + button.disabled = false + + +func _process(_delta: float) -> void: + if (tool_thread and tool_thread.is_alive()) or %ToolProgress.value < 1: + if tool_progress_mutex: tool_progress_mutex.lock() + %ToolProgress.value = tool_progress + if tool_progress_mutex: tool_progress_mutex.unlock() + %ToolProgress.show() + if %ToolProgress.value == 1: + tool_finished_signal.emit() + %ToolProgress.hide() + + +func _exit_tree() -> void: + if tool_thread: + tool_thread.wait_to_finish() + + + +#region HELPERS + +## Closes the current timeline in the Dialogic Editor and returns the timeline +## as a resource. +## If no timeline has been opened, returns null. +func close_active_timeline() -> Resource: + var timeline_node: DialogicEditor = get_parent().settings_editor.editors_manager.editors['Timeline']['node'] + # We will close this timeline to ensure it will properly update. + # By saving this reference, we can open it again. + var current_timeline := timeline_node.current_resource + # Clean the current editor, this will also close the timeline. + get_parent().settings_editor.editors_manager.clear_editor(timeline_node, true) + + return current_timeline + + +## Opens the timeline resource into the Dialogic Editor. +## If the timeline is null, does nothing. +func silently_open_timeline(timeline_to_open: Resource) -> void: + if timeline_to_open != null: + get_parent().settings_editor.editors_manager.edit_resource(timeline_to_open, true, true) + +#endregion diff --git a/addons/dialogic/Editor/Settings/CoreSettingsPages/settings_tools.gd.uid b/addons/dialogic/Editor/Settings/CoreSettingsPages/settings_tools.gd.uid new file mode 100644 index 0000000..f01f974 --- /dev/null +++ b/addons/dialogic/Editor/Settings/CoreSettingsPages/settings_tools.gd.uid @@ -0,0 +1 @@ +uid://bo0dfmsyky1mm diff --git a/addons/dialogic/Editor/Settings/CoreSettingsPages/settings_translation.gd b/addons/dialogic/Editor/Settings/CoreSettingsPages/settings_translation.gd new file mode 100644 index 0000000..d882ec7 --- /dev/null +++ b/addons/dialogic/Editor/Settings/CoreSettingsPages/settings_translation.gd @@ -0,0 +1,659 @@ +@tool +extends DialogicSettingsPage + +## Settings tab that allows enabeling and updating translation csv-files. + + +enum TranslationModes {PER_PROJECT, PER_TIMELINE, NONE} +enum SaveLocationModes {INSIDE_TRANSLATION_FOLDER, NEXT_TO_TIMELINE, NONE} + +var loading := false + +## The default CSV filename that contains the translations for character +## properties. +const DEFAULT_CHARACTER_CSV_NAME := "dialogic_character_translations.csv" +## The default CSV filename that contains the translations for timelines. +## Only used when all timelines are supposed to be translated in one file. +const DEFAULT_TIMELINE_CSV_NAME := "dialogic_timeline_translations.csv" + +const DEFAULT_GLOSSARY_CSV_NAME := "dialogic_glossary_translations.csv" + +const _USED_LOCALES_SETTING := "dialogic/translation/locales" + +## Contains translation changes that were made during the last update. + +## Unique locales that will be set after updating the CSV files. +var _unique_locales := [] + +func _get_icon() -> Texture2D: + return get_theme_icon("Translation", "EditorIcons") + + +func _is_feature_tab() -> bool: + return true + + +func _ready() -> void: + %TransEnabled.toggled.connect(store_changes) + %OrigLocale.suggestions_func = get_locales + %OrigLocale.resource_icon = get_theme_icon("Translation", "EditorIcons") + %OrigLocale.value_changed.connect(store_changes) + %TestingLocale.suggestions_func = get_locales + %TestingLocale.resource_icon = get_theme_icon("Translation", "EditorIcons") + %TestingLocale.value_changed.connect(store_changes) + %TransFolderPicker.value_changed.connect(store_changes) + %AddSeparatorEnabled.toggled.connect(store_changes) + + %SaveLocationMode.item_selected.connect(store_changes) + %TransMode.item_selected.connect(store_changes) + + %UpdateCsvFiles.pressed.connect(_on_update_translations_pressed) + %UpdateCsvFiles.icon = get_theme_icon("Add", "EditorIcons") + + %CollectTranslations.pressed.connect(collect_translations) + %CollectTranslations.icon = get_theme_icon("File", "EditorIcons") + + %TransRemove.pressed.connect(_on_erase_translations_pressed) + %TransRemove.icon = get_theme_icon("Remove", "EditorIcons") + + %UpdateConfirmationDialog.add_button("Keep old & Generate new", false, "generate_new") + + %UpdateConfirmationDialog.custom_action.connect(_on_custom_action) + + _verify_translation_file() + + +func _on_custom_action(action: String) -> void: + if action == "generate_new": + update_csv_files() + + +func _refresh() -> void: + loading = true + + %TransEnabled.button_pressed = ProjectSettings.get_setting('dialogic/translation/enabled', false) + %TranslationSettings.visible = %TransEnabled.button_pressed + %OrigLocale.set_value(ProjectSettings.get_setting('dialogic/translation/original_locale', TranslationServer.get_tool_locale())) + %TransMode.select(ProjectSettings.get_setting('dialogic/translation/file_mode', 1)) + %TransFolderPicker.set_value(ProjectSettings.get_setting('dialogic/translation/translation_folder', '')) + %TestingLocale.set_value(ProjectSettings.get_setting('internationalization/locale/test', '')) + %AddSeparatorEnabled.button_pressed = ProjectSettings.get_setting('dialogic/translation/add_separator', false) + + _verify_translation_file() + + loading = false + + +func store_changes(_fake_arg: Variant = null, _fake_arg2: Variant = null) -> void: + if loading: + return + + _verify_translation_file() + + ProjectSettings.set_setting('dialogic/translation/enabled', %TransEnabled.button_pressed) + %TranslationSettings.visible = %TransEnabled.button_pressed + ProjectSettings.set_setting('dialogic/translation/original_locale', %OrigLocale.current_value) + ProjectSettings.set_setting('dialogic/translation/file_mode', %TransMode.selected) + ProjectSettings.set_setting('dialogic/translation/translation_folder', %TransFolderPicker.current_value) + ProjectSettings.set_setting('internationalization/locale/test', %TestingLocale.current_value) + ProjectSettings.set_setting('dialogic/translation/save_mode', %SaveLocationMode.selected) + ProjectSettings.set_setting('dialogic/translation/add_separator', %AddSeparatorEnabled.button_pressed) + ProjectSettings.save() + + +## Checks whether the translation folder path is required. +## If it is, disables the "Update CSV files" button and shows a warning. +## +## The translation folder path is required when either of the following is true: +## - The translation mode is set to "Per Project". +## - The save location mode is set to "Inside Translation Folder". +func _verify_translation_file() -> void: + var translation_folder: String = %TransFolderPicker.current_value + var file_mode: TranslationModes = %TransMode.selected + + if file_mode == TranslationModes.PER_PROJECT: + %SaveLocationMode.disabled = true + else: + %SaveLocationMode.disabled = false + + var valid_translation_folder := (!translation_folder.is_empty() + and DirAccess.dir_exists_absolute(translation_folder)) + + %UpdateCsvFiles.disabled = not valid_translation_folder + + var status_message := "" + + if not valid_translation_folder: + status_message += "⛔ Requires valid translation folder to translate character names" + + if file_mode == TranslationModes.PER_PROJECT: + status_message += " and the project CSV file." + else: + status_message += "." + + %StatusMessage.text = status_message + + +func get_locales(_filter: String) -> Dictionary: + var suggestions := {} + suggestions['Default'] = {'value':'', 'tooltip':"Will use the fallback locale set in the project settings."} + suggestions[TranslationServer.get_tool_locale()] = {'value':TranslationServer.get_tool_locale()} + + var used_locales: Array = ProjectSettings.get_setting(_USED_LOCALES_SETTING, TranslationServer.get_all_languages()) + + for locale: String in used_locales: + var language_name := TranslationServer.get_language_name(locale) + + # Invalid locales return an empty String. + if language_name.is_empty(): + continue + + suggestions[locale] = { 'value': locale, 'tooltip': language_name } + + return suggestions + + +func _on_update_translations_pressed() -> void: + var save_mode: SaveLocationModes = %SaveLocationMode.selected + var file_mode: TranslationModes = %TransMode.selected + var translation_folder: String = %TransFolderPicker.current_value + + var old_save_mode: SaveLocationModes = ProjectSettings.get_setting('dialogic/translation/intern/save_mode', save_mode) + var old_file_mode: TranslationModes = ProjectSettings.get_setting('dialogic/translation/intern/file_mode', file_mode) + var old_translation_folder: String = ProjectSettings.get_setting('dialogic/translation/intern/translation_folder', translation_folder) + + if (old_save_mode == save_mode + and old_file_mode == file_mode + and old_translation_folder == translation_folder): + update_csv_files() + return + + %UpdateConfirmationDialog.popup_centered() + + +## Used by the dialog to inform that the settings were changed. +func _delete_and_update() -> void: + erase_translations() + update_csv_files() + + +## Creates or updates the glossary CSV files. +func _handle_glossary_translation( + csv_data: CsvUpdateData, + save_location_mode: SaveLocationModes, + translation_mode: TranslationModes, + translation_folder_path: String, + orig_locale: String) -> void: + + var glossary_csv: DialogicCsvFile = null + var glossary_paths: Array = ProjectSettings.get_setting('dialogic/glossary/glossary_files', []) + var add_separator_lines: bool = ProjectSettings.get_setting('dialogic/translation/add_separator', false) + + for glossary_path: String in glossary_paths: + + if glossary_csv == null: + var csv_name := "" + + # Get glossary CSV file name. + match translation_mode: + TranslationModes.PER_PROJECT: + csv_name = DEFAULT_GLOSSARY_CSV_NAME + + TranslationModes.PER_TIMELINE: + var glossary_name: String = glossary_path.trim_suffix('.tres') + var path_parts := glossary_name.split("/") + var file_name := path_parts[-1] + csv_name = "dialogic_" + file_name + '_translation.csv' + + var glossary_csv_path := "" + # Get glossary CSV file path. + match save_location_mode: + SaveLocationModes.INSIDE_TRANSLATION_FOLDER: + glossary_csv_path = translation_folder_path.path_join(csv_name) + + SaveLocationModes.NEXT_TO_TIMELINE: + glossary_csv_path = glossary_path.get_base_dir().path_join(csv_name) + + # Create or update glossary CSV file. + glossary_csv = DialogicCsvFile.new(glossary_csv_path, orig_locale, add_separator_lines) + + if (glossary_csv.is_new_file): + csv_data.new_glossaries += 1 + else: + csv_data.updated_glossaries += 1 + + var glossary: DialogicGlossary = load(glossary_path) + glossary_csv.collect_lines_from_glossary(glossary) + glossary_csv.add_translation_keys_to_glossary(glossary) + ResourceSaver.save(glossary) + + #If per-file mode is used, save this csv and begin a new one + if translation_mode == TranslationModes.PER_TIMELINE: + glossary_csv.update_csv_file_on_disk() + glossary_csv = null + + # If a Per-Project glossary is still open, we need to save it. + if glossary_csv != null: + glossary_csv.update_csv_file_on_disk() + glossary_csv = null + + +## Keeps information about the amount of new and updated CSV rows and what +## resources were populated with translation IDs. +## The final data can be used to display a status message. +class CsvUpdateData: + var new_events := 0 + var updated_events := 0 + + var new_timelines := 0 + var updated_timelines := 0 + + var new_names := 0 + var updated_names := 0 + + var new_glossaries := 0 + var updated_glossaries := 0 + + var new_glossary_entries := 0 + var updated_glossary_entries := 0 + + +func update_csv_files() -> void: + _unique_locales = [] + var orig_locale: String = ProjectSettings.get_setting('dialogic/translation/original_locale', '').strip_edges() + var save_location_mode: SaveLocationModes = ProjectSettings.get_setting('dialogic/translation/save_mode', SaveLocationModes.NEXT_TO_TIMELINE) + var translation_mode: TranslationModes = ProjectSettings.get_setting('dialogic/translation/file_mode', TranslationModes.PER_PROJECT) + var translation_folder_path: String = ProjectSettings.get_setting('dialogic/translation/translation_folder', 'res://') + var add_separator_lines: bool = ProjectSettings.get_setting('dialogic/translation/add_separator', false) + + var csv_data := CsvUpdateData.new() + + if orig_locale.is_empty(): + orig_locale = ProjectSettings.get_setting('internationalization/locale/fallback') + + ProjectSettings.set_setting('dialogic/translation/intern/save_mode', save_location_mode) + ProjectSettings.set_setting('dialogic/translation/intern/file_mode', translation_mode) + ProjectSettings.set_setting('dialogic/translation/intern/translation_folder', translation_folder_path) + + var current_timeline := _close_active_timeline() + + var csv_per_project: DialogicCsvFile = null + var per_project_csv_path := translation_folder_path.path_join(DEFAULT_TIMELINE_CSV_NAME) + + if translation_mode == TranslationModes.PER_PROJECT: + csv_per_project = DialogicCsvFile.new(per_project_csv_path, orig_locale, add_separator_lines) + + if (csv_per_project.is_new_file): + csv_data.new_timelines += 1 + else: + csv_data.updated_timelines += 1 + + # Iterate over all timelines. + # Create or update CSV files. + # Transform the timeline into translatable lines and collect into the CSV file. + for timeline_path: String in DialogicResourceUtil.list_resources_of_type('.dtl'): + var csv_file: DialogicCsvFile = csv_per_project + + # Swap the CSV file to the Per Timeline one. + if translation_mode == TranslationModes.PER_TIMELINE: + var per_timeline_path: String = timeline_path.trim_suffix('.dtl') + var path_parts := per_timeline_path.split("/") + var timeline_name: String = path_parts[-1] + + # Adjust the file path to the translation location mode. + if save_location_mode == SaveLocationModes.INSIDE_TRANSLATION_FOLDER: + var prefixed_timeline_name := "dialogic_" + timeline_name + per_timeline_path = translation_folder_path.path_join(prefixed_timeline_name) + + + per_timeline_path += '_translation.csv' + csv_file = DialogicCsvFile.new(per_timeline_path, orig_locale, false) + csv_data.new_timelines += 1 + + # Load and process timeline, turn events into resources. + var timeline: DialogicTimeline = load(timeline_path) + + if timeline.events.size() == 0: + print_rich("[color=yellow]Empty timeline, skipping: " + timeline_path + "[/color]") + continue + + timeline.process() + + # Collect timeline into CSV. + csv_file.collect_lines_from_timeline(timeline) + + # in case new translation_id's were added, we save the timeline again + timeline.set_meta("timeline_not_saved", true) + ResourceSaver.save(timeline, timeline_path) + + if translation_mode == TranslationModes.PER_TIMELINE: + csv_file.update_csv_file_on_disk() + + csv_data.new_events += csv_file.new_rows + csv_data.updated_events += csv_file.updated_rows + + _handle_glossary_translation( + csv_data, + save_location_mode, + translation_mode, + translation_folder_path, + orig_locale + ) + + _handle_character_names( + csv_data, + orig_locale, + translation_folder_path, + add_separator_lines + ) + + if translation_mode == TranslationModes.PER_PROJECT: + csv_per_project.update_csv_file_on_disk() + + _silently_open_timeline(current_timeline) + + # Trigger reimport. + find_parent('EditorView').plugin_reference.get_editor_interface().get_resource_filesystem().scan_sources() + + var status_message := "Events created {new_events} found {updated_events} + Names created {new_names} found {updated_names} + CSVs created {new_timelines} found {updated_timelines} + Glossary created {new_glossaries} found {updated_glossaries} + Entries created {new_glossary_entries} found {updated_glossary_entries}" + + var status_message_args := { + 'new_events': csv_data.new_events, + 'updated_events': csv_data.updated_events, + 'new_timelines': csv_data.new_timelines, + 'updated_timelines': csv_data.updated_timelines, + 'new_glossaries': csv_data.new_glossaries, + 'updated_glossaries': csv_data.updated_glossaries, + 'new_names': csv_data.new_names, + 'updated_names': csv_data.updated_names, + 'new_glossary_entries': csv_data.new_glossary_entries, + 'updated_glossary_entries': csv_data.updated_glossary_entries, + } + + %StatusMessage.text = status_message.format(status_message_args) + ProjectSettings.set_setting(_USED_LOCALES_SETTING, _unique_locales) + + +## Iterates over all character resource files and creates or updates CSV files +## that contain the translations for character properties. +## This will save each character resource file to disk. +func _handle_character_names( + csv_data: CsvUpdateData, + original_locale: String, + translation_folder_path: String, + add_separator_lines: bool) -> void: + var names_csv_path := translation_folder_path.path_join(DEFAULT_CHARACTER_CSV_NAME) + var character_name_csv: DialogicCsvFile = DialogicCsvFile.new(names_csv_path, + original_locale, + add_separator_lines + ) + + var all_characters := {} + + for character_path: String in DialogicResourceUtil.list_resources_of_type('.dch'): + var character: DialogicCharacter = load(character_path) + + if character._translation_id.is_empty(): + csv_data.new_names += 1 + + else: + csv_data.updated_names += 1 + + var translation_id := character.get_set_translation_id() + all_characters[translation_id] = character + + ResourceSaver.save(character) + + character_name_csv.collect_lines_from_characters(all_characters) + character_name_csv.update_csv_file_on_disk() + + +func collect_translations() -> void: + var translation_files := [] + var translation_mode: TranslationModes = ProjectSettings.get_setting('dialogic/translation/file_mode', TranslationModes.PER_PROJECT) + + if translation_mode == TranslationModes.PER_TIMELINE: + + for timeline_path: String in DialogicResourceUtil.list_resources_of_type('.translation'): + + for file: String in DialogicUtil.listdir(timeline_path.get_base_dir()): + file = timeline_path.get_base_dir().path_join(file) + + if file.ends_with('.translation'): + + if not file in translation_files: + translation_files.append(file) + + if translation_mode == TranslationModes.PER_PROJECT: + var translation_folder: String = ProjectSettings.get_setting('dialogic/translation/translation_folder', 'res://') + + for file: String in DialogicUtil.listdir(translation_folder): + file = translation_folder.path_join(file) + + if file.ends_with('.translation'): + + if not file in translation_files: + translation_files.append(file) + + var all_translation_files: Array = ProjectSettings.get_setting('internationalization/locale/translations', []) + var orig_file_amount := len(all_translation_files) + + # This array keeps track of valid translation file paths. + var found_file_paths := [] + var removed_translation_files := 0 + + for file_path: String in translation_files: + # If the file path is not valid, we must clean it up. + if ResourceLoader.exists(file_path): + found_file_paths.append(file_path) + else: + removed_translation_files += 1 + continue + + if not file_path in all_translation_files: + all_translation_files.append(file_path) + + var path_without_suffix := file_path.trim_suffix('.translation') + var locale_part := path_without_suffix.split(".")[-1] + _collect_locale(locale_part) + + + var valid_translation_files := PackedStringArray(all_translation_files) + ProjectSettings.set_setting('internationalization/locale/translations', valid_translation_files) + ProjectSettings.save() + + %StatusMessage.text = ( + "Added translation files: " + str(len(all_translation_files)-orig_file_amount) + + "\nRemoved translation files: " + str(removed_translation_files) + + "\nTotal translation files: " + str(len(all_translation_files))) + + +func _on_erase_translations_pressed() -> void: + %EraseConfirmationDialog.popup_centered() + + +## Deletes translation files generated by [param csv_name]. +## The [param csv_name] may not contain the file extension (.csv). +## +## Returns a vector, value 1 is amount of deleted translation files. +## Value +func delete_translations_files(translation_files: Array, csv_name: String) -> int: + var deleted_files := 0 + + for file_path: String in DialogicResourceUtil.list_resources_of_type('.translation'): + var base_name: String = file_path.get_basename() + var path_parts := base_name.split("/") + var translation_name: String = path_parts[-1] + + if translation_name.begins_with(csv_name): + + if OK == DirAccess.remove_absolute(file_path): + var project_translation_file_index := translation_files.find(file_path) + + if project_translation_file_index > -1: + translation_files.remove_at(project_translation_file_index) + + deleted_files += 1 + print_rich("[color=green]Deleted translation file: " + file_path + "[/color]") + else: + print_rich("[color=yellow]Failed to delete translation file: " + file_path + "[/color]") + + + return deleted_files + + +## Iterates over all timelines and deletes their CSVs and timeline +## translation IDs. +## Deletes the Per-Project CSV file and the character name CSV file. +func erase_translations() -> void: + var files: PackedStringArray = ProjectSettings.get_setting('internationalization/locale/translations', []) + var translation_files := Array(files) + ProjectSettings.set_setting(_USED_LOCALES_SETTING, []) + + var deleted_csv_files := 0 + var deleted_translation_files := 0 + var cleaned_timelines := 0 + var cleaned_characters := 0 + var cleaned_events := 0 + var cleaned_glossaries := 0 + + var current_timeline := _close_active_timeline() + + # Delete all Dialogic CSV files and their translation files. + for csv_path: String in DialogicResourceUtil.list_resources_of_type(".csv"): + var csv_path_parts: PackedStringArray = csv_path.split("/") + var csv_name: String = csv_path_parts[-1].trim_suffix(".csv") + + # Handle Dialogic CSVs only. + if not csv_name.begins_with("dialogic_"): + continue + + # Delete the CSV file. + if OK == DirAccess.remove_absolute(csv_path): + deleted_csv_files += 1 + print_rich("[color=green]Deleted CSV file: " + csv_path + "[/color]") + + deleted_translation_files += delete_translations_files(translation_files, csv_name) + else: + print_rich("[color=yellow]Failed to delete CSV file: " + csv_path + "[/color]") + + # Clean timelines. + for timeline_path: String in DialogicResourceUtil.list_resources_of_type(".dtl"): + + # Process the timeline. + var timeline: DialogicTimeline = load(timeline_path) + timeline.process() + cleaned_timelines += 1 + + # Remove event translation IDs. + for event: DialogicEvent in timeline.events: + + if event._translation_id and not event._translation_id.is_empty(): + event.remove_translation_id() + event.update_text_version() + cleaned_events += 1 + + if "character" in event: + # Remove character translation IDs. + var character: DialogicCharacter = event.character + + if character != null and not character._translation_id.is_empty(): + character.remove_translation_id() + cleaned_characters += 1 + + timeline.set_meta("timeline_not_saved", true) + ResourceSaver.save(timeline, timeline_path) + + _erase_glossary_translation_ids() + _erase_character_name_translation_ids() + + ProjectSettings.set_setting('dialogic/translation/id_counter', 16) + ProjectSettings.set_setting('internationalization/locale/translations', PackedStringArray(translation_files)) + ProjectSettings.save() + + find_parent('EditorView').plugin_reference.get_editor_interface().get_resource_filesystem().scan_sources() + + var status_message := "Timelines cleaned {cleaned_timelines} + Events cleaned {cleaned_events} + Characters cleaned {cleaned_characters} + Glossaries cleaned {cleaned_glossaries} + + CSVs erased {erased_csv_files} + Translations erased {erased_translation_files}" + + var status_message_args := { + 'cleaned_timelines': cleaned_timelines, + 'cleaned_characters': cleaned_characters, + 'cleaned_events': cleaned_events, + 'cleaned_glossaries': cleaned_glossaries, + 'erased_csv_files': deleted_csv_files, + 'erased_translation_files': deleted_translation_files, + } + + _silently_open_timeline(current_timeline) + + # Trigger reimport. + find_parent('EditorView').plugin_reference.get_editor_interface().get_resource_filesystem().scan_sources() + + # Clear the internal settings. + ProjectSettings.clear('dialogic/translation/intern/save_mode') + ProjectSettings.clear('dialogic/translation/intern/file_mode') + ProjectSettings.clear('dialogic/translation/intern/translation_folder') + + _verify_translation_file() + %StatusMessage.text = status_message.format(status_message_args) + + +func _erase_glossary_translation_ids() -> void: + # Clean glossary. + var glossary_paths: Array = ProjectSettings.get_setting('dialogic/glossary/glossary_files', []) + + for glossary_path: String in glossary_paths: + var glossary: DialogicGlossary = load(glossary_path) + glossary.remove_translation_id() + glossary.remove_entry_translation_ids() + glossary.clear_translation_keys() + ResourceSaver.save(glossary, glossary_path) + print_rich("[color=green]Cleaned up glossary file: " + glossary_path + "[/color]") + + +func _erase_character_name_translation_ids() -> void: + for character_path: String in DialogicResourceUtil.list_resources_of_type('.dch'): + var character: DialogicCharacter = load(character_path) + + character.remove_translation_id() + ResourceSaver.save(character) + + +## Closes the current timeline in the Dialogic Editor and returns the timeline +## as a resource. +## If no timeline has been opened, returns null. +func _close_active_timeline() -> Resource: + var timeline_node: DialogicEditor = settings_editor.editors_manager.editors['Timeline']['node'] + # We will close this timeline to ensure it will properly update. + # By saving this reference, we can open it again. + var current_timeline := timeline_node.current_resource + # Clean the current editor, this will also close the timeline. + settings_editor.editors_manager.clear_editor(timeline_node) + + return current_timeline + + +## Opens the timeline resource into the Dialogic Editor. +## If the timeline is null, does nothing. +func _silently_open_timeline(timeline_to_open: Resource) -> void: + if timeline_to_open != null: + settings_editor.editors_manager.edit_resource(timeline_to_open, true, true) + + +## Checks [param locale] for unique locales that have not been added +## to the [_unique_locales] array yet. +func _collect_locale(locale: String) -> void: + if _unique_locales.has(locale): + return + + _unique_locales.append(locale) diff --git a/addons/dialogic/Editor/Settings/CoreSettingsPages/settings_translation.gd.uid b/addons/dialogic/Editor/Settings/CoreSettingsPages/settings_translation.gd.uid new file mode 100644 index 0000000..76f5d8f --- /dev/null +++ b/addons/dialogic/Editor/Settings/CoreSettingsPages/settings_translation.gd.uid @@ -0,0 +1 @@ +uid://b0bm772xo8n2j diff --git a/addons/dialogic/Editor/Settings/CoreSettingsPages/settings_translation.tscn b/addons/dialogic/Editor/Settings/CoreSettingsPages/settings_translation.tscn new file mode 100644 index 0000000..eadce4a --- /dev/null +++ b/addons/dialogic/Editor/Settings/CoreSettingsPages/settings_translation.tscn @@ -0,0 +1,368 @@ +[gd_scene load_steps=7 format=3 uid="uid://chpb1mj03xjxv"] + +[ext_resource type="Script" uid="uid://b0bm772xo8n2j" path="res://addons/dialogic/Editor/Settings/CoreSettingsPages/settings_translation.gd" id="1_dvmyi"] +[ext_resource type="PackedScene" uid="uid://dbpkta2tjsqim" path="res://addons/dialogic/Editor/Common/hint_tooltip_icon.tscn" id="2_k2lou"] +[ext_resource type="PackedScene" uid="uid://dpwhshre1n4t6" path="res://addons/dialogic/Editor/Events/Fields/field_options_dynamic.tscn" id="3_dq4j2"] +[ext_resource type="PackedScene" uid="uid://7mvxuaulctcq" path="res://addons/dialogic/Editor/Events/Fields/field_file.tscn" id="4_kvsma"] + +[sub_resource type="Image" id="Image_4jaem"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_xbph7"] +image = SubResource("Image_4jaem") + +[node name="Translations" type="VBoxContainer"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_top = -101.0 +offset_bottom = 102.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_dvmyi") + +[node name="HBox" type="HBoxContainer" parent="."] +layout_mode = 2 + +[node name="Basics" type="VBoxContainer" parent="HBox"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="Title" type="Label" parent="HBox/Basics"] +layout_mode = 2 +theme_type_variation = &"DialogicSettingsSection" +text = "Basics" + +[node name="VBox4" type="HBoxContainer" parent="HBox/Basics"] +layout_mode = 2 + +[node name="Label" type="Label" parent="HBox/Basics/VBox4"] +layout_mode = 2 +text = "Enable translations" + +[node name="TransEnabled" type="CheckBox" parent="HBox/Basics/VBox4"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="HSeparator5" type="VSeparator" parent="HBox"] +layout_mode = 2 + +[node name="Testing" type="VBoxContainer" parent="HBox"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="Title2" type="Label" parent="HBox/Testing"] +layout_mode = 2 +theme_type_variation = &"DialogicSettingsSection" +text = "Testing" + +[node name="VBox3" type="HBoxContainer" parent="HBox/Testing"] +layout_mode = 2 + +[node name="Label3" type="Label" parent="HBox/Testing/VBox3"] +layout_mode = 2 +text = "Testing locale" + +[node name="HintTooltip8" parent="HBox/Testing/VBox3" instance=ExtResource("2_k2lou")] +layout_mode = 2 +tooltip_text = "Change this locale to test your game in a different language (only in-editor). +Equivalent of the testing local project setting. " +texture = SubResource("ImageTexture_xbph7") +hint_text = "Change this locale to test your game in a different language (only in-editor). +Equivalent of the testing local project setting. + +Update dropdown list via \"Collect Translation\"." + +[node name="TestingLocale" parent="HBox/Testing/VBox3" instance=ExtResource("3_dq4j2")] +unique_name_in_owner = true +layout_mode = 2 + +[node name="HSeparator4" type="HSeparator" parent="."] +layout_mode = 2 + +[node name="TranslationSettings" type="HBoxContainer" parent="."] +unique_name_in_owner = true +layout_mode = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="TranslationSettings"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="SettingsTitle" type="Label" parent="TranslationSettings/VBoxContainer"] +layout_mode = 2 +theme_type_variation = &"DialogicSettingsSection" +text = "Settings" + +[node name="Grid" type="GridContainer" parent="TranslationSettings/VBoxContainer"] +layout_mode = 2 +columns = 2 + +[node name="VBox" type="HBoxContainer" parent="TranslationSettings/VBoxContainer/Grid"] +layout_mode = 2 + +[node name="Label3" type="Label" parent="TranslationSettings/VBoxContainer/Grid/VBox"] +layout_mode = 2 +text = "Default locale" + +[node name="HintTooltip" parent="TranslationSettings/VBoxContainer/Grid/VBox" instance=ExtResource("2_k2lou")] +layout_mode = 2 +tooltip_text = "The locale of the language your timelines are written in." +texture = SubResource("ImageTexture_xbph7") +hint_text = "The locale of the language your timelines are written in." + +[node name="OrigLocale" parent="TranslationSettings/VBoxContainer/Grid" instance=ExtResource("3_dq4j2")] +unique_name_in_owner = true +layout_mode = 2 + +[node name="TransFile" type="HBoxContainer" parent="TranslationSettings/VBoxContainer/Grid"] +layout_mode = 2 + +[node name="Label" type="Label" parent="TranslationSettings/VBoxContainer/Grid/TransFile"] +layout_mode = 2 +text = "Translation folder" + +[node name="HintTooltip3" parent="TranslationSettings/VBoxContainer/Grid/TransFile" instance=ExtResource("2_k2lou")] +layout_mode = 2 +tooltip_text = "Choose a folder to let Dialogic save CSV files in. +Also used when saving \"Inside Translation Folder\"" +texture = SubResource("ImageTexture_xbph7") +hint_text = "Choose a folder to let Dialogic save CSV files in. +Also used when saving \"Inside Translation Folder\"" + +[node name="TransFolderPicker" parent="TranslationSettings/VBoxContainer/Grid" instance=ExtResource("4_kvsma")] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +file_mode = 2 + +[node name="VBox2" type="HBoxContainer" parent="TranslationSettings/VBoxContainer/Grid"] +layout_mode = 2 + +[node name="OutputModeLabel" type="Label" parent="TranslationSettings/VBoxContainer/Grid/VBox2"] +layout_mode = 2 +text = "Output mode" + +[node name="OutputModeTooltip" parent="TranslationSettings/VBoxContainer/Grid/VBox2" instance=ExtResource("2_k2lou")] +layout_mode = 2 +tooltip_text = "Decides how many CSV files will be created. + +• \"Per Type\": Uses one CSV file for each type of resource: Timelines, characters, and glossaries. +For example, 10 timelines will be combined into 1 CSV file. + +• \"Per File\": Uses one CSV file for each resource file. +For example, 10 timelines will result in 10 CSV files. + +The \"Per File\" option utilises \"Output location\", in contrast, the \"Per Type\" will always use the Translation folder." +texture = SubResource("ImageTexture_xbph7") +hint_text = "Decides how many CSV files will be created. + +• \"Per Type\": Uses one CSV file for each type of resource: Timelines, characters, and glossaries. +For example, 10 timelines will be combined into 1 CSV file. + +• \"Per File\": Uses one CSV file for each resource file. +For example, 10 timelines will result in 10 CSV files. + +The \"Per File\" option utilises \"Output location\", in contrast, the \"Per Type\" will always use the Translation folder." + +[node name="TransMode" type="OptionButton" parent="TranslationSettings/VBoxContainer/Grid"] +unique_name_in_owner = true +layout_mode = 2 +item_count = 2 +selected = 0 +popup/item_0/text = "Per Type" +popup/item_0/id = 0 +popup/item_1/text = "Per File" +popup/item_1/id = 1 + +[node name="OutputLocation" type="HBoxContainer" parent="TranslationSettings/VBoxContainer/Grid"] +layout_mode = 2 + +[node name="OutputLocationLabel" type="Label" parent="TranslationSettings/VBoxContainer/Grid/OutputLocation"] +layout_mode = 2 +text = "Output location" + +[node name="OutputLocationTooltip" parent="TranslationSettings/VBoxContainer/Grid/OutputLocation" instance=ExtResource("2_k2lou")] +layout_mode = 2 +tooltip_text = "Decides where to save the generated CSV files. + +• \"Inside Translation Folder\": Uses the \"Translation folder\". + +• \"Next To Timeline\": Places them in the resource type's folder. + +This button requires the \"Per File\" Output mode. +A resource type can be: Timelines, characters, and glossaries." +texture = SubResource("ImageTexture_xbph7") +hint_text = "Decides where to save the generated CSV files. + +• \"Inside Translation Folder\": Uses the \"Translation folder\". + +• \"Next To Timeline\": Places them in the resource type's folder. + +This button requires the \"Per File\" Output mode. +A resource type can be: Timelines, characters, and glossaries." + +[node name="SaveLocationMode" type="OptionButton" parent="TranslationSettings/VBoxContainer/Grid"] +unique_name_in_owner = true +layout_mode = 2 +disabled = true +item_count = 2 +selected = 0 +popup/item_0/text = "Inside Translation Folder" +popup/item_0/id = 0 +popup/item_1/text = "Next to File" +popup/item_1/id = 1 + +[node name="Control" type="Control" parent="TranslationSettings/VBoxContainer/Grid"] +visible = false +layout_mode = 2 + +[node name="AddSeparatorHBox" type="HBoxContainer" parent="TranslationSettings/VBoxContainer/Grid"] +layout_mode = 2 + +[node name="AddSeparatorLabel" type="Label" parent="TranslationSettings/VBoxContainer/Grid/AddSeparatorHBox"] +layout_mode = 2 +text = "Add Separator Lines" + +[node name="HintAddSeparatorEnabled" parent="TranslationSettings/VBoxContainer/Grid/AddSeparatorHBox" instance=ExtResource("2_k2lou")] +layout_mode = 2 +tooltip_text = "Adds an empty line into per-project CSVs to differentiate between sections. + +For example, when a new glossary item or timeline starts, an empty line will be added." +texture = SubResource("ImageTexture_xbph7") +hint_text = "Adds an empty line into per-project CSVs to differentiate between sections. + +For example, when a new glossary item or timeline starts, an empty line will be added." + +[node name="AddSeparatorEnabled" type="CheckBox" parent="TranslationSettings/VBoxContainer/Grid"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="HSeparator6" type="VSeparator" parent="TranslationSettings"] +layout_mode = 2 + +[node name="VBoxContainer2" type="VBoxContainer" parent="TranslationSettings"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="HBoxContainer" type="HBoxContainer" parent="TranslationSettings/VBoxContainer2"] +layout_mode = 2 + +[node name="Title3" type="Label" parent="TranslationSettings/VBoxContainer2/HBoxContainer"] +layout_mode = 2 +theme_type_variation = &"DialogicSettingsSection" +text = "Actions" + +[node name="Actions" type="GridContainer" parent="TranslationSettings/VBoxContainer2"] +layout_mode = 2 +columns = 2 + +[node name="UpdateCsvFiles" type="Button" parent="TranslationSettings/VBoxContainer2/Actions"] +unique_name_in_owner = true +layout_mode = 2 +disabled = true +text = "Update CSV files" +icon = SubResource("ImageTexture_xbph7") + +[node name="HintTooltip5" parent="TranslationSettings/VBoxContainer2/Actions" instance=ExtResource("2_k2lou")] +layout_mode = 2 +tooltip_text = "This button will scan all timelines and generate or update their CSV files. + +A Dialogic CSV file will be prefixed with \"dialogic_\". + +This action will be disabled if the \"Translation folder\" is missing or has an invalid path." +texture = SubResource("ImageTexture_xbph7") +hint_text = "This button will scan all timelines and generate or update their CSV files. + +A Dialogic CSV file will be prefixed with \"dialogic_\". + +This action will be disabled if the \"Translation folder\" is missing or has an invalid path." + +[node name="CollectTranslations" type="Button" parent="TranslationSettings/VBoxContainer2/Actions"] +unique_name_in_owner = true +layout_mode = 2 +text = "Collect translations" +icon = SubResource("ImageTexture_xbph7") + +[node name="HintTooltip6" parent="TranslationSettings/VBoxContainer2/Actions" instance=ExtResource("2_k2lou")] +layout_mode = 2 +tooltip_text = "Godot imports CSV files as \".translation\" files. +This buttons adds them to \"Project Settings -> Localization\". +" +texture = SubResource("ImageTexture_xbph7") +hint_text = "Godot imports CSV files as \".translation\" files. +This buttons adds them to \"Project Settings -> Localization\". +" + +[node name="AspectRatioContainer2" type="AspectRatioContainer" parent="TranslationSettings/VBoxContainer2/Actions"] +custom_minimum_size = Vector2(0, 31) +layout_mode = 2 + +[node name="AspectRatioContainer" type="AspectRatioContainer" parent="TranslationSettings/VBoxContainer2/Actions"] +custom_minimum_size = Vector2(0, 31) +layout_mode = 2 + +[node name="TransRemove" type="Button" parent="TranslationSettings/VBoxContainer2/Actions"] +unique_name_in_owner = true +layout_mode = 2 +text = "Remove translations" +icon = SubResource("ImageTexture_xbph7") + +[node name="HintTooltip7" parent="TranslationSettings/VBoxContainer2/Actions" instance=ExtResource("2_k2lou")] +layout_mode = 2 +tooltip_text = "Be very careful with this button! + +It will try to delete any \".csv\" and \".translation\" files that are related to Dialogic. +CSV and translation files prefixed with \"dialogic_\" are treated as Dialogic-related. + +Removes translation IDs (eg. #id:33) from timelines and characters." +texture = SubResource("ImageTexture_xbph7") +hint_text = "Be very careful with this button! + +It will try to delete any \".csv\" and \".translation\" files that are related to Dialogic. +CSV and translation files prefixed with \"dialogic_\" are treated as Dialogic-related. + +Removes translation IDs (eg. #id:33) from timelines and characters." + +[node name="StatusMessage" type="Label" parent="TranslationSettings/VBoxContainer2"] +unique_name_in_owner = true +layout_mode = 2 +text = "⛔ Requires valid translation folder to translate character names and the project CSV file." +autowrap_mode = 3 + +[node name="UpdateConfirmationDialog" type="ConfirmationDialog" parent="."] +unique_name_in_owner = true +title = "Please Decide..." +size = Vector2i(490, 200) +ok_button_text = "Delete old & Generate new" +dialog_text = "You have previously generated CSVs and translation files with different Translation Settings! + +Please consider to delete the old CSVs and then generate new changes." +dialog_autowrap = true + +[node name="EraseConfirmationDialog" type="ConfirmationDialog" parent="."] +unique_name_in_owner = true +position = Vector2i(0, 36) +size = Vector2i(500, 280) +min_size = Vector2i(300, 70) +ok_button_text = "DELETE ALL" +dialog_text = "You are about to: +- Delete all CSVs prefixed with \"dialogic_\". +- Delete the related CSV import files. +- Delete the related translation files. +- Remove translation IDs from timelines and characters. +- Remove all \"dialogic\" prefixed translations from \"Project Settings -> Localization\". +- Remove the \"_translation_keys\" and \"entries\" starting with \"Glossary/\"." +dialog_autowrap = true + +[node name="AspectRatioContainer" type="AspectRatioContainer" parent="."] +custom_minimum_size = Vector2(0, 31) +layout_mode = 2 + +[connection signal="confirmed" from="UpdateConfirmationDialog" to="." method="_delete_and_update"] +[connection signal="confirmed" from="EraseConfirmationDialog" to="." method="erase_translations"] diff --git a/addons/dialogic/Editor/Settings/CoreSettingsPages/tool_resave.gd b/addons/dialogic/Editor/Settings/CoreSettingsPages/tool_resave.gd new file mode 100644 index 0000000..03200bb --- /dev/null +++ b/addons/dialogic/Editor/Settings/CoreSettingsPages/tool_resave.gd @@ -0,0 +1,32 @@ +@tool +extends Node + +@onready var ToolUtil := get_parent() + +var button_text := "Resave all timelines" +var tooltip := "Opens and resaves all timelines. This can be useful if an update introduced a syntax change." +var method := resave_tool + + +func resave_tool() -> void: + ToolUtil.tool_progress_mutex.lock() + ToolUtil.tool_progress = 0 + ToolUtil.tool_progress_mutex.unlock() + + var index := 0 + var timelines := DialogicResourceUtil.get_timeline_directory() + for timeline_identifier in timelines: + var timeline := DialogicResourceUtil.get_timeline_resource(timeline_identifier) + await timeline.process() + timeline.set_meta("timeline_not_saved", true) + ResourceSaver.save(timeline) + + ToolUtil.tool_progress_mutex.lock() + ToolUtil.tool_progress = 1.0/len(timelines)*index + ToolUtil.tool_progress_mutex.unlock() + + index += 1 + + ToolUtil.tool_progress_mutex.lock() + ToolUtil.tool_progress = 1 + ToolUtil.tool_progress_mutex.unlock() diff --git a/addons/dialogic/Editor/Settings/CoreSettingsPages/tool_resave.gd.uid b/addons/dialogic/Editor/Settings/CoreSettingsPages/tool_resave.gd.uid new file mode 100644 index 0000000..738db88 --- /dev/null +++ b/addons/dialogic/Editor/Settings/CoreSettingsPages/tool_resave.gd.uid @@ -0,0 +1 @@ +uid://vg4wbm0n64ws diff --git a/addons/dialogic/Editor/Settings/HintLabelStylingScript.gd b/addons/dialogic/Editor/Settings/HintLabelStylingScript.gd new file mode 100644 index 0000000..f5f11e3 --- /dev/null +++ b/addons/dialogic/Editor/Settings/HintLabelStylingScript.gd @@ -0,0 +1,13 @@ +@tool +extends Label + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + # don't load the label settings when opening as a scene + # prevents HUGE diffs + if owner.get_parent() is SubViewport: + return + label_settings = LabelSettings.new() + label_settings.font = get_theme_font("doc_italic", "EditorFonts") + label_settings.font_size = get_theme_font_size('font_size', 'Label') + label_settings.font_color = get_theme_color("accent_color", "Editor") diff --git a/addons/dialogic/Editor/Settings/HintLabelStylingScript.gd.uid b/addons/dialogic/Editor/Settings/HintLabelStylingScript.gd.uid new file mode 100644 index 0000000..37185c9 --- /dev/null +++ b/addons/dialogic/Editor/Settings/HintLabelStylingScript.gd.uid @@ -0,0 +1 @@ +uid://dhl3w5a4mujud diff --git a/addons/dialogic/Editor/Settings/settings_editor.gd b/addons/dialogic/Editor/Settings/settings_editor.gd new file mode 100644 index 0000000..0e01464 --- /dev/null +++ b/addons/dialogic/Editor/Settings/settings_editor.gd @@ -0,0 +1,169 @@ +@tool +extends DialogicEditor + +## Editor that contains all settings + +var button_group := ButtonGroup.new() +var registered_sections: Array[DialogicSettingsPage] = [] + + +func _get_title() -> String: + return "Settings" + + +func _get_icon() -> Texture: + return get_theme_icon("PluginScript", "EditorIcons") + + +func _register() -> void: + editors_manager.register_simple_editor(self) + self.alternative_text = "Customize dialogic and it's behaviour" + + +func _ready() -> void: + if get_parent() is SubViewport: + return + + register_settings_section("res://addons/dialogic/Editor/Settings/CoreSettingsPages/settings_general.tscn") + register_settings_section("res://addons/dialogic/Editor/Settings/CoreSettingsPages/settings_editor.tscn") + register_settings_section("res://addons/dialogic/Editor/Settings/CoreSettingsPages/settings_translation.tscn") + register_settings_section("res://addons/dialogic/Editor/Settings/CoreSettingsPages/settings_modules.tscn") + + for indexer in DialogicUtil.get_indexers(): + for settings_page in indexer._get_settings_pages(): + register_settings_section(settings_page) + + add_registered_sections() + %SettingsTabs.get_child(0).button_pressed = true + %SettingsContent.get_child(0).show() + + +func register_settings_section(path:String) -> void: + var section: Control = load(path).instantiate() + registered_sections.append(section) + + +func add_registered_sections() -> void: + for i in %SettingsTabs.get_children(): + i.queue_free() + for i in %FeatureTabs.get_children(): + i.queue_free() + + for i in %SettingsContent.get_children(): + i.queue_free() + + + registered_sections.sort_custom(section_sort) + for section in registered_sections: + + section.name = section._get_title() + + var vbox := VBoxContainer.new() + vbox.set_meta('section', section) + vbox.size_flags_vertical = Control.SIZE_EXPAND_FILL + vbox.name = section.name + var hbox := HBoxContainer.new() + + var title := Label.new() + title.text = section.name + title.theme_type_variation = 'DialogicSectionBig' + hbox.add_child(title) + vbox.add_child(hbox) + + + if !section.short_info.is_empty(): + var tooltip_hint: Control = load("res://addons/dialogic/Editor/Common/hint_tooltip_icon.tscn").instantiate() + tooltip_hint.hint_text = section.short_info + hbox.add_child(tooltip_hint) + + + var scroll := ScrollContainer.new() + scroll.size_flags_horizontal = Control.SIZE_EXPAND_FILL + scroll.size_flags_vertical = Control.SIZE_EXPAND_FILL + var inner_vbox := VBoxContainer.new() + inner_vbox.size_flags_horizontal = Control.SIZE_EXPAND_FILL + inner_vbox.size_flags_vertical = Control.SIZE_EXPAND_FILL + scroll.add_child(inner_vbox) + var panel := PanelContainer.new() + panel.theme_type_variation = "DialogicPanelA" + panel.size_flags_horizontal = Control.SIZE_EXPAND_FILL + if section.size_flags_vertical == Control.SIZE_EXPAND_FILL: + panel.size_flags_vertical = Control.SIZE_EXPAND_FILL + inner_vbox.add_child(panel) + + + var info_section: Control = section._get_info_section() + if info_section != null: + inner_vbox.add_child(Control.new()) + inner_vbox.get_child(-1).custom_minimum_size.y = 50 + + inner_vbox.add_child(title.duplicate()) + inner_vbox.get_child(-1).text = "Information" + var info_panel := panel.duplicate() + info_panel.theme_type_variation = "DialogicPanelDarkA" + + inner_vbox.add_child(info_panel) + info_section.get_parent().remove_child(info_section) + info_panel.add_child(info_section) + + panel.add_child(section) + vbox.add_child(scroll) + + + var button := Button.new() + button.text = " "+section.name + button.tooltip_text = section.name + button.toggle_mode = true + button.button_group = button_group + button.expand_icon = true + button.alignment = HORIZONTAL_ALIGNMENT_LEFT + button.flat = true + button.add_theme_color_override('font_pressed_color', get_theme_color("property_color_z", "Editor")) + button.add_theme_color_override('font_hover_color', get_theme_color('warning_color', 'Editor')) + button.add_theme_color_override('font_focus_color', get_theme_color('warning_color', 'Editor')) + button.add_theme_stylebox_override('focus', StyleBoxEmpty.new()) + button.pressed.connect(open_tab.bind(vbox)) + if section._is_feature_tab(): + %FeatureTabs.add_child(button) + else: + %SettingsTabs.add_child(button) + + vbox.hide() +# if section.has_method('_get_icon'): +# icon.texture = section._get_icon() + %SettingsContent.add_child(vbox) + + +func open_tab(tab_to_show:Control) -> void: + for tab in %SettingsContent.get_children(): + tab.hide() + + tab_to_show.show() + + +func section_sort(item1:DialogicSettingsPage, item2:DialogicSettingsPage) -> bool: + if !item1._is_feature_tab() and item2._is_feature_tab(): + return true + if item1._get_priority() > item2._get_priority(): + return true + return false + + + +func _open(extra_information:Variant = null) -> void: + refresh() + if typeof(extra_information) == TYPE_STRING: + if %SettingsContent.has_node(extra_information): + open_tab(%SettingsContent.get_node(extra_information)) + + +func _close() -> void: + for child in %SettingsContent.get_children(): + if child.get_meta('section').has_method('_about_to_close'): + child.get_meta('section')._about_to_close() + + +func refresh() -> void: + for child in %SettingsContent.get_children(): + if child.get_meta('section').has_method('_refresh'): + child.get_meta('section')._refresh() diff --git a/addons/dialogic/Editor/Settings/settings_editor.gd.uid b/addons/dialogic/Editor/Settings/settings_editor.gd.uid new file mode 100644 index 0000000..69a43aa --- /dev/null +++ b/addons/dialogic/Editor/Settings/settings_editor.gd.uid @@ -0,0 +1 @@ +uid://c1virlyy8gl7 diff --git a/addons/dialogic/Editor/Settings/settings_editor.tscn b/addons/dialogic/Editor/Settings/settings_editor.tscn new file mode 100644 index 0000000..c7ed7a3 --- /dev/null +++ b/addons/dialogic/Editor/Settings/settings_editor.tscn @@ -0,0 +1,59 @@ +[gd_scene load_steps=2 format=3 uid="uid://dganirw26brfb"] + +[ext_resource type="Script" uid="uid://c1virlyy8gl7" path="res://addons/dialogic/Editor/Settings/settings_editor.gd" id="1"] + +[node name="Settings" type="HSplitContainer"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +script = ExtResource("1") + +[node name="TabList" type="ScrollContainer" parent="."] +layout_mode = 2 +horizontal_scroll_mode = 0 + +[node name="Margin" type="MarginContainer" parent="TabList"] +layout_mode = 2 +theme_override_constants/margin_top = 3 + +[node name="VBox" type="VBoxContainer" parent="TabList/Margin"] +layout_mode = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="TabList/Margin/VBox"] +layout_mode = 2 +theme_type_variation = &"DialogicSection" +text = "Settings" + +[node name="SettingsTabs" type="VBoxContainer" parent="TabList/Margin/VBox"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_override_constants/separation = 0 + +[node name="Control" type="Control" parent="TabList/Margin/VBox"] +custom_minimum_size = Vector2(0, 30) +layout_mode = 2 + +[node name="Title2" type="Label" parent="TabList/Margin/VBox"] +layout_mode = 2 +theme_type_variation = &"DialogicSection" +text = "Features" + +[node name="FeatureTabs" type="VBoxContainer" parent="TabList/Margin/VBox"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_override_constants/separation = 0 + +[node name="SettingsContent" type="VBoxContainer" parent="."] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 diff --git a/addons/dialogic/Editor/Settings/settings_page.gd b/addons/dialogic/Editor/Settings/settings_page.gd new file mode 100644 index 0000000..06c1b78 --- /dev/null +++ b/addons/dialogic/Editor/Settings/settings_page.gd @@ -0,0 +1,36 @@ +@tool +extends Control +class_name DialogicSettingsPage + +@export_multiline var short_info := "" +@onready var settings_editor: Control = find_parent('Settings') + +## Called to get the title of the page +func _get_title() -> String: + return name + + +## Called to get the ordering of the page +func _get_priority() -> int: + return 0 + + +## Called to know whether to put this in the features section +func _is_feature_tab() -> bool: + return false + + +## Called when the settings editor is opened +func _refresh() -> void: + pass + + +## Called before the settings editor closes (another editor is opened) +## Can be used to safe stuff +func _about_to_close() -> void: + pass + + +## Return a section with information. +func _get_info_section() -> Control: + return null diff --git a/addons/dialogic/Editor/Settings/settings_page.gd.uid b/addons/dialogic/Editor/Settings/settings_page.gd.uid new file mode 100644 index 0000000..cf365d6 --- /dev/null +++ b/addons/dialogic/Editor/Settings/settings_page.gd.uid @@ -0,0 +1 @@ +uid://be8xcha2jwdur diff --git a/addons/dialogic/Editor/Theme/MainTheme.tres b/addons/dialogic/Editor/Theme/MainTheme.tres new file mode 100644 index 0000000..bd77e0f --- /dev/null +++ b/addons/dialogic/Editor/Theme/MainTheme.tres @@ -0,0 +1,3 @@ +[gd_resource type="Theme" format=3 uid="uid://cqst728xxipcw"] + +[resource] diff --git a/addons/dialogic/Editor/Theme/PickerTheme.tres b/addons/dialogic/Editor/Theme/PickerTheme.tres new file mode 100644 index 0000000..36b1955 --- /dev/null +++ b/addons/dialogic/Editor/Theme/PickerTheme.tres @@ -0,0 +1,7 @@ +[gd_resource type="Theme" format=2] + +[resource] +Button/colors/font_color = Color( 1, 1, 1, 1 ) +Button/colors/font_color_disabled = Color( 0.901961, 0.901961, 0.901961, 0.2 ) +Button/colors/font_color_hover = Color( 0.870588, 0.870588, 0.870588, 1 ) +Button/colors/font_color_pressed = Color( 1, 1, 1, 1 ) diff --git a/addons/dialogic/Editor/TimelineEditor/TextEditor/CodeCompletionHelper.gd b/addons/dialogic/Editor/TimelineEditor/TextEditor/CodeCompletionHelper.gd new file mode 100644 index 0000000..2817951 --- /dev/null +++ b/addons/dialogic/Editor/TimelineEditor/TextEditor/CodeCompletionHelper.gd @@ -0,0 +1,333 @@ +@tool +extends Node + +enum Modes {TEXT_EVENT_ONLY, FULL_HIGHLIGHTING} + +var syntax_highlighter: SyntaxHighlighter = load("res://addons/dialogic/Editor/TimelineEditor/TextEditor/syntax_highlighter.gd").new() +var text_syntax_highlighter: SyntaxHighlighter = load("res://addons/dialogic/Editor/TimelineEditor/TextEditor/syntax_highlighter.gd").new() + + +# These RegEx's are used to deduce information from the current line for auto-completion + +# To find the currently typed word and the symbol before +var completion_word_regex := RegEx.new() +# To find the shortcode of the current shortcode event (basically the type) +var completion_shortcode_getter_regex := RegEx.new() +# To find the parameter name of the current if typing a value +var completion_shortcode_param_getter_regex := RegEx.new() +# To find the value of a paramater that is being typed +var completion_shortcode_value_regex := RegEx.new() + +# Stores references to all shortcode events for parameter and value suggestions +var shortcode_events := {} +var custom_syntax_events := [] +var text_event: DialogicTextEvent = null + + +func _ready() -> void: + # Compile RegEx's + completion_word_regex.compile(r"(?(\W)|^)(?[\w]*)\x{FFFF}") + completion_shortcode_getter_regex.compile("\\[(?\\w*)") + completion_shortcode_param_getter_regex.compile("(?\\w*)\\W*=\\s*\"?(\\w|\\s)*"+String.chr(0xFFFF)) + completion_shortcode_value_regex.compile(r'(\[|\s)[^\[\s=]*="(?[^"$]*)'+String.chr(0xFFFF)) + + text_syntax_highlighter.mode = text_syntax_highlighter.Modes.TEXT_EVENT_ONLY + +#region AUTO COMPLETION +################################################################################ + +# Helper that gets the current line with a special character where the caret is +func get_code_completion_line(text:CodeEdit) -> String: + return text.get_line(text.get_caret_line()).insert(text.get_caret_column(), String.chr(0xFFFF)).strip_edges() + + +# Helper that gets the currently typed word +func get_code_completion_word(text:CodeEdit) -> String: + var result := completion_word_regex.search(get_code_completion_line(text)) + return result.get_string('word') if result else "" + +# Helper that gets the currently typed parameter +func get_code_completion_parameter_value(text:CodeEdit) -> String: + var result := completion_shortcode_value_regex.search(get_code_completion_line(text)) + return result.get_string('value') if result else "" + + +# Helper that gets the symbol before the current word +func get_code_completion_prev_symbol(text:CodeEdit) -> String: + var result := completion_word_regex.search(get_code_completion_line(text)) + return result.get_string('s') if result else "" + + +func get_line_untill_caret(line:String) -> String: + return line.substr(0, line.find(String.chr(0xFFFF))) + + +# Called if something was typed +# Adds all kinds of options depending on the +# content of the current line, the last word and the symbol that came before +# Triggers opening of the popup +func request_code_completion(force:bool, text:CodeEdit, mode:=Modes.FULL_HIGHLIGHTING) -> void: + ## TODO remove this once https://github.com/godotengine/godot/issues/38560 is fixed + if mode != Modes.FULL_HIGHLIGHTING: + return + + # make sure shortcode event references are loaded + if mode == Modes.FULL_HIGHLIGHTING: + var hidden_events: Array = DialogicUtil.get_editor_setting('hidden_event_buttons', []) + if shortcode_events.is_empty(): + for event in DialogicResourceUtil.get_event_cache(): + if event.get_shortcode() != 'default_shortcode': + shortcode_events[event.get_shortcode()] = event + + else: + custom_syntax_events.append(event) + if event.event_name in hidden_events: + event.set_meta('hidden', true) + if event is DialogicTextEvent: + text_event = event + # this is done to force-load the text effects regex which is used below + event.load_text_effects() + + # fill helpers + var line := get_code_completion_line(text) + var word := get_code_completion_word(text) + var symbol := get_code_completion_prev_symbol(text) + var line_part := get_line_untill_caret(line) + + ## Note on use of KIND types for options. + # These types are mostly useless for us. + # However I decidede to assign some special cases for them: + # - KIND_PLAIN_TEXT is only shown if the beginnging of the option is already typed + # !word.is_empty() and option.begins_with(word) + # - KIND_CLASS is only shown if anything from the options is already typed + # !word.is_empty() and word in option + # - KIND_CONSTANT is shown and checked against the beginning + # option.begins_with(word) + # - KIND_MEMBER is shown and searched completely + # word in option + + ## Note on VALUE key + # The value key is used to store a potential closing string for the completion. + # The completion will check if the string is already present and add it otherwise. + + # Shortcode event suggestions + if mode == Modes.FULL_HIGHLIGHTING and syntax_highlighter.line_is_shortcode_event(text.get_caret_line()): + if symbol == '[': + # suggest shortcodes if a shortcode event has just begun + var shortcodes := shortcode_events.keys() + shortcodes.sort() + for shortcode in shortcodes: + if shortcode_events[shortcode].get_meta('hidden', false): + continue + if shortcode_events[shortcode].get_shortcode_parameters().is_empty(): + text.add_code_completion_option(CodeEdit.KIND_MEMBER, shortcode, shortcode, shortcode_events[shortcode].event_color.lerp(syntax_highlighter.normal_color, 0.3), shortcode_events[shortcode]._get_icon()) + else: + text.add_code_completion_option(CodeEdit.KIND_MEMBER, shortcode, shortcode+" ", shortcode_events[shortcode].event_color.lerp(syntax_highlighter.normal_color, 0.3), shortcode_events[shortcode]._get_icon()) + else: + var full_event_text: String = syntax_highlighter.get_full_event(text.get_caret_line()) + var current_shortcode := completion_shortcode_getter_regex.search(full_event_text) + if !current_shortcode: + text.update_code_completion_options(false) + return + + var code := current_shortcode.get_string('code') + if !code in shortcode_events.keys(): + text.update_code_completion_options(false) + return + + # suggest parameters + if symbol == ' ' and line.count('"')%2 == 0: + var parameters: Array = shortcode_events[code].get_shortcode_parameters().keys() + for param in parameters: + if !param+'=' in full_event_text: + text.add_code_completion_option(CodeEdit.KIND_MEMBER, param, param+'="' , shortcode_events[code].event_color.lerp(syntax_highlighter.normal_color, 0.3), text.get_theme_icon("MemberProperty", "EditorIcons")) + + # suggest values + elif symbol == '=' or symbol == '"': + suggest_shortcode_values(text, shortcode_events[code], line, word) + text.update_code_completion_options(true) + return + + # Force update and showing of the popup + text.update_code_completion_options(true) + return + + + for event in custom_syntax_events: + if mode == Modes.TEXT_EVENT_ONLY and !event is DialogicTextEvent: + continue + + if not ' ' in line_part: + event._get_start_code_completion(self, text) + + if event.is_valid_event(line): + event._get_code_completion(self, text, line, word, symbol) + break + + # Force update and showing of the popup + text.update_code_completion_options(true) + + # USEFUL FOR DEBUGGING + #print(text.get_code_completion_options().map(func(x):return "{display_text}".format(x))) + + + +# Helper that adds all characters as options +func suggest_characters(text:CodeEdit, type := CodeEdit.KIND_MEMBER, event:DialogicEvent=null) -> void: + for character in DialogicResourceUtil.get_character_directory(): + var result: String = character + if " " in character: + result = '"'+character+'"' + if event and event is DialogicTextEvent and load(DialogicResourceUtil.get_character_directory()[character]).portraits.is_empty(): + result += ': ' + elif event and event is DialogicCharacterEvent: + result += " " + text.add_code_completion_option(type, character, result, syntax_highlighter.character_name_color, load("res://addons/dialogic/Editor/Images/Resources/character.svg")) + +# Helper that adds all timelines as options +func suggest_timelines(text:CodeEdit, type := CodeEdit.KIND_MEMBER, color:=Color()) -> void: + for timeline in DialogicResourceUtil.get_timeline_directory(): + text.add_code_completion_option(type, timeline, timeline+'/', color, text.get_theme_icon("TripleBar", "EditorIcons")) + + +func suggest_labels(text:CodeEdit, timeline:String='', end:='', color:=Color()) -> void: + if timeline in DialogicResourceUtil.get_label_cache(): + for i in DialogicResourceUtil.get_label_cache()[timeline]: + text.add_code_completion_option(CodeEdit.KIND_MEMBER, i, i+end, color, load("res://addons/dialogic/Modules/Jump/icon_label.png")) + + +# Helper that adds all portraits of a given character as options +func suggest_portraits(text:CodeEdit, character_name:String, end_check:=')') -> void: + if not character_name in DialogicResourceUtil.get_character_directory(): + return + var character_resource: DialogicCharacter = load(DialogicResourceUtil.get_character_directory()[character_name]) + for portrait in character_resource.portraits: + text.add_code_completion_option(CodeEdit.KIND_MEMBER, portrait, portrait, syntax_highlighter.character_portrait_color, load("res://addons/dialogic/Editor/Images/Resources/character.svg"), end_check) + if character_resource.portraits.is_empty(): + text.add_code_completion_option(CodeEdit.KIND_MEMBER, 'Has no portraits!', '', syntax_highlighter.character_portrait_color, load("res://addons/dialogic/Editor/Images/Pieces/warning.svg")) + + +# Helper that adds all variable paths as options +func suggest_variables(text:CodeEdit): + for variable in DialogicUtil.list_variables(ProjectSettings.get_setting('dialogic/variables')): + text.add_code_completion_option(CodeEdit.KIND_MEMBER, variable, variable, syntax_highlighter.variable_color, text.get_theme_icon("MemberProperty", "EditorIcons"), '}') + + +# Helper that adds true and false as options +func suggest_bool(text:CodeEdit, color:Color): + text.add_code_completion_option(CodeEdit.KIND_VARIABLE, 'true', 'true', color, text.get_theme_icon("GuiChecked", "EditorIcons"), '" ') + text.add_code_completion_option(CodeEdit.KIND_VARIABLE, 'false', 'false', color, text.get_theme_icon("GuiUnchecked", "EditorIcons"), '" ') + + +func suggest_custom_suggestions(suggestions:Dictionary, text:CodeEdit, color:Color) -> void: + for key in suggestions.keys(): + if suggestions[key].has('text_alt'): + text.add_code_completion_option(CodeEdit.KIND_VARIABLE, key, suggestions[key].text_alt[0], color, suggestions[key].get('icon', null), '" ') + else: + text.add_code_completion_option(CodeEdit.KIND_VARIABLE, key, str(suggestions[key].value), color, suggestions[key].get('icon', null), '" ') + + +func suggest_shortcode_values(text:CodeEdit, event:DialogicEvent, line:String, word:String) -> void: + var current_parameter_gex := completion_shortcode_param_getter_regex.search(line) + if !current_parameter_gex: + return + + var current_parameter := current_parameter_gex.get_string('param') + if !event.get_shortcode_parameters().has(current_parameter): + return + if !event.get_shortcode_parameters()[current_parameter].has('suggestions'): + if typeof(event.get_shortcode_parameters()[current_parameter].default) == TYPE_BOOL: + suggest_bool(text, event.event_color.lerp(syntax_highlighter.normal_color, 0.3)) + elif len(word) > 0: + text.add_code_completion_option(CodeEdit.KIND_VARIABLE, word, word, event.event_color.lerp(syntax_highlighter.normal_color, 0.3), text.get_theme_icon("GuiScrollArrowRight", "EditorIcons"), '" ') + return + + var suggestions: Dictionary = event.get_shortcode_parameters()[current_parameter]['suggestions'].call() + suggest_custom_suggestions(suggestions, text, event.event_color.lerp(syntax_highlighter.normal_color, 0.3)) + + +## Filters the list of all possible options, depending on what was typed +## Purpose of the different Kinds is explained in [_request_code_completion] +func filter_code_completion_candidates(candidates:Array, text:CodeEdit) -> Array: + var valid_candidates := [] + + var current_word := get_code_completion_word(text) + for candidate in candidates: + if candidate.kind == text.KIND_PLAIN_TEXT: + if !current_word.is_empty() and candidate.insert_text.begins_with(current_word): + valid_candidates.append(candidate) + elif candidate.kind == text.KIND_MEMBER: + if current_word.is_empty() or current_word.to_lower() in candidate.insert_text.to_lower(): + valid_candidates.append(candidate) + elif candidate.kind == text.KIND_VARIABLE: + var current_param_value := get_code_completion_parameter_value(text) + if current_param_value.is_empty() or current_param_value.to_lower() in candidate.insert_text.to_lower(): + valid_candidates.append(candidate) + elif candidate.kind == text.KIND_CONSTANT: + if current_word.is_empty() or candidate.insert_text.begins_with(current_word): + valid_candidates.append(candidate) + elif candidate.kind == text.KIND_CLASS: + if !current_word.is_empty() and current_word.to_lower() in candidate.insert_text.to_lower(): + valid_candidates.append(candidate) + return valid_candidates + + +# Called when code completion was activated +# Inserts the selected item +func confirm_code_completion(replace:bool, text:CodeEdit) -> void: + # Note: I decided to ALWAYS use replace mode, as dialogic is supposed to be beginner friendly + + var code_completion := text.get_code_completion_option(text.get_code_completion_selected_index()) + + var word := get_code_completion_word(text) + if code_completion.kind == CodeEdit.KIND_VARIABLE: + word = get_code_completion_parameter_value(text) + + text.remove_text(text.get_caret_line(), text.get_caret_column()-len(word), text.get_caret_line(), text.get_caret_column()) + + # Something has changed between 4.2 and 4.3 + # Probably about how carets are reset when text is removed or idk. + # To keep compatibility with 4.2 for at least a while this should do the trick: + # TODO: Remove once compatibility for 4.2 is dropped. + if Engine.get_version_info().hex >= 0x040300: + text.set_caret_column(text.get_caret_column()) + else: + text.set_caret_column(text.get_caret_column()-len(word)) + + text.insert_text_at_caret(code_completion.insert_text) + + if code_completion.has('default_value') and typeof(code_completion['default_value']) == TYPE_STRING: + var next_letter := text.get_line(text.get_caret_line()).substr(text.get_caret_column(), len(code_completion['default_value'])) + if next_letter and (next_letter == code_completion['default_value'] or next_letter[0] == code_completion['default_value'][0]): + text.set_caret_column(text.get_caret_column()+1) + else: + text.insert_text_at_caret(code_completion['default_value']) + + +#endregion + +#region SYMBOL CLICKING +################################################################################ + +# Performs an action (like opening a link) when a valid symbol was clicked +func symbol_lookup(symbol:String, line:int, column:int) -> void: + if symbol in shortcode_events.keys(): + if !shortcode_events[symbol].help_page_path.is_empty(): + OS.shell_open(shortcode_events[symbol].help_page_path) + if symbol in DialogicResourceUtil.get_character_directory(): + EditorInterface.edit_resource(DialogicResourceUtil.get_resource_from_identifier(symbol, 'dch')) + if symbol in DialogicResourceUtil.get_timeline_directory(): + EditorInterface.edit_resource(DialogicResourceUtil.get_resource_from_identifier(symbol, 'dtl')) + + +# Called to test if a symbol can be clicked +func symbol_validate(symbol:String, text:CodeEdit) -> void: + if symbol in shortcode_events.keys(): + if !shortcode_events[symbol].help_page_path.is_empty(): + text.set_symbol_lookup_word_as_valid(true) + if symbol in DialogicResourceUtil.get_character_directory(): + text.set_symbol_lookup_word_as_valid(true) + if symbol in DialogicResourceUtil.get_timeline_directory(): + text.set_symbol_lookup_word_as_valid(true) + +#endregion diff --git a/addons/dialogic/Editor/TimelineEditor/TextEditor/CodeCompletionHelper.gd.uid b/addons/dialogic/Editor/TimelineEditor/TextEditor/CodeCompletionHelper.gd.uid new file mode 100644 index 0000000..9fd0176 --- /dev/null +++ b/addons/dialogic/Editor/TimelineEditor/TextEditor/CodeCompletionHelper.gd.uid @@ -0,0 +1 @@ +uid://camdhr6iwaywr diff --git a/addons/dialogic/Editor/TimelineEditor/TextEditor/syntax_highlighter.gd b/addons/dialogic/Editor/TimelineEditor/TextEditor/syntax_highlighter.gd new file mode 100644 index 0000000..2e9ee90 --- /dev/null +++ b/addons/dialogic/Editor/TimelineEditor/TextEditor/syntax_highlighter.gd @@ -0,0 +1,212 @@ +@tool +extends SyntaxHighlighter + +## Syntax highlighter for the dialogic text timeline editor and text events in the visual editor. + +enum Modes {TEXT_EVENT_ONLY, FULL_HIGHLIGHTING} +var mode := Modes.FULL_HIGHLIGHTING + + +## RegEx's +var word_regex := RegEx.new() +var region_regex := RegEx.new() +var number_regex := RegEx.create_from_string(r"(\d|\.)+") +var shortcode_regex := RegEx.create_from_string(r'\W*\[(?\w*)(?([^\]"]|"[^"]*")*)?') +var shortcode_param_regex := RegEx.create_from_string(r'((?[^\s=]*)\s*=\s*"(?([^=]|\\=)*)(? void: + update_colors() + DialogicUtil.get_dialogic_plugin().get_editor_interface().get_base_control().theme_changed.connect(update_colors) + + +func update_colors() -> void: + if not DialogicUtil.get_dialogic_plugin(): + return + var editor_settings: EditorSettings = DialogicUtil.get_dialogic_plugin().get_editor_interface().get_editor_settings() + normal_color = editor_settings.get('text_editor/theme/highlighting/text_color') + translation_id_color = editor_settings.get('text_editor/theme/highlighting/comment_color') + + code_flow_color = editor_settings.get("text_editor/theme/highlighting/control_flow_keyword_color") + boolean_operator_color = code_flow_color.lightened(0.5) + variable_color = editor_settings.get('text_editor/theme/highlighting/engine_type_color') + string_color = editor_settings.get('text_editor/theme/highlighting/string_color') + character_name_color = editor_settings.get('text_editor/theme/highlighting/symbol_color').lerp(normal_color, 0.3) + character_portrait_color = character_name_color.lerp(normal_color, 0.5) + + +func _get_line_syntax_highlighting(line:int) -> Dictionary: + var str_line := get_text_edit().get_line(line) + + if shortcode_events.is_empty(): + for event in DialogicResourceUtil.get_event_cache(): + if event.get_shortcode() != 'default_shortcode': + shortcode_events[event.get_shortcode()] = event + else: + custom_syntax_events.append(event) + if event is DialogicTextEvent: + text_event = event + text_event.load_text_effects() + + var dict := {} + dict[0] = {'color':normal_color} + + dict = color_translation_id(dict, str_line) + + if mode == Modes.FULL_HIGHLIGHTING: + if line_is_shortcode_event(line): + var full_event := get_full_event(line) + var result := shortcode_regex.search(full_event) + if result: + if result.get_string('id') in shortcode_events: + if full_event.begins_with(str_line): + dict[result.get_start('id')] = {"color":shortcode_events[result.get_string('id')].event_color.lerp(normal_color, 0.4)} + dict[result.get_end('id')] = {"color":normal_color} + + if result.get_string('args'): + color_shortcode_content(dict, str_line, result.get_start('args'), result.get_end('args'), shortcode_events[result.get_string('id')].event_color) + else: + color_shortcode_content(dict, str_line, 0, 0, shortcode_events[result.get_string('id')].event_color) + return fix_dict(dict) + + else: + for event in custom_syntax_events: + if event.is_valid_event(str_line.strip_edges()): + dict = event._get_syntax_highlighting(self, dict, str_line) + return fix_dict(dict) + + else: + dict = text_event._get_syntax_highlighting(self, dict, str_line) + return fix_dict(dict) + + +func line_is_shortcode_event(line_idx:int) -> bool: + var str_line := get_text_edit().get_line(line_idx) + if text_event.text_effects_regex.search(str_line.get_slice(' ', 0)): + return false + + if str_line.strip_edges().begins_with("["): + return true + + if line_idx > 0 and get_text_edit().get_line(line_idx-1).ends_with('\\'): + return line_is_shortcode_event(line_idx-1) + + return false + + +func get_full_event(line_idx:int) -> String: + var str_line := get_text_edit().get_line(line_idx) + var offset := 1 + # Add previous lines + while get_text_edit().get_line(line_idx-offset).ends_with('\\'): + str_line = get_text_edit().get_line(line_idx-offset).trim_suffix('\\')+"\n"+str_line + offset += 1 + + # This is commented out, as it is not needed right now. + # However without it, this isn't actually the full event. + # Might need to be included some day. + #offset = 0 + ## Add following lines + #while get_text_edit().get_line(line_idx+offset).ends_with('\\'): + #str_line = str_line.trim_suffix('\\')+"\n"+get_text_edit().get_line(line_idx+offset) + #offset += 1 + + return str_line + +func fix_dict(dict:Dictionary) -> Dictionary: + var d := {} + var k := dict.keys() + k.sort() + for i in k: + d[i] = dict[i] + return d + + +func color_condition(dict:Dictionary, line:String, from:int = 0, to:int = 0) -> Dictionary: + dict = color_word(dict, code_flow_color, line, 'or', from, to) + dict = color_word(dict, code_flow_color, line, 'and', from, to) + dict = color_word(dict, code_flow_color, line, '==', from, to) + dict = color_word(dict, code_flow_color, line, '!=', from, to) + if !">=" in line: + dict = color_word(dict, code_flow_color, line, '>', from, to) + else: + dict = color_word(dict, code_flow_color, line, '>=', from, to) + if !"<=" in line: + dict = color_word(dict, code_flow_color, line, '<', from, to) + else: + dict = color_word(dict, code_flow_color, line, '<=', from, to) + dict = color_region(dict, variable_color, line, '{', '}', from, to) + dict = color_region(dict, string_color, line, '"', '"', from, to) + + + return dict + + +func color_translation_id(dict:Dictionary, line:String) -> Dictionary: + dict = color_region(dict, translation_id_color, line, '#id:', '') + return dict + + +func color_word(dict:Dictionary, color:Color, line:String, word:String, from:int= 0, to:int = 0) -> Dictionary: + word_regex.compile("\\W(?"+word+")\\W") + if to <= from: + to = len(line)-1 + for i in word_regex.search_all(line.substr(from, to-from+2)): + dict[i.get_start('word')+from] = {'color':color} + dict[i.get_end('word')+from] = {'color':normal_color} + return dict + + +func color_region(dict:Dictionary, color:Color, line:String, start:String, end:String, from:int = 0, to:int = 0, base_color:Color=normal_color) -> Dictionary: + if start in "()[].": + start = "\\"+start + if end in "()[].": + end = "\\"+end + + if end.is_empty(): + region_regex.compile(r"(? Dictionary: + if to <= from: + to = len(line)-1 + var args_result := shortcode_param_regex.search_all(line.substr(from, to-from+2)) + for x in args_result: + dict[x.get_start()+from] = {"color":base_color.lerp(normal_color, 0.5)} + dict[x.get_start('value')+from-1] = {"color":base_color.lerp(normal_color, 0.7)} + dict[x.get_end()+from] = {"color":normal_color} + return dict + + +func dict_get_color_at_column(dict:Dictionary, column:int) -> Color: + var prev_idx := -1 + for i in dict: + if i > prev_idx and i <= column: + prev_idx = i + if prev_idx != -1: + return dict[prev_idx].color + return normal_color diff --git a/addons/dialogic/Editor/TimelineEditor/TextEditor/syntax_highlighter.gd.uid b/addons/dialogic/Editor/TimelineEditor/TextEditor/syntax_highlighter.gd.uid new file mode 100644 index 0000000..158c9b9 --- /dev/null +++ b/addons/dialogic/Editor/TimelineEditor/TextEditor/syntax_highlighter.gd.uid @@ -0,0 +1 @@ +uid://bf2nivn8txcw5 diff --git a/addons/dialogic/Editor/TimelineEditor/TextEditor/timeline_editor_text.gd b/addons/dialogic/Editor/TimelineEditor/TextEditor/timeline_editor_text.gd new file mode 100644 index 0000000..a49ed73 --- /dev/null +++ b/addons/dialogic/Editor/TimelineEditor/TextEditor/timeline_editor_text.gd @@ -0,0 +1,362 @@ +@tool +extends CodeEdit + +## Sub-Editor that allows editing timelines in a text format. + +@onready var timeline_editor := get_parent().get_parent() +@onready var code_completion_helper: Node = find_parent('EditorsManager').get_node('CodeCompletionHelper') + +var label_regex := RegEx.create_from_string('label +(?[^\n]+)') +var channel_regex := RegEx.create_from_string(r'audio +(?[\w-]{2,}|[\w]+)') + +func _ready() -> void: + await find_parent('EditorView').ready + syntax_highlighter = code_completion_helper.syntax_highlighter + timeline_editor.editors_manager.sidebar.content_item_activated.connect(_on_content_item_clicked) + + get_menu().add_icon_item(get_theme_icon("PlayStart", "EditorIcons"), "Play from here", 42) + get_menu().id_pressed.connect(_on_context_menu_id_pressed) + + +func _on_text_editor_text_changed() -> void: + timeline_editor.current_resource_state = DialogicEditor.ResourceStates.UNSAVED + request_code_completion(true) + $UpdateTimer.start() + + +func clear_timeline() -> void: + text = '' + update_content_list() + + +func load_timeline(timeline:DialogicTimeline) -> void: + clear_timeline() + + text = timeline.as_text() + + timeline_editor.current_resource.set_meta("timeline_not_saved", false) + clear_undo_history() + + await get_tree().process_frame + update_content_list() + + +func save_timeline() -> void: + if !timeline_editor.current_resource: + return + + var text_array: Array = text_timeline_to_array(text) + + timeline_editor.current_resource.events = text_array + timeline_editor.current_resource.events_processed = false + ResourceSaver.save(timeline_editor.current_resource, timeline_editor.current_resource.resource_path) + + timeline_editor.current_resource.set_meta("timeline_not_saved", false) + timeline_editor.current_resource_state = DialogicEditor.ResourceStates.SAVED + DialogicResourceUtil.update_directory('dtl') + + +func text_timeline_to_array(text:String) -> Array: + # Parse the lines down into an array + var events := [] + + var lines := text.split('\n', true) + var idx := -1 + + while idx < len(lines)-1: + idx += 1 + var line: String = lines[idx] + var line_stripped: String = line.strip_edges(true, true) + events.append(line) + + return events + + +################################################################################ +## HELPFUL EDITOR FUNCTIONALITY +################################################################################ + +func _on_context_menu_id_pressed(id:int) -> void: + if id == 42: + play_from_here() + + +func play_from_here() -> void: + timeline_editor.play_timeline(timeline_editor.current_resource.get_index_from_text_line(text, get_caret_line())) + + +func _gui_input(event): + if not event is InputEventKey: return + if not event.is_pressed(): return + match event.as_text(): + "Ctrl+K", "Ctrl+Slash": + toggle_comment() + # TODO clean this up when dropping 4.2 support + "Alt+Up": + if has_method("move_lines_up"): + call("move_lines_up") + "Alt+Down": + if has_method("move_lines_down"): + call("move_lines_down") + + "Ctrl+Shift+D", "Ctrl+D": + duplicate_lines() + + "Ctrl+F6" when OS.get_name() != "macOS": # Play from here + play_from_here() + "Ctrl+Shift+B" when OS.get_name() == "macOS": # Play from here + play_from_here() + "Enter": + if get_code_completion_options(): + return + for caret in range(get_caret_count()): + var line := get_line(get_caret_line(caret)).strip_edges() + var event_res := DialogicTimeline.event_from_string(line, DialogicResourceUtil.get_event_cache()) + var indent_format: String = timeline_editor.current_resource.indent_format + if event_res.can_contain_events: + insert_text_at_caret("\n"+indent_format.repeat(get_indent_level(get_caret_line(caret))/4+1), caret) + else: + insert_text_at_caret("\n"+indent_format.repeat(get_indent_level(get_caret_line(caret))/4), caret) + _: + return + get_viewport().set_input_as_handled() + + +# Toggle the selected lines as comments +func toggle_comment() -> void: + var cursor: Vector2 = Vector2(get_caret_column(), get_caret_line()) + var selection := Rect2i( + Vector2i(get_selection_line(), get_selection_column()), + # TODO When ditching godot 4.2, switch to this, the above methods have been deprecated in 4.3 + #Vector2i(get_selection_origin_line(), get_selection_origin_column()), + Vector2i(get_caret_line(), get_caret_column())) + var from: int = cursor.y + var to: int = cursor.y + if has_selection(): + from = get_selection_from_line() + to = get_selection_to_line() + + var lines: PackedStringArray = text.split("\n") + var will_comment: bool = false + for i in range(from, to+1): + if not lines[i].begins_with("#"): + will_comment = true + + for i in range(from, to + 1): + if will_comment: + lines[i] = "#" + lines[i] + else: + lines[i] = lines[i].trim_prefix("#") + + text = "\n".join(lines) + if will_comment: + cursor.x += 1 + selection.position.y += 1 + selection.size.y += 1 + else: + cursor.x -= 1 + selection.position.y -= 1 + selection.size.y -= 1 + select(selection.position.x, selection.position.y, selection.size.x, selection.size.y) + text_changed.emit() + + +## Allows dragging files into the editor +func _can_drop_data(at_position:Vector2, data:Variant) -> bool: + if typeof(data) == TYPE_DICTIONARY and 'files' in data.keys() and len(data.files) == 1: + return true + return false + + +## Allows dragging files into the editor +func _drop_data(at_position:Vector2, data:Variant) -> void: + if typeof(data) == TYPE_DICTIONARY and 'files' in data.keys() and len(data.files) == 1: + set_caret_column(get_line_column_at_pos(at_position).x) + set_caret_line(get_line_column_at_pos(at_position).y) + var result: String = data.files[0] + var line := get_line(get_caret_line()) + if line[get_caret_column()-1] != '"': + result = '"'+result + if line.length() == get_caret_column() or line[get_caret_column()] != '"': + result = result+'"' + + insert_text_at_caret(result) + grab_focus() + + +func _on_update_timer_timeout() -> void: + update_content_list() + + +func update_content_list() -> void: + var labels: PackedStringArray = [] + for i in label_regex.search_all(text): + labels.append(i.get_string('name')) + timeline_editor.editors_manager.sidebar.update_content_list(labels) + + var channels: PackedStringArray = [] + for i in channel_regex.search_all(text): + channels.append(i.get_string('channel')) + timeline_editor.update_audio_channel_cache(channels) + + +func _on_content_item_clicked(label:String) -> void: + if label == "~ Top": + set_caret_line(0) + set_caret_column(0) + adjust_viewport_to_caret() + return + + for i in label_regex.search_all(text): + if i.get_string('name') == label: + set_caret_column(0) + set_caret_line(text.count('\n', 0, i.get_start()+1)) + center_viewport_to_caret() + return + + +func _search_timeline(search_text:String, match_case := false, whole_words := false) -> bool: + var flags := 0 + if match_case: + flags = flags | SEARCH_MATCH_CASE + if whole_words: + flags = flags | SEARCH_WHOLE_WORDS + set_meta("current_search", search_text) + set_meta("current_search_flags", flags) + + set_search_text(search_text) + set_search_flags(flags) + queue_redraw() + + var result := search(search_text, flags, get_selection_from_line(), get_selection_from_column()) + if result.y != -1: + select.call_deferred(result.y, result.x, result.y, result.x + search_text.length()) + return result.y != -1 + + +func _search_navigate_down() -> void: + search_navigate(false) + + +func _search_navigate_up() -> void: + search_navigate(true) + + +func search_navigate(navigate_up := false) -> void: + var pos := get_next_search_position(navigate_up) + if pos.x == -1: + return + select(pos.y, pos.x, pos.y, pos.x+len(get_meta("current_search"))) + set_caret_line(pos.y) + center_viewport_to_caret() + queue_redraw() + + +func get_next_search_position(navigate_up := false) -> Vector2i: + if not has_meta("current_search"): + return Vector2i(-1, -1) + var pos: Vector2i + var search_from_line := 0 + var search_from_column := 0 + if has_selection(): + if navigate_up: + search_from_line = get_selection_from_line() + search_from_column = get_selection_from_column()-1 + if search_from_column == -1: + if search_from_line == 0: + search_from_line = get_line_count() + else: + search_from_line -= 1 + search_from_column = max(get_line(search_from_line).length()-1,0) + else: + search_from_line = get_selection_to_line() + search_from_column = get_selection_to_column() + else: + search_from_line = get_caret_line() + search_from_column = get_caret_column() + + var flags: int = get_meta("current_search_flags", 0) + if navigate_up: + flags = flags | SEARCH_BACKWARDS + + pos = search(get_meta("current_search"), flags, search_from_line, search_from_column) + return pos + + +func replace(replace_text:String) -> void: + if has_selection(): + set_caret_line(get_selection_from_line()) + set_caret_column(get_selection_from_column()) + + var pos := get_next_search_position() + if pos.x == -1: + return + + if not has_meta("current_search"): + return + + begin_complex_operation() + insert_text("@@", pos.y, pos.x) + if get_meta("current_search_flags") & SEARCH_MATCH_CASE: + text = text.replace("@@"+get_meta("current_search"), replace_text) + else: + text = text.replacen("@@"+get_meta("current_search"), replace_text) + end_complex_operation() + + set_caret_line(pos.y) + set_caret_column(pos.x) + + timeline_editor.replace_in_timeline() + + +func replace_all(replace_text:String) -> void: + begin_complex_operation() + var next_pos := get_next_search_position() + var counter := 0 + while next_pos.y != -1: + insert_text("@@", next_pos.y, next_pos.x) + if get_meta("current_search_flags") & SEARCH_MATCH_CASE: + text = text.replace("@@"+get_meta("current_search"), replace_text) + else: + text = text.replacen("@@"+get_meta("current_search"), replace_text) + next_pos = get_next_search_position() + set_caret_line(next_pos.y) + set_caret_column(next_pos.x) + end_complex_operation() + + timeline_editor.replace_in_timeline() + + +################################################################################ +## AUTO COMPLETION +################################################################################ + +## Called if something was typed +func _request_code_completion(force:bool): + code_completion_helper.request_code_completion(force, self) + + +## Filters the list of all possible options, depending on what was typed +## Purpose of the different Kinds is explained in [_request_code_completion] +func _filter_code_completion_candidates(candidates:Array) -> Array: + return code_completion_helper.filter_code_completion_candidates(candidates, self) + + +## Called when code completion was activated +## Inserts the selected item +func _confirm_code_completion(replace:bool) -> void: + code_completion_helper.confirm_code_completion(replace, self) + + +################################################################################ +## SYMBOL CLICKING +################################################################################ + +## Performs an action (like opening a link) when a valid symbol was clicked +func _on_symbol_lookup(symbol, line, column): + code_completion_helper.symbol_lookup(symbol, line, column) + + +## Called to test if a symbol can be clicked +func _on_symbol_validate(symbol:String) -> void: + code_completion_helper.symbol_validate(symbol, self) diff --git a/addons/dialogic/Editor/TimelineEditor/TextEditor/timeline_editor_text.gd.uid b/addons/dialogic/Editor/TimelineEditor/TextEditor/timeline_editor_text.gd.uid new file mode 100644 index 0000000..6daf3f5 --- /dev/null +++ b/addons/dialogic/Editor/TimelineEditor/TextEditor/timeline_editor_text.gd.uid @@ -0,0 +1 @@ +uid://dshp0vy2xrxv diff --git a/addons/dialogic/Editor/TimelineEditor/TextEditor/timeline_editor_text.tscn b/addons/dialogic/Editor/TimelineEditor/TextEditor/timeline_editor_text.tscn new file mode 100644 index 0000000..172a501 --- /dev/null +++ b/addons/dialogic/Editor/TimelineEditor/TextEditor/timeline_editor_text.tscn @@ -0,0 +1,32 @@ +[gd_scene load_steps=2 format=3 uid="uid://defdeav8rli6o"] + +[ext_resource type="Script" uid="uid://dshp0vy2xrxv" path="res://addons/dialogic/Editor/TimelineEditor/TextEditor/timeline_editor_text.gd" id="1_1kbx2"] + +[node name="TimelineTextEditor" type="CodeEdit"] +offset_top = 592.0 +offset_right = 1024.0 +offset_bottom = 600.0 +wrap_mode = 1 +minimap_draw = true +caret_blink = true +highlight_current_line = true +draw_tabs = true +symbol_lookup_on_click = true +line_folding = true +gutters_draw_line_numbers = true +gutters_draw_fold_gutter = true +code_completion_enabled = true +code_completion_prefixes = Array[String](["[", "{"]) +indent_automatic = true +auto_brace_completion_enabled = true +auto_brace_completion_highlight_matching = true +script = ExtResource("1_1kbx2") + +[node name="UpdateTimer" type="Timer" parent="."] +one_shot = true + +[connection signal="code_completion_requested" from="." to="." method="_on_code_completion_requested"] +[connection signal="symbol_lookup" from="." to="." method="_on_symbol_lookup"] +[connection signal="symbol_validate" from="." to="." method="_on_symbol_validate"] +[connection signal="text_changed" from="." to="." method="_on_text_editor_text_changed"] +[connection signal="timeout" from="UpdateTimer" to="." method="_on_update_timer_timeout"] diff --git a/addons/dialogic/Editor/TimelineEditor/VisualEditor/AddEventButton.gd b/addons/dialogic/Editor/TimelineEditor/VisualEditor/AddEventButton.gd new file mode 100644 index 0000000..7318bd4 --- /dev/null +++ b/addons/dialogic/Editor/TimelineEditor/VisualEditor/AddEventButton.gd @@ -0,0 +1,63 @@ +@tool +extends Button + +@export var visible_name := "" +@export var event_id := "" +@export var event_icon: Texture: + get: + return event_icon + set(texture): + event_icon = texture + icon = event_icon +@export var event_sorting_index: int = 0 +@export var resource: DialogicEvent +@export var dialogic_color_name := "" + + +func _ready() -> void: + tooltip_text = visible_name + + custom_minimum_size = Vector2(get_theme_font("font", "Label").get_string_size(text).x+35,30) * DialogicUtil.get_editor_scale() + + add_theme_color_override("font_color", get_theme_color("font_color", "Editor")) + add_theme_color_override("font_color_hover", get_theme_color("accent_color", "Editor")) + apply_base_button_style() + + +func apply_base_button_style() -> void: + var nstyle: StyleBoxFlat = get_parent().get_theme_stylebox('normal', 'Button').duplicate() + nstyle.border_width_left = 5 * DialogicUtil.get_editor_scale() + add_theme_stylebox_override('normal', nstyle) + var hstyle: StyleBoxFlat = get_parent().get_theme_stylebox('hover', 'Button').duplicate() + hstyle.border_width_left = 5 * DialogicUtil.get_editor_scale() + add_theme_stylebox_override('hover', hstyle) + set_color(resource.event_color) + + +func set_color(color:Color) -> void: + var style := get_theme_stylebox('normal', 'Button') + style.border_color = color + add_theme_stylebox_override('normal', style) + style = get_theme_stylebox('hover', 'Button') + style.border_color = color + add_theme_stylebox_override('hover', style) + + +func toggle_name(on:= false) -> void: + if !on: + text = "" + custom_minimum_size = Vector2(40, 40) * DialogicUtil.get_editor_scale() + var style := get_theme_stylebox('normal', 'Button') + style.bg_color = style.border_color.darkened(0.2) + add_theme_stylebox_override('normal', style) + style = get_theme_stylebox('hover', 'Button') + style.bg_color = style.border_color + add_theme_stylebox_override('hover', style) + else: + text = visible_name + custom_minimum_size = Vector2(get_theme_font("font", 'Label').get_string_size(text).x+35,30) * DialogicUtil.get_editor_scale() + apply_base_button_style() + + +func _on_button_down() -> void: + find_parent('VisualEditor').get_node('%TimelineArea').start_dragging(1, resource) diff --git a/addons/dialogic/Editor/TimelineEditor/VisualEditor/AddEventButton.gd.uid b/addons/dialogic/Editor/TimelineEditor/VisualEditor/AddEventButton.gd.uid new file mode 100644 index 0000000..53cfcea --- /dev/null +++ b/addons/dialogic/Editor/TimelineEditor/VisualEditor/AddEventButton.gd.uid @@ -0,0 +1 @@ +uid://dofrrscd4c61l diff --git a/addons/dialogic/Editor/TimelineEditor/VisualEditor/AddEventButton.tscn b/addons/dialogic/Editor/TimelineEditor/VisualEditor/AddEventButton.tscn new file mode 100644 index 0000000..0aff01e --- /dev/null +++ b/addons/dialogic/Editor/TimelineEditor/VisualEditor/AddEventButton.tscn @@ -0,0 +1,46 @@ +[gd_scene load_steps=4 format=3 uid="uid://depcrpeh3f4rv"] + +[ext_resource type="Script" uid="uid://dofrrscd4c61l" path="res://addons/dialogic/Editor/TimelineEditor/VisualEditor/AddEventButton.gd" id="1_s43sc"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_qx31r"] +content_margin_left = 4.0 +content_margin_top = 4.0 +content_margin_right = 4.0 +content_margin_bottom = 4.0 +bg_color = Color(0.1, 0.1, 0.1, 0.6) +border_width_left = 3 +border_color = Color(0.231373, 0.545098, 0.94902, 1) +corner_radius_top_left = 3 +corner_radius_top_right = 3 +corner_radius_bottom_right = 3 +corner_radius_bottom_left = 3 +corner_detail = 5 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_n1o16"] +content_margin_left = 4.0 +content_margin_top = 4.0 +content_margin_right = 4.0 +content_margin_bottom = 4.0 +bg_color = Color(0.225, 0.225, 0.225, 0.6) +border_width_left = 3 +border_color = Color(0.231373, 0.545098, 0.94902, 1) +corner_radius_top_left = 3 +corner_radius_top_right = 3 +corner_radius_bottom_right = 3 +corner_radius_bottom_left = 3 +corner_detail = 5 + +[node name="AddEventButton" type="Button"] +custom_minimum_size = Vector2(44, 30) +offset_right = 97.0 +offset_bottom = 42.0 +tooltip_text = "S" +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_styles/normal = SubResource("StyleBoxFlat_qx31r") +theme_override_styles/hover = SubResource("StyleBoxFlat_n1o16") +alignment = 0 +expand_icon = true +script = ExtResource("1_s43sc") +visible_name = "S" + +[connection signal="button_down" from="." to="." method="_on_button_down"] diff --git a/addons/dialogic/Editor/TimelineEditor/VisualEditor/TimelineArea.gd b/addons/dialogic/Editor/TimelineEditor/VisualEditor/TimelineArea.gd new file mode 100644 index 0000000..d95062a --- /dev/null +++ b/addons/dialogic/Editor/TimelineEditor/VisualEditor/TimelineArea.gd @@ -0,0 +1,204 @@ +@tool +extends ScrollContainer + +# Script of the TimelineArea (that contains the event blocks). +# Manages the drawing of the event lines and event dragging. + + +enum DragTypes {NOTHING, NEW_EVENT, EXISTING_EVENTS} + +var drag_type: DragTypes = DragTypes.NOTHING +var drag_data: Variant +var drag_to_position := 0: + set(value): + drag_to_position = value + drag_to_position_updated = true +var dragging := false +var drag_to_position_updated := false + + +signal drag_completed(type, index, data) +signal drag_canceled() + + +func _ready() -> void: + resized.connect(add_extra_scroll_area_to_timeline) + %Timeline.child_entered_tree.connect(add_extra_scroll_area_to_timeline) + + # This prevents the view to turn black if you are editing this scene in Godot + if find_parent('EditorView'): + %TimelineArea.get_theme_color("background_color", "CodeEdit") + + +#region EVENT DRAGGING +################################################################################ + +func start_dragging(type:DragTypes, data:Variant) -> void: + dragging = true + drag_type = type + drag_data = data + drag_to_position_updated = false + + +func _input(event:InputEvent) -> void: + if !dragging: + return + if event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_LEFT: + if !event.is_pressed(): + finish_dragging() + + +func _process(delta:float) -> void: + if !dragging: + return + + for child in %Timeline.get_children(): + if (child.global_position.y < get_global_mouse_position().y) and \ + (child.global_position.y+child.size.y > get_global_mouse_position().y): + + if get_global_mouse_position().y > child.global_position.y+(child.size.y/2.0): + drag_to_position = child.get_index()+1 + queue_redraw() + else: + drag_to_position = child.get_index() + queue_redraw() + + +func finish_dragging() -> void: + dragging = false + if drag_to_position_updated and get_global_rect().has_point(get_global_mouse_position()): + drag_completed.emit(drag_type, drag_to_position, drag_data) + else: + drag_canceled.emit() + queue_redraw() + +#endregion + + +#region LINE DRAWING +################################################################################ + +func _draw() -> void: + var line_width := 5 * DialogicUtil.get_editor_scale() + var horizontal_line_length := 100 * DialogicUtil.get_editor_scale() + var color_multiplier := Color(1,1,1,0.25) + var selected_color_multiplier := Color(1,1,1,1) + + + ## Draw Event Lines + for idx in range($Timeline.get_child_count()): + var block: Control = $Timeline.get_child(idx) + + if not "resource" in block: + continue + + if not block.visible: + continue + + if block.resource is DialogicEndBranchEvent: + continue + + if not (block.has_any_enabled_body_content or block.resource.can_contain_events): + continue + + var icon_panel_height: int = block.get_node('%IconPanel').size.y + var rect_position: Vector2 = block.get_node('%IconPanel').global_position+Vector2(0,1)*block.get_node('%IconPanel').size+Vector2(0,-4) + var color: Color = block.resource.event_color + + if block.is_selected() or block.end_node and block.end_node.is_selected(): + color *= selected_color_multiplier + else: + color *= color_multiplier + + if block.expanded and not block.resource.can_contain_events: + draw_rect(Rect2(rect_position-global_position+Vector2(line_width, 0), Vector2(line_width, block.size.y-block.get_node('%IconPanel').size.y)), color) + + ## If the indentation has not changed, nothing else happens + if idx >= $Timeline.get_child_count()-1 or block.current_indent_level >= $Timeline.get_child(idx+1).current_indent_level: + continue + + ## Draw connection between opening and end branch events + if block.resource.can_contain_events: + var end_node: Node = block.end_node + + if end_node != null: + var v_length: float = end_node.global_position.y+end_node.size.y/2-rect_position.y + #var rect_size := Vector2(line_width, ) + var offset := Vector2(line_width, 0) + + # Draw vertical line + draw_rect(Rect2(rect_position-global_position+offset, Vector2(line_width, v_length)), color) + # Draw horizonal line (on END BRANCH event) + draw_rect(Rect2( + rect_position.x+line_width-global_position.x+offset.x, + rect_position.y+v_length-line_width-global_position.y, + horizontal_line_length-offset.x, + line_width), + color) + + if block.resource.wants_to_group: + var group_color: Color = block.resource.event_color*color_multiplier + var group_starter := true + if idx != 0: + var block_above := $Timeline.get_child(idx-1) + if block_above.resource.event_name == block.resource.event_name: + group_starter = false + if block_above.resource is DialogicEndBranchEvent and block_above.parent_node.resource.event_name == block.resource.event_name: + group_starter = false + + ## Draw small horizontal line on any event in group + draw_rect(Rect2( + rect_position.x-global_position.x-line_width, + rect_position.y-global_position.y-icon_panel_height/2, + line_width, + line_width), + group_color) + + if group_starter: + ## Find the last event in the group (or that events END BRANCH) + var sub_idx := idx + var group_end_idx := idx + while sub_idx < $Timeline.get_child_count()-1: + sub_idx += 1 + if $Timeline.get_child(sub_idx).current_indent_level == block.current_indent_level-1: + group_end_idx = sub_idx-1 + break + + var end_node := $Timeline.get_child(group_end_idx) + + var offset := Vector2(-2*line_width, -icon_panel_height/2) + var v_length: float = end_node.global_position.y - rect_position.y + icon_panel_height + + ## Draw vertical line + draw_rect(Rect2( + rect_position.x - global_position.x + offset.x, + rect_position.y - global_position.y + offset.y, + line_width, + v_length), + group_color) + + + ## Draw line that indicates the dragging position + if dragging and get_global_rect().has_point(get_global_mouse_position()): + var height: int = 0 + if drag_to_position == %Timeline.get_child_count(): + height = %Timeline.get_child(-1).global_position.y+%Timeline.get_child(-1).size.y-global_position.y-(line_width/2.0) + else: + height = %Timeline.get_child(drag_to_position).global_position.y-global_position.y-(line_width/2.0) + + draw_line(Vector2(0, height), Vector2(size.x*0.9, height), get_theme_color("accent_color", "Editor"), line_width*.3) + +#endregion + + +#region SPACE BELOW +################################################################################ + +func add_extra_scroll_area_to_timeline(fake_arg:Variant=null) -> void: + if %Timeline.get_children().size() > 4: + %Timeline.custom_minimum_size.y = 0 + %Timeline.size.y = 0 + if %Timeline.size.y + 200 > %TimelineArea.size.y: + %Timeline.custom_minimum_size = Vector2(0, %Timeline.size.y + 200) + +#endregion diff --git a/addons/dialogic/Editor/TimelineEditor/VisualEditor/TimelineArea.gd.uid b/addons/dialogic/Editor/TimelineEditor/VisualEditor/TimelineArea.gd.uid new file mode 100644 index 0000000..d1141f6 --- /dev/null +++ b/addons/dialogic/Editor/TimelineEditor/VisualEditor/TimelineArea.gd.uid @@ -0,0 +1 @@ +uid://b6ka2avnh1u55 diff --git a/addons/dialogic/Editor/TimelineEditor/VisualEditor/timeline_editor_visual.gd b/addons/dialogic/Editor/TimelineEditor/VisualEditor/timeline_editor_visual.gd new file mode 100644 index 0000000..9c71fb0 --- /dev/null +++ b/addons/dialogic/Editor/TimelineEditor/VisualEditor/timeline_editor_visual.gd @@ -0,0 +1,1438 @@ +@tool +extends Container + +## Visual mode of the timeline editor. + + +################## EDITOR NODES ################################################ +################################################################################ +var TimelineUndoRedo := UndoRedo.new() +@onready var timeline_editor := get_parent().get_parent() +var event_node +var sidebar_collapsed := false + +################## SIGNALS ##################################################### +################################################################################ +signal selection_updated +signal batch_loaded +signal timeline_loaded + + +################## TIMELINE LOADING ############################################ +################################################################################ +var _batches := [] +var _building_timeline := false +var _cancel_loading := false +var _initialized := false + +################## TIMELINE EVENT MANAGEMENT ################################### +################################################################################ +var selected_items: Array = [] +var drag_allowed := false + + +#region CREATE/SAVE/LOAD +################################################################################ + +func something_changed() -> void: + timeline_editor.current_resource_state = DialogicEditor.ResourceStates.UNSAVED + + +func save_timeline() -> void: + if !is_inside_tree(): + return + + # return if resource is unchanged + if timeline_editor.current_resource_state != DialogicEditor.ResourceStates.UNSAVED: + return + + # create a list of text versions of all the events with the right indent + var new_events := [] + var indent := 0 + for event in %Timeline.get_children(): + if 'event_name' in event.resource: + event.resource.update_text_version() + new_events.append(event.resource) + + if !timeline_editor.current_resource: + return + + timeline_editor.current_resource.events = new_events + timeline_editor.current_resource.events_processed = true + var error: int = ResourceSaver.save(timeline_editor.current_resource, timeline_editor.current_resource.resource_path) + + if error != OK: + print('[Dialogic] Saving error: ', error) + + timeline_editor.current_resource.set_meta("unsaved", false) + timeline_editor.current_resource_state = DialogicEditor.ResourceStates.SAVED + DialogicResourceUtil.update_directory('dtl') + + +func _notification(what:int) -> void: + if what == NOTIFICATION_WM_CLOSE_REQUEST: + save_timeline() + + +func load_timeline(resource:DialogicTimeline) -> void: + # In case another timeline is still loading + cancel_loading() + + clear_timeline_nodes() + + if timeline_editor.current_resource.events.size() == 0: + pass + else: + await timeline_editor.current_resource.process() + + if timeline_editor.current_resource.events.size() == 0: + return + + var data := resource.events + var page := 1 + var batch_size := 10 + _batches = [] + _building_timeline = true + while batch_events(data, batch_size, page).size() != 0: + _batches.append(batch_events(data, batch_size, page)) + page += 1 + set_meta("batch_count", len(_batches)) + batch_loaded.emit() + # Reset the scroll position + %TimelineArea.scroll_vertical = 0 + + +func is_loading_timeline() -> bool: + return _building_timeline + +func cancel_loading() -> void: + timeline_editor.set_progress(1) + if _building_timeline: + _cancel_loading = true + await batch_loaded + _cancel_loading = false + _building_timeline = false + + +func batch_events(array: Array, size: int, batch_number: int) -> Array: + return array.slice((batch_number - 1) * size, batch_number * size) + + +# a list of all events like choice and condition events (so they get connected to their end events) +var opener_events_stack := [] + +func load_batch(data:Array) -> void: + # Don't try to cast it to Array immedietly, as the item may have become null and will throw a useless error + var current_batch = _batches.pop_front() + if current_batch: + var current_batch_items: Array = current_batch + for i in current_batch_items: + if i is DialogicEndBranchEvent: + create_end_branch_event(%Timeline.get_child_count(), opener_events_stack.pop_back()) + else: + var piece := add_event_node(i, %Timeline.get_child_count()) + if i.can_contain_events: + opener_events_stack.push_back(piece) + batch_loaded.emit() + + +func _on_batch_loaded() -> void: + if _cancel_loading: + return + + if _batches.size() > 0: + indent_events() + var progress: float = 1-(1.0/get_meta("batch_count")*len(_batches)) + timeline_editor.set_progress(progress) + await get_tree().process_frame + load_batch(_batches) + return + + # This hides the progress bar again + timeline_editor.set_progress(1) + + if opener_events_stack: + for ev in opener_events_stack: + if is_instance_valid(ev): + create_end_branch_event(%Timeline.get_child_count(), ev) + + timeline_loaded.emit() + + opener_events_stack = [] + indent_events() + update_content_list() + _building_timeline = false + + +func clear_timeline_nodes() -> void: + deselect_all_items() + for event in %Timeline.get_children(): + event.free() +#endregion + + +#region SETUP +################################################################################ + +func _ready() -> void: + event_node = load("res://addons/dialogic/Editor/Events/EventBlock/event_block.tscn") + + batch_loaded.connect(_on_batch_loaded) + + await find_parent('EditorView').ready + timeline_editor.editors_manager.sidebar.content_item_activated.connect(_on_content_item_clicked) + %Timeline.child_order_changed.connect(update_content_list) + + var editor_scale := DialogicUtil.get_editor_scale() + %RightSidebar.size.x = DialogicUtil.get_editor_setting("dialogic/editor/right_sidebar_width", 200 * editor_scale) + $View.split_offset = -DialogicUtil.get_editor_setting("dialogic/editor/right_sidebar_width", 200 * editor_scale) + sidebar_collapsed = DialogicUtil.get_editor_setting("dialogic/editor/right_sidebar_collapsed", false) + + load_event_buttons() + _on_right_sidebar_resized() + _initialized = true + + +func load_event_buttons() -> void: + sidebar_collapsed = DialogicUtil.get_editor_setting("dialogic/editor/right_sidebar_collapsed", false) + + # Clear previous event buttons + for child in %RightSidebar.get_child(0).get_children(): + + if child is FlowContainer: + + for button in child.get_children(): + button.queue_free() + + + for child in %RightSidebar.get_child(0).get_children(): + child.get_parent().remove_child(child) + child.queue_free() + + # Event buttons + var button_scene := load("res://addons/dialogic/Editor/TimelineEditor/VisualEditor/AddEventButton.tscn") + + var scripts := DialogicResourceUtil.get_event_cache() + var hidden_buttons: Array = DialogicUtil.get_editor_setting('hidden_event_buttons', []) + var sections := {} + + for event_script in scripts: + var event_resource: Variant + + if typeof(event_script) == TYPE_STRING: + event_resource = load(event_script).new() + else: + event_resource = event_script + + if event_resource.disable_editor_button == true: + continue + + if event_resource.event_name in hidden_buttons: + continue + + var button: Button = button_scene.instantiate() + button.resource = event_resource + button.visible_name = event_resource.event_name + button.event_icon = event_resource._get_icon() + button.set_color(event_resource.event_color) + button.dialogic_color_name = event_resource.dialogic_color_name + button.event_sorting_index = event_resource.event_sorting_index + + button.button_up.connect(_add_event_button_pressed.bind(event_resource)) + + if !event_resource.event_category in sections: + var section := VBoxContainer.new() + section.name = event_resource.event_category + + var section_header := HBoxContainer.new() + section_header.add_child(Label.new()) + section_header.get_child(0).text = event_resource.event_category + section_header.get_child(0).size_flags_horizontal = SIZE_SHRINK_BEGIN + section_header.get_child(0).theme_type_variation = "DialogicSection" + section_header.add_child(HSeparator.new()) + section_header.get_child(1).size_flags_horizontal = SIZE_EXPAND_FILL + section.add_child(section_header) + + var button_container := FlowContainer.new() + section.add_child(button_container) + + sections[event_resource.event_category] = button_container + %RightSidebar.get_child(0).add_child(section, true) + + sections[event_resource.event_category].add_child(button) + button.toggle_name(!sidebar_collapsed) + + # Sort event button + while event_resource.event_sorting_index < sections[event_resource.event_category].get_child(max(0, button.get_index()-1)).resource.event_sorting_index: + sections[event_resource.event_category].move_child(button, button.get_index()-1) + + # Sort event sections + var sections_order: Array = DialogicUtil.get_editor_setting('event_section_order', + ['Main', 'Flow', 'Logic', 'Audio', 'Visual','Other', 'Helper']) + + sections_order.reverse() + for section_name in sections_order: + if %RightSidebar.get_child(0).has_node(section_name): + %RightSidebar.get_child(0).move_child(%RightSidebar.get_child(0).get_node(section_name), 0) + + # Resize RightSidebar + %RightSidebar.custom_minimum_size.x = 50 * DialogicUtil.get_editor_scale() + + _on_right_sidebar_resized() +#endregion + + +#region CONTENT LIST +################################################################################ + +func _on_content_item_clicked(label:String) -> void: + if label == "~ Top": + %TimelineArea.scroll_vertical = 0 + return + + for event in %Timeline.get_children(): + if 'event_name' in event.resource and event.resource is DialogicLabelEvent: + if event.resource.name == label: + scroll_to_piece(event.get_index()) + return + + +func update_content_list() -> void: + if not is_inside_tree(): + return + + var channels: PackedStringArray = [] + var labels: PackedStringArray = [] + + for event in %Timeline.get_children(): + + if 'event_name' in event.resource and event.resource is DialogicLabelEvent: + labels.append(event.resource.name) + + if 'event_name' in event.resource and event.resource is DialogicAudioEvent: + if not event.resource.channel_name in channels: + channels.append(event.resource.channel_name) + + timeline_editor.editors_manager.sidebar.update_content_list(labels) + timeline_editor.update_audio_channel_cache(channels) + + +#endregion + + +#region DRAG & DROP + DRAGGING EVENTS +################################################################################# + +# SIGNAL handles input on the events mainly for selection and moving events +func _on_event_block_gui_input(event: InputEvent, item: Node) -> void: + if event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_LEFT: + if event.is_pressed(): + if len(selected_items) > 1 and item in selected_items and !Input.is_key_pressed(KEY_CTRL): + pass + elif not _is_item_selected(item) and not len(selected_items) > 1: + select_item(item) + elif len(selected_items) > 1 or Input.is_key_pressed(KEY_CTRL): + select_item(item) + + drag_allowed = true + + if event.is_released() and not %TimelineArea.dragging and not Input.is_key_pressed(KEY_SHIFT): + if len(selected_items) > 1 and item in selected_items and not Input.is_key_pressed(KEY_CTRL): + deselect_all_items() + select_item(item) + + if len(selected_items) > 0 and event is InputEventMouseMotion: + if Input.is_mouse_button_pressed(MOUSE_BUTTON_LEFT): + if !%TimelineArea.dragging and !get_viewport().gui_is_dragging() and drag_allowed: + sort_selection() + %TimelineArea.start_dragging(%TimelineArea.DragTypes.EXISTING_EVENTS, selected_items) + + +## Activated by TimelineArea drag_completed +func _on_timeline_area_drag_completed(type:int, index:int, data:Variant) -> void: + if type == %TimelineArea.DragTypes.NEW_EVENT: + var resource: DialogicEvent = data.duplicate() + resource._load_custom_defaults() + + add_event_undoable(resource, index) + + elif type == %TimelineArea.DragTypes.EXISTING_EVENTS: + if not (len(data) == 1 and data[0].get_index()+1 == index): + move_blocks_to_index(data, index) + + await get_tree().process_frame + something_changed() + scroll_to_piece(index) + indent_events() +#endregion + + +#region CREATING THE TIMELINE +################################################################################ +# Adding an event to the timeline +func add_event_node(event_resource:DialogicEvent, at_index:int = -1, auto_select: bool = false, indent: bool = false) -> Control: + if event_resource is DialogicEndBranchEvent: + return create_end_branch_event(at_index, %Timeline.get_child(0)) + + if event_resource['event_node_ready'] == false: + if event_resource['event_node_as_text'] != "": + event_resource._load_from_string(event_resource['event_node_as_text']) + + var block: Control = event_node.instantiate() + block.resource = event_resource + event_resource.editor_node = block + event_resource._enter_visual_editor(timeline_editor) + block.content_changed.connect(something_changed) + + if event_resource.event_name == "Label": + block.content_changed.connect(update_content_list) + if event_resource.event_name == "Audio": + block.content_changed.connect(update_content_list) + if at_index == -1: + if len(selected_items) != 0: + selected_items[0].add_sibling(block) + else: + %Timeline.add_child(block) + else: + %Timeline.add_child(block) + %Timeline.move_child(block, at_index) + + block.gui_input.connect(_on_event_block_gui_input.bind(block)) + + # Building editing part + block.build_editor(true, event_resource.expand_by_default) + + if auto_select: + select_item(block, false) + + # Indent on create + if indent: + indent_events() + + return block + + +func create_end_branch_event(at_index:int, parent_node:Node) -> Node: + var end_branch_event: Control = load("res://addons/dialogic/Editor/Events/BranchEnd.tscn").instantiate() + end_branch_event.resource = DialogicEndBranchEvent.new() + end_branch_event.gui_input.connect(_on_event_block_gui_input.bind(end_branch_event)) + parent_node.end_node = end_branch_event + end_branch_event.parent_node = parent_node + end_branch_event.add_end_control(parent_node.resource._get_end_branch_control()) + %Timeline.add_child(end_branch_event) + %Timeline.move_child(end_branch_event, at_index) + return end_branch_event + + +# combination of the above that establishes the correct connection between the event and it's end branch +func add_event_with_end_branch(resource, at_index:int=-1, auto_select:bool = false, indent:bool = false) -> void: + var event := add_event_node(resource, at_index, auto_select, indent) + create_end_branch_event(at_index+1, event) + + +## Adds an event (either single nodes or with end branches) to the timeline with UndoRedo support +func add_event_undoable(event_resource: DialogicEvent, at_index: int = -1) -> void: + TimelineUndoRedo.create_action("[D] Add "+event_resource.event_name+" event.") + if event_resource.can_contain_events: + TimelineUndoRedo.add_do_method(add_event_with_end_branch.bind(event_resource, at_index, true, true)) + TimelineUndoRedo.add_undo_method(delete_events_at_index.bind(at_index, 2)) + else: + TimelineUndoRedo.add_do_method(add_event_node.bind(event_resource, at_index, true, true)) + TimelineUndoRedo.add_undo_method(delete_events_at_index.bind(at_index, 1)) + TimelineUndoRedo.commit_action() +#endregion + + +#region DELETING, COPY, PASTE +################################################################################ + +## Lists the given events (as text) based on their indexes. +## This is used to store info for undo/redo. +## Based on the action you might want to include END_BRANCHES or not (see EndBranchMode) +func get_events_indexed(events:Array) -> Dictionary: + var indexed_dict := {} + for event in events: + # do not collect selected end branches (e.g. on delete, copy, etc.) + if event.resource is DialogicEndBranchEvent: + continue + + indexed_dict[event.get_index()] = event.resource._store_as_string() + + # store an end branch if it is selected or connected to a selected event + if 'end_node' in event and event.end_node: + event = event.end_node + indexed_dict[event.get_index()] = event.resource._store_as_string() + elif event.resource is DialogicEndBranchEvent: + if event.parent_node in events: # add local index + indexed_dict[event.get_index()] += str(events.find(event.parent_node)) + else: # add global index + indexed_dict[event.get_index()] += '#'+str(event.parent_node.get_index()) + return indexed_dict + + +## Returns an indexed dictionary of [amount] events at [index] +func get_events_at_index_indexed(index:int, amount:int) -> Dictionary: + var events := [] + + for i in range(amount): + events.append(%Timeline.get_child(index+i)) + + return get_events_indexed(events) + + +## Selects events based on an indexed dictionary +func select_events_indexed(indexed_events:Dictionary) -> void: + selected_items = [] + for event_index in indexed_events.keys(): + selected_items.append(%Timeline.get_child(event_index)) + + +## Adds events based on an indexed dictionary +func add_events_indexed(indexed_events:Dictionary) -> void: + # sort the dictionaries indexes just in case + var indexes := indexed_events.keys() + indexes.sort() + + var events := [] + for event_idx in indexes: + # first get a new resource from the text version + var event_resource: DialogicEvent + for i in DialogicResourceUtil.get_event_cache(): + if i._test_event_string(indexed_events[event_idx]): + event_resource = i.duplicate() + break + + event_resource._load_from_string(indexed_events[event_idx]) + + # now create the visual block. + deselect_all_items() + if event_resource is DialogicEndBranchEvent: + var idx: String = indexed_events[event_idx].trim_prefix('<>') + if idx.begins_with('#'): # a global index + events.append(create_end_branch_event(%Timeline.get_child_count(), %Timeline.get_child(int(idx.trim_prefix('#'))))) + else: # a local index (index in the added events list) + events.append(create_end_branch_event(%Timeline.get_child_count(), events[int(idx)])) + %Timeline.move_child(events[-1], event_idx) + else: + events.append(add_event_node(event_resource)) + %Timeline.move_child(events[-1], event_idx) + + selected_items = events + visual_update_selection() + indent_events() + something_changed() + + +## Deletes events based on an indexed dictionary +func delete_events_indexed(indexed_events:Dictionary) -> void: + if indexed_events.is_empty(): + return + + var idx_shift := 0 + for idx in indexed_events: + if 'end_node' in %Timeline.get_child(idx-idx_shift) and %Timeline.get_child(idx-idx_shift).end_node != null and is_instance_valid(%Timeline.get_child(idx-idx_shift).end_node): + %Timeline.get_child(idx-idx_shift).end_node.parent_node = null + if %Timeline.get_child(idx-idx_shift) != null and is_instance_valid(%Timeline.get_child(idx-idx_shift)): + if %Timeline.get_child(idx-idx_shift) in selected_items: + selected_items.erase(%Timeline.get_child(idx-idx_shift)) + %Timeline.get_child(idx-idx_shift).queue_free() + %Timeline.get_child(idx-idx_shift).get_parent().remove_child(%Timeline.get_child(idx-idx_shift)) + idx_shift += 1 + + indent_events() + something_changed() + + +func delete_selected_events() -> void: + # try to find which item to select afterwards + var next_node := %Timeline.get_child(mini(%Timeline.get_child_count() - 1, selected_items[-1].get_index() + 1)) + if _is_item_selected(next_node): + next_node = null + + delete_events_indexed(get_events_indexed(selected_items)) + + # select next + if next_node != null: + select_item(next_node, false) + elif %Timeline.get_child_count() > 0: + next_node = %Timeline.get_child(max(0, %Timeline.get_child_count() - 1)) + select_item(next_node, false) + else: + deselect_all_items() + + +func cut_events_indexed(indexed_events:Dictionary) -> void: + select_events_indexed(indexed_events) + copy_selected_events() + delete_events_indexed(indexed_events) + + +func copy_selected_events() -> void: + if len(selected_items) == 0: + return + + sort_selection() + var event_copy_array := [] + for item in selected_items: + event_copy_array.append(item.resource._store_as_string()) + if item.resource is DialogicEndBranchEvent: + if item.parent_node in selected_items: # add local index + event_copy_array[-1] += str(selected_items.find(item.parent_node)) + else: # add global index + event_copy_array[-1] += '#'+str(item.parent_node.get_index()) + + DisplayServer.clipboard_set(var_to_str({ + "events":event_copy_array, + "project_name": ProjectSettings.get_setting("application/config/name") + })) + + +func get_clipboard_data() -> Array: + var clipboard_parse: Variant = str_to_var(DisplayServer.clipboard_get()) + + if clipboard_parse is Dictionary: + if clipboard_parse.has("project_name"): + if clipboard_parse.project_name != ProjectSettings.get_setting("application/config/name"): + print("[Dialogic] Be careful when copying from another project!") + if clipboard_parse.has('events'): + return clipboard_parse.events + return [] + + +func add_events_at_index(event_list:Array, at_index:int) -> void: + var new_indexed_events := {} + + for i in range(len(event_list)): + new_indexed_events[at_index+i] = event_list[i] + + add_events_indexed(new_indexed_events) + + +func delete_events_at_index(at_index:int, amount:int = 1)-> void: + var new_indexed_events := {} + # delete_events_indexed actually only needs the keys, so we give trash as values + for i in range(amount): + new_indexed_events[at_index+i] = "" + delete_events_indexed(new_indexed_events) + indent_events() + +#endregion + + +#region BLOCK SELECTION +################################################################################ + +func _is_item_selected(item: Node) -> bool: + return item in selected_items + + +func select_item(item: Node, multi_possible:bool = true) -> void: + if item == null: + return + + if Input.is_key_pressed(KEY_CTRL) and multi_possible: + # deselect the item if it is selected + if _is_item_selected(item): + selected_items.erase(item) + else: + selected_items.append(item) + elif Input.is_key_pressed(KEY_SHIFT) and multi_possible: + if len(selected_items) == 0: + selected_items = [item] + else: + var index: int = selected_items[-1].get_index() + var goal_idx := item.get_index() + while true: + if index < goal_idx: index += 1 + else: index -= 1 + if not %Timeline.get_child(index) in selected_items: + selected_items.append(%Timeline.get_child(index)) + + if index == goal_idx: + break + else: + if len(selected_items) == 1: + if _is_item_selected(item): + selected_items.erase(item) + else: + selected_items = [item] + else: + selected_items = [item] + + sort_selection() + visual_update_selection() + + +# checks all the events and sets their styles (selected/deselected) +func visual_update_selection() -> void: + for item in %Timeline.get_children(): + item.visual_deselect() + if 'end_node' in item and item.end_node != null: + item.end_node.unhighlight() + for item in selected_items: + item.visual_select() + if 'end_node' in item and item.end_node != null: + item.end_node.highlight() + %TimelineArea.queue_redraw() + + +## Sorts the selection using 'custom_sort_selection' +func sort_selection() -> void: + selected_items.sort_custom(custom_sort_selection) + + +## Compares two event blocks based on their position in the timeline +func custom_sort_selection(item1, item2) -> bool: + return item1.get_index() < item2.get_index() + + +func select_all_items() -> void: + selected_items = [] + for event in %Timeline.get_children(): + selected_items.append(event) + visual_update_selection() + + +func deselect_all_items() -> void: + selected_items = [] + visual_update_selection() +#endregion + + +#region CREATING NEW EVENTS USING THE BUTTONS +################################################################################ + +# Event Creation signal for buttons +# If force_resource is true, the event will be added with the actual resource +func _add_event_button_pressed(event_resource:DialogicEvent, force_resource := false): + if %TimelineArea.get_global_rect().has_point(get_global_mouse_position()) and !force_resource: + return + + var at_index := -1 + if selected_items: + at_index = selected_items[-1].get_index()+1 + else: + at_index = %Timeline.get_child_count() + + var resource: DialogicEvent = null + if force_resource: + resource = event_resource + else: + resource = event_resource.duplicate() + resource._load_custom_defaults() + + resource.created_by_button = true + + add_event_undoable(resource, at_index) + + resource.created_by_button = false + + something_changed() + scroll_to_piece(at_index) + indent_events() +#endregion + + +#region BLOCK GETTERS +################################################################################ + +func get_block_above(block:Node) -> Node: + if block.get_index() > 0: + return %Timeline.get_child(block.get_index() - 1) + return null + + +func get_block_below(block:Node) -> Node: + if block.get_index() < %Timeline.get_child_count() - 1: + return %Timeline.get_child(block.get_index() + 1) + return null +#endregion + + +#region BLOCK MOVEMENT +################################################################################ + + +func move_blocks_to_index(blocks:Array, index:int): + # the amount of events that were BEFORE the new index (thus shifting the index) + var index_shift := 0 + for event in blocks: + if event.resource is DialogicEndBranchEvent: + if !event.parent_node in blocks: + if index <= event.parent_node.get_index(): + return + if "end_node" in event and event.end_node: + if !event.end_node in blocks: + if event.end_node.get_index() == event.get_index()+1: + blocks.append(event.end_node) + else: + return + index_shift += int(event.get_index() < index) + + var do_indexes := {} + var undo_indexes := {} + + var event_count := 0 + for event in blocks: + do_indexes[event.get_index()] = index + event_count + undo_indexes[index -index_shift+event_count] = event.get_index()+index_shift*int(index < event.get_index())#+int((index -index_shift+event_count) < event.get_index()) + event_count += 1 + + # complex check to avoid tangling conditions & choices + for idx in do_indexes: + var event := %Timeline.get_child(idx) + if !event.resource is DialogicEndBranchEvent and !event.resource.can_contain_events: + continue + + if event.resource is DialogicEndBranchEvent: + if !event.parent_node or event.parent_node.get_index() in do_indexes: + continue + elif event.resource.can_contain_events: + if !event.end_node or event.end_node.get_index() in do_indexes: + continue + + var check_from := 0 + var check_to := 0 + + if event.resource is DialogicEndBranchEvent: + check_from = event.parent_node.get_index()+1 + check_to = index + else: + check_from = index + check_to = event.end_node.get_index() + + for c_idx in range(check_from, check_to): + if c_idx in do_indexes: + continue + var c_event := %Timeline.get_child(c_idx) + if c_event.resource is DialogicEndBranchEvent and c_event.parent_node.get_index() < check_from: + return + if c_event.resource.can_contain_events and c_event.end_node.get_index() > check_to: + return + + TimelineUndoRedo.create_action('[D] Move events.') + TimelineUndoRedo.add_do_method(move_events_by_indexes.bind(do_indexes)) + TimelineUndoRedo.add_undo_method(move_events_by_indexes.bind(undo_indexes)) + TimelineUndoRedo.commit_action() + + +func move_events_by_indexes(index_dict:Dictionary) -> void: + var sorted_indexes := index_dict.keys() + sorted_indexes.sort() + + var evts := {} + var count := 0 + for idx in sorted_indexes: + evts[idx] =%Timeline.get_child(idx-count) + %Timeline.remove_child(%Timeline.get_child(idx-count)) + count += 1 + if idx < index_dict[idx]: + index_dict[idx] -= len(sorted_indexes.filter(func(x):return x<=index_dict[idx]-count-1)) + + for idx in sorted_indexes: + %Timeline.add_child(evts[idx]) + %Timeline.move_child(evts[idx], index_dict[idx]) + + indent_events() + visual_update_selection() + something_changed() + + +func offset_blocks_by_index(blocks:Array, offset:int): + var do_indexes := {} + var undo_indexes := {} + + for event in blocks: + if event.resource is DialogicEndBranchEvent: + if !event.parent_node in blocks: + if event.get_index()+offset+int(offset>0) <= event.parent_node.get_index(): + continue + if "end_node" in event and event.end_node: + if !event.end_node in blocks: + if event.get_index()+offset+int(offset>0) > event.end_node.get_index(): + if event.end_node.get_index() == event.get_index()+1: + blocks.append(event.end_node) + else: + return + do_indexes[event.get_index()] = event.get_index()+offset+int(offset>0) + undo_indexes[event.get_index()+offset] = event.get_index()+int(offset<0) + + + TimelineUndoRedo.create_action("[D] Move events.") + TimelineUndoRedo.add_do_method(move_events_by_indexes.bind(do_indexes)) + TimelineUndoRedo.add_undo_method(move_events_by_indexes.bind(undo_indexes)) + + TimelineUndoRedo.commit_action() +#endregion + + +#region VISIBILITY/VISUALS +################################################################################ + +func scroll_to_piece(piece_index:int) -> void: + await get_tree().process_frame + var height: float = %Timeline.get_child(min(piece_index, %Timeline.get_child_count()-1)).position.y + if height < %TimelineArea.scroll_vertical or height > %TimelineArea.scroll_vertical+%TimelineArea.size.y: + %TimelineArea.scroll_vertical = height + + +func indent_events() -> void: + var indent: int = 0 + var event_list: Array = %Timeline.get_children() + + if event_list.size() < 2: + return + + var currently_hidden := false + var hidden_count := 0 + var hidden_until: Control = null + + # will be applied to the indent after the current event + var delayed_indent: int = 0 + + for block in event_list: + if (not "resource" in block): + continue + + if (not currently_hidden) and block.resource.can_contain_events and block.end_node and block.collapsed: + currently_hidden = true + hidden_until = block.end_node + hidden_count = 0 + elif currently_hidden and block == hidden_until: + block.update_hidden_events_indicator(hidden_count) + currently_hidden = false + hidden_until = null + elif currently_hidden: + block.hide() + hidden_count += 1 + else: + block.show() + if block.resource is DialogicEndBranchEvent: + block.update_hidden_events_indicator(0) + + delayed_indent = 0 + + if block.resource.can_contain_events: + delayed_indent = 1 + + if block.resource.wants_to_group: + indent += 1 + + elif block.resource is DialogicEndBranchEvent: + block.parent_node_changed() + delayed_indent -= 1 + if block.parent_node.resource.wants_to_group: + delayed_indent -= 1 + + if indent >= 0: + block.set_indent(indent) + else: + block.set_indent(0) + indent += delayed_indent + + await get_tree().process_frame + await get_tree().process_frame + %TimelineArea.queue_redraw() + + +#region SPECIAL BLOCK OPERATIONS +################################################################################ + +func _on_event_popup_menu_id_pressed(id:int) -> void: + var item: Control = %EventPopupMenu.current_event + if id == 0: + if not item in selected_items: + selected_items = [item] + duplicate_selected() + + elif id == 1: + play_from_here(%EventPopupMenu.current_event.get_index()) + + elif id == 2: + if not item.resource.help_page_path.is_empty(): + OS.shell_open(item.resource.help_page_path) + + elif id == 3: + find_parent('EditorView').plugin_reference.get_editor_interface().set_main_screen_editor('Script') + find_parent('EditorView').plugin_reference.get_editor_interface().edit_script(item.resource.get_script(), 1, 1) + elif id == 4 or id == 5: + if id == 4: + offset_blocks_by_index(selected_items, -1) + else: + offset_blocks_by_index(selected_items, +1) + + elif id == 6: + var events_indexed : Dictionary + if item in selected_items: + events_indexed = get_events_indexed(selected_items) + else: + events_indexed = get_events_indexed([item]) + TimelineUndoRedo.create_action("[D] Deleting 1 event.") + TimelineUndoRedo.add_do_method(delete_events_indexed.bind(events_indexed)) + TimelineUndoRedo.add_undo_method(add_events_indexed.bind(events_indexed)) + TimelineUndoRedo.commit_action() + indent_events() + + +func play_from_here(index:=-1) -> void: + if index == -1: + if not selected_items.is_empty(): + index = selected_items[0].get_index() + timeline_editor.play_timeline(index) + +func _on_right_sidebar_resized() -> void: + var _scale := DialogicUtil.get_editor_scale() + + if %RightSidebar.size.x < 160 * _scale and (not sidebar_collapsed or not _initialized): + sidebar_collapsed = true + + for section in %RightSidebar.get_node('EventContainer').get_children(): + + for con in section.get_children(): + + if con.get_child_count() == 0: + continue + + if con.get_child(0) is Label: + con.get_child(0).hide() + + elif con.get_child(0) is Button: + + for button in con.get_children(): + button.toggle_name(false) + + + elif %RightSidebar.size.x > 160 * _scale and (sidebar_collapsed or not _initialized): + sidebar_collapsed = false + + for section in %RightSidebar.get_node('EventContainer').get_children(): + + for con in section.get_children(): + + if con.get_child_count() == 0: + continue + + if con.get_child(0) is Label: + con.get_child(0).show() + + elif con.get_child(0) is Button: + for button in con.get_children(): + button.toggle_name(true) + + if _initialized: + DialogicUtil.set_editor_setting("dialogic/editor/right_sidebar_width", %RightSidebar.size.x) + DialogicUtil.set_editor_setting("dialogic/editor/right_sidebar_collapsed", sidebar_collapsed) + +#endregion + + +#region SHORTCUTS +################################################################################ + +func duplicate_selected() -> void: + if len(selected_items) > 0: + var events := get_events_indexed(selected_items).values() + var at_index: int = selected_items[-1].get_index()+1 + TimelineUndoRedo.create_action("[D] Duplicate "+str(len(events))+" event(s).") + TimelineUndoRedo.add_do_method(add_events_at_index.bind(events, at_index)) + TimelineUndoRedo.add_undo_method(delete_events_at_index.bind(at_index, len(events))) + TimelineUndoRedo.commit_action() + + +func _input(event:InputEvent) -> void: + if event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_LEFT and event.pressed == false: + drag_allowed = false + + # we protect this with is_visible_in_tree to not + # invoke a shortcut by accident + if !((event is InputEventKey or !event is InputEventWithModifiers) and is_visible_in_tree()): + return + + + if "pressed" in event: + if !event.pressed: + return + + + ## Some shortcuts should always work + match event.as_text(): + "Ctrl+T": # Add text event + _add_event_button_pressed(DialogicTextEvent.new(), true) + get_viewport().set_input_as_handled() + + "Ctrl+Shift+T", "Ctrl+Alt+T", "Ctrl+Option+T": # Add text event with current or previous character + get_viewport().set_input_as_handled() + var ev := DialogicTextEvent.new() + ev.character = get_previous_character(event.as_text() == "Ctrl+Alt+T" or event.as_text() == "Ctrl+Option+T") + _add_event_button_pressed(ev, true) + + "Ctrl+E": # Add character join event + _add_event_button_pressed(DialogicCharacterEvent.new(), true) + get_viewport().set_input_as_handled() + + "Ctrl+Shift+E": # Add character update event + var ev := DialogicCharacterEvent.new() + ev.action = DialogicCharacterEvent.Actions.UPDATE + _add_event_button_pressed(ev, true) + get_viewport().set_input_as_handled() + + "Ctrl+Alt+E", "Ctrl+Option+E": # Add character leave event + var ev := DialogicCharacterEvent.new() + ev.action = DialogicCharacterEvent.Actions.LEAVE + _add_event_button_pressed(ev, true) + get_viewport().set_input_as_handled() + + "Ctrl+J": # Add jump event + _add_event_button_pressed(DialogicJumpEvent.new(), true) + get_viewport().set_input_as_handled() + "Ctrl+L": # Add label event + _add_event_button_pressed(DialogicLabelEvent.new(), true) + get_viewport().set_input_as_handled() + + "Ctrl+F6" when OS.get_name() != "macOS": # Play from here + play_from_here() + "Ctrl+Shift+B" when OS.get_name() == "macOS": # Play from here + play_from_here() + + ## Some shortcuts should be disabled when writing text. + var focus_owner: Control = get_viewport().gui_get_focus_owner() + if focus_owner is TextEdit or focus_owner is LineEdit or (focus_owner is Button and focus_owner.get_parent_control().name == "Spin"): + return + + match event.as_text(): + "Ctrl+Z": # UNDO + TimelineUndoRedo.undo() + indent_events() + get_viewport().set_input_as_handled() + + "Ctrl+Shift+Z", "Ctrl+Y": # REDO + TimelineUndoRedo.redo() + indent_events() + get_viewport().set_input_as_handled() + + "Up": #select previous + if (len(selected_items) == 1): + var prev := maxi(0, selected_items[0].get_index() - 1) + var prev_node := %Timeline.get_child(prev) + if (prev_node != selected_items[0]): + selected_items = [] + select_item(prev_node) + get_viewport().set_input_as_handled() + + "Down": #select next + if (len(selected_items) == 1): + var next := mini(%Timeline.get_child_count() - 1, selected_items[0].get_index() + 1) + var next_node := %Timeline.get_child(next) + if (next_node != selected_items[0]): + selected_items = [] + select_item(next_node) + get_viewport().set_input_as_handled() + + "Delete": + if (len(selected_items) != 0): + var events_indexed := get_events_indexed(selected_items) + TimelineUndoRedo.create_action("[D] Deleting "+str(len(selected_items))+" event(s).") + TimelineUndoRedo.add_do_method(delete_events_indexed.bind(events_indexed)) + TimelineUndoRedo.add_undo_method(add_events_indexed.bind(events_indexed)) + TimelineUndoRedo.commit_action() + get_viewport().set_input_as_handled() + + "Ctrl+A": # select all + if (len(selected_items) != 0): + select_all_items() + get_viewport().set_input_as_handled() + + "Ctrl+Shift+A": # deselect all + if (len(selected_items) != 0): + deselect_all_items() + get_viewport().set_input_as_handled() + + "Ctrl+C": + select_events_indexed(get_events_indexed(selected_items)) + copy_selected_events() + get_viewport().set_input_as_handled() + + "Ctrl+V": + var events_list := get_clipboard_data() + var paste_position := 0 + if selected_items: + paste_position = selected_items[-1].get_index()+1 + else: + paste_position = %Timeline.get_child_count() + if events_list: + TimelineUndoRedo.create_action("[D] Pasting "+str(len(events_list))+" event(s).") + TimelineUndoRedo.add_do_method(add_events_at_index.bind(events_list, paste_position)) + TimelineUndoRedo.add_undo_method(delete_events_at_index.bind(paste_position, len(events_list))) + TimelineUndoRedo.commit_action() + get_viewport().set_input_as_handled() + + + "Ctrl+X": + var events_indexed := get_events_indexed(selected_items) + TimelineUndoRedo.create_action("[D] Cut "+str(len(selected_items))+" event(s).") + TimelineUndoRedo.add_do_method(cut_events_indexed.bind(events_indexed)) + TimelineUndoRedo.add_undo_method(add_events_indexed.bind(events_indexed)) + TimelineUndoRedo.commit_action() + get_viewport().set_input_as_handled() + + "Ctrl+D": + duplicate_selected() + get_viewport().set_input_as_handled() + + "Alt+Up", "Option+Up": + if len(selected_items) > 0: + offset_blocks_by_index(selected_items, -1) + + get_viewport().set_input_as_handled() + + "Alt+Down", "Option+Down": + if len(selected_items) > 0: + offset_blocks_by_index(selected_items, +1) + + get_viewport().set_input_as_handled() + + +func get_previous_character(double_previous := false) -> DialogicCharacter: + var character: DialogicCharacter = null + var idx: int = %Timeline.get_child_count() + if idx == 0: + return null + if len(selected_items): + idx = selected_items[0].get_index() + var one_skipped := false + idx += 1 + for i in range(selected_items[0].get_index()+1): + idx -= 1 + if !('resource' in %Timeline.get_child(idx) and 'character' in %Timeline.get_child(idx).resource): + continue + if %Timeline.get_child(idx).resource.character == null: + continue + if double_previous: + if %Timeline.get_child(idx).resource.character == character: + continue + if character != null: + if one_skipped: + one_skipped = false + else: + character = %Timeline.get_child(idx).resource.character + break + character = %Timeline.get_child(idx).resource.character + else: + character = %Timeline.get_child(idx).resource.character + break + return character + +#endregion + +#region SEARCH +################################################################################ + +var search_results := {} +func _search_timeline(search_text:String, match_case := false, whole_words := false) -> bool: + var flags := 0 + if match_case: + flags = flags | TextEdit.SEARCH_MATCH_CASE + if whole_words: + flags = flags | TextEdit.SEARCH_WHOLE_WORDS + + search_results.clear() + + # This checks all text events for whether they contain the text. + # If so, the text field is stored in search_results + # which is later used to navigate through only the relevant text fields. + + for block in %Timeline.get_children(): + if block.resource is DialogicTextEvent: + var text_field: TextEdit = block.get_field_node("text") + + text_field.deselect() + text_field.set_search_text(search_text) + text_field.set_search_flags(flags) + + if text_field.search(search_text, flags, 0, 0).x != -1: + search_results[block] = text_field + + text_field.queue_redraw() + + set_meta("current_search", search_text) + set_meta("current_search_flags", flags) + + search_navigate(false) + + return not search_results.is_empty() + + +func _search_navigate_down() -> void: + search_navigate(false) + + +func _search_navigate_up() -> void: + search_navigate(true) + + +func search_navigate(navigate_up := false) -> void: + var next_pos := get_next_search_position(navigate_up) + if next_pos: + var event: Node = next_pos[0] + var field: TextEdit = next_pos[1] + var result: Vector2i = next_pos[2] + if not event in selected_items: + select_item(next_pos[0], false) + %TimelineArea.ensure_control_visible(event) + event._on_ToggleBodyVisibility_toggled(true) + field.call_deferred("select", result.y, result.x, result.y, result.x+len(get_meta("current_search"))) + + +func get_next_search_position(navigate_up:= false, include_current := false) -> Array: + var search_text: String = get_meta("current_search", "") + var search_flags: int = get_meta("current_search_flags", 0) + + if search_results.is_empty() or %Timeline.get_child_count() == 0: + return [] + + # We start the search on the selected item, + # so these checks make sure something sensible is selected + + # Try to select the event that has focus + if get_viewport().gui_get_focus_owner() is TextEdit and get_viewport().gui_get_focus_owner() is DialogicVisualEditorField: + select_item(get_viewport().gui_get_focus_owner().event_resource.editor_node, false) + get_viewport().gui_get_focus_owner().deselect() + + # Select the first event if nothing is selected + if selected_items.is_empty(): + select_item(search_results.keys()[0], false) + + # Loop to the next event that where something was found + if not selected_items[0] in search_results: + var index: int = selected_items[0].get_index() + while not %Timeline.get_child(index) in search_results: + index = wrapi(index+1, 0, %Timeline.get_child_count()-1) + select_item(%Timeline.get_child(index), false) + + + var event: Node = selected_items[0] + var counter := 0 + var first := true + while true: + counter += 1 + var field: TextEdit = search_results[event] + field.queue_redraw() + + # First locates the next result in this field + var result := search_text_field(field, search_text, search_flags, navigate_up, first and include_current) + var current_line := field.get_selection_from_line() if field.has_selection() else -1 + var current_column := field.get_selection_from_column() if field.has_selection() else -1 + + first = false + + # Determines if the found result is valid or navigation should continue into the next event + var next_is_in_this_event := false + if result.y == -1: + next_is_in_this_event = false + elif navigate_up: + if current_line == -1: + current_line = field.get_line_count()-1 + current_column = field.get_line(current_line).length() + next_is_in_this_event = result.x < current_column or result.y < current_line + elif include_current: + next_is_in_this_event = true + else: + next_is_in_this_event = result.x > current_column or result.y > current_line + + # If the next result was found return it + if next_is_in_this_event: + return [event, field, result] + + # Otherwise deselct this field and continue in the next/previous + field.deselect() + var index := search_results.keys().find(event) + event = search_results.keys()[wrapi(index+(-1 if navigate_up else 1), 0, search_results.size())] + + if counter > 5: + print("[Dialogic] Search failed.") + break + return [] + + +func search_text_field(field:TextEdit, search_text := "", flags:= 0, navigate_up:= false, include_current := false) -> Vector2i: + var search_from_line: int = 0 + var search_from_column: int = 0 + if field.has_selection(): + if navigate_up: + search_from_line = field.get_selection_from_line() + search_from_column = field.get_selection_from_column()-1 + if search_from_column == -1: + search_from_line -= 1 + if search_from_line == -1: + return Vector2i(-1, -1) + search_from_column = field.get_line(search_from_line).length()-1 + elif include_current: + search_from_line = field.get_selection_from_line() + search_from_column = field.get_selection_from_column() + else: + search_from_line = field.get_selection_to_line() + search_from_column = field.get_selection_to_column() + else: + if navigate_up: + search_from_line = field.get_line_count()-1 + search_from_column = field.get_line(search_from_line).length()-1 + + if navigate_up: + flags = flags | TextEdit.SEARCH_BACKWARDS + + var search := field.search(search_text, flags, search_from_line, search_from_column) + return search + + +func replace(replace_text:String) -> void: + var next_pos := get_next_search_position(false, true) + var event: Node = next_pos[0] + var field: TextEdit = next_pos[1] + var result: Vector2i = next_pos[2] + + if field.has_selection(): + field.set_caret_column(field.get_selection_from_column()) + field.set_caret_line(field.get_selection_from_line()) + + field.begin_complex_operation() + field.insert_text("@@", result.y, result.x) + if get_meta("current_search_flags") & TextEdit.SEARCH_MATCH_CASE: + field.text = field.text.replace("@@"+get_meta("current_search"), replace_text) + else: + field.text = field.text.replacen("@@"+get_meta("current_search"), replace_text) + field.end_complex_operation() + + timeline_editor.replace_in_timeline() + + +func replace_all(replace_text:String) -> void: + var next_pos := get_next_search_position() + if not next_pos: + return + var event: Node = next_pos[0] + var field: TextEdit = next_pos[1] + var result: Vector2i = next_pos[2] + field.begin_complex_operation() + while next_pos: + event = next_pos[0] + if field != next_pos[1]: + field.end_complex_operation() + field = next_pos[1] + field.begin_complex_operation() + result = next_pos[2] + + if field.has_selection(): + field.set_caret_column(field.get_selection_from_column()) + field.set_caret_line(field.get_selection_from_line()) + + field.insert_text("@@", result.y, result.x) + if get_meta("current_search_flags") & TextEdit.SEARCH_MATCH_CASE: + field.text = field.text.replace("@@"+get_meta("current_search"), replace_text) + else: + field.text = field.text.replacen("@@"+get_meta("current_search"), replace_text) + + next_pos = get_next_search_position() + field.end_complex_operation() + timeline_editor.replace_in_timeline() + +#endregion diff --git a/addons/dialogic/Editor/TimelineEditor/VisualEditor/timeline_editor_visual.gd.uid b/addons/dialogic/Editor/TimelineEditor/VisualEditor/timeline_editor_visual.gd.uid new file mode 100644 index 0000000..2700172 --- /dev/null +++ b/addons/dialogic/Editor/TimelineEditor/VisualEditor/timeline_editor_visual.gd.uid @@ -0,0 +1 @@ +uid://cvgok7bxva5e2 diff --git a/addons/dialogic/Editor/TimelineEditor/VisualEditor/timeline_editor_visual.tscn b/addons/dialogic/Editor/TimelineEditor/VisualEditor/timeline_editor_visual.tscn new file mode 100644 index 0000000..34f9b5c --- /dev/null +++ b/addons/dialogic/Editor/TimelineEditor/VisualEditor/timeline_editor_visual.tscn @@ -0,0 +1,116 @@ +[gd_scene load_steps=10 format=3 uid="uid://ysqbusmy0qma"] + +[ext_resource type="Script" uid="uid://cvgok7bxva5e2" path="res://addons/dialogic/Editor/TimelineEditor/VisualEditor/timeline_editor_visual.gd" id="1_8smxc"] +[ext_resource type="Theme" uid="uid://cqst728xxipcw" path="res://addons/dialogic/Editor/Theme/MainTheme.tres" id="2_x0fhp"] +[ext_resource type="Script" uid="uid://b6ka2avnh1u55" path="res://addons/dialogic/Editor/TimelineEditor/VisualEditor/TimelineArea.gd" id="3_sap1x"] +[ext_resource type="Script" uid="uid://n1knm2ohcehu" path="res://addons/dialogic/Editor/Events/EventBlock/event_right_click_menu.gd" id="4_ugiq6"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_phyjj"] +content_margin_top = 10.0 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_6gqu8"] +bg_color = Color(0, 0, 0, 1) + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_jujwh"] +content_margin_left = 4.0 +content_margin_top = 4.0 +content_margin_right = 4.0 +content_margin_bottom = 4.0 +bg_color = Color(1, 0.365, 0.365, 1) +draw_center = false +border_width_left = 2 +border_width_top = 2 +border_width_right = 2 +border_width_bottom = 2 +corner_detail = 1 + +[sub_resource type="Image" id="Image_3temo"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_xe7d2"] +image = SubResource("Image_3temo") + +[node name="TimelineVisualEditor" type="MarginContainer"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/margin_left = 5 +theme_override_constants/margin_right = 5 +theme_override_constants/margin_bottom = 5 +script = ExtResource("1_8smxc") + +[node name="View" type="HSplitContainer" parent="."] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme = ExtResource("2_x0fhp") + +[node name="TimelineArea" type="ScrollContainer" parent="View"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_override_styles/panel = SubResource("StyleBoxEmpty_phyjj") +script = ExtResource("3_sap1x") + +[node name="Timeline" type="VBoxContainer" parent="View/TimelineArea"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="EventPopupMenu" type="PopupMenu" parent="View/TimelineArea"] +unique_name_in_owner = true +size = Vector2i(165, 124) +theme_override_styles/panel = SubResource("StyleBoxFlat_6gqu8") +theme_override_styles/hover = SubResource("StyleBoxFlat_jujwh") +item_count = 9 +item_0/text = "Duplicate" +item_0/icon = SubResource("ImageTexture_xe7d2") +item_1/id = -1 +item_1/separator = true +item_2/text = "Documentation" +item_2/icon = SubResource("ImageTexture_xe7d2") +item_2/id = 2 +item_3/text = "Open Code" +item_3/icon = SubResource("ImageTexture_xe7d2") +item_3/id = 3 +item_4/id = -1 +item_4/separator = true +item_5/text = "Move up" +item_5/icon = SubResource("ImageTexture_xe7d2") +item_5/id = 5 +item_6/text = "Move down" +item_6/icon = SubResource("ImageTexture_xe7d2") +item_6/id = 6 +item_7/id = -1 +item_7/separator = true +item_8/text = "Delete" +item_8/icon = SubResource("ImageTexture_xe7d2") +item_8/id = 8 +script = ExtResource("4_ugiq6") + +[node name="RightSidebar" type="ScrollContainer" parent="View"] +unique_name_in_owner = true +custom_minimum_size = Vector2(50, 0) +layout_mode = 2 +size_flags_stretch_ratio = 0.2 +horizontal_scroll_mode = 0 + +[node name="EventContainer" type="VBoxContainer" parent="View/RightSidebar"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +size_flags_stretch_ratio = 0.2 + +[connection signal="drag_completed" from="View/TimelineArea" to="." method="_on_timeline_area_drag_completed"] +[connection signal="id_pressed" from="View/TimelineArea/EventPopupMenu" to="." method="_on_event_popup_menu_id_pressed"] +[connection signal="resized" from="View/RightSidebar" to="." method="_on_right_sidebar_resized"] diff --git a/addons/dialogic/Editor/TimelineEditor/shortcut_popup.gd b/addons/dialogic/Editor/TimelineEditor/shortcut_popup.gd new file mode 100644 index 0000000..5661d09 --- /dev/null +++ b/addons/dialogic/Editor/TimelineEditor/shortcut_popup.gd @@ -0,0 +1,118 @@ +@tool +extends PanelContainer + + +var shortcuts := [ + + {"shortcut":"Ctrl+T", "text":"Add Text event", "editor":"VisualEditor"}, + {"shortcut":"Ctrl+Shift+T", "text":"Add Text event with current character", "editor":"VisualEditor"}, + {"shortcut":"Ctrl+Alt/Opt+T", "text":"Add Text event with previous character", "editor":"VisualEditor"}, + {"shortcut":"Ctrl+E", "text":"Add Character join event", "editor":"VisualEditor"}, + {"shortcut":"Ctrl+Shift+E", "text":"Add Character update event", "editor":"VisualEditor"}, + {"shortcut":"Ctrl+Alt/Opt+E", "text":"Add Character leave event", "editor":"VisualEditor"}, + {"shortcut":"Ctrl+J", "text":"Add Jump event", "editor":"VisualEditor"}, + {"shortcut":"Ctrl+L", "text":"Add Label event", "editor":"VisualEditor"}, + {}, + {"shortcut":"Alt/Opt+Up", "text":"Move selected events/lines up"}, + {"shortcut":"Alt/Opt+Down", "text":"Move selected events/lines down"}, + {}, + {"shortcut":"Ctrl+F", "text":"Search"}, + {"shortcut":"Ctrl+R", "text":"Replace"}, + {}, + {"shortcut":"Ctrl+F5", "text":"Play timeline", "platform":"-macOS"}, + {"shortcut":"Ctrl+B", "text":"Play timeline", "platform":"macOS"}, + {"shortcut":"Ctrl+F6", "text":"Play timeline from here", "platform":"-macOS"}, + {"shortcut":"Ctrl+Shift+B", "text":"Play timeline from here", "platform":"macOS"}, + + {}, + {"shortcut":"Ctrl+C", "text":"Copy"}, + {"shortcut":"Ctrl+V", "text":"Paste"}, + {"shortcut":"Ctrl+D", "text":"Duplicate selected events/lines"}, + {"shortcut":"Ctrl+X", "text":"Cut selected events/lines"}, + {"shortcut":"Ctrl+K", "text":"Toggle Comment" , "editor":"TextEditor"}, + {"shortcut":"Delete", "text":"Delete events", "editor":"VisualEditor"}, + {}, + {"shortcut":"Ctrl+A", "text":"Select All"}, + {"shortcut":"Ctrl+Shift+A", "text":"Select Nothing", "editor":"VisualEditor"}, + {"shortcut":"Up", "text":"Select previous event", "editor":"VisualEditor"}, + {"shortcut":"Down", "text":"Select next event", "editor":"VisualEditor"}, + {}, + {"shortcut":"Ctrl+Z", "text":"Undo"}, + {"shortcut":"Ctrl+Shift+Z", "text":"Redo"}, + {}, +] + + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + %CloseShortcutPanel.icon = get_theme_icon("Close", "EditorIcons") + get_theme_stylebox("panel").bg_color = get_theme_color("dark_color_3", "Editor") + + +func reload_shortcuts() -> void: + for i in %ShortcutList.get_children(): + i.queue_free() + + var is_text_editor: bool = %TextEditor.visible + for i in shortcuts: + if i.is_empty(): + %ShortcutList.add_child(HSeparator.new()) + %ShortcutList.add_child(HSeparator.new()) + continue + + if "editor" in i and not get_node("%"+i.editor).visible: + continue + + if "platform" in i: + var platform := OS.get_name() + if not (platform == i.platform.trim_prefix("-") != i.platform.begins_with("-")): + continue + + var hbox := HBoxContainer.new() + hbox.add_theme_constant_override("separation", 0) + for key_text in i.shortcut.split("+"): + if hbox.get_child_count(): + var plus_l := Label.new() + plus_l.text = "+" + hbox.add_child(plus_l) + + var key := Button.new() + if key_text == "Up": + key.icon = get_theme_icon("ArrowUp", "EditorIcons") + elif key_text == "Down": + key.icon = get_theme_icon("ArrowDown", "EditorIcons") + else: + key_text = key_text.replace("Alt/Opt", "Opt" if OS.get_name() == "macOS" else "Alt") + key.text = key_text + key.disabled = true + key.theme_type_variation = "ShortcutKeyLabel" + key.add_theme_font_override("font", get_theme_font("source", "EditorFonts")) + hbox.add_child(key) + + %ShortcutList.add_child(hbox) + + var text := Label.new() + text.text = i.text.replace("events/lines", "lines" if is_text_editor else "events") + text.theme_type_variation = "DialogicHintText2" + %ShortcutList.add_child(text) + + +func open(): + if visible: + close() + return + reload_shortcuts() + + show() + await get_tree().process_frame + size = get_parent().size - Vector2(100, 100)*DialogicUtil.get_editor_scale() + size.x = %ShortcutList.get_minimum_size().x + 100 + size.y = min(size.y, %ShortcutList.get_minimum_size().y+100) + global_position = get_parent().global_position+get_parent().size/2-size/2 + + +func _on_close_shortcut_panel_pressed() -> void: + close() + +func close() -> void: + hide() diff --git a/addons/dialogic/Editor/TimelineEditor/shortcut_popup.gd.uid b/addons/dialogic/Editor/TimelineEditor/shortcut_popup.gd.uid new file mode 100644 index 0000000..1ab0805 --- /dev/null +++ b/addons/dialogic/Editor/TimelineEditor/shortcut_popup.gd.uid @@ -0,0 +1 @@ +uid://b35hvsvrvjjl4 diff --git a/addons/dialogic/Editor/TimelineEditor/test_timeline_scene.gd b/addons/dialogic/Editor/TimelineEditor/test_timeline_scene.gd new file mode 100644 index 0000000..2a907a1 --- /dev/null +++ b/addons/dialogic/Editor/TimelineEditor/test_timeline_scene.gd @@ -0,0 +1,44 @@ +extends Control + +func _ready() -> void: + print("[Dialogic] Testing scene was started.") + if not ProjectSettings.get_setting('internationalization/locale/test', "").is_empty(): + print("Testing locale is: ", ProjectSettings.get_setting('internationalization/locale/test')) + $PauseIndictator.hide() + + var scene: Node = DialogicUtil.autoload().Styles.load_style(DialogicUtil.get_editor_setting('current_test_style', '')) + if not scene is CanvasLayer: + if scene is Control: + scene.position = get_viewport_rect().size/2.0 + if scene is Node2D: + scene.position = get_viewport_rect().size/2.0 + + randomize() + var current_timeline: String = DialogicUtil.get_editor_setting("current_timeline_path", "") + var start_from_index: int = DialogicUtil.get_editor_setting("play_from_index", -1) + if not current_timeline: + get_tree().quit() + DialogicUtil.autoload().start(current_timeline, start_from_index) + DialogicUtil.autoload().timeline_ended.connect(get_tree().quit) + DialogicUtil.autoload().signal_event.connect(receive_event_signal) + DialogicUtil.autoload().text_signal.connect(receive_text_signal) + +func receive_event_signal(argument:Variant) -> void: + print("[Dialogic] Encountered a signal event: ", argument) + +func receive_text_signal(argument:String) -> void: + print("[Dialogic] Encountered a signal in text: ", argument) + +func _input(event:InputEvent) -> void: + if event is InputEventKey and event.pressed and event.keycode == KEY_ESCAPE: + DialogicUtil.autoload().paused = !DialogicUtil.autoload().paused + $PauseIndictator.visible = DialogicUtil.autoload().paused + + if (event is InputEventMouseButton + and event.is_pressed() + and event.button_index == MOUSE_BUTTON_MIDDLE): + var auto_skip: DialogicAutoSkip = DialogicUtil.autoload().Inputs.auto_skip + var is_auto_skip_enabled := auto_skip.enabled + + auto_skip.disable_on_unread_text = false + auto_skip.enabled = not is_auto_skip_enabled diff --git a/addons/dialogic/Editor/TimelineEditor/test_timeline_scene.gd.uid b/addons/dialogic/Editor/TimelineEditor/test_timeline_scene.gd.uid new file mode 100644 index 0000000..800625b --- /dev/null +++ b/addons/dialogic/Editor/TimelineEditor/test_timeline_scene.gd.uid @@ -0,0 +1 @@ +uid://cbq0n68r4pwu7 diff --git a/addons/dialogic/Editor/TimelineEditor/test_timeline_scene.tscn b/addons/dialogic/Editor/TimelineEditor/test_timeline_scene.tscn new file mode 100644 index 0000000..ed877d5 --- /dev/null +++ b/addons/dialogic/Editor/TimelineEditor/test_timeline_scene.tscn @@ -0,0 +1,25 @@ +[gd_scene load_steps=2 format=3 uid="uid://ud18ke1g2nw4"] + +[ext_resource type="Script" uid="uid://cbq0n68r4pwu7" path="res://addons/dialogic/Editor/TimelineEditor/test_timeline_scene.gd" id="1_bamud"] + +[node name="TestTimelineScene" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_bamud") + +[node name="PauseIndictator" type="Label" parent="."] +layout_mode = 1 +anchors_preset = 1 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = -65.0 +offset_top = 7.0 +offset_right = -8.0 +offset_bottom = 33.0 +grow_horizontal = 0 +text = "Paused" +metadata/_edit_layout_mode = 1 diff --git a/addons/dialogic/Editor/TimelineEditor/timeline_editor.gd b/addons/dialogic/Editor/TimelineEditor/timeline_editor.gd new file mode 100644 index 0000000..fec801e --- /dev/null +++ b/addons/dialogic/Editor/TimelineEditor/timeline_editor.gd @@ -0,0 +1,321 @@ +@tool +extends DialogicEditor + +## Editor that holds both the visual and the text timeline editors. + +# references +enum EditorMode {VISUAL, TEXT} + +var current_editor_mode := EditorMode.VISUAL +var play_timeline_button: Button = null + + +## Overwrite. Register to the editor manager in here. +func _register() -> void: + resource_unsaved.connect(_on_resource_unsaved) + resource_saved.connect(_on_resource_saved) + + # register editor + editors_manager.register_resource_editor('dtl', self) + # add timeline button + var add_timeline_button: Button = editors_manager.add_icon_button( + load("res://addons/dialogic/Editor/Images/Toolbar/add-timeline.svg"), + "Add Timeline", + self) + add_timeline_button.pressed.connect(_on_create_timeline_button_pressed) + add_timeline_button.shortcut = Shortcut.new() + add_timeline_button.shortcut.events.append(InputEventKey.new()) + add_timeline_button.shortcut.events[0].keycode = KEY_1 + add_timeline_button.shortcut.events[0].ctrl_pressed = true + # play timeline button + play_timeline_button = editors_manager.add_custom_button( + "Play Timeline", + get_theme_icon("PlayScene", "EditorIcons"), + self) + play_timeline_button.pressed.connect(play_timeline) + play_timeline_button.tooltip_text = "Play the current timeline (CTRL+F5)" + if OS.get_name() == "macOS": + play_timeline_button.tooltip_text = "Play the current timeline (CTRL+B)" + + %VisualEditor.load_event_buttons() + + current_editor_mode = DialogicUtil.get_editor_setting('timeline_editor_mode', 0) + + match current_editor_mode: + EditorMode.VISUAL: + %VisualEditor.show() + %TextEditor.hide() + %SwitchEditorMode.text = "Text Editor" + EditorMode.TEXT: + %VisualEditor.hide() + %TextEditor.show() + %SwitchEditorMode.text = "Visual Editor" + + $NoTimelineScreen.show() + play_timeline_button.disabled = true + + +func _get_title() -> String: + return "Timeline" + + +func _get_icon() -> Texture: + return get_theme_icon("TripleBar", "EditorIcons") + + +## If this editor supports editing resources, load them here (overwrite in subclass) +func _open_resource(resource:Resource) -> void: + current_resource = resource + current_resource_state = ResourceStates.SAVED + match current_editor_mode: + EditorMode.VISUAL: + %VisualEditor.load_timeline(current_resource) + EditorMode.TEXT: + %TextEditor.load_timeline(current_resource) + $NoTimelineScreen.hide() + %TimelineName.text = current_resource.get_identifier() + play_timeline_button.disabled = false + + +## If this editor supports editing resources, save them here (overwrite in subclass) +func _save() -> void: + match current_editor_mode: + EditorMode.VISUAL: + %VisualEditor.save_timeline() + EditorMode.TEXT: + %TextEditor.save_timeline() + + +func _input(event: InputEvent) -> void: + if event is InputEventKey: + var keycode := KEY_F5 + if OS.get_name() == "macOS": + keycode = KEY_B + if event.keycode == keycode and event.pressed: + if Input.is_key_pressed(KEY_CTRL): + play_timeline() + + if event.keycode == KEY_F and event.pressed: + if Input.is_key_pressed(KEY_CTRL): + if is_ancestor_of(get_viewport().gui_get_focus_owner()): + search_timeline() + + if event.keycode == KEY_R and event.pressed: + if Input.is_key_pressed(KEY_CTRL): + if is_ancestor_of(get_viewport().gui_get_focus_owner()): + replace_in_timeline(true) + +## Method to play the current timeline. Connected to the button in the sidebar. +func play_timeline(index := -1) -> void: + _save() + + var dialogic_plugin := DialogicUtil.get_dialogic_plugin() + + # Save the current opened timeline + DialogicUtil.set_editor_setting('current_timeline_path', current_resource.resource_path) + DialogicUtil.set_editor_setting('play_from_index', index) + DialogicUtil.get_dialogic_plugin().get_editor_interface().play_custom_scene("res://addons/dialogic/Editor/TimelineEditor/test_timeline_scene.tscn") + + +## Method to switch from visual to text editor (and vice versa). Connected to the button in the sidebar. +func toggle_editor_mode() -> void: + match current_editor_mode: + EditorMode.VISUAL: + current_editor_mode = EditorMode.TEXT + if %VisualEditor.is_loading_timeline(): + %VisualEditor.cancel_loading() + else: + %VisualEditor.save_timeline() + %VisualEditor.hide() + %TextEditor.show() + %TextEditor.load_timeline(current_resource) + %SwitchEditorMode.text = "Visual Editor" + _on_search_text_changed(%Search.text) + EditorMode.TEXT: + _on_search_text_changed.bind("") + current_editor_mode = EditorMode.VISUAL + %TextEditor.save_timeline() + %TextEditor.hide() + %VisualEditor.load_timeline(current_resource) + %VisualEditor.show() + %SwitchEditorMode.text = "Text Editor" + if not %VisualEditor.timeline_loaded.is_connected(_on_search_text_changed): + %VisualEditor.timeline_loaded.connect(_on_search_text_changed.bind(%Search.text), CONNECT_ONE_SHOT) + DialogicUtil.set_editor_setting('timeline_editor_mode', current_editor_mode) + + +func _on_resource_unsaved() -> void: + if current_resource: + current_resource.set_meta("timeline_not_saved", true) + + +func _on_resource_saved() -> void: + if current_resource: + current_resource.set_meta("timeline_not_saved", false) + + +func new_timeline(path:String) -> void: + _save() + var new_timeline := DialogicTimeline.new() + if not path.ends_with(".dtl"): + path = path.trim_suffix(".") + path += ".dtl" + new_timeline.resource_path = path + new_timeline.set_meta('timeline_not_saved', true) + var err := ResourceSaver.save(new_timeline) + EditorInterface.get_resource_filesystem().update_file(new_timeline.resource_path) + DialogicResourceUtil.update_directory('dtl') + editors_manager.edit_resource(new_timeline) + + +func update_audio_channel_cache(list:PackedStringArray) -> void: + var timeline_directory := DialogicResourceUtil.get_timeline_directory() + var channel_directory := DialogicResourceUtil.get_audio_channel_cache() + if current_resource != null: + for i in timeline_directory: + if timeline_directory[i] == current_resource.resource_path: + channel_directory[i] = list + + # also always store the current timelines channels for easy access + channel_directory[""] = list + + DialogicResourceUtil.set_audio_channel_cache(channel_directory) + + +func _ready() -> void: + $NoTimelineScreen.add_theme_stylebox_override("panel", get_theme_stylebox("Background", "EditorStyles")) + + # switch editor mode button + %SwitchEditorMode.text = "Text editor" + %SwitchEditorMode.icon = get_theme_icon("ArrowRight", "EditorIcons") + %SwitchEditorMode.pressed.connect(toggle_editor_mode) + %SwitchEditorMode.custom_minimum_size.x = 200 * DialogicUtil.get_editor_scale() + + %Shortcuts.icon = get_theme_icon("InputEventShortcut", "EditorIcons") + %Shortcuts.pressed.connect(%ShortcutsPanel.open) + + %SearchClose.icon = get_theme_icon("Close", "EditorIcons") + %SearchUp.icon = get_theme_icon("MoveUp", "EditorIcons") + %SearchDown.icon = get_theme_icon("MoveDown", "EditorIcons") + + %ReplaceGlobal.icon = get_theme_icon("ExternalLink", "EditorIcons") + + %ProgressSection.hide() + + %SearchReplaceSection.hide() + %SearchReplaceSection.add_theme_stylebox_override("panel", get_theme_stylebox("PanelForeground", "EditorStyles")) + + +func _on_create_timeline_button_pressed() -> void: + editors_manager.show_add_resource_dialog( + new_timeline, + '*.dtl; DialogicTimeline', + 'Create new timeline', + 'timeline', + ) + + +func _clear() -> void: + current_resource = null + current_resource_state = ResourceStates.SAVED + match current_editor_mode: + EditorMode.VISUAL: + %VisualEditor.clear_timeline_nodes() + EditorMode.TEXT: + %TextEditor.clear_timeline() + $NoTimelineScreen.show() + play_timeline_button.disabled = true + + +func get_current_editor() -> Node: + if current_editor_mode == 1: + return %TextEditor + return %VisualEditor + +#region SEARCH + +func search_timeline() -> void: + %SearchReplaceSection.show() + %SearchSection.show() + %ReplaceSection.hide() + if get_viewport().gui_get_focus_owner() is TextEdit: + if get_viewport().gui_get_focus_owner().get_selected_text(): + %Search.text = get_viewport().gui_get_focus_owner().get_selected_text() + _on_search_text_changed(%Search.text) + %Search.grab_focus() + + +func _on_close_search_pressed() -> void: + %SearchReplaceSection.hide() + %Search.text = "" + _on_search_text_changed('') + + +func _on_search_text_changed(new_text: String) -> void: + var editor: Node = null + var anything_found: bool = get_current_editor()._search_timeline(new_text, %MatchCase.button_pressed, %WholeWords.button_pressed) + if anything_found or new_text.is_empty(): + %SearchLabel.hide() + %Search.add_theme_color_override("font_color", get_theme_color("font_color", "Editor")) + else: + %SearchLabel.show() + %SearchLabel.add_theme_color_override("font_color", get_theme_color("error_color", "Editor")) + %Search.add_theme_color_override("font_color", get_theme_color("error_color", "Editor")) + %SearchLabel.text = "No Match" + + +func _on_search_down_pressed() -> void: + get_current_editor()._search_navigate_down() + + +func _on_search_up_pressed() -> void: + get_current_editor()._search_navigate_up() + + +func _on_match_case_toggled(toggled_on: bool) -> void: + _on_search_text_changed(%Search.text) + + +func _on_whole_words_toggled(toggled_on: bool) -> void: + _on_search_text_changed(%Search.text) + + +#endregion + + +#region REPLACE + +func replace_in_timeline(focus_grab:=false) -> void: + search_timeline() + %ReplaceSection.show() + if focus_grab: + %ReplaceText.grab_focus() + %ReplaceText.select_all() + + +func _on_replace_button_pressed() -> void: + get_current_editor().replace(%ReplaceText.text) + + +func _on_replace_all_button_pressed() -> void: + get_current_editor().replace_all(%ReplaceText.text) + + +func _on_replace_global_pressed() -> void: + editors_manager.reference_manager.add_ref_change(%Search.text, %ReplaceText.text, 0, 0, [], + %WholeWords.button_pressed, %MatchCase.button_pressed) + editors_manager.reference_manager.open() + +#endregion + + +#region PROGRESS + +func set_progress(percentage:float, text := "") -> void: + %ProgressSection.visible = percentage != 1 + + %ProgressBar.value = percentage + %ProgressLabel.text = text + %ProgressLabel.visible = not text.is_empty() + +#endregion diff --git a/addons/dialogic/Editor/TimelineEditor/timeline_editor.gd.uid b/addons/dialogic/Editor/TimelineEditor/timeline_editor.gd.uid new file mode 100644 index 0000000..a8c04d2 --- /dev/null +++ b/addons/dialogic/Editor/TimelineEditor/timeline_editor.gd.uid @@ -0,0 +1 @@ +uid://x21vral0xsxy diff --git a/addons/dialogic/Editor/TimelineEditor/timeline_editor.tscn b/addons/dialogic/Editor/TimelineEditor/timeline_editor.tscn new file mode 100644 index 0000000..1816c53 --- /dev/null +++ b/addons/dialogic/Editor/TimelineEditor/timeline_editor.tscn @@ -0,0 +1,315 @@ +[gd_scene load_steps=12 format=3 uid="uid://crce0na84rhfd"] + +[ext_resource type="Script" uid="uid://x21vral0xsxy" path="res://addons/dialogic/Editor/TimelineEditor/timeline_editor.gd" id="1_4aceh"] +[ext_resource type="PackedScene" uid="uid://ysqbusmy0qma" path="res://addons/dialogic/Editor/TimelineEditor/VisualEditor/timeline_editor_visual.tscn" id="2_qs7vc"] +[ext_resource type="PackedScene" uid="uid://dbpkta2tjsqim" path="res://addons/dialogic/Editor/Common/hint_tooltip_icon.tscn" id="2_yqd26"] +[ext_resource type="PackedScene" uid="uid://defdeav8rli6o" path="res://addons/dialogic/Editor/TimelineEditor/TextEditor/timeline_editor_text.tscn" id="3_up2bn"] +[ext_resource type="Script" uid="uid://b35hvsvrvjjl4" path="res://addons/dialogic/Editor/TimelineEditor/shortcut_popup.gd" id="6_rfuk0"] + +[sub_resource type="Image" id="Image_6bv6r"] +data = { +"data": PackedByteArray(255, 93, 93, 0, 255, 93, 93, 0, 255, 93, 93, 0, 255, 93, 93, 0, 255, 93, 93, 0, 255, 93, 93, 0, 255, 93, 93, 0, 255, 93, 93, 0, 255, 93, 93, 0, 255, 93, 93, 0, 255, 92, 92, 0, 255, 92, 92, 0, 255, 92, 92, 0, 255, 92, 92, 0, 255, 92, 92, 0, 255, 92, 92, 0, 255, 93, 93, 0, 255, 93, 93, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 0, 255, 92, 92, 127, 255, 92, 92, 0, 255, 92, 92, 0, 255, 92, 92, 0, 255, 92, 92, 0, 255, 92, 92, 0, 255, 93, 93, 0, 255, 93, 93, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 0, 255, 93, 93, 255, 255, 92, 92, 127, 255, 92, 92, 0, 255, 92, 92, 0, 255, 92, 92, 0, 255, 92, 92, 0, 255, 93, 93, 0, 255, 93, 93, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 92, 92, 127, 255, 92, 92, 0, 255, 92, 92, 0, 255, 92, 92, 0, 255, 93, 93, 0, 255, 93, 93, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 92, 92, 127, 255, 92, 92, 0, 255, 92, 92, 0, 255, 93, 93, 0, 255, 93, 93, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 0, 255, 93, 93, 0, 255, 93, 93, 0, 255, 93, 93, 0, 255, 92, 92, 0, 255, 92, 92, 0, 255, 92, 92, 0, 255, 93, 93, 0, 255, 93, 93, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 0, 255, 93, 93, 0, 255, 93, 93, 0, 255, 93, 93, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 0, 255, 93, 93, 0, 255, 93, 93, 0, 255, 93, 93, 0, 255, 93, 93, 231, 255, 90, 90, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 90, 90, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 0, 255, 93, 93, 0, 255, 91, 91, 0, 255, 91, 91, 0, 255, 91, 91, 42, 255, 90, 90, 0, 255, 94, 94, 0, 255, 91, 91, 42, 255, 93, 93, 233, 255, 92, 92, 232, 255, 93, 93, 41, 255, 90, 90, 0, 255, 94, 94, 0, 255, 91, 91, 42, 255, 93, 93, 233, 255, 92, 92, 232, 255, 92, 92, 0, 255, 92, 92, 0, 255, 91, 91, 0, 255, 91, 91, 0, 255, 91, 91, 0, 255, 91, 91, 45, 255, 93, 93, 44, 255, 91, 91, 0, 255, 91, 91, 42, 255, 91, 91, 42, 255, 93, 93, 0, 255, 91, 91, 45, 255, 93, 93, 44, 255, 91, 91, 0, 255, 91, 91, 42, 255, 91, 91, 42, 255, 91, 91, 0, 255, 91, 91, 0, 255, 91, 91, 0, 255, 91, 91, 0, 255, 91, 91, 45, 255, 92, 92, 235, 255, 92, 92, 234, 255, 89, 89, 43, 255, 91, 91, 0, 255, 91, 91, 0, 255, 91, 91, 45, 255, 92, 92, 235, 255, 92, 92, 234, 255, 89, 89, 43, 255, 91, 91, 0, 255, 91, 91, 0, 255, 91, 91, 0, 255, 91, 91, 0, 255, 92, 92, 0, 255, 92, 92, 0, 255, 92, 92, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 91, 91, 59, 255, 92, 92, 61, 255, 92, 92, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 91, 91, 59, 255, 92, 92, 61, 255, 92, 92, 0, 255, 92, 92, 0, 255, 93, 93, 0, 255, 93, 93, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 0, 255, 93, 93, 0, 255, 93, 93, 0, 255, 93, 93, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 0, 255, 93, 93, 0, 255, 93, 93, 0, 255, 93, 93, 0, 255, 93, 93, 0, 255, 93, 93, 0, 255, 93, 93, 0, 255, 93, 93, 0, 255, 93, 93, 0, 255, 93, 93, 0, 255, 93, 93, 0, 255, 93, 93, 0, 255, 93, 93, 0, 255, 93, 93, 0, 255, 93, 93, 0, 255, 93, 93, 0, 255, 93, 93, 0, 255, 93, 93, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_u2118"] +image = SubResource("Image_6bv6r") + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_boacm"] +content_margin_left = 4.0 +content_margin_top = 4.0 +content_margin_right = 4.0 +content_margin_bottom = 4.0 +bg_color = Color(1, 0.365, 0.365, 1) +draw_center = false +border_width_left = 2 +border_width_top = 2 +border_width_right = 2 +border_width_bottom = 2 +corner_detail = 1 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_4bvbc"] +content_margin_left = 0.0 +content_margin_top = 0.0 +content_margin_right = 0.0 +content_margin_bottom = 0.0 +bg_color = Color(0.458405, 0.458405, 0.458405, 1) +draw_center = false +border_width_left = 1 +border_width_top = 1 +border_width_right = 1 +border_width_bottom = 1 +border_color = Color(0.370364, 0.370365, 0.370364, 1) +corner_radius_top_left = 3 +corner_radius_top_right = 3 +corner_radius_bottom_right = 3 +corner_radius_bottom_left = 3 + +[sub_resource type="Theme" id="Theme_feml8"] +HSeparator/constants/separation = 10 +ShortcutKeyLabel/base_type = &"Button" +ShortcutKeyLabel/colors/font_disabled_color = Color(1, 1, 1, 1) +ShortcutKeyLabel/colors/icon_disabled_color = Color(1, 1, 1, 1) +ShortcutKeyLabel/font_sizes/font_size = 14 +ShortcutKeyLabel/styles/disabled = SubResource("StyleBoxFlat_4bvbc") +ShortcutKeyLabel/styles/normal = SubResource("StyleBoxFlat_4bvbc") + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_j85ew"] +content_margin_left = 20.0 +content_margin_top = 20.0 +content_margin_right = 20.0 +content_margin_bottom = 20.0 +bg_color = Color(0, 0, 0, 1) +corner_radius_top_left = 20 +corner_radius_top_right = 20 +corner_radius_bottom_right = 20 +corner_radius_bottom_left = 20 +shadow_color = Color(0, 0, 0, 0.407843) +shadow_size = 15 + +[node name="Timeline" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_4aceh") + +[node name="VBox" type="VBoxContainer" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="HBox" type="HBoxContainer" parent="VBox"] +layout_mode = 2 + +[node name="TimelineName" type="Label" parent="VBox/HBox"] +unique_name_in_owner = true +layout_mode = 2 +theme_type_variation = &"DialogicTitle" +text = "Cool Name" + +[node name="NameTooltip" parent="VBox/HBox" instance=ExtResource("2_yqd26")] +layout_mode = 2 +tooltip_text = "This unique identifier is based on the file name. You can change it in the Reference Manager. +This is what you should use in a jump event to reference this timeline. + +You can also use this name in Dialogic.start()." +texture = null +hint_text = "This unique identifier is based on the file name. You can change it in the Reference Manager. +This is what you should use in a jump event to reference this timeline. + +You can also use this name in Dialogic.start()." + +[node name="SwitchEditorMode" type="Button" parent="VBox/HBox"] +unique_name_in_owner = true +custom_minimum_size = Vector2(200, 0) +layout_mode = 2 +size_flags_horizontal = 10 +size_flags_vertical = 4 +tooltip_text = "Switch between Text Editor and Visual Editor" +text = "Text editor" +icon = SubResource("ImageTexture_u2118") + +[node name="Shortcuts" type="Button" parent="VBox/HBox"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 8 +size_flags_vertical = 4 +tooltip_text = "Shortcuts" +icon = SubResource("ImageTexture_u2118") + +[node name="VisualEditor" parent="VBox" instance=ExtResource("2_qs7vc")] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 3 +theme_override_constants/margin_left = 0 +theme_override_constants/margin_top = 0 +theme_override_constants/margin_right = 0 +theme_override_constants/margin_bottom = 0 + +[node name="TextEditor" parent="VBox" instance=ExtResource("3_up2bn")] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 3 + +[node name="SearchReplaceSection" type="PanelContainer" parent="VBox"] +unique_name_in_owner = true +visible = false +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_boacm") + +[node name="VBox" type="VBoxContainer" parent="VBox/SearchReplaceSection"] +layout_mode = 2 + +[node name="SearchSection" type="HBoxContainer" parent="VBox/SearchReplaceSection/VBox"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="Search" type="LineEdit" parent="VBox/SearchReplaceSection/VBox/SearchSection"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +placeholder_text = "Search" + +[node name="SearchLabel" type="Label" parent="VBox/SearchReplaceSection/VBox/SearchSection"] +unique_name_in_owner = true +visible = false +layout_mode = 2 + +[node name="SearchUp" type="Button" parent="VBox/SearchReplaceSection/VBox/SearchSection"] +unique_name_in_owner = true +layout_mode = 2 +icon = SubResource("ImageTexture_u2118") +flat = true + +[node name="SearchDown" type="Button" parent="VBox/SearchReplaceSection/VBox/SearchSection"] +unique_name_in_owner = true +layout_mode = 2 +icon = SubResource("ImageTexture_u2118") +flat = true + +[node name="MatchCase" type="CheckBox" parent="VBox/SearchReplaceSection/VBox/SearchSection"] +unique_name_in_owner = true +layout_mode = 2 +text = "Match Case" + +[node name="WholeWords" type="CheckBox" parent="VBox/SearchReplaceSection/VBox/SearchSection"] +unique_name_in_owner = true +layout_mode = 2 +text = "Whole Words" + +[node name="SearchClose" type="Button" parent="VBox/SearchReplaceSection/VBox/SearchSection"] +unique_name_in_owner = true +layout_mode = 2 +icon = SubResource("ImageTexture_u2118") +flat = true + +[node name="ReplaceSection" type="HBoxContainer" parent="VBox/SearchReplaceSection/VBox"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="ReplaceText" type="LineEdit" parent="VBox/SearchReplaceSection/VBox/ReplaceSection"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +placeholder_text = "Replace" + +[node name="ReplaceButton" type="Button" parent="VBox/SearchReplaceSection/VBox/ReplaceSection"] +unique_name_in_owner = true +layout_mode = 2 +text = "Replace" + +[node name="ReplaceAllButton" type="Button" parent="VBox/SearchReplaceSection/VBox/ReplaceSection"] +unique_name_in_owner = true +layout_mode = 2 +text = "Replace All" + +[node name="ReplaceGlobal" type="Button" parent="VBox/SearchReplaceSection/VBox/ReplaceSection"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Replace in all timelines" +icon = SubResource("ImageTexture_u2118") + +[node name="ProgressSection" type="HBoxContainer" parent="VBox"] +unique_name_in_owner = true +visible = false +layout_mode = 2 + +[node name="ProgressBar" type="ProgressBar" parent="VBox/ProgressSection"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +max_value = 1.0 +step = 0.001 + +[node name="ProgressLabel" type="Label" parent="VBox/ProgressSection"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="NoTimelineScreen" type="PanelContainer" parent="."] +visible = false +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_boacm") + +[node name="CenterContainer" type="CenterContainer" parent="NoTimelineScreen"] +layout_mode = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="NoTimelineScreen/CenterContainer"] +custom_minimum_size = Vector2(250, 0) +layout_mode = 2 + +[node name="Label" type="Label" parent="NoTimelineScreen/CenterContainer/VBoxContainer"] +layout_mode = 2 +text = "No timeline opened. +Create a timeline or double-click one in the file system dock." +horizontal_alignment = 1 +autowrap_mode = 3 + +[node name="CreateTimelineButton" type="Button" parent="NoTimelineScreen/CenterContainer/VBoxContainer"] +layout_mode = 2 +text = "Create New Timeline" + +[node name="ShortcutsPanel" type="PanelContainer" parent="."] +unique_name_in_owner = true +visible = false +layout_mode = 0 +offset_left = 51.0 +offset_top = 57.0 +offset_right = 571.0 +offset_bottom = 416.0 +theme = SubResource("Theme_feml8") +theme_override_styles/panel = SubResource("StyleBoxFlat_j85ew") +script = ExtResource("6_rfuk0") + +[node name="VBoxContainer" type="VBoxContainer" parent="ShortcutsPanel"] +layout_mode = 2 + +[node name="HBoxContainer" type="HBoxContainer" parent="ShortcutsPanel/VBoxContainer"] +layout_mode = 2 + +[node name="Label" type="Label" parent="ShortcutsPanel/VBoxContainer/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +theme_type_variation = &"DialogicSectionBig" +text = "Shortcuts " + +[node name="CloseShortcutPanel" type="Button" parent="ShortcutsPanel/VBoxContainer/HBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +icon = SubResource("ImageTexture_u2118") +flat = true + +[node name="ScrollContainer" type="ScrollContainer" parent="ShortcutsPanel/VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 + +[node name="ShortcutList" type="GridContainer" parent="ShortcutsPanel/VBoxContainer/ScrollContainer"] +unique_name_in_owner = true +layout_mode = 2 +theme_override_constants/h_separation = 11 +columns = 2 + +[connection signal="text_changed" from="VBox/SearchReplaceSection/VBox/SearchSection/Search" to="." method="_on_search_text_changed"] +[connection signal="pressed" from="VBox/SearchReplaceSection/VBox/SearchSection/SearchUp" to="." method="_on_search_up_pressed"] +[connection signal="pressed" from="VBox/SearchReplaceSection/VBox/SearchSection/SearchDown" to="." method="_on_search_down_pressed"] +[connection signal="toggled" from="VBox/SearchReplaceSection/VBox/SearchSection/MatchCase" to="." method="_on_match_case_toggled"] +[connection signal="toggled" from="VBox/SearchReplaceSection/VBox/SearchSection/WholeWords" to="." method="_on_whole_words_toggled"] +[connection signal="pressed" from="VBox/SearchReplaceSection/VBox/SearchSection/SearchClose" to="." method="_on_close_search_pressed"] +[connection signal="pressed" from="VBox/SearchReplaceSection/VBox/ReplaceSection/ReplaceButton" to="." method="_on_replace_button_pressed"] +[connection signal="pressed" from="VBox/SearchReplaceSection/VBox/ReplaceSection/ReplaceAllButton" to="." method="_on_replace_all_button_pressed"] +[connection signal="pressed" from="VBox/SearchReplaceSection/VBox/ReplaceSection/ReplaceGlobal" to="." method="_on_replace_global_pressed"] +[connection signal="pressed" from="NoTimelineScreen/CenterContainer/VBoxContainer/CreateTimelineButton" to="." method="_on_create_timeline_button_pressed"] +[connection signal="pressed" from="ShortcutsPanel/VBoxContainer/HBoxContainer/CloseShortcutPanel" to="ShortcutsPanel" method="_on_close_shortcut_panel_pressed"] diff --git a/addons/dialogic/Editor/dialogic_editor.gd b/addons/dialogic/Editor/dialogic_editor.gd new file mode 100644 index 0000000..4dfbe2a --- /dev/null +++ b/addons/dialogic/Editor/dialogic_editor.gd @@ -0,0 +1,67 @@ +@tool +class_name DialogicEditor +extends Control + +## Base class for all dialogic editors. + +# These signals will automatically be emitted if current_resource_state is changed. +signal resource_saved() +signal resource_unsaved() + +@warning_ignore("unused_signal")# This is emitted from the Editors Manager +signal opened + +var current_resource: Resource + +## State of the current resource +enum ResourceStates {SAVED, UNSAVED} +var current_resource_state: ResourceStates: + set(value): + current_resource_state = value + if value == ResourceStates.SAVED: + resource_saved.emit() + else: + resource_unsaved.emit() + +var editors_manager: Control +# text displayed on the current resource label on non-resource editors +var alternative_text: String = "" + +## Overwrite. Register to the editor manager in here. +func _register() -> void: + pass + + +## Used on the tab +func _get_icon() -> Texture: + return null + +## Used on the tab +func _get_title() -> String: + return "" + + +## If this editor supports editing resources, load them here (overwrite in subclass) +func _open_resource(_resource:Resource) -> void: + pass + + +## If this editor supports editing resources, save them here (overwrite in subclass) +func _save() -> void: + pass + + +## Overwrite. Called when this editor is shown. (show() doesn't have to be called) +func _open(_extra_info:Variant = null) -> void: + pass + + +## Overwrite. Called when another editor is opened. (hide() doesn't have to be called) +func _close() -> void: + pass + + +## Overwrite. Called to clear all current state and resource from the editor. +## Although rarely used, sometimes you just want NO timeline to be open. +func _clear() -> void: + pass diff --git a/addons/dialogic/Editor/dialogic_editor.gd.uid b/addons/dialogic/Editor/dialogic_editor.gd.uid new file mode 100644 index 0000000..c28b30b --- /dev/null +++ b/addons/dialogic/Editor/dialogic_editor.gd.uid @@ -0,0 +1 @@ +uid://dorbh771j7fyf diff --git a/addons/dialogic/Editor/editor_main.gd b/addons/dialogic/Editor/editor_main.gd new file mode 100644 index 0000000..0e4a445 --- /dev/null +++ b/addons/dialogic/Editor/editor_main.gd @@ -0,0 +1,310 @@ +@tool +extends Control + +## Editor root node. Most editor functionality is handled by EditorsManager node! + +var plugin_reference: EditorPlugin = null +var editors_manager: Control = null + +var editor_file_dialog: EditorFileDialog + +@onready var sidebar := %Sidebar as DialogicSidebar + +func _ready() -> void: + if get_parent() is SubViewport: + return + + ## CONNECTIONS + sidebar.show_sidebar.connect(_on_sidebar_toggled) + + ## REFERENCES + editors_manager = $EditorsManager + var button: Button = editors_manager.add_icon_button( + get_theme_icon("MakeFloating", "EditorIcons"), "Make floating" + ) + button.pressed.connect(toggle_floating_window) + + # File dialog + editor_file_dialog = EditorFileDialog.new() + add_child(editor_file_dialog) + + var info_message := Label.new() + info_message.add_theme_color_override("font_color", get_theme_color("warning_color", "Editor")) + editor_file_dialog.get_line_edit().get_parent().add_sibling(info_message) + info_message.get_parent().move_child(info_message, info_message.get_index() - 1) + editor_file_dialog.set_meta("info_message_label", info_message) + + $SaveConfirmationDialog.add_button("No Saving Please!", true, "nosave") + $SaveConfirmationDialog.hide() + update_theme_additions() + EditorInterface.get_base_control().theme_changed.connect(update_theme_additions) + + +func _on_sidebar_toggled(sidebar_shown: bool) -> void: + var h_split := (%HSplit as HSplitContainer) + if sidebar_shown: + h_split.dragger_visibility = SplitContainer.DRAGGER_VISIBLE + h_split.split_offset = 150 + h_split.collapsed = false + else: + h_split.dragger_visibility = SplitContainer.DRAGGER_HIDDEN_COLLAPSED + h_split.split_offset = 0 + h_split.collapsed = true + + +func update_theme_additions() -> void: + add_theme_stylebox_override("panel", DCSS.inline({ + "background": get_theme_color("base_color", "Editor"), + "padding": + [5 * DialogicUtil.get_editor_scale(), 5 * DialogicUtil.get_editor_scale()], + })) + var holder_panel := (DCSS.inline({ + "border-radius": 5, + "background": get_theme_color("dark_color_2", "Editor"), + "padding": + [5 * DialogicUtil.get_editor_scale(), 5 * DialogicUtil.get_editor_scale()], + })) + + holder_panel.border_width_top = 0 + holder_panel.corner_radius_top_left = 0 + editors_manager.editors_holder.add_theme_stylebox_override("panel", holder_panel) + + var new_theme := Theme.new() + + new_theme.set_type_variation("DialogicTitle", "Label") + new_theme.set_font("font", "DialogicTitle", get_theme_font("title", "EditorFonts")) + new_theme.set_color("font_color", "DialogicTitle", get_theme_color("warning_color", "Editor")) + new_theme.set_color( + "font_uneditable_color", "DialogicTitle", get_theme_color("warning_color", "Editor") + ) + new_theme.set_color( + "font_selected_color", "DialogicTitle", get_theme_color("warning_color", "Editor") + ) + new_theme.set_font_size( + "font_size", "DialogicTitle", get_theme_font_size("doc_size", "EditorFonts") + ) + + new_theme.set_type_variation("DialogicSubTitle", "Label") + new_theme.set_font("font", "DialogicSubTitle", get_theme_font("title", "EditorFonts")) + new_theme.set_font_size( + "font_size", "DialogicSubTitle", get_theme_font_size("doc_size", "EditorFonts") + ) + new_theme.set_color("font_color", "DialogicSubTitle", get_theme_color("accent_color", "Editor")) + + new_theme.set_type_variation("DialogicPanelA", "PanelContainer") + var panel_style := ( + DCSS + . inline( + { + "border-radius": 10, + "background": get_theme_color("base_color", "Editor"), + "padding": [5, 5], + } + ) + ) + new_theme.set_stylebox("panel", "DialogicPanelA", panel_style) + new_theme.set_stylebox("normal", "DialogicPanelA", panel_style) + + var dark_panel := panel_style.duplicate() + dark_panel.bg_color = get_theme_color("dark_color_3", "Editor") + new_theme.set_stylebox("panel", "DialogicPanelDarkA", dark_panel) + + var cornerless_panel := panel_style.duplicate() + cornerless_panel.corner_radius_top_left = 0 + new_theme.set_stylebox("panel", "DialogicPanelA_cornerless", cornerless_panel) + + # panel used for example for portrait previews in character editor + new_theme.set_type_variation("DialogicPanelB", "PanelContainer") + var side_panel: StyleBoxFlat = panel_style.duplicate() + side_panel.corner_radius_top_left = 0 + side_panel.corner_radius_bottom_left = 0 + side_panel.expand_margin_left = get_theme_constant("separation", "SplitContainer") + side_panel.bg_color = get_theme_color("dark_color_2", "Editor") + side_panel.set_border_width_all(1) + side_panel.border_width_left = 0 + side_panel.content_margin_left = 0 + side_panel.border_color = get_theme_color("contrast_color_2", "Editor") + new_theme.set_stylebox("panel", "DialogicPanelB", side_panel) + + new_theme.set_type_variation("DialogicEventEdit", "Control") + var edit_panel := StyleBoxFlat.new() + edit_panel.draw_center = true + edit_panel.bg_color = get_theme_color("accent_color", "Editor") + edit_panel.bg_color.a = 0.05 + edit_panel.border_width_bottom = 2 + edit_panel.border_color = get_theme_color("accent_color", "Editor").lerp( + get_theme_color("dark_color_2", "Editor"), 0.4 + ) + edit_panel.content_margin_left = 5 + edit_panel.content_margin_right = 5 + edit_panel.set_corner_radius_all(1) + new_theme.set_stylebox("panel", "DialogicEventEdit", edit_panel) + new_theme.set_stylebox("normal", "DialogicEventEdit", edit_panel) + + var focus_edit := edit_panel.duplicate() + focus_edit.border_color = get_theme_color("property_color_z", "Editor") + focus_edit.draw_center = false + new_theme.set_stylebox("focus", "DialogicEventEdit", focus_edit) + + var hover_edit := edit_panel.duplicate() + hover_edit.border_color = get_theme_color("warning_color", "Editor") + + new_theme.set_stylebox("hover", "DialogicEventEdit", hover_edit) + var disabled_edit := edit_panel.duplicate() + disabled_edit.border_color = get_theme_color("property_color", "Editor") + new_theme.set_stylebox("disabled", "DialogicEventEdit", disabled_edit) + + new_theme.set_type_variation("DialogicHintText", "Label") + new_theme.set_color("font_color", "DialogicHintText", get_theme_color("readonly_color", "Editor")) + new_theme.set_font("font", "DialogicHintText", get_theme_font("doc_italic", "EditorFonts")) + + new_theme.set_type_variation("DialogicHintText2", "Label") + new_theme.set_color( + "font_color", "DialogicHintText2", get_theme_color("property_color_w", "Editor") + ) + new_theme.set_font("font", "DialogicHintText2", get_theme_font("doc_italic", "EditorFonts")) + + new_theme.set_type_variation("DialogicSection", "Label") + new_theme.set_font("font", "DialogicSection", get_theme_font("main_msdf", "EditorFonts")) + new_theme.set_color("font_color", "DialogicSection", get_theme_color("property_color_z", "Editor")) + new_theme.set_font_size( + "font_size", "DialogicSection", get_theme_font_size("doc_size", "EditorFonts") + ) + + new_theme.set_type_variation("DialogicSettingsSection", "DialogicSection") + new_theme.set_font("font", "DialogicSettingsSection", get_theme_font("main_msdf", "EditorFonts")) + new_theme.set_color( + "font_color", "DialogicSettingsSection", get_theme_color("property_color_z", "Editor") + ) + new_theme.set_font_size( + "font_size", "DialogicSettingsSection", get_theme_font_size("doc_size", "EditorFonts") + ) + + new_theme.set_type_variation("DialogicSectionBig", "DialogicSection") + new_theme.set_color("font_color", "DialogicSectionBig", get_theme_color("accent_color", "Editor")) + new_theme.set_font_size( + "font_size", "DialogicSectionBig", get_theme_font_size("doc_title_size", "EditorFonts") + ) + + new_theme.set_type_variation("DialogicLink", "LinkButton") + new_theme.set_color("font_hover_color", "DialogicLink", get_theme_color("warning_color", "Editor")) + + new_theme.set_type_variation("DialogicMegaSeparator", "HSeparator") + new_theme.set_stylebox("separator", "DialogicMegaSeparator", + DCSS.inline({ + "border-radius": 10, + "border": 0, + "background": get_theme_color("accent_color", "Editor"), + "padding": [5, 5], + }) + ) + new_theme.set_constant("separation", "DialogicMegaSeparator", 50) + + new_theme.set_type_variation("DialogicTextEventTextEdit", "CodeEdit") + var editor_settings := plugin_reference.get_editor_interface().get_editor_settings() + var text_panel := DCSS.inline({ + "border-radius": 8, + "background": + editor_settings.get_setting("text_editor/theme/highlighting/background_color").lerp( + editor_settings.get_setting("text_editor/theme/highlighting/text_color"), 0.05 + ), + "padding": [8, 8], + }) + text_panel.content_margin_bottom = 5 + text_panel.content_margin_left = 13 + new_theme.set_stylebox("normal", "DialogicTextEventTextEdit", text_panel) + + var event_field_group_panel := DCSS.inline({ + 'border-radius': 8, + "border":1, + "padding":2, + "boder-color": get_theme_color("property_color", "Editor"), + "background":"none"}) + new_theme.set_type_variation("DialogicEventEditGroup", "PanelContainer") + new_theme.set_stylebox("panel", "DialogicEventEditGroup", event_field_group_panel) + + new_theme.set_icon('Plugin', 'Dialogic', load("res://addons/dialogic/Editor/Images/plugin-icon.svg")) + + theme = new_theme + + +## Switches from floating window mode to embedded mode based on current mode +func toggle_floating_window() -> void: + if get_parent() is Window: + swap_to_embedded_editor() + else: + swap_to_floating_window() + + +## Removes the main control from it's parent and adds it to a new Window node +func swap_to_floating_window() -> void: + if get_parent() is Window: + return + + var parent := get_parent() + get_parent().remove_child(self) + var window := Window.new() + parent.add_child(window) + window.add_child(self) + window.title = "Dialogic" + window.close_requested.connect(swap_to_embedded_editor) + window.content_scale_mode = Window.CONTENT_SCALE_MODE_CANVAS_ITEMS + window.content_scale_aspect = Window.CONTENT_SCALE_ASPECT_EXPAND + window.size = size + window.min_size = Vector2(500, 500) + set_anchors_preset(Control.PRESET_FULL_RECT) + window.disable_3d = true + window.wrap_controls = true + window.popup_centered() + plugin_reference.get_editor_interface().set_main_screen_editor("2D") + + +## Removes the main control from the window node and adds it to it's grandparent +## which is the original owner. +func swap_to_embedded_editor() -> void: + if not get_parent() is Window: + return + + var window := get_parent() + get_parent().remove_child(self) + plugin_reference.get_editor_interface().set_main_screen_editor("Dialogic") + window.get_parent().add_child(self) + window.queue_free() + + +func godot_file_dialog( + callable: Callable, filter: String, mode := EditorFileDialog.FILE_MODE_OPEN_FILE, + window_title := "Save", + current_file_name := "New_File", + saving_something := false, + extra_message: String = "" + ) -> EditorFileDialog: + + for connection in editor_file_dialog.file_selected.get_connections(): + editor_file_dialog.file_selected.disconnect(connection.callable) + for connection in editor_file_dialog.dir_selected.get_connections(): + editor_file_dialog.dir_selected.disconnect(connection.callable) + + if mode == EditorFileDialog.FILE_MODE_OPEN_FILE or mode == EditorFileDialog.FILE_MODE_SAVE_FILE: + editor_file_dialog.file_selected.connect(callable) + elif mode == EditorFileDialog.FILE_MODE_OPEN_DIR: + editor_file_dialog.dir_selected.connect(callable) + elif mode == EditorFileDialog.FILE_MODE_OPEN_ANY: + editor_file_dialog.dir_selected.connect(callable) + editor_file_dialog.file_selected.connect(callable) + + editor_file_dialog.file_mode = mode + editor_file_dialog.clear_filters() + editor_file_dialog.add_filter(filter) + editor_file_dialog.title = window_title + editor_file_dialog.current_file = current_file_name + editor_file_dialog.disable_overwrite_warning = !saving_something + if extra_message: + editor_file_dialog.get_meta("info_message_label").show() + editor_file_dialog.get_meta("info_message_label").text = extra_message + else: + editor_file_dialog.get_meta("info_message_label").hide() + editor_file_dialog.popup_centered_ratio(0.6) + + + return editor_file_dialog diff --git a/addons/dialogic/Editor/editor_main.gd.uid b/addons/dialogic/Editor/editor_main.gd.uid new file mode 100644 index 0000000..04b57ec --- /dev/null +++ b/addons/dialogic/Editor/editor_main.gd.uid @@ -0,0 +1 @@ +uid://q24lthmavkvn diff --git a/addons/dialogic/Editor/editor_main.tscn b/addons/dialogic/Editor/editor_main.tscn new file mode 100644 index 0000000..6b8074c --- /dev/null +++ b/addons/dialogic/Editor/editor_main.tscn @@ -0,0 +1,161 @@ +[gd_scene load_steps=18 format=3 uid="uid://de6yhw4r8jqb3"] + +[ext_resource type="Script" uid="uid://q24lthmavkvn" path="res://addons/dialogic/Editor/editor_main.gd" id="1_x88ov"] +[ext_resource type="Script" uid="uid://cefv8yoo8q7k6" path="res://addons/dialogic/Editor/editors_manager.gd" id="2_pe2tl"] +[ext_resource type="Texture2D" uid="uid://dybg3l5pwetne" path="res://addons/dialogic/Editor/Images/plugin-icon.svg" id="2_scwcl"] +[ext_resource type="PackedScene" uid="uid://cwe3r2tbh2og1" path="res://addons/dialogic/Editor/Common/side_bar.tscn" id="3_lp6hj"] +[ext_resource type="Script" uid="uid://1m3sqaws1hin" path="res://addons/dialogic/Editor/Common/toolbar.gd" id="4_6cx8s"] +[ext_resource type="Texture2D" uid="uid://bbea0efx0ybu7" path="res://addons/dialogic/Editor/Images/Resources/character.svg" id="6_8yp76"] +[ext_resource type="Texture2D" uid="uid://b5xwnxdb7064n" path="res://addons/dialogic/Modules/Glossary/icon.svg" id="7_45ytg"] +[ext_resource type="Texture2D" uid="uid://1mccycya6eua" path="res://addons/dialogic/Modules/StyleEditor/styles_icon.svg" id="8_jj1i6"] +[ext_resource type="Texture2D" uid="uid://ckilxvwc34s84" path="res://addons/dialogic/Modules/Variable/variable.svg" id="9_k4reh"] +[ext_resource type="PackedScene" uid="uid://c7lmt5cp7bxcm" path="res://addons/dialogic/Editor/Common/reference_manager.tscn" id="10_l1rf8"] +[ext_resource type="Script" uid="uid://bxr2qomm7wm85" path="res://addons/dialogic/Editor/Common/reference_manager_window.gd" id="10_xbkrt"] +[ext_resource type="Script" uid="uid://camdhr6iwaywr" path="res://addons/dialogic/Editor/TimelineEditor/TextEditor/CodeCompletionHelper.gd" id="11_fyce4"] +[ext_resource type="Script" uid="uid://1tph6ios6ry2" path="res://addons/dialogic/Editor/Common/update_manager.gd" id="14_l6b1p"] +[ext_resource type="PackedScene" uid="uid://vv3m5m68fwg7" path="res://addons/dialogic/Editor/Common/update_install_window.tscn" id="15_cu4xj"] + +[sub_resource type="Image" id="Image_4esak"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_drcn6"] +image = SubResource("Image_4esak") + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_5bs7k"] +content_margin_left = 8.0 +content_margin_top = 8.0 +content_margin_right = 8.0 +content_margin_bottom = 8.0 +bg_color = Color(0.1155, 0.132, 0.1595, 1) +corner_detail = 1 +anti_aliasing = false + +[node name="EditorView" type="ScrollContainer"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +script = ExtResource("1_x88ov") + +[node name="EditorsManager" type="Control" parent="."] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +script = ExtResource("2_pe2tl") + +[node name="HSplit" type="HSplitContainer" parent="EditorsManager"] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_vertical = 3 +theme_override_constants/separation = 0 +split_offset = 150 + +[node name="Sidebar" parent="EditorsManager/HSplit" instance=ExtResource("3_lp6hj")] +unique_name_in_owner = true +custom_minimum_size = Vector2(20, 0) +layout_mode = 2 +split_offset = 0 + +[node name="VBox" type="VBoxContainer" parent="EditorsManager/HSplit"] +layout_mode = 2 +theme_override_constants/separation = 0 + +[node name="Toolbar" type="HBoxContainer" parent="EditorsManager/HSplit/VBox"] +layout_mode = 2 +size_flags_vertical = 0 +mouse_filter = 2 +alignment = 2 +script = ExtResource("4_6cx8s") + +[node name="EditorTabBar" type="TabBar" parent="EditorsManager/HSplit/VBox/Toolbar"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 8 +tab_count = 7 +tab_0/icon = ExtResource("2_scwcl") +tab_1/title = "Timeline" +tab_1/icon = SubResource("ImageTexture_drcn6") +tab_2/title = "Character" +tab_2/icon = ExtResource("6_8yp76") +tab_3/title = "Glossary" +tab_3/icon = ExtResource("7_45ytg") +tab_4/title = "Layouts" +tab_4/icon = ExtResource("8_jj1i6") +tab_5/title = "Variables" +tab_5/icon = ExtResource("9_k4reh") +tab_6/title = "Settings" +tab_6/icon = SubResource("ImageTexture_drcn6") + +[node name="CustomButtons" type="HBoxContainer" parent="EditorsManager/HSplit/VBox/Toolbar"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="Editors" type="PanelContainer" parent="EditorsManager/HSplit/VBox"] +layout_mode = 2 +size_flags_vertical = 3 + +[node name="CodeCompletionHelper" type="Node" parent="EditorsManager"] +script = ExtResource("11_fyce4") + +[node name="SaveConfirmationDialog" type="AcceptDialog" parent="."] +size = Vector2i(207, 100) + +[node name="ResourceRenameWarning" type="AcceptDialog" parent="."] +title = "Dialogic resource renamed!" +initial_position = 5 +size = Vector2i(494, 135) +ok_button_text = "Show Unique Identifiers" +dialog_text = "You renamed a dialogic resource. This does NOT automatically rename the unique identifier for this resource. Consider checking in the Reference Manager if the identifiers are still the way you want them." +dialog_autowrap = true + +[node name="ReferenceManager" type="Window" parent="."] +disable_3d = true +title = "Reference Manager" +initial_position = 2 +size = Vector2i(858, 442) +visible = false +wrap_controls = true +content_scale_mode = 1 +content_scale_aspect = 4 +script = ExtResource("10_xbkrt") + +[node name="Manager" parent="ReferenceManager" instance=ExtResource("10_l1rf8")] +theme_override_styles/panel = SubResource("StyleBoxFlat_5bs7k") + +[node name="UpdateManager" type="Node" parent="."] +script = ExtResource("14_l6b1p") + +[node name="Window" type="Window" parent="UpdateManager"] +title = "Dialogic Update Checker" +initial_position = 2 +size = Vector2i(600, 400) +visible = false +wrap_controls = true + +[node name="UpdateInstallWindow" parent="UpdateManager/Window" instance=ExtResource("15_cu4xj")] + +[node name="UpdateCheckRequest" type="HTTPRequest" parent="UpdateManager"] +timeout = 5.0 + +[node name="DownloadRequest" type="HTTPRequest" parent="UpdateManager"] + +[connection signal="close_requested" from="ReferenceManager" to="ReferenceManager" method="_on_close_requested"] +[connection signal="downdload_completed" from="UpdateManager" to="UpdateManager/Window/UpdateInstallWindow" method="_on_update_manager_downdload_completed"] +[connection signal="update_check_completed" from="UpdateManager" to="UpdateManager" method="_on_update_check_completed"] +[connection signal="close_requested" from="UpdateManager/Window" to="UpdateManager/Window/UpdateInstallWindow" method="_on_window_close_requested"] +[connection signal="request_completed" from="UpdateManager/UpdateCheckRequest" to="UpdateManager" method="_on_UpdateCheck_request_completed"] +[connection signal="request_completed" from="UpdateManager/DownloadRequest" to="UpdateManager" method="_on_DownloadRequest_completed"] diff --git a/addons/dialogic/Editor/editors_manager.gd b/addons/dialogic/Editor/editors_manager.gd new file mode 100644 index 0000000..029a919 --- /dev/null +++ b/addons/dialogic/Editor/editors_manager.gd @@ -0,0 +1,284 @@ +@tool +extends Control + +## Node that manages editors, the toolbar and the sidebar. + +signal resource_opened(resource) +signal editor_changed(previous, current) + +### References +@onready var hsplit := $HSplit +@onready var sidebar := $HSplit/Sidebar +@onready var editors_holder := $HSplit/VBox/Editors +@onready var toolbar := $HSplit/VBox/Toolbar +@onready var tabbar := $HSplit/VBox/Toolbar/EditorTabBar + +var reference_manager: Node: + get: + return get_node("../ReferenceManager") + +## Information on supported resource extensions and registered editors +var current_editor: DialogicEditor = null +var previous_editor: DialogicEditor = null +var editors := {} +var supported_file_extensions := [] +var used_resources_cache: Array = [] + + +################################################################################ +## REGISTERING EDITORS +################################################################################ + +## Asks all childs of the editor holder to register +func _ready() -> void: + if owner.get_parent() is SubViewport: + return + + tabbar.clear_tabs() + + # Load base editors + _add_editor("res://addons/dialogic/Editor/HomePage/home_page.tscn") + _add_editor("res://addons/dialogic/Editor/TimelineEditor/timeline_editor.tscn") + _add_editor("res://addons/dialogic/Editor/CharacterEditor/character_editor.tscn") + + # Load custom editors + for indexer in DialogicUtil.get_indexers(): + for editor_path in indexer._get_editors(): + _add_editor(editor_path) + _add_editor("res://addons/dialogic/Editor/Settings/settings_editor.tscn") + + tabbar.tab_clicked.connect(_on_editors_tab_changed) + + # Needs to be done here to make sure this node is ready when doing the register calls + for editor in editors_holder.get_children(): + editor.editors_manager = self + editor._register() + + DialogicResourceUtil.update() + + await get_parent().ready + await get_tree().process_frame + + load_saved_state() + used_resources_cache = DialogicUtil.get_editor_setting('last_resources', []) + sidebar.update_resource_list(used_resources_cache) + + find_parent('EditorView').plugin_reference.get_editor_interface().get_file_system_dock().files_moved.connect(_on_file_moved) + find_parent('EditorView').plugin_reference.get_editor_interface().get_file_system_dock().file_removed.connect(_on_file_removed) + + hsplit.set("theme_override_constants/separation", get_theme_constant("base_margin", "Editor") * DialogicUtil.get_editor_scale()) + + +func _add_editor(path:String) -> void: + var editor: DialogicEditor = load(path).instantiate() + editors_holder.add_child(editor) + editor.hide() + tabbar.add_tab(editor._get_title(), editor._get_icon()) + + +## Call to register an editor/tab that edits a resource with a custom ending. +func register_resource_editor(resource_extension:String, editor:DialogicEditor) -> void: + editors[editor.name] = {'node':editor, 'buttons':[], 'extension': resource_extension} + supported_file_extensions.append(resource_extension) + editor.resource_saved.connect(_on_resource_saved.bind(editor)) + editor.resource_unsaved.connect(_on_resource_unsaved.bind(editor)) + + +## Call to register an editor/tab that doesn't edit a resource +func register_simple_editor(editor:DialogicEditor) -> void: + editors[editor.name] = {'node': editor, 'buttons':[]} + + +## Call to add an icon button. These buttons are always visible. +func add_icon_button(icon:Texture, tooltip:String, editor:DialogicEditor=null) -> Node: + var button: Button = toolbar.add_icon_button(icon, tooltip) + if editor != null: + editors[editor.name]['buttons'].append(button) + return button + + +## Call to add a custom action button. Only visible if editor is visible. +func add_custom_button(label:String, icon:Texture, editor:DialogicEditor) -> Node: + var button: Button = toolbar.add_custom_button(label, icon) + editors[editor.name]['buttons'].append(button) + return button + + +func can_edit_resource(resource:Resource) -> bool: + return resource.resource_path.get_extension() in supported_file_extensions + + +################################################################################ +## OPENING/CLOSING +################################################################################ + + +func _on_editors_tab_changed(tab:int) -> void: + open_editor(editors_holder.get_child(tab)) + + +func edit_resource(resource:Resource, save_previous:bool = true, silent:= false) -> void: + if not resource: + # The resource doesn't exists, show an error + print("[Dialogic] The resource you are trying to edit doesn't exist any more.") + return + + if current_editor and save_previous: + current_editor._save() + + if !resource.resource_path in used_resources_cache: + used_resources_cache.append(resource.resource_path) + sidebar.update_resource_list(used_resources_cache) + + ## Open the correct editor + var extension: String = resource.resource_path.get_extension() + for editor in editors.values(): + if editor.get('extension', '') == extension: + editor['node']._open_resource(resource) + if !silent: + open_editor(editor['node'], false) + if !silent: + resource_opened.emit(resource) + + + +## Only works if there was a different editor opened previously +func toggle_editor(editor) -> void: + if editor.visible: + open_editor(previous_editor, true) + else: + open_editor(editor, true) + + +## Shows the given editor +func open_editor(editor:DialogicEditor, save_previous: bool = true, extra_info:Variant = null) -> void: + if current_editor and save_previous: + current_editor._save() + + if current_editor: + current_editor._close() + current_editor.hide() + + if current_editor != previous_editor: + previous_editor = current_editor + + editor._open(extra_info) + editor.opened.emit() + current_editor = editor + editor.show() + tabbar.current_tab = editor.get_index() + + if editor.current_resource: + var text: String = editor.current_resource.resource_path.get_file() + if editor.current_resource_state == DialogicEditor.ResourceStates.UNSAVED: + text += "(*)" + + ## This makes custom button editor-specific + ## I think it's better without. + + save_current_state() + editor_changed.emit(previous_editor, current_editor) + + +## Rarely used to completely clear an editor. +func clear_editor(editor:DialogicEditor, save:bool = false) -> void: + if save: + editor._save() + + editor._clear() + +## Shows a file selector. Calls [accept_callable] once accepted +func show_add_resource_dialog(accept_callable:Callable, filter:String = "*", title = "New resource", default_name = "new_character", mode = EditorFileDialog.FILE_MODE_SAVE_FILE) -> void: + find_parent('EditorView').godot_file_dialog( + _on_add_resource_dialog_accepted.bind(accept_callable), + filter, + mode, + title, + default_name, + true, + "Do not use \"'()!;:/\\*# in character or timeline names!" + ) + + +func _on_add_resource_dialog_accepted(path:String, callable:Callable) -> void: + var file_name: String = path.get_file().trim_suffix('.'+path.get_extension()) + for i in ['#','&','+',';','(',')','!','*','*','"',"'",'%', '$', ':','.',',']: + file_name = file_name.replace(i, '') + callable.call(path.trim_suffix(path.get_file()).path_join(file_name)+'.'+path.get_extension()) + + +## Called by the plugin.gd script on CTRL+S or Debug Game start +func save_current_resource() -> void: + if current_editor: + current_editor._save() + + +## Change the resource state +func _on_resource_saved(editor:DialogicEditor): + sidebar.set_unsaved_indicator(true) + + +## Change the resource state +func _on_resource_unsaved(editor:DialogicEditor): + sidebar.set_unsaved_indicator(false) + + +## Tries opening the last resource +func load_saved_state() -> void: + var current_resources: Dictionary = DialogicUtil.get_editor_setting('current_resources', {}) + for editor in current_resources.keys(): + editors[editor]['node']._open_resource(load(current_resources[editor])) + + var current_editor: String = DialogicUtil.get_editor_setting('current_editor', 'HomePage') + open_editor(editors[current_editor]['node']) + + +func save_current_state() -> void: + DialogicUtil.set_editor_setting('current_editor', current_editor.name) + var current_resources: Dictionary = {} + for editor in editors.values(): + if editor['node'].current_resource != null: + current_resources[editor['node'].name] = editor['node'].current_resource.resource_path + DialogicUtil.set_editor_setting('current_resources', current_resources) + + +func _on_file_moved(old_name:String, new_name:String) -> void: + if !old_name.get_extension() in supported_file_extensions: + return + + used_resources_cache = DialogicUtil.get_editor_setting('last_resources', []) + if old_name in used_resources_cache: + used_resources_cache.insert(used_resources_cache.find(old_name), new_name) + used_resources_cache.erase(old_name) + + sidebar.update_resource_list(used_resources_cache) + + for editor in editors: + if editors[editor].node.current_resource != null and editors[editor].node.current_resource.resource_path == old_name: + editors[editor].node.current_resource.take_over_path(new_name) + edit_resource(load(new_name), true, true) + + save_current_state() + + +func _on_file_removed(file_name:String) -> void: + var current_resources: Dictionary = DialogicUtil.get_editor_setting('current_resources', {}) + for editor_name in current_resources: + if current_resources[editor_name] == file_name: + clear_editor(editors[editor_name].node, false) + sidebar.update_resource_list() + save_current_state() + + + +################################################################################ +## HELPERS +################################################################################ + + +func get_current_editor() -> DialogicEditor: + return current_editor + + +func _exit_tree() -> void: + DialogicUtil.set_editor_setting('last_resources', used_resources_cache) diff --git a/addons/dialogic/Editor/editors_manager.gd.uid b/addons/dialogic/Editor/editors_manager.gd.uid new file mode 100644 index 0000000..4c21af9 --- /dev/null +++ b/addons/dialogic/Editor/editors_manager.gd.uid @@ -0,0 +1 @@ +uid://cefv8yoo8q7k6 diff --git a/addons/dialogic/Example Assets/Fonts/LICENSE.txt b/addons/dialogic/Example Assets/Fonts/LICENSE.txt new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/addons/dialogic/Example Assets/Fonts/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. diff --git a/addons/dialogic/Example Assets/Fonts/Roboto-Bold.ttf b/addons/dialogic/Example Assets/Fonts/Roboto-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d998cf5b468413ca1c950096dc9d0f5dfdb1359f GIT binary patch literal 170348 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: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 literal 0 HcmV?d00001 diff --git a/addons/dialogic/Example Assets/Fonts/Roboto-Bold.ttf.import b/addons/dialogic/Example Assets/Fonts/Roboto-Bold.ttf.import new file mode 100644 index 0000000..0a0d10a --- /dev/null +++ b/addons/dialogic/Example Assets/Fonts/Roboto-Bold.ttf.import @@ -0,0 +1,36 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://cc4xli25271fd" +path="res://.godot/imported/Roboto-Bold.ttf-a0c3395776dbc11ee676c5f1ea9c0579.fontdata" + +[deps] + +source_file="res://addons/dialogic/Example Assets/Fonts/Roboto-Bold.ttf" +dest_files=["res://.godot/imported/Roboto-Bold.ttf-a0c3395776dbc11ee676c5f1ea9c0579.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 +modulate_color_glyphs=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/dialogic/Example Assets/Fonts/Roboto-Italic.ttf b/addons/dialogic/Example Assets/Fonts/Roboto-Italic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..5b390ff950e6539bdfd4d84265fdb01e0c35f291 GIT binary patch literal 173516 zcma%k2YeGp)Awz;J4=>rS+XVfg0W4P!61R@Ereb|Ck9OK7%;u}ZaSD^O6U+kKCmI! zv;-VTAefLR2_&SDgpgh!g}Ea`4{cItm-_5>sdf(c%zkkGD8 z+n3I?axM~Znn4iokapd=zT%EDeI(#|*@BRHv)wDbTK%x->wW@W-$W3?*LQuzR&U#) zf*t}kRfVez9y&fN8%^&UCt&L?xadnmr{yHj;@bBGTjWQ6@Og7)!`hK zjLe#nEd&T=xF38h7)FkpIpX&Pd)mWiwFLBg)ltL7&&U|iDGRQ@L=eP?QNy!_l^=Y6 zxPV;i;rsSc@CU;o(=Pa&{l4m`@i{ZnhkaNMpI;Y*u!iF%4$YcV@T|Llp1}C^apSXQ zWXsJ6hVyRl{e%fwcw;MivU z_=x}~LTIyo3dI8aQV~4|*>ecshXTFfsbcW_C5RuK*jNy3c$!u>F)=iegd!A*NFr*0 z5=k{z6MWUK{;ZxyhOaSERfJtG(fQ8-QFhJ6)1Qap8LokN;0ioYz(Q;H@8~I?L9oz5 z(S;b<*mZ2||1#1b7-5{x{GVgCrWiM=V{1$^;O^IHC_W?w0JrIcNWn>L3f2>LHEeUr zWlmyr29&{NiEOr7Ns`%$R=zT!+lpVE_)K2&Uz)bi8M8PLfYyn~oY$|h{v9^c;fmBY>Nz0tEd?DdAu*?}~D+uuU zG|=b_hCdperZQ)M(HX|SY$7OB|a+5{y5|kq-Y7&FLha{gadUKX^4K;kW+T zx_--}2={`&BakU?!}jNS8@FGL_-w()5x;HOSpT1e|DYY}2()7*8nPPgRR^mpS1zg}oM3_kIMEv!|q_rZ`~b9qF>gA}875RFWkNg%e4Vauxlm<8(t#s^g@IG2 z%|DLj^JhAtj@zZw z7*Vzrgiz-F0X2XesXz;$72)K7cbr!L z+h<}bvf`kb>jI>Z!nrdy21r3?TZ?U5v>6_#lUucJJ0cK&GA9@QTDV}wCO9a~#MZ4| z8p=OxH!RTgWGI<5R4k=O7j|BDjN;elwOD^bUD$mP#>2aJ=`;f45#3$?(Bt!3uRTTa zv4w3`pHvri%VK}-+L3+Q?T?q~sCJ;^GTh(M`>zBr8C;b8J!_z>@}@I zXZUfPCS07xRv@dDv0p+IV?U+3E{YvULUncssh+?NM$cy^&mqEd2scK+XU-^NL9Cba zl=#>ReN|xd{xz+x85oiCqm}WWEW>%aBwLeG8SO=j1Hm69i&?T-9iXgIlB!7ULT*p4 z`Er2a;{(f`0lJ%;o(-_>i{6p{PWzL0E<8df+@)-LL;KX$8e!b|yLKNZg#o<8sNTJ%`&yb{pNI=S+~& zV>A)1l$d=rdi0%Gq3@WQW9oBSrv;riimTLZ=yN93)Bf2*_|I1l;?C{!$3j(kKcl;I=p$1*&OjVb=o|WHL zuMNn~L8T~pa38q7d!1SxH&xEj8<;kiupp-jW_v15by!R$AR10eI;XmK#h^Y@ z>R|C*TlUWOlo)XPr)p>QKV7CEj2l1t4?1x^yNl{lkDklw4Ko;v2a#2vmxF}_k3yor z1e6O}S)^02ML2bE)Y&57j>!%Y6l1bgG|Pmfq6O*?ZIC5>>r2RHRBjffAP=D%+s;G~-_Uj~Ur1fc$5D2ml7h|>;^qJ)43MXM&I8janDkm}>jE|vJ z@#^$$McveC@n~g-A`)~;t&eV=LPt4W9thtHp9r!LAvgnU1=MTt*tG?q4@u?vPSTCa ziHRx*uc|)ixNhyXTBnhj}68xLv8M(tiq zHgaoj23mXcn&xYy)wL#}^z;K{@cy|{ZE$deQSNVPP4R{hDkKUoE7mGWOv0?p=KhQ2 z(7Y5zR*QE!VC4$pyr*e(MbK_Q7n4vSdzdj0S8+tLn!o@!(8uS_1z=s(G!*>c{8^dk zk{YN_3xkn(dCiF`HQ{(^>51ep>iW6E%TJI4)f4GoKXiQg2lcF4MwZTOt;*uP$LeP} z?bW|zsq7)p?-_VuJ;k%&gJpOI&IzZfa&6!W6+|{cYAYb#0V|lWzk(Z;WELIC>G;*6 z57oKxI3|JKT;Y5Ru5JZkttq|@{z-3zL`7GwPAIHS=!-Y;Gnu$dA)%4%o}tD9o%fz_ z3RYLKMlwf{IdBfd^$@d}ax+{(IPm0(%Cjsua>!9rQ1*z$PV?!Y)n6?w{7*>e%~#c0 z_|jUe&pNtp!fHzQtwGCfPbBp2k;@-ss;!ycsPBGE6JgZVghfg~^%|9<4u(+&Yope5 zvm!(VvtbH0<+gw_l|2HQq}bTIK?0iW3^o?XKBEsdI`z!EDX8ZCqY_q)`L3X!ov~$1 zODB3i1CF=WV|td)&t8?!Phx(8M42tLdJG|ao{IL)SW*}ils$Ix9@FVi6nf$8onYOX zIYWm87}alY6n_>_D9xC>;FuwB(ZbcF9$Gy;XDP-jbI_SDF?~=t@>s)aCvvX+O6eB` zD0?NPI~Gn~N)d3n2x}M%a-jz;)Zt&4o2w*dmynLKX&_qx_D+Dg@Q8VSN`MpyA1gup zTQD!?!ZCG%(orI)tbSLc-)dac*fl4dB$SpvLC!_7=(}y|Nz`LH`L?_fzF7lSW->_K z7#K^eFjk3{kLJC=jfkX9RLob7%@{uUL%BBThzm59`8 zY)BEzH}=er%b_+u&W0ZU%2zomvcMTpw!xg(y8^4vRDcf?yr)2ZIZ2|j-5Q50=9B_z zClRGcAvjE%T?#2SCS6y*?y{n2%7M;?F!hIbUMmX;NNkI?p$xS&>sTEb*BjDm=7~^! zjVw{gr@wv==6m+N#ShdkCHm;f=+kH_TII^dIsIFA@3EsB5-;xTzqJpnV?OZI8dyh3 zNdFhD!&j3{Q1o9wp+emtl*H@+omKu_DKWbOB1nnY?4LKqh&)hcLQ9ZdJ9t`FAxW?a zla=VSx{R99Ji36_Y85mM2c8MnXv*C##>BP5xo=acc~7h9R!$o@ARt72_|An-Ljrd!?b0zI z7)h5--c%nOW=x*r3^vT1IL|pGaCBDoj-bG?S>t!orsGdFvKNlM@*SlQPt7gPupb!s z#@CeIFLzGbM)AJ+IcqT8NfL*zqIgrzsAU*$U{-6hTcu{8O$6w+QHqJ{HmAwxjI5wZ zAkZXGqlp<#%#0?)%p{jZm;&MN%*KLn?~EbT^i$n|e&pfwNUeh%Tsd1U5Soh+%h{`@ zTI|g+i+z|sX|)hXheJK4?C)p@TJgz}lcfP9rjgW)Fzz_${+(O`yB8r;6$UAB$ti5r zAvV!haEBiXphd$4FgKuMc^I*}DQT?{5mjN(Ajcs+BAj}YxHfm#Or?>;6+cv@)rB&OP*!)^C<0Lp! zZO$~0&!>5g-oTd2KpMxF4E*3Uz*iyS$KJ3u%~%lSbDC-_sN!=9iY&wD)L<-V={@Cs z9}lk_b`uc7N~CZJjE&ijK{_ZVk_qGkOnp*HRoo!OB!DuZrtmN%pw+oMNuCLxIs(c{l0Ysbbebo}$rf=z!6$Jd<4;AvL@kFV7U2yH|7AmuE;G=}XtqdI_t&Ui1Qyi?<=gt6yGO-cCqPEoI{gRMNiT#8ZIxh) zm8}wZ&G>&?pMoIoXc_%|j8j@&Mt^FO!R{oQiM5{KfRHLB6{tQ-K`7g*uceMrZ$*~A z@c~M$l@u7_+zg~v)VJSkufC}+6;01qBNXuH+`^rwD5EkPUjd9SQ0VRed@~$BSKa*&T!7 zjx*igixOCeL?K6s=kc!R#(qF?C4U(W9Gd}6=ZlL1WBIyOiJmVd+Rj``yq$?L9TxDn+0QLc}89-B%Jvua5vFT8z@7nX2nZYUP1mF}p zt7NLH(bN)G$#`5k{sJuYAkpc{#go}cAcunyjD$ec!*B7gDvDn)9noS}F?<&Zde8

EK?Zus+Rgd+HC4|&POgwJ!xCDAb`bgtV}x14Dq)9k zOgJwDWGanVG%bnD6tpngrI)1M(gP9T_$j_%xMYM043ps|MUb>&cTm< zcMU+-?%@5GRB%#Ujqx>CPWh)5qa{p=MZmhf%l6^`ePuVTZZeb2bY#Z6W6BS?F64tK zdiX>-3-5x3e*Z#ezoqiB2AH@2ph$p51TI312uNV!3XvQ?==lLAXGZBTJu_H30!N(e z#=HJ<6%U*48n<38@1IrTf)yD^Uju8`0(W>mjqY=;aovSM`S7t$=%gS$^WOhudH7(o z+553`r95Mi`#&;2FlO^0u8en!Tz_A^;3~qpYsGZT^Q|zJ4Rj*&C#So=6@wt!FbP!{ zMwV0+?#?hWU4<_HcPY~U9~hZO2{^z}0z?c$`09zPFr)`S6)>-<`|4ZMB&pSFIr%sK z^QVrcFCOkh!P3^v%kC~W5h-uOg=f{n!pMSWJ7=O{D6V%7rRtY|j8;q3?*|?r+pgWC zG*7+rxaHN)s0eP7FptfJ>HQ}_Qa$8YyDIvya5fh`b7?*F&0!^y)3Q+%{B`);n%cr3x^`j^171UyV#XrPPA2U@@)puaYRykElsw8+E zz-wSf36EVly&1tBcCz~3YPCa$m1R>TspanMz3;6pn=BE%q1k9TZzCrxv(-wNQKPL zevT#%Q_Or_JR|qx{&-lPc%}hxJj1XVXF*;FM8Stqm}e8=T^?t=(OI<&UJFvZe}oCx zZMZ56wgK5mtw0&#F(tv61>t}fQac%MDLIj$erncl{B6aO+vB7Q`ZbGIo(m3pcS}bU z6&|?$uiTYiO_NJ>dr*}UG<|P}=8;Q(n|XdXA=x+Pp=FyeUNU)0=LQLj+`{bBLkOC3 zeLh;Woi1Yf<_IJcb+BHtW_SGjqe|5;8GV&2aA^hQnH~R0ZTw~Nmulk}+Ez6E^RsB$ z4c8qBx+DRvYZ96&Ar-k67Ap8r(F9a9X-uxE+k#*}@(}LJI>7LHyjQcBaHNV_^3A%t z!$Oa|aX56R0L$N@jnaOYWB^Z$Cw)g1zKZ7|8*cVHS);5*jLk90053 zSx-L<($D%;Dp3J3rwFFXqn32s40rv&Wjv(byM_=w^$)Y3NO(&Sg7uF~W4 zXbm;(_~f(bit}~yq+B?3gFN`B8?8Mo=lNG`obC^R4mIIjpfL7d2;jFa+EQ>+%Y6Yh zGyyRy*Fv{U*eVYEcD-^3r{`{l!3Kj0c<8Qj7B18AxD;0`+BCC?rFE~;_8FUvzlg@?9) z@rYjjRCJ=ur|AG^!@=+#`Fm0&=K1qzQtC3qko!^j`8(*0-H`cmyVdJ>zq9}(ttwAz z0Tt&7h;&<)(*JJDU_|gtFDhI zMq-Jy;P037q!n=YuJ|4afxClj`pJ}+^~<1EhDQ`|E0JjnHXkVcFsM%p(7rkQchfi2 z1pJY!I*e|ido-~?)e(VgJD-RqfW8C*)CI_kpO-I-CbPC}V|-FZ@8g<~UnYPY!<3W| zgfaor@+4XziNTS*Ga-egLllfC*n{K`{q%zyZv(Fa8X8tDgl(Oljbd zAjSpMIUSPp5GPfp#)vFgd!PV6)&tnQS?{?sR}2MSgR^pdU0SbDgnBx9H~h zqa`7IMI4OPT77mlOkH`r$e`;N8`B8jFT*hAOg zKAk^DDIS|f=jdi;}0B_RcIS2&O# zSboOGS~KJA6HdaCNEjxb3T8W+Sjz zQh1*pMPn9I^6{HdE!s?7!PcZBe}tShlzw%ov1Q$EEFVNqH&e3w3CyXj z`+M>Q$ek6CuW^dWgX{U^H26|z6ViekB_@E`6DT}7b1CL_41f(jUIN2*ef%yZ%=6uV z7ZyxR!2n@1#FjCdoXGqMaIho-YbJu+p(pQrZ4yKCA1*$8QAgxJS5wo{C3{zlYV%QO z_TjoXm>MUAQB>t&&3#C}oX`)?wru&zruQh_+;_-Ca*OQVg^cq6y98tpR8lu75|GQ` ziezOfz{7DoX%%0gQMiuNrpX;4?L?b1%hUK2Q?N9a@1#M&LHS)c=vG!}m(IX>Ydxrq zVVXi_$=c}$4o4m`MGYIhKfQ}3t?t07!NxBlzt~TXuUoMH)xkJ)n;uWi8oRE%7vnUl zcBR!oN@5|xUZw=rsL7}eb$%(ne!Dh8F74V04~ESZv*JpVsYZ#ic`L>U1G^BwO1=wZ z;U6+>>8lrk6aDle)ci0`bX4FQsSa2#5IKp%Nn zkbMhJ$A&E_7`~+k#b?RrF|SSS)g*t@g-{${fW*0kuA2G$!R==f9@b~#1_)!;3|>OX z$hT%R4qKN`>3;OvW{LiNm#t+ytmRi+D|S#&g&%A3NFH|+G%9EgoWC{{a0r_|*jj(c z2Igg92neqhfj8jSP0D>EZ^#q-ZC_x849GhRy zK&x@%G+PszF|Zlj$sMM?g#H6}GC-E8ndeS?!L@mF^#iN#SMvdtz}7OS)mC8i=9)m; z6NzbiSjKt|v)K;(Y6+LXs->W-Gy(I|BbrOcm&c1?1#pZiJOc_P{86lT z1U-1S6(9dMgjFi(D?lu;T+Ay6?`D5)3$|u^C!z&Es3E9#DS9$rT_XwQW3tg;HQlud zM$FdjXBhE+d2JvvY*|qHS7(sE5Wa!H3JcO0ZntJA79YFir#Sp3$rXpTFk1N`pRu1^ zhy%waj>#yBV;&mB8XUCu$9kc_7gkJWjB54cR>=4P--0nyT%(RsID+YvVX z44^pXJwx|dXBW)~${ccZ*vi5Z+IZ%Aiu?CaD1E=c)d=6HUvmY)^GCYs;_DM!+`Y^<#hHm22&`3+60PVjSnz(~b=BL^4~ z1pKnce*i@X1!F*IaC$uH4lqf0#)>yHL$G=4&$-Lr>K_!6_sbWute-i&f8MB&0MRgO z_?oL$+6Aw7ZME!n=Tf}>?=44=VUz1z^ET7g5HjfU)K{C&TtmsjvrLXZQU{ZAPTx3T zv_d`J9e5J475d%Jwd06R0sxf;^D%+9%JEE(pM=|=9h`VrEk844(d&6dvh>pGi?>BGan$x{16yrf zSwg$g`4j$0!E_GA4=>L_=366N=X!3~hv`-vwi-OZ3d@5(pglpmwNpqCD-iNb>Ax38 zo1eBg42MF&mAP&Oq6PRha9nB?CIM_I>RIvSUMGhwEi5?|J!My71F}VzU+xC&KW`fi zVRx?sUUL!c1~nKX6br9!^4#4|;lzR_iDjCE#BxtLFd&u@9~`d`FQ+p%#>e4Q5xN}F0MO^aq(8v9V)xiYPTO)Gcs+*+bV%uJo~ z76=gZ^m+~%ssmCSyh{SP>RgMwI*DMpOQIvVW$SU{3==LzUaBLuQ2$xy8Wd&eqTgo1 zJ0ad*2Z>!6^8knn;y^8#A)-MX+4igrhwijta`mX4_?bVgPKdcBeo8W#@iIr+xGrMv zlJI-;ukPGp&MBNK60uX8H^;0fEIB?Fig-SJ0~fnm)vEDw4bk`w2$& zuUMNl7%q9*371L6LIN)ihp>ucTa0yuPqab{HX?y! zJTE2n%HN|I<@ZSn%-wwz=Kd5$7bv{qSq{Hp`AKc1pfVLz89EDk9y&{&!@uHagyU%F zSCsOZ+64t%JFVV+fG)X(QtX7ny)Rsk&}MZUu7x50>prNqB|pM=LZH_Pig+sZ2lrGp znrK=O$j?315Tg_E6r&FZd#C|InCbwX?Qj70xF0RN?wYsk{p6R8w%&8oS{7eGp``kA zlllx2C|gC^YtS5;1Y`IKXaXd90cX>0u5qP*(Eb05v*E$f@Z38iG zUjsbYP~AkrrREUH*c5|Sb82%2+Y}uyxSYf4?|qw^AYNojAEpW1&&+QsFX~RVN}$qZ zuu~zBN3o*Mc5gPvfOEddcrPKoF&Y&8LG3Du%1Aw-fG>qEQ#UpE<@MWjYpe*^p#R}( z^vdw5FR6e0dVOH$+*&oCw2R-=A_!~AN_;g7yW6JQJ=1qY;- zK-Yl6Pf7{FcJMDj(WgV54Sf*&)|z>C)3+8s(VUuimF1o$<-sd;E0)b$a_=q9r+6E59ah~nG4#~7P6?lG-~Sj%1m9)g@c zc=RGVl`*(6D?Dq8Uw{6i*wxmIHmjZ17$fGH_HYN1Ct?cteLWSK=R`f??H99aLhRQ{ zCmWqmBnYn%f&su0UIulWtok&@yJ8hE5`;m#Z;U$Q*q>%hS88tB^Iy{Fy^uTFg0MAJ}@=3PXPD= z1$nGzFsMuk_x#4>S6~XO4V;$@0J+ufaB!%C*Tq+4yW~U}or?+Ui{Fhc507mg< z^se|wWVw9gazL>>WcY*~#sp-K#uGl+K9c0`!qp$Vm+!jyr$p}*pfR&3J+Sb3KKOwq z_c!8N`Wwi7ZK0)7vyP38zUB*+Vk};Oy75qse^>EwQUKkn;XQ?AVf-nlG8r;CK=Cmi zby%4;z_L|FlIE;)$WJ0)7himPMgI6bae8yVQB&7WK3!C@^3=o=2?kU5p;OkCKMd)x zXWZ0}HW-83?;bbp40>8rKeSB1DGVj`a|3dD0R%XgWH3Y4FISCvRf<=xx+% zUR#9iL)&(q*e_+ukLN~?IW+EsEe+FeO6P5*cB$kN9efn3TMib>r79zZ?ez(`#$x(`%s20tqIin)@dsC z1C`1vdO?@guG0+Or`fn(CBhJ>Px}cfAXxuuhOo?|RO`SJ*3p>R0VfU~UO4zV5Zjp$ z5>IfZqOap%3!}H45%fkq{2`dPQWu2!@H2!Rk=|1!nx|5o4v50NeX34a@D%T9g6()#4B>(C1avl$ruPB^1kcR@erGiV~)&tkRdZ4L-kR!`@(h*zNq>ozgm~ zZT~^@V-c3SwmFvMstxjRu^4qe8)k6}S1zchiw0P}Mg!keP)u&P^=tJ=iTCNAxNhz|e}f@M+QoRx}oB)rWd0YXM?fm~fD4%tzps5|lT1MTDP2ipK&n;WbT) zNyk2z<1|6rA`mmq`w@ep6aB~rWhYe_)3XE?C{BPcQavPO8LZ@bp!UJULH=qQeRcBa z8B{!fc%lvho?Z?6gzO4*E}p$qZ>K0gE$%oVCbRFT0MU*wb?7}iYswr@{1IIVs@pJd z{CrHe%ux>lAI)mBje&P1D%L^%+i1RR@WOahM0NK9fMW!MT5e7Lkm0@qQAMrXY; zXFc9!-OBqh&(3(c4w%ltYJ7kv>wtSsu?Wh!q85gEdseHQ1Rfyhnp7*3)s)nvX`Ja! zq3BH(>m&8x<6TC`- z(k(fy&E|D457+5i_FIGB_b}fj_27-0YW_QvUP1%wEdF#Fp`W5TZ!P^e2XZ9p;)&`> z(jAElCua<=KcXj#X&{4u$JKd#VQ6_o-!oMbBmS}VlnXWtkM;ZI5~;}RJ96j0#I z{p9V@Khk|8vw+w3j2NMbqyT-iGp@2ju}BU&TA|Bk>aG@opZD^(!Oe7-cwM z^;Rz(oUC!vS`qs}4|OHMmB0{QK^VqAsRRk+bUCseL6;V_sd?EZQkW5B8*=L|Sf!D+XK$qkrdZr{k{AhjwsA4RL z^Zo>8;}M9YDzJZp9ohqdwOI)nutI}$0Gb#tK!;|ZF0C?Usad`3*j<5p=FZC%<-BQB zEL=K$%eGb-Ee6OzYx~d<2sgFYt(!S~CYhEsy;aSH6BlAUXIwo;iv}a0&>so^fhvVV zfZOmY1q@XRm{%#ll+G~qf-_l?hLlBuMrLi{fGMI&->UEJkp%TV^V+`wd@~thXtU5? z3GzXE{19h9)PrZXHE6REu3}h&<{mPP%BT7RZp-jzuyHIna!9FFQXxh{yCJyMZ#Uz)7JwX7RRjZD5)TV< zE9a1Gxi(m~X;URn#(qHgV$_`|x;yxFW?-R97v4-~wvc0^{#n+1WN z;RSy*0%^Gs1qJaQ04Q~nC9fD5BoBBBn|%O-$l%-oXE+XrFQnw;R(i;27*(f^BX-${ z$z+@~yq!T>%EtT|$l*lra3zRDkWbAS53c-Z!I<2qS=-B_mCf2^8_qg!dGdokIhR?U~Et zze@-1ymlXe{CBqIvcuhu`j=b@k=JQ!tr4 zs{4rX80QQFyBs3qk=~>b?DD1{D3C*&&>(^J_PqfZUb=WfNJXVW7n}#j%_vj|fVR5? zd>PgV)|fG>MkvEIfj$F!tN_I1kC_8dL{X{)U72Fn9i&-SC?=pkLVa z*RbE<1QH2LBjb2sKi;X`Cjq>o1pXU{D(}4wweC3oACTI~*Qs18?jOGjEymfDrg)!z-h+rUwNL%p9`RbjJL&;Kap{kV`oO zBL8e`OKXgp)B!*G==goZ227bUBnRV31JU7kDShYA*;6BWZ9y$qUbI7vH{2%m7jG@As}Jt|a8I^67>eIYJMStguT_Oqr-81{9VTCLRkMWCZaW_zf0Tu4A@W8R zp|cLUg`8PO)i&ytRyO1w_X=4vN)*)}pI%1ox^yXDl>wFYDJXao^SWTaFggUdi*@F` zsu(#E;WT=?1T+=Ixl1!R&?&)z2&mH22Xf7%2cO)JZCKXICnRS!$qMQz7$+rzTWi+( z@X!zGKbQR&61eu~4eED}BG>3a;HbVC8oY3t=u|&J=&O=N*Ty3CZ8&S~`V4KKKO>g{ z7sbI&1d&p>P)o>E5^A$>(nm0~k^!FQ(FCJ%83QG@6^%2@57biP!!&E*w>=b;R`AAY zW-BDttPjdH)d3|BU^iG(HDPWzxKMWsFPf&EpSkB`knS~u&b~2&=pUa@CN~~4Y53|u z*|DjqBsOf>C_vw-`{)(nw9m5l#$c*!9`v-6W8CIRO%4=O+ zZTXh_0Mq-l;VU&f-vxZJw$Fv3R8VP7WLqhBJGeqxi(yy=PGGQ8OtX+uOX& ziJ_wMD8=(0teV!Q#n`zBH?ggpu?4qp^fQ_?phF+hfaLE^aMbJeD#+2Rkj3jM)dY0E zn$SbBcsf8Vo{B3#`I&C!)l?dDY7nzx4CYuBxNyFj1OTmMUrHepgx)Os?&;*WR-l={ ziViE`bn}=bvb&&OP(=Qhi%PyQ2e0~U$&QJ1%rA{^k5FFvbnBgrZyO$4f7KkaAbWmM zyl7VMscQ!uR{vZ|C^Fwz|6~QF6N|QQ9yhOd{rrY27L9i~=85#(qpORF_z4(u0)5*@ zX&rh2-UWjWZQXeCa0i>wCN81!eNz}!Blj#?gPw!2B|;T2=yy*QFlctz z{|#QXy(hSEXp&OtFvjq}L#gVCKdN&54qWZKDj*KYWh`LvVRhzq!6Gm$*|S2a9-NtV z>w+83^?Py(*X}SuJa6QH5lhxjka2){&#$@tGDj>~J59zCu8QnVeL8yA(IWp2?nC0$ zhV>e)xe*^kyWyH!(CtN~j^4Y}XDcvH+JbJ)xz)6Z5zJq@YwVH%_QCklZC#zL zn0#6ct{HZJ0dWQecZ$`T4)UorjR9@(Z}q?bS6#^eN8v9keA5bleak}1!`8ez=lpOe z3wh=$Hdc>x`DMtpd@z?gEitLstkB6A!d@b+tW?Yy z>6Z|o&`#!rX+1k)k0 zV1+1*$)`mBI{Tl4=7r~1pE45?U|x57USU>!)gA4QE{s0={1-A|_x)7Vo23N_pm2hr)N2xWLac>IYgHb_M=rOI6{4r#k*xEuZmcibAfbyWyve9_w(`E z>PxEQJ&b-yz(RJAsz9NmXKXyU*DO?JD1kiQ_y0IHNWburzHg@GT#eD zvhd~ww-{E^x2g~ZD}(-kVq))*E31mlXrX1zrTyE(=UOgpZO}TtL7g=Tb0iXcV9%u7 zBB*uT2}PM-T_|@QI*-G48L#1I_O!hsU0Hq?Bm@gR-9O300bR8~G`v*__v|hc?&&?K z#F8|c|7!rmMMo>}VMfr$y;n@0sK{jV+i(EPr%$aIo2;+40dLT+yf86QmQ%pNF`I;V zTp4D*QPh8R~qY}oL8Z>Lpv#tl04 zW1>wj>vK(r?nb6Ps3tO@4j7wZ^M-s^c?1cf>qGIA57ZC3bXg3&M?`4nek47luRv8m zy3kZOs6;kv&K3*we{F6B92Gt`2QoAT=53plvf!=F5 zSc1mrJylGe??!sQ8|}AAof91CH1Btv^_j$jXYA)Cv+f6GhFD2`h4%qpVf#F>+5<^u zZZmX7z*q3RnHOs+_vSh~gqmHQ0wn#^!LP4x+UEL{ITvajf4a1!ml6Dt+W9gSrwm{5 zRumSej9+ubN_z}H=s>C%AP0?vQq`QH4+v}mwPIG&7ULEYY2y5rtpLgxbWg&$&$bwm zi0Zq}Hfu9=9T7h*w)9zdfQsK1qHScyHWbsKZr1@IQ|Ul@y%YtpXDuK7t?3`lF=JU6 zAMs`l5_VSdD5tRA2$KG;rF6G#Xkx8eeWr%qqQ{S4#g=sjJaNSHp3FjacYi0=fZTEv z@O@9uUHl3pv_MG_1ru9x(FVmGzV-bqocC#SVk_a}67m=ZsO_O^YKkXO#x^`*i9`ro zM3y7A;I1cs8X6Tw%1F2_|`C~amZ#)o&k09H{ zIm9q@@UAxq>Ak^bC-}5_v2^Hl_1v+&;vc`Gq<-BNGSuDOUVVw!fPS$;j$+bkqae`W zfv-kJzXCD87?CqG(^C-s`Svct41L)YYz&xv*eBXQWCjLIVrq)T!=PE27vQK^7r^1= zbiDX#epvCg2F+p`)L4;_f5>tuIJ`73{nc1UwKK6n*U0hb<%iFMOl~y3N7QwbPF=>~ zTMQ3|vNap&{!WUP9DJX&ihW-G6?Rq(0>_06wgQtEYGo?cN3XE;^J}XYS#}K^HORbK zA?9#k5rhO|$~Q8A?VdQe2YvOp#cF7&7o)3OL*a+NSvG8nd0&$Hb(AP|enb5g^^~@3 zxu~X?5$tSmwY-Wcj4b|R*Z9M?QOmuAZr3kefYhQ^qethdlhlv)lC4)irXs{!>im~4 zeFf-?O6Ze7S}dO$W;Rcs5*Vf**!0pR zUi1dc$drOzAZ*7L2t=5o0Iw7;x;nFC5A%BC%xNa7&sCouTyd$dkyJtTkIa~`_C~Z! zb<;*nI5_}noL2@9oxAx!LdTA8t4A+Tn)~;ba245IgV*e%;#W7Cx1G6`(sh3`TR9RC ziyg29ZA%=SfPB z<&$sNc>B8_i(Tjju!(G5p-OXbC^ zM)%{hl{LBn2T9m6x#vQr1$5BUbBcSx6}zcu<#OC$YaWxo3axD3VUmkZm0B+5*_*{R zsIjUl)aE{)aHxa}=3Tl1xU?D6j(<+OfHXqQ+`srfmDTpayv&}}Gy*I7%%0U3`0mFJ zP=}9v0&Q69L}kO@%n%%hbdqbJA90FQwK4oZ+m3NYI6)Kpn+0HN-%O_QA4k!1}1H5eZ~ zLW~INbWtk(iY$~6TpRX`hDrqt7#&=QcP%S|XD3of_8|4)g!i_J zy^oL}^%rCe#*it|^5~KPE+|}Erf-u@;>Qs0K!-H!2N^;jNYQz-q@Gc;2!d_$%!@MF z9<@x~Nhibc1+zEdP4dEaJq+SUb2m}EaVFYGQLmP8NC0+y_OBR%3wbaa z;9zL(3g$ciHMZ4iCiY}`3f5hQG2|&=4~5hCfYcqXVP$(N0>}U*lHnj00gSNxi3^Mq zLcFJNX}dkW9_t%p^(H=9dqnWUem$nZOV24osJ&*Lu8_5_QKy?YW5B$eUj61w?p3FG zyLxq6wFmw`1iAr=dO zH4camV9df}Wx&Hh1qA!t9h_gY&naxG#!KKo z@v{tbGox)|>PGiY5Fboj7M~J_$as0e8XVfvgjm+_OW!NPLc+Io?|DB9x zEDVu7u)7xZvZ2alk-+E`nQDk?lklUD)zZ`TZ>fLn5#8z?uvB*dP5Mq9gBrNm9_3bc zmxzk}GFt=+#7GiI8fihqOb>MnbR7BftT#+L+XLL;JlHZ>yV{mLrj|!YbQ%KpM%437h~i`U)B_ z7S#Hym)2hQY!3jx{DIzgzp4F_?U}$Th|Ywdc=Te*9%NFz|5&}TR}zr=31m54f$-Z; zVZCMHU^yTaaJ4_^$8Nhc1w7Z<0`$>Ws0*9i9Mpwk;LTK!DP}c71(G-W48sBw?64;} zc!`4S`omIvtUhpO$f7kwe$7DdZKwKH?Z%M7-515aEa37_=-2LL;?I0-9WTz;vzA;b z6@^Igl1+kI3eZ%nX4>eau&$J^E8ARz5o6Vv=ij3%d#-#)zealXPo#%=lozXeT_+21C4}u722ZE~ z5>(bg06@6G`Ff7jTs;NfenNjDKg0eL9yA%a3bys+i|FBC#-k9p4q`LR9^C>eDp?z|-HumX+^|Y5MHvH|G=YKR^|hKq@)Z)$ql;nD^xy^}yWx zK~IL=r+^;@jxspXCf0%v5s&9_Du8=?oM^M1oKkhs=r47~-M{o=TB}TycJYHhb+9{C z{F~~xs3&c*V(1mOP}RuX==0C3hv7|mw!UT66Ud><#wSUp-&xc~31mNVd$r zG@OX)d+OggtuKE`W!N1I!R}zZSBFjldP>?3GnI8?4B61oLrx3LnNtM5HyDr;Qrb-I z{pdP+2fL3T=}o%)`AkMpre$FJVY-a3lngS`!$VK*1OC@q`7AwST`r!AO#}<=vl9z5 z3O=zFJQ9IHb`}4sk=&T_$=~2lqg_c2VcW^_W%>D}c|Hl=4LsNeklt(u^ zDf&+b)F2}$Ob7DwY-R}m?)n4&7E>MPBZv~?N=H3$nd?@59`1nKE#K|>kkJ`7 zEfA-`-NPY&mLv@H%#eq%8lAaCXR(kujK_RtX6TeaJx}JsUM*mQ0Z;OEGhv%--|#4b z138IogglW;S&s(9M0R^sXwhIuy;+h(NasQ#isWzjWQ@^xLjC?w)r(a(d@|N(d>us` zO1a?53}3%L*ZGL#gm2oLd*&hiBVg^54SUPi(o+S}nx~ugl;_enTv10#gGr$D!Tv)x z4CQ|Wzzh*oL<=I@voI1e)_R|3G4RFGCh3QD@^qp0NoD5U3cI{QxWSSh(39_vROr~` zKxwncNMIOjMU=#X4R~sZd)KYlS4%Q$s&D<$=0e-DkD~jQ^wY`u>BA0PzyXnW_v1*{ zCqJlPTGg#+TpY4L#KErL+O{0CHi8^rGXR4@?*oFE0%)z^(?iN1#h{Io&p->7k^vJ- zh7(`a!G;YFS@5YsVde__vLsJlA=z%?HLfWVX2S+na$x9wf@q!9#xh6AAt&P5d8H|# z0c6#RBah%QE~5uUs#Rh>+*ds;t`G(6o?n`ylbiPIHvQumwfeq96!F*0vB$1b@tN9w z-j-7lujOMzQ2ixmP+}e-(>`B4O5L?}`9Q+DPF{wHydHGvMnFV9M+r|!WwZvARNF;} z?^>?~hJ1mvlS(j}sT_@2eXH^mLpWnx#mWy(2!ebb2L$(cA$aE%eCgno0>A?Qc$z*-2sak;O}HBThtM;w^iso{<_MN!b# z_(Mi)LrhjDAiC!$B`D_Gj?YlMDCOt6PIq6j6_bnT%4u2r=_c5xU)2S)6RfluYWYVg z(VpEyVDEl&8ShwQGvo?KTl7li4D*zQK+l*@f)vtqTu31(^p!`DR-gI-U|jAKu@`u> z1{5qp;RP=U+(L=@^ zHRo1e(SGrHWALb~ZPDUY`q811$#u@peOIM4Q>`x+Og=xxwE-_2pS6(UbrZ|qYTOVX zUOH)yh+tPQVF_eSfmjf|!R~TC&$IDs{^Y4rZQZr_8aB>i#oG{0`u|xxY+C+oc#bF1e$Qt07tUM5f9m*;d0Ivy>8B!u}4A+ zjq1~@t4AHs>%VQ)nM(IdYM=ZMQSg+ZebDY=5!-v8IM<^} zPV3bt^hk8BMIAHAfbJV5w3$(15lCDUunsXoW5rz28wz1X7-)GPVe^w82w(t^_2CCt zV|d;H_qsh0e^l0SbadN#OY*k&tJy@dd7`Hh;Ik7X z=U8pM{7_84$^y+kz|J1L>;+ibuW4P&e|b04F{4G{xy6UJg%=kV!`4>^k4{*@vR!Ov zkGof%AE!O+HrPn|X!*||w%|!jaeo8PJbDM}9-;y9AFV`sGF_0#0mB2YnkLuEOT7eU z&V`9XSe_;sz$$!p2xD0RUxoc5+6t&LSSg1cHfRUh!*=IDa`yN!(9&W>6_Xi#I`d#h zO1cbLk4Vuu3G1Lm_d9h9j?jhRz;i23RY%WV-&qJ5*8k~%Ff#9_ZBx)^d%lyX`sYs_ z+n!Ymq4%P3qsbjms7xRKTDD;LnoY!jc>VoS_fy0O5UlN}?6(5{W{!YcxX81;3mA`> z(M{ONMe16mzM)++*t1|cn2e92EFFkG&xCQ_5>HqBS@*BxviKu-F+tAG~rH6(DU6JIXDp_AsoG*(AkP z>oz1|t~&G%cGM58nG_LeNE3fN`TY1R1nDR&(-4S< z>Il7*NLw0c01jTnd4^mI{F7Q>#C*MEMOTaO@&_PTpijar&R7uYJyntewH|YL0w1%; zR+(#vI4Vn;YROr`wm3Y>SUiQ zJIc}t8@8Je&RdGtmJcHPwzF9HQ`pJo8Dw6~U<-RFA$(^fR%2oXUxVpB99KTU9#cU|)iC=7l#FmJH1* zLbjIMSDv-#tt3M1VQ$)6*Eiz+OWd-z(~RJFs-gJm&YSC z+41b-*YwBaQNtHsh^BFVH=6Nod67X{}ltpP(AZHEZ2oDt`V(|0dZ> z30d?VlZEB(AE^;!Aynw75ECP|ho86s(&kX9v!D*jm;L><7Gr-%e}*u|Pb6{}&oWv?uo6kQ1lwcN&&6k3HiC_W2Y*^wL~5^i z{u%T+B0DtVrhx9p_=_)N!w%;5UO3wvylnjJpp6sey_p#tt-h|7_bNn5SALS@8AF?x zLSj*)N3cOw{}p5YA8B6!AH}t{zvs-%ZhSW$l8_K0iw7D=aCdht)&%$98rYzavU=p5Xwtfbe8oaLwwt}HoCJzA4KMvt zDZ#j_z~+vrTJ6PDW3WRtD04BlI0(2nzC$`S(cu#7IoiEzLC4xbzSU18dihWIeB0Qp zpt+xoSl>)iK9K8WEMm`gd1Wk-d{K_kgxyW7KPH1(NTqjgf)3{_{D=+uP^JsUKD9^_ zZ_g)#NHx%7H`qnvly{)HB?8qVp{B5l5^NAU>gg3=cbeI$aUe&fD4|PMN;ISwp%l_r zeFH2>AC9cVwLo;%%CA<&wy+4`v6woaXJ85!Z>pRSmUl9)&>Aa6c!@ZO1WfM{wTDF8 z7tTL9>v&IVa$&N?;ytR@^vsZ`3%C8K-@98jWCk?oob3G4Yy7+h$g6HUz>B5__@1~u zd7>gsEzTgFDLY!XPVY2H+Ohs%0tvcm%Xw3lZ|-F~z5Phn`KRJZ-?nQg9o3KX4tQSf zD;IG}+dE7VJTYHg4TJAU6j^FZ<2IN~DoU&|g+@)_gr`Vk(ZnWLgu#kw!O}tXWGJmp zswdCv(zIz}`QYZsZ1m96!(I<>U`+^4ZrmZQg5*J-5ARDOGd*b!=NRXEv@M<8P9h%J z)UY+CzgjqV1s|SFHy7AKHk+D_HC=&}e|Tg3Z*G zXrOY(5m%1CjU9|d1VBfwP`)hOOKp!gyJ#9Yxh~>1+vi)-FE5#p88Gj`(1mr)mX=MY zMk=qdW0H5tov!UHN~7i<)=fBJH(R>*KG?9ll>2i3Vz%_OOc#y$(;}sRJa^026KFPb z^dCT0J;}*ftN4+Tf0ndbyb3<>&bipL+|pl_S;F6!rf!zOoo6UbaZ4c}sOt0MNU=i> z63Qsz$Ph_-eH0t2(?>CP(IFEGf((rr`X=8@a3u&R`3bZ1-ZSm}pV7+V)8D)^Pg(s| zESa-^R?$N?E>do%1R&E~qQBg{`=gu%OtPgLs8qw*kHh|B7Bip`l)@7fXPThS!VpW) zyuzH_`@5s(u)pcVep0P9kj6hbmDtw#-B=n^KLc*C*R83iTN8MPp5~R)zPSJ-?BNIW#Ny)oEhdE0IPWkKr96CA5=H) z@#8ZyB=CrUm$m?!7H&Ae4i{1`@F-*-k!cSK#!~3~R6MIs&y*43(@_m4Xow=+QXuKt zy#iz%Ju&{wXp-{YFIInc|7+(rQ=ILloOKq_9|w?jt1kFk=gyVt(do{eggiL&<_~nc zGYyM@ur1k?F@70lOhgsxZp=8;#DU*=UlVnv8nA|#k70Mk8gN?)d7FCcl^;_N0lIbCvhXLmw7obBl0;WJ^(>dP5LkJ#i$xh>9Pm&#QB?lu&H zw^}84>mf;1oQ>2j9L-s_G9F|0Mpr7Wh{HgQ27#dEmW!EaJVtNo=83-IB6D97aUs&A z=pjAv=!}zfZhW>0Yl0})4@%&(t}L5C1X1Kym}E2zcMyFdls4$&*E}LF$gtJ9Q9AfFpHs8JRu)X?rAj$W?_qVb8-#Q;7s#@~?5Ym3l z1%JOebFg$B33+t>&EK)vHs=GfbJ4WrX!KCJiscAi?1yppaiEhkE+ z^ZWGJH5NC%{6Myi3}ZRK;y6g=b*8UA`$3ZAsmwc_9Rz)rf)!b&Vy%Ns%T&TNIIIk8 zSSYR9vb)F5XJsG(x6FZ`8K%4q9NC5#{VhD{Hz-d=vuLdn8cPJvDNm=zmhj4lSU6_j z;N}G%Y6*nAW&7l!DcMfvQ#z7eeUEtU8-Hf}M)K9S=nT^R6Po25$sdvzea*R?&Jd3_ zPEURU<4d2&S&%JNG)x=Aq%=zzvc=$vfT%$!3LJS=iu0-@>Qw=)p)THot`1YWfr zF8r5B~3k7$~p2O`81*$Ktkj^wyEb5 z&n=$&JPSN!j%JOVh(Lf1BuVm-OU^SFOV(X>7NJxKO=NmMKZLr5L!8Rq#%P9t%53oG zA$;NHf`&mE0_bHd@gLA}20@44=d2D6MOA*Kqy#F%N}zIh>~HqyaG!v6wF`~Vjlp$Jsb(__<&@Bu zkieBhmy-LBoQ=92pVcriq+e>Qxccnl>oiU3_`Lb1nUs2FnN#Zym#e^wJfQT7@)`V` zTnDHEEjCKnUc4KxH@6&Ib!UK>6~Ou-;335bi8*|$3f2P8J!ljuU?5f>R37pddbbpp zAi5lKjV4STqVz0F?8GR8oQ#3SSj7Ov;1j7%7yIRuaqZJCi`>y0rp)s zxpH+Y@p*L*v2B-cmV9>du@99-Nl*VQ$&`M7>-?7%z7x$@t}+fg;caU8Ur3x63K=t> zlPY95Nyd=Is*riOW%QxO&!4(v%rDHuAti|ECMdEcelft*&d_Pfpn-@V()L~>Pc)3- z0oFM{3JUwD&qM`w7J+eY(}EgXI*TUcU;pI&(2hkNJUqf~<$gYwlOugOh0^ctkvCc0 zR(1ACQZfbJHUVao$x>IW10*l!tcC+3^k8i`h9j&AL4$`3c@tt$B(CD95AysWdHnFq zBk~AY8P6=}C@3VakiPg?J_432Mqov*1n*7re;9;j4F2aJcnKLOl?soBHX5-@f%*|W zS~qHUqi0q1qxzb85p>DqTEPnJ*nGU?TES2U+^g6G?)LL_X$6L*(iX%8%`Ng3jh2lO z#u$d9Q855hd4XcEm$n~4l0W*^-=BT>jq|HVES-G8^@8)z3uZ$bc!Q9~XRrUFggFnm z^#aM%3Yh#{pW$5vLroJL0cw9cXa?qDt{()uW?&G#1_jYzzG?y%kz--6nv5X?7_K^$ z4IB#hJd)gPi8;eYYgD&}^L0tlLbrZHFQC1sH0VE79A`6iCz7F`EpW}Jiwj+d^C0q~ zd1yob{~7JFe;MhE1_>ITBC^xoMjp8f#ZI^aw1ZRTxe{&l^thy8jUva^k?6rS7Cad= zG6XMl$|Jl7@K|Ggxse!v%AA-o$!}7#NRUPXv2Q0eEo;^u`98&YBa&A3q*C^VbysVh zsX-cjvijz9i@C$cuTGeI?{5!sYyWoCY)9zNs$rE6#DH^Og~FR(>Y9sVk|2t2634gF80+pqwdX8{3Ok?w@L zLS2jjn4;n?bZ~>s2$LD=DfBtC-clqkFO@)q<)o-oc9G4zLyFQzdIyl&-;?*8&O+Og zxujeg%ef|c)lIDbRz~s9z^IabowGwGv@yxy``H@)$X;fD#O13(Ln^1@2?zz#qy^_S zg~(y@P}5uz9TBSekK{NVh6A^Ms~R*?QTD*S98G9|308hek{^}LmgLX`K(VPF4(u0Q zGb_Khj}*l|cyH;Yel}UL6Z@}|GRtl8>adcXzTNa-PDWvbMUrNYU2!JdZ{AF)gwFeX zS?KRby`XD;Sr=6u-q+V^1;)|(viYlvztkg96IXeA4IRq9`gGAo@8Iu$K}!R&Y4x_=VGDY0 z+)v5J>@*qBt!)=+3+di@t%ZQcpe9^egt-`Vbv6IK+d6{xL1&bLSqKAI8o|ov78cPQ zDYs-W{t?)YYuF{ZF<$zaf=oRf0l~u1hiu?obfMVs(<-cP?HAlSknW%7>1~iGKKxtU z?_n?;;oT7yqtKTD_{a@MT7AOu3O(s-yO(u8p5ly8Dd<7s$QO&*`Iap=4=;IxY%Lkc zs*=X+61j&&;J?@z#_O0$_d%ZdVXVQX4LX}q8<|i8v?W=JjZ0MkKc&$?(}8o~eENuk}A}`}@eji(X!rI6ukKvi(uGLuOhaAA@GaAAU( zq#JnrivbtTt>^~$hpyvE-nULh2E4BWT=>cP0nWf%7;!zUlRvj;b#Y(Aa%m=mSV&DJ zTBYJa>gZGvM_1odPRl1+4gQBb)8ILY?j}#a zDk@mUs?952d%WoJpHd6#ty1z_s#bCr199zcGG2O{R;jxyeoWg?!O64>O#p~t2qF-= zir{F#ZkyoA@iRPcd7}KKi6^%9mgi@lbdtmBNz#w+@;u64m*O-01~#9+O5|Ue;F;k` z)AdeCcb2+p8qF%`#-jO_cO##7FCaJBOMus?O77`SgfS!je;)9^WyDLf3wE=p-33Kb zM;GfyHVq`nH&`8u)|1V!I_^V;e^SrtWt3QP-d zwRdmUr=VY_Zugo+QV&}3my>-ub}i`EuFd*gP{4eueW>o=t1>n}r6I z{A8o_%|hQgjccB_&;ThgfZn(zsFoKg5FJam?^MhXU=<(AKSgcWX%yKHe`{eD-F zOCIhn*gY?8cioaFV1@&wJrKE-NHfqKkWpom$dYO2@Y7{L8bqpKD%t=vcH{6Psygon z?Ma8{B52;sWe5g=$TN3PBuOm`JItQuI1~I*K@vK8>>R)1l|r&2hSHBtk%sJY?dqG& zQZ$Wlony0yILCVLg!b!#ooE*Z0@662p6~L)mH+TgyqZfgatn5odAkdXo_$fIEr_&7 zwDQ54#If^=6C<#iI=a;&1L6MrApXreA&ME?E)thhV(V^_f#XEx?k?QDIdxCn=aOzP z>JDKP)YKb$G#jt}N1ueYCfYLm|M(gaAD0DSg|2tMYBExU)B=E zVTyCDntRaP0ih0BI3Nc9kbeooKFd;y3I@0a-KP)T2sTWwQgSAH-*qGw z{q7#OlS9m4)gj}g^RBUXaaaVR515hL6J$6P|5yLRiw65I1AWmL`8lbLT=Of?8e_Dc z=>`SH9pA$`={Y(OvB1=YI|$E)2sUm;!5<7&GK#B`{Ha0|nWXpiLKJXq5h#+peg&4d zNvA6!JfECE8>D6h9rjvueeBr1sh)~iD$ni}?|a+huzAdoDS5Tn#0aw3W3qID&KN|} z4i6?$>Y3@ynw5Lbt|{^-2gtA$vXcKs)&}8=s|o*u1@$YzsM49Q%5+1zg@F~iC(PA; zE%(A<3J4Y!9?EJR^HIckyeZJf>A>S%ArR>#z3l>n#^8m3Wn=I{kfdbpZ{f+%JgbJo z*~5vA&Tpd1fIDEYGNkM8%}MNq<>&iY0SNZ){dpG$db83V=weE`C}hU?RqsSt6kt%S zek+_#cuY)+yzW_+Co5rZD|GSaO9`tCQY@}geGO13z61)zj5R=`ILR%y^Pt93@M&(< zraFRD??X@-H5&Mn#-hbJa_h_i!rDdjTdx?RNwP?wf)LdOu(8jWpXPr^7T$VzAJC7u zw5YHhU}?|aB7=K%HG4lh$^P={-I-Ku^5>|vTw5gj*Z^|1%JzZVPO>AN`pSfiAappV z*J$+o`T|-)tZ9)6T?fi^FO72vwNcXmL>(5iGROHCu3qscD}SmO9>aBuibfX-4Hvx( z;6kyLX#(6hHDsU&Bd8+BPZTPRFnJ_1Gy{8z0DW;O1_A>P$u%+b4Erv5?dhBifeS(| zY^mNMx>l`Ku?x&VZs0v|Z|@4<6^+i zc_rDm6S@xiH+G*G2B zNwM?)Rd$JvB6)G9zJ&KbGfmtq6`3YFv&JpKXoipTUAB(UasAr&SGatDHEHgGx$`WO zc`wK^5jwTD!3K58ZBKGmrKOxWh`(?H0tWyL8onldLIEgQzZU;=6^ir{-TXOga?8Me z2Piv!FdD$Bqs!~KPCE!+rJNoC#yke^t+?;Gj2$k9i(k^q-* zC53@8{l`IlkG)sxpFOJYtcq9}RZxLcm(Q`k{-am5d@l3wVVuiEw%w&~w>AOyLeQpx zY7M%c#!JP=G)+sdaB{{eLQkB11`?>6(7cP-$tK4evwW9!_xu{$PSQX*#54ifgN@UmTApJvDlJg;fs@9}hfUbWD*g-CK>@?q6`}n9ra=X={TE5o&*MYe*b%KBMy-1ARntdyjs(`6hDWGN%={TXJ7Dgu=mh@oo-!jR@0gUsF- z?Hz3%{20J%p_>gdA^w|bD4)$L_uxqX<F1=<1 z%mRs5%6nI)omyofO?4mr(3y~s(6p;0&lp2LawZI)PNk{i=tnr^HA+jQ%jOVq%BMJj z)m$>fWVpxFeSEdrMs4Vh04q0*xTw|XUJgmUt72Lp^bUm!xi^@jJ^>4PggQPa1eJQS z?J*iQDZs~7{g%GZuGe?&EAsJsUcl-UosKwJudp7e%ldaJ9l6%Ww@+^{vpizHvNP|V zEZ5H@t=Jjo0@jMs*`o$b=g8wc!gCDuWmQcp9bqCKpw6l)Hl(UXWx`XST~xw5m9)rC z1zc3%XWUe^5}z-+rI|%W3)~2L_Jwl{Lmn!Iu85OMwF*WBv;r5HoeGMBsE?Ccb`Lw%$$#S!sPFNXOhm1#$OQWlH?2a+$@u@$6dQd5@#PCg(RkG zK+{?SxgBSE(;Kh*rRjTW$|&^-v``Q9iVq<0 zbjQXKs{XdkrTHM=f>V@U84yK8s;ZzaYsdU%q}=8G@6tmP2hRmq;~Nodpmo}`;o0Fw ztjpdVbN=JN3mhw!j`+ERD+TD~C>=bMxwSx|QwNh_2L}V0Ebta#HF5rF>1o)nJ+PeK zh&%LAmrsZaji%h*Cw`y|E<(+};qVph?g37tKTzB~?(TIF5)LtYZs|$c4z4muJ z*=g&i*XgtUf1PCEWa$7>$lCLVNQ~%D+i?A5H?-;;jFIxdT+yN^e2;I?T+ZhxlF*9u&{;xAL*#!C}*byl8_zMLH7}k89^hC3YWjWtp~j z30ybE-bEopV1~m_bY}%n0;~^pBSnL9Z6k#nL}MC;BcMSsI3oN+9&?1)E&!_PQ?HSi z1w@1BVkBSv19<^}Wc);Pjmgem*twa?Z^R`f0o4=_xw-HCdtnXFHuA6pU!NW|?rgew ze)fT|Mn#RHi0!X9Rw6HTHnftF&U=#mt753Y=`Cu%D$#gnCY=!|(d8T13Nq>A&*&2B zoI}1LpxVmVTW{=bB&r}?s69e)(zesh6y-?K#uZts*cHIh0|yB+ffA@MRYt#0StLQC z8nQx}b%*$C3gmCBR#3;kOF>Vm z{-SMRk>n50@7S(Gw?FVCpRy?LFR$+1*C^?Lg@&-Mq{x%dg=o?KG9hg+qqcz8>yN#R zLuLOqM+H&Y59#GbI1uh1Z7+p-uU!aDPTN?6`si+T&bgj@Nl+`u49kFYn89q^WQfFxQY-emyq?_-y*>rjk zrHi(paY2eb8EaN>K?i&vz*Z1o#^jfB)@!RF9% zEh$=b>>mgR`c1yD5B^T!<11K&zIvKI8 z8cE5V)@l~#)#M0^YEH2|K1Jb>LOizt{cYg$0m6obr=cV#seK3$5(e^HFeGlBP;zY3 zd7IC~$yWAG1c{n;d8mg!`*C!dr`M|Q*VOLT&um-UZQK}1IeW0e>I+uCr5mR4w$zhXYR};3dxdQbK^)t zX1~qaO4;U@a1v{o_M7r*sHS=yt?m^IJzC($xRGe1{?#@ckwo3Wax=M)W z;c}AWJiolfUk$E=P_9mIby(GY4G@^RQkT3MHgz43TWdzw#M)M_!Rzz$sut%}En8bG zEmjpP%Ae)fSl!a{#a9*>)(|Y%iJ=pWR6?ggD)^;B; z35`lmuFm!j{%dapX(Avuv8Z%p?;cG$NhF&ndl$BwmJ~a!L)I~6@|borlXC~nT{*bh zRx{Q!s%$;WP}aB~gJVp1s2CG)F+oV;xx7nW8R*k}L_v}|&x9ky1v!D{?_A&47oH+b z*ucI~Kl@L>HPoF-BEJpgy(z$%2nwOiIn-K8n<1pqi883QTKRuApv;3xS#0MUf7ExP z5Hl-?AUDlbp~qXxmTgI5aV^ z?SER!Uy#fhC+j-%eC80#%oBBJC(ArqVJ9)K0|;@+*3cb{0gf0L#cYOhFmL@u=_TpV z?)8P-K6#z%Q9uN@a`aBOL8`G4gXyMC2nfZZX$FimkFtI@U;w~l!Xf94SuHr+Nz~J$ zA(`85+vucVuaT{sm-hc~g^ZuRRH}GrEMwNe_2yBsTpW~28>-ZhDYzeE~5DOV7F^fZmC&E9*< zS{PIilJjnyzh}@_AqAnCS1LyPELc#1RCqW(2U2=y^mH=I&OZNS)^7HM9hJ@#snIKB zct!U2z4T#hTk8>IxSd!&z0PH7%hKg?b-55)v)$B5oufF3ni$nq78A(>dM2`Ey^8gw zAfKQPQGz>>5krXQMz@$7B07k0ptC$jQbI~)KplYX^NB(tnuCKdRhk@H5SF_;ghrNL z4J`=WxieUbD!H{Hr+us7f{;mTLaAkCNP*mH5}B01KDrtDG5e&#STa6=#J(N!1&Jvc zl}JLaq^*xiC23XP-VmHruejL=XbTduX}>b(SbBq}w}iiFhdMVycCveJAvSKXU~V3O z%<~l~Y~U?=Pd^G2bQKAX*bvc#72F=JU(jX@|3JgyyoQNrJdjsAG5;kU(sgZHUP^IZ zN@9Lf-OYx!ytc)8Z4>i47Uy;3+#Kv%z;-97&a@P0U8v4AOYTDJGM^gM(gb^;#hwrs z%hd|N7=bTH=vIsM2AEEh!+D`E2hO=TYwVub{B>^nL1hna;$;dl%t-1UUgnw zaeKT>2X@Yvm4~MiXwU1DCdxZ4?1uAR^_TjMk(Jf+$m^`fRG@xrSx;LezSL`^nOt2! z&9fTR2_SJ}(-mYc_-oo6wK%PWRHs%4^C~_=%dB+L*SgyCW1>jq=tfu zZClJbA1BNMz9}L<7z>`{dJ&jX8#_`%5{YmB*bsS2PF6sbh!6L^vNmRJQP$4DYUMw8 z!~c}MvLrQcHeiu|!tproeto)646H8C`N6Ai_x!%q>$JvBQ12z<68oI%MO_V%G^Ej^+y4PCGEP0LC#ZiqO@-$};(i73 zEM})_gZUM86R#wUta#VN?f=uX1wtsMt$a2+^wY!VTFySVZP$x^&m|uRNkKMtE_7cg zcS9e&AuH?Pg}%G%-@MSod(4>m^C4-6v&HhSz<-Jaj}&;(FdPlWrrTWw`GzcA$Tywt zl82C)PTXNLf%BmByEAn2yc4Xn= zkSg+;IkVYfG9Eb9zMFqPPwbnJJ^#mt+Yigq_(v<)ubuZ@k&)_T>ckdGUjkdL+&@RF zZPEWaT4Oul*g)t}Xv)lemmI^6HyXu2$+rcqN3E>yCkJLeUcT?T$075W!P)OnY4q^% zY#~W6xB1b+syS?>EPpDp3(V}}FPHBDq&-I16q?IPr7@&wpc@KOb2VXkfPw{oBFgRf z0}dfv(`qH%OP=JB_~+dj@pbkr`Sl39TiWXxIdLTYAUj9498Nz(rXHShh;(E_4^KLX zUn%)Ueyy}vDM98P(CCrGB9##segqOB2BN^38@js+^$y5QP-5qjZ^x4Rz~%NQ zgD^VaatEO94pJ{MU(vBZL=fPqLmo$9*-iYTjYW4-E^Ne(T2h=1o6Z)c1s8Iq_Jeg?onLoF;c z=x9WIC*^T^W_msT=>|$@X*ccDJhlNfihtV9IWAk+rfYD1m=fA{W(E{Rk7sp}=Dk_r zow!4h36Kc<^){v+ropBRQ(lwAybg(ZeG)Z;SSW1ZVfmikZXEBtCW5k?*z#NHZo+TW zL16TBu;q8t-H$2G>mztqA6x!F-Tmstu!ZyMmEFN`A(ul!g6+v%`NeDC_>0#PG-CBW zR8jY5^sm*=>%Xgg9^ZBSn-wk2ODHq>+2uK@f8Wt#mG0dm{5^1c&hK}RV$HoK_ZMI78Nt?jP89dM_l!vJnB0%w?%pFp{;l6ILWcJx z!|8DLr0;Mts<(LQ(Q5=5hP!Fbzxs@z>Pz+oK1=ysI$SAN_L_P0#lP{-PxC$Ng6MD$ z*cdYMwf#ViVL%?L2n`g9KJqv~n5f``TQWhl#0|bMp}|GC3W3CdhglA#IuuT-Ks%%c zK~JH0{69q@De<8Su_*TVK)VElh|oZbNkCpByFZzZxExutRi-}+homMOdRd;Tq{|3ALP8K3wTpBZ-u>y#CY8^j}gRA5JTGvKy(`Ea}x z^HK^tQ~guV0vlt+jWoZ2MXyXAJ^uiyTgNwG={$BIl{6gGztWyhjHv+E-0>wKzw zL}sp+<h=FwFzYzz6;nk&+895>@N`%nBEvMr>}s zJ3M&0f8HSl3v&b#jH46jnwuaZZ>Vunk4*r)0G1S(7}ywWRUq&poqfCQeeKC;|48=b zcYd1+LPPc+Jq92b-YkJ75_xT@X+LvflpCd+Z(hDlh;t~0%U6Uwl#r4jM(*>1k!#fT zZzHGb$Z_)jfvbe`uTucU0&=GmY<#0gSu1tfjWl2Xr;fOpJ8jmL8MAt-g=6eX zBG0(9_#i7y*jiyn#){oCVdXK@($dl+EL&iDB$z$|-?Pwe=9(sce;>;hbz2FhAJzNv zAN;a z+!Vt%+imSY1Gd7u%VX)c@T7O0JBZpr7MhL7ud7+hlOpN|{awWVcvTm?PD)#6390n? zqwZBVR7*=QDmgnbt@?%)ZQ-EY+ zGJZT+P@RmuY%*Z%DMa4H`Vi&AGcVaU#10jGUWX=ZsA?w&!a9EkE5AW5UsBt>-ur-% zclZvRK?LVr?0}zEmuBDrVgfJR0nJn6@G$c#Er?8Ask1&x4(_3gayfhm59)wS`6h5Q zN)?nvT9QBM>?4*G0Z@_^^yNRDuaL9%=~^s(SeA1hUFb}9hGVo-KrgGY_I{>?>e`FZ z8kSqTFwl!OTG&U(>Otg9t>_U2KB(=%+N+g7yu^o>2Bqt{24{eVDG2}fe@ub?y0R;Z zt0qR$mb}{Q3Fzu&QSAlXSkYgXmwVwXGyo-XGcsJ9 z5lC6f=lHxY(wPOP6Eo8`#c)Q%YG{E-H}Mff!?8OA(IGGk-AoW9*B=f@oPBDUfH{Vm#yI?4Xj>Ll(il9J?s`*x#NGLj zBt%4bk>?4~uMg*8#r4UL@M#*EcTxzrtXt-YGs3q+A)}qd67Ci{yI)^0#oZA_YHDWh zmb#_Rh1;_86|GAOmpkTW*r6~UrFZ2%8uIeop)Q2 z)a#s}8zFJbMv23z=<}_sJ{aZa|A!-P{#L7P!-_Y0qOvRsa$V|3mk??C-Ni>BbSmzi zv3NfhI<87KYMNB~g>q0JE!9IG5<&F>Y(b-Xw{C)LDJpYJP>#z1&;`F@Lpe9J3%$=6 zR8qYx8saENtK*xFO4S7i!yK#V<``|uuU&QtbB23{YKW{fLjU%W zr4rN<5(+pGAZo!Vhgohxh&A}eo^896 zohh-z)%k1C6z8vA*&o-c;3s>p8@WEJqE~sjRdXsW{5j|4A$v(U>7?vaN*-M5ed-~l zwy#O@gJ+};T4r3I-lX0)?2W5Il;poZJ%=>B*{|yt7Ww+cPnttV9}LW@{&Fu^IxlG} zDdNuB88xnClxrmc802frs=-R?lhd)1y2WyY(JFi;7}Hou-T@Sa7kIx8)=`op_AOexaQqu-=+ZiI|JZ;bGi(yAF}z)DTYevD;e=W#dB@b!_jg^jRF^E7xgG34mIs5X;Fi(oW^(wYo!g^(Mrp@aKLv zepBRguXb7T@eV5`2X4>k{P29`LkKDU0Nv&;_;XdkpBuXP@M)p*Tw&SL?}9(Stlp<6 z<^!iV!g9^2_5mZhEtWmqpIFf`;I>e1CDfo=lcE&8})T$b3fF_EF{X*kV~_+>eHgrc{( zq9Re+lbKoayH=A3DR>jB%u$mPOb^x7l;edIoDC_+YZVhrf4f#6_p!=XAo=Uz^W}iK zZqac3!E*myVbrGMFq^nLd=Bi8FfRNd&2^Th(52w=<|Y_cRd~5kNos*+#Z#!sqYj=P zKI6wU*jV?KwQ~U2IDYEf8XIfey&c*?$zv(4>vZjICduqQ-xzv=V==}0{Pe`~=stOq zj~VSJ(3_37Oi_`ze5W8}&&Gk8d}0XgDL zqN*U?2&IgJ6fYtI;ObFjY@GX3bbO2RBJLf>PV=Utp`wHa$TJp1H?*insF}nI1CXfd8&4p>?I`XN#u+PPtFzAV38%p=_v z@a;CpU5G}cd#Ji0f}pj->Yjg`pzgdlBpt`yibH1^J#k|h;%s@yx5F~%au@h{Hs)z? zw>w`2Oj~3Qi#34jJtP?`V-CdJU47WQE_tUuCKDO0xMe}#fOZU!Cvopb%2`(fei(^VYI>2*x)+n7WA_}g`Tv$5myzjfUA-w!n15Z#%_nq7g>QE6`!#-Rbk2l~ z^$Jl9K=L-XzI$3omHv(zCe#7W|#9g{=Eky)V5CKPUIUv=QifLA=6E zUrD3!3C*7`w#}W%M*=vXm;*B;%n{9%`ypf^SM=9IgXgNIzK#GIve6U6B?|{d)GGM6 zZ9+=YX~E<(?C)}yw$x}BRkzaW*cr|a6V3wg%{iWK{JZ4!lQbyX|2BQwnStqHS8IGP2!7Z(eOLG1bUFLn`G%fS?Ug-HQ__4}s>3Z zAxYj(s-K@D`J@ineoB&hZ%9mjc3Ju3R}$N=>w*oSjE2Y(1L7Vs<3>8l2_OBxnc3X3 zhT^MtD5`A7p-?Whd8=Y1MW74@b;f$9Jd&Tv8K%osCVq}p9G)bV(Q+qaiZsW$AyVod z%3_aS@$+8)>zZ>9d`^4J9>3_k&41yl&5^)WUdrNZU!7j`)>ujY{`8bhvb;58HQHjo z3M`otHc767-3&*MHpNxN=Yn3;Eb|u)KipgB?cs@B0p)RJ4b}Xg;brte)QJ&QClwRn zJ;)ML3=^s5+#Mlx3}$vXw*1+>kIp{uIqorM;?m1j+wzs0Bj6RuU?BmI3aqkb2JPe1840zdxz**`rie z2n0ymtl83J+6ZM8=I<`w_|;jN)+ITMr|&Rhj4zcka}vfFimZs29bszsAtVWFaSM0o zipxz6V#Q$&6{*zl!~^F-x|iKC*e?&%4%TdXTBpmML^6S+Y2Nj!Xc9 zpE3Ht*At^>b*nwI&C9Z~n1o(PO-oCCpY1wN>49yS`^eHS zD`5U{vT%e{5`K=5M1zO|4d~J)9r3~x!a2YOL;u&vACtoc$7kj@<5M7);H|KPSm*|i z?xVMcg;zRg^$eKwc>UbDW)JWD`{fQ#UF{Wom;D*^*NHd1JhB^SS?~0amEG%i?jW5z zZ)YFoN_0+or`28nQSH}lmpA?>`_``LQXcI*iRmbNU)rJ^#T@&Yc=(+kYJ*Q+BYz-w z3IG*ijH)75q;umr{8e-acy~fI4i8#a=fZbYOosbj0ICGf48(6rET|kaPOu-1*tEaM z%6Iddh#wz3_V-?~c)d-wgqjb9#+@43CvixOf~Eq#BSzDinPk<18S`ZV7sUOdN&6c# zJ)Bf$c^FyqU~|V2)2p_LZ?b*zT3(s@D!V34!w$ys*+KZYXQydmqI`-IFp2x`X9sNR zkQdHQ%gg7sjeB-{H(xDxW!hSxHjZGQM-Y#KH_?zReY#CC`)muTSTtf#wU;ZK{jK@r zWG3m`qg!uD-J-6us#l*^xl#wR_Tw!bC(o|hbKNdaNZ`*(A6pvWM8-h^$LeZH4F@v@ z2Qx-vT5iWU&ZADX;AVi{a~xw(s8A_pR?nrb=LP`YVqDpJdWMydBF|@4r`wzSaH4~M z(!3p2%dMB%6oE-KOWAc91&l|*q*gHJ-dA_{qwU6nBK9$RDsPv39{jwP9(sN-Hm-3y zFr`K$Mlhuh*{c_1^QD8B>qn)J%?kF9&lO$0FdiKf()RGbovV&c^Zqf{@E8{lGNL}{ z=UT>kq;BlZ?gHN~Fd=PT1>aZb_SpanYLT)cS0Vlfd=-zGU#{P_!=EERxFGKiUT#l5 zaz@3*H|<2sB!S3-@ZS}7EKim%908p+DE-R9d!0sU^_imfL{omn5!5c+WjvggHQPb& zJ9Bsk2<8KkjqJq8L`P{POuxbW2~{Al1o=~RBw`$0@TB)%g9pEGbJbuCtR$uHX-u?v zon2QDlFRdzv8n8}?c045oqb^$ot;b%AdvZdKi^N{L7I>#v7a9UHA0fF93*ybDsk%x zGmb^gI5HP8<2CA*8WR15j-l|6snVhiAFk=C-XU1eo`ID8SC+;#IH6x7E#o=<5&!*u z*!4%7vUgZr=!<~q@BC{nLdE8?3h8%8@ONt%Rvl@ruEz%<3Y0&A00$e6Jg%8mz>RVC(j>PA{ zbE^3i$kXR5)u8p^eBmqh~3 zpy?z+YqO|I$q1GdDG!chRdYRBv>3CepG0hL_({s(L7N|Bz3L0gYG+BCSH@9!Jt>zb z&PD;dK60N-FQc^yG0g>4EXSD$N3N4*Tk%t_8CGJg-2*n-iFt6}!nDGebq0dNM!Du) zHfF3Tl638ERU5hnxzF~6OOwLct3!oWxnz%73fS-GX`A%LrkowV0B79lJPx(70|=Sk z>DGmG>9U*Mf0fWHqA$g0Sn;ulqg6xASGeeFrjmq#fw@&Bor~Y$6(LkcBpV=WzpAnP zFsNEpjN1{degsF=2%@E0Hc*;U%rFb#SxgqT1pJD~OA%SUP%W@Qp%!}MY_Xp;Z^xF0 z!9{+%*x%c-f0^PHOkNtCrg&^7*8NNGPgBk)+m~z~Gu`Hwz3q4;&03c+b(KUn%_fU4 z4wvZI)3ZubYrZ;g{>4#L8df-+j9aYGrfoAO%_3x{@Nc!!`?qLMIZjxBZ^6E7hrLWN z3I7&FwXm=Nf0fgvj>`MUinYPMLX^Z|^@WQ{a5L2d#A{NplOk6(FbVCeC6pY9V}Z?j zvgbTuPy0UF>+9v=k35eh{ZMcO1cZDK^&@qjpUVEffemrneYpPm(R2>IO1eT=Se3oA~TbZRbf zAe2ocv6z2In-&)82#k|M+HYF9Xy!xc8Cd{}eqt)Xcf+{X5hX8Wxx(<5@=RpO^=&0} za#%otHI_Z@uzuC(A)nxv@5-U%G=ABeXF9_fA~q9qb!{7G&LlU)+si9q^av<@!DiEv zPOaOtYBhRCty=T3?uBwKsWIlA08l%OpDZRwiN^gca)^WvNf?Ei#N3zIcFe!$-}%r^c~|y5=B{oDvaryqtabh$-Pw1?BAQc8AQ&!`pw! z?2xnh@b;hiYEFlzq8qrTw}!i8F#81wX!2Q@3)+QSKEp83>zaZ+@%`t?1}OsENUqCf zZYpgC7H@4aB1 zS|nPpEpbo2UI|9{4&F6??jz^eGJ!lCrj6M(ZXO<$POxds3Y)WeVPwH9@yutiGK@`| zNmjBU1H)lN=Hj-tV4FwcY@^%FxYMcPP%#KZ=4WMU&q ztdaK6#D>*y|Ph=RL1w!9Yjur0s6?k%K?bSt|AnL*AagJ*JZNl0el zP=Otm%sryw4vu7FD%lBg0PrdB1=ycZIuyf|@jbag^NCTzm(6I~+QaO7V&Rs?X-j5o z;4fLNIcq)4*21|nH+on+`mJg7iZtmJ_PV8I^VX@}o|fhn`py^vncJ;YhH`BuTy2pY?&U;XujsCR7*ab(P`-+nI4(fvDdne&knYg zN461ZVdr(?sc#QUOxK6K6LOVxnfP6s&ePzBCgthqjz% zQ|UJPm6C^+julLk={7Al-mMG!;_&ft%%iKM_R48UGJUnGMq37TP6WS#Au+h#Bv=+M z97Gc3YVe-=7@Xvx{LERvky5bx{4ZGV%S$Jv`}BCNlOzvMZ82p3D&@$WmAf}EnLKDd zPofi?H>3&}Qz>E@@(N&H*-e{O?j-awZA_Yobl6qbryWj{vf3JMca^EzW`+ zj&boETbvi0SZIxnj!le}2Ij}(`2s;);+LQNNZce2;w$p^-He~Mdxkqn2HOueilQA=8dH>v_bC)BD0^V(txj8s@ z1T2JDaH`6tV=q`E;Y!sOOz?KiU*Qh+*nEWJ*p`U21oRd;ZVieKq66WxMKBsQ0C{09 z35W7yLo@{31S=?kmAhviHG8{Mm@*PV#l;dt~f_<=0% zf9Cm*B&Fqj^2Iyh>^_@0vkz@pezbHXYjYM0Bj4}`UQ*dvLgkX;&6_u8oh$iZKh9pg z(jUz6Sj7rhzt!sc349k#&i#9mpk{$_Fr4UOgFc30KAjGZ^h^+(BPK+2X^BZREF!*) zo`K~PQRu91DG1t%R0z*ri?Q`dPd1+U;liCbeNvDxir@5|{DwREXa$GdsU zF=KtkFPOllTum)-l2>LNAE2yHEU0nyd8@n`+gkVp7G0GNJBNgacJj&!Aau)ex)XRn z&UcXQFTK2fA|Yn>jBO-z^p!COJ&-3|YN}uQt>p<;CxK^pL(cV)(TNj(JwbaY0~M5K zN2PI1R3p?UR!3D8O}?r?C&qI{*c{yZ&!4M{=Q`p!*%c2Eddv%{(~UXmp@!t3W52s|5etdLsIwF(s#0~$t%K$rm~Qvt<_NDy2$cpX*jsG$Dqpjvzmqs4bH zTD(pWuPceyRY2CZ{OTf_7IQ!1_kNC=;%km15AM!%)KUKtRG=nv$QDOEag8k$sp%Sh z`*RuxZQJosTaggZI_O(GK;RZje2OL5A~m5F>77RhE*_sB{%ZT{5nrD;{@}o|fUhIo zGUrCjx1LbGeeJ08+L%@j+Gs?pBkbA%lFEKE*CxSqwvuE!ok+ctrMu)47MFD?i$#$~ z{DGJJ4*8_y?MwVWmSgq0d&h@(ze_I>@BOebsVTa&MB#a5e&8rB6i7k*+DULT4{NbL z*_Bu51A9yf;C80bEcWK|0LuV%0F=vPPw`T01Vwk4FV;z^SRgYdk?pTso)@B4pmcU8KneIFLA62G@gxY>;ZOwVoEArRjs` zDCyH5{aE36$dPidhwN)i8hq1lbH&lAxp!)iSs`q77@11Tw{J6JsU%g*Est*B$xq3g z6?2I%iJ(z?<0yUm(%coO`)dK=@Em8e9K3$9sJOnOE{CD`SVTa%Ai%^cl?BXHo)0rK z&K6f8u4bIi>(k_GZu!a-X4Jn z);BhZGos8`AYpj!A#YfT7g%y|LmXTjKk!5dBT1aeP`;LBvLQuzDI_$>Vz0@#gUHVmzYX@xvu2*=D zUQyT7P}A=|A7}upbH8zS15|I3Cd7p$oO8NVac;$eT>Oyhl&JTEVaA9>K`x@LITSeO-FdWamSL1phn+x+OeD@>1}-Nc3zFimXBI3$0dD zmE6f*T;J6a?Hwj-B={Q?Z+(248?|5`;hbh+^*AWf`SE^*X$Jwq7zB-lS&2BgwRbttm@GA^r1N;R%b;zljytgrKS&Wo+4Gr z=-BJJ>E+jFV%b1QSICC5xx8v!a@3YF>|gtK8d>Z)FhYohSYQ?B368 zUl>qre0{g7C`KX>~#vI0???W<;?z!RHedKaj~_29pc zfNqw8>hlezyt;{b^;OH)5I&7XATE~g7DkLSCV^ZfE}9GDp_sHXNdp~zUfi!-SlO?h zUpqf(AU>GyUuMgK)8vQgE}{F2s1A&P{OY><0BfyXc8M)EgSGRxYBGGj!Y2x+DffwD zDfCt_(w_`AFIwq^(#Jl#CQn}OY4$xl2enemq~xZ}UWUK1Zo`J1eM#}`b+CF17R-e4 z>vOz`(xQ3Wp)hk>G;cNB+xc6XG$~b%n!FAM?7SAM5bszwiPY}|K(W^CN6-!p*cAC- zMvFB^@%H?dt6padyAFlz+PMoiR)=@{gIl*;;&&+h4tU9-I013|40x&wD~Mgo(Qtcq zkocu{;NZX`PNIhl^At=Q31Jn>2utw*)t5lt5vzno6j-8QtOq~U&cVY8nfJDe7Rur<^^5)21U?38bf0WuS@dL zWzlc4HIq{7ywvLzg$|xTy!MV$%#T4i@Zec~Qm(=>_J?L)Me8zU2btJ4b+a-qDr*P^hcyN~l@ z@eUHuRPC|r#)YZ z=;1PXCZ~WW(pLF(@DU&6Q;t{ph%lNxW$9D0u%9d+s?uW%JbzNQXvYk49K0~6AgqhgWm2!zQ@S*FV}9}rr)5^t!_^m z)R&E3+qGYpb$(<9igK4yvVl#c<=AAh#`!gQi`6A>b>nkb2zfR~RDee!eofWtb!hh? z#p;9%K1|JV>InC8rOM@7g?~`!^)L$Z1IsQQ!Rm*=D?-Zd@>CKWdW1s)L?i@`N;tPt zB)B$W0u!XXljjx}r}_Cgh`e(Cxgp+)GpNDfb%)-+xjZL{dM6DWI7Oy8gs#{~{LzSF z<@1fTSm6lSk|9-<=CCIudMvlQ3QB)hrYPG?c5=>xAErA7QQ>P|` zHFkt&$(c5m{%*D@g(f?VHf7Sy{5u4d3;a70{%YURzzW27*5Ny5WiP%HW130ViSNKC zExxn1>^nkT)PCn2##SW06Kh)M`cA0pJ1xt;Q#Lm2Q77bPrYPS-=cvZ<-gsUq2ucgG zL6Qm&1YB6)A9_gy9-|XI-2bA>_5uxY2c#(GGK2Yo1tSlfr*@&QDPo)nW>xp2s;Ra|LRr8Ulz z1$wtIRxwNWfdT^&f>)o)1P&>xG)auytl&py#~%s+@>~9%^24)0GxrXna{D*=wm6|F z?#68HAOWP7zL^-}H~+AOE&QOtOBIts2*-LNQWs}`DK+BxnQ;0ps~#pjk0|*N(8$f5 z?Xt4yyY%+5EN4s1<1l=IzaT~>K{kl366Yoq;bvV)u#1(wUve)(s!CV!*itj-C4LyK zhpCZ6^5hcOl;^6p)M!Zjb8h{_m2`@o~~SQGLqCFQSwF< z=S<1LxH=)1BNwN>9JqS}_{GIPt2qSoOe*t%>Y2zjZUOv z=bC$!W?|T8`dOpcThH!IAKmltib!C{)$KfJ)V^1gTe38HRL=uz%UjHymUUTkB{W!m zbJz8KlKl9@5z-&*`&#am!;-w|`5KfdoFeb8*iY&BO9QL4KTyA$EHC=g+GAa=Oh;WF zQn}07$+GhGF-|Mt$fvcK!-0j-#6d+jbah!o;6{_^V(AgMF^F@7XLNbaHEV_PRj{XE zW~$VN!3ucCUjk2Usnaa7cDe0QmjkcvNPf9u%}OU?$Lx8XBB$MtSgtER2d+>Oyw3MA z&U`HrELWF)gN|C+G{KZt&LucqF*7h|NC=RtKJ^0ZS8qM|3Bv+lXR3z`FW_=CqGkgM zP0teYD%#*?(&}nzv1*w!4noX z7*gw{p4~H6)E&R(r5<-X%~~8ZVPUoQANCwOvAVQ$T-E6EmFu=SJAqa%ADNi()p!y< zBco^n4Vl$10qYMN}q11}6iIp!1KT;OEa3k|D zSSTz&oLVV|Nyi2(*&FFR`~P_R4)Ca|?cdq^lu0t_y+A?|AT$XONa!7;_ZA@(={2EO z=^(xL5;{l^ha}RJq9}q23U;oba_#LZUN4e4^L}feIg@jc`~L5J@B5y9OfoY&`|P#$ z+N-a%^$BIzcbEIFJ5yHw`2rfZul}vssokDEOm6nt9uFjk=Z=F*Z^_La!yM(p1~qlm z+lGkdNl#_>R7i+8oVIV}4)`u5a-#3MaqcPDEu38G4oMpNUPTT#1AY!gRxY99)UFBr7T!img&FoO8V+TMx7VR!jAa@9@uZ(I*-9>raAVr zU*$jH+Yg7&LZc{}<1@tdxg(EH=Tl*sQ8c`QLBisR!V^WYR&Qtv?g5z3Dh$U6QY7&2 zuVtN<-Cx#u8K2HB>rL2YIu&1e2CxvvFPIB)W5a<+k!CYW+j?-{=#XRniF?}3oZhX; zZIZs!onW*Y2d`&4$TKG-Z~}gEM;{m^3O&ih;{Tgpb!f;p%6LR z=E8;Y^t6Rr<<1i&u(0@@MC70c95K~ct>M}SKSjO>{Ghw$H5fcCB>aoG`}>OaABsB| z9{=&dv1bPAMat0V+yN7@QY?SYp>v#9iTtY)aF0Dvd#eecma2|z#;S!FG*>M!Y`!T6 zoxPk1LKVEJV!ja;fC-OJwI^jnm;>|;T)oz2(G_ly)GjCd7ucI8s+{1pw-`ZUt0)9S zU}C2T_+;_Ux^X1%Y4fHM;9)U$c4xMau2D04GLrBY1jm0<)MjbR^oh9-Qi48?`)FU$ zKK+G#axRkLfRO1gT|&wDmHs zB9M({5=yc(mB>20?2KWn>a>rpU#aip&@i?zB<{l_y~bbEi+-Qi@ST+4FXHbR$RR>0 z?%#7R9YnnZ#RyBtOG8qIe8LFt zq|^#%-fSGgJD1`wX0#gBb3*t#;^2hET+KiBK|@<$XZw7fznUeN=c7kH?hf=!JMbEp zhUqApVUEh4@6;*Cg6ZhEU|^vQz-wb-p&8yZGhwwAKUT*#)lKT~aRs<8JJ>^Cu$63{ zCL!(G*i$N#npG!rv6;h$Xqj{ZX}96xl(n!xaNyFD&t^3}0@vm=}# z|JZQ&RAkWW2(Z0Sdx*qbTOv4H^I~~EZ*{M#RaQyT(sd1vHf`8#DCd3KkL;L`T{wg; zTfe$J2Y0Ra?l|$8>OC(F+|ZpR&1|xGAD7=h(%a#P_8iqG__bC}AfKcRw5Ym{#^}%4 z4js^YJNhEuV6bC26>41x;=hGzu*kd#hmN zt%9Mq3Ywx-aOkNvmcavW74*AR&<7nP>8pZ4w+eD@6=b8)GyKY-r@C350y}bQ>08i? zY7mOC=@AjM_0Zmtayzu)qKIg_|+;F10V zB%YPlnMK!Lq@Pjh)^E@&FvwYNT2GgBYfyuL(H*-DW7%?_YW4gd4bI9fe=$<_L|!UC zHtSJQE%r?0tBJ~Ik*s>Hv5AkrP0Y;=4(i6*MX``5_qZq)9Ocf9VnI>wM6!@b_qa$F z9O=%DWI>UvPw$yQ0j-kzm%N+%Om0+ewcL~V>2!>(Ha2SPGh zKL+Y&cm*c4YhI&XRM|c?k~_()eGBm2PHiSM=_Yq=#X9SYI`{3?lMmpmZsn5etikp1 z=5QK`01%=OEi(+!o72%Njm7)uk;HoD%uF8 zCc}^i7zVi-w2b~W$voYCE|Lu%9O$f5qj{I$ZLSk@r!80fHaC5p&78!l^k`Qjld<-V z+2oC!&mK1Og^ab31fwAiN~9>{D`gmxKzMAPT%RU0@4Y{#q|yb6?iJ3g3K?wrwh?z@ z*^nsSv+j%Ip{JGg{L1G^6(|GF(MAgu9X^l?;;U%xgXD8RP1ueoZ zH+}5bF^I{EA+T?wk?>h={=C4Th~rD=%?k{UI9gjCyr^s>lZP%W8xbfMZk=)Bj4T&z zop+>=*PJCuub=TDhc#Ts(oP0XS_4%*t`D0zcg>9IKMf)`?A|VH)qIZm;b0i zLpQhe8`?R0Zh+sQF3-)E1{Vyfydrz#j&2gyR=+m9(wvSP&v6AQF5O3Po;RS!^PG?2 zqdN>3))W5>3*8~B^2#S@-o%ON94Mg5xaQjkFJ)GgI)tU^t7p#JzV&!esHbT1kU%G=Vhvee?*5o}XES1n9Py`IQ(rGa|VmvuyFk;B$_Gq3juBQ?cl^)s0z_G81bTMT_)N&3+Qk> zs3OQ`UBX@Q33-(;tc|$!KdST4Epn%-L!^iU0{Mo(w=Qa7j6XVW& zD)Zv?$7Q~B(({m8tq?E$6Nlmupa?*Ai#NaCcG?B&qtl=&;*6ufTDoP+WPnlYN0vE) z*&qawu!an4I6RUgoZNjR;c)fh>h9~|{M1!k1ZdQD(58fWql z&SWLW5`#Jf@=Q$nN}e6@qF@7wpcm;5^plQ@xct2E9vm2SEYXJ*KXRe&p;;bKYHctA zJR_tF>at{XXc3hJb;XN}ER_A*qI1k!2TaP3SDHA1eB-=|PCA7Cv@|w&+@vi5{sa5v zyck*({P4ul%dUXCy*jJTnYSh%zNws+D%PGbdV?#Oi@Qi)(UPLKVAT7%o_YT6>VBT13BT^F~#B?ncYP91vL))xWLjxq7A4nY@ zL3$5V+z@WC3ASrDV#CguRQHv&$HM|#QK=;h)IL4OZAeH~)INR3Zb%4~Z=Gt?_38CybG^bFwU00qobyH`w){uMM!#c zGfmcN<9sqVxP;C5ulcLga}k-$q*W8Yb>8Qj5=!R9N>T3R3DSU=&6^iVxm)KGKZjRH z9*SrC!Ds34#vAC_HYR0Th*_P0s%-Clk~qUKx$#=U)_>@})2gVw{{1E19x)LIVvWc7 zeZUBnK^}|epiV<`1kw#P2Ep2%BdlT*VDmXb4u};HdodoWsg`HM4*;>kGI%96=z$)| zQr`MN-|!XtkN)j7{u$HUh3<>&oZg!EBZ1k2;BjtsV*wZ)Plmv>kIaV7PJ`=F~r?)Zyep~l*LA?32gbEt}KalKdVO_ zc}~{RA?pyU*sZxVwPbOlep27Z6Qzv-u97kGO6sOG0~p(ib<)l#mYuOJ%C>eN4`zN| zaqC?{7JJ`Wjoo<5J>&4NMXY?^LDJyI6OE^|LU*m+*q1QsPfZ(dJ22)RSlc5I3lAd} zE}^Ck3JIdm#+itadoPI7zrS|zlZXYU7Y0q9G~;m8LV0D$ALl-o<-4b)z>?o5&y(c& zGo>Kfhp~XKIi4&!W7CsG?8(Ho01O*Wktdrwgq}?4GazfZqCUHzs6d}xMmj4!ED0nv z0)5!P5q^?)!q4fwSk0N}t1#@{64?(WR^B_3+}*p^8gzS$xe6=IxeYAQvfk@!ggYA2VxioambnOT`q zVDbFVnrFRvKTv|H-1NbkH~NIDRp$E79=Gvk*(g8%Sz|Z8n-tw_|FEkriIx2}tq!Wb zTdVR~-JM?x*^6aoESHs!ix&=i4h$_f7$#%_EMSPqyyX2ZKl zQK9l$Che$-q}pdyd6mAavi_@HBt=Yvu=}WZ(STViW#zpK3vf<}lD7fF{*VaFBJ~7a zm_+h)Ac$L-3_{}y>1Uc#{2*0<&`a4r(#_*~yKO}`jlp-DhNg_D1xQB zIE3Uo|KKsdTrYffl>48HzU`>T$OoazpS(Wcy=ac8)w?N=KAc$1tr_5)=x5-Ncm_CW;kSXs+ zQ^gO!=OlEC;w(tvD+Nu9ZWIn!$6ou%{WhERHdi<5tL2sM`%Bqo_pfg3yXW8F&)cz% zV89jl-*9g-2WvV!o<*KTgTazn!yml7BKpUdj$iRB3cS{Lb{J53b>Hi(nMG%@36!VmMgn6#uHYw= zJ~j(=Ua^G({qp?K`C+#oEEDm2jy1nqXu2fbaHTO3aA7a^nchHXHgEG>5&KPtmgshK z32=4r{46)a=}$tB$V74W4Ye^f4 zYf5%DV9_j7l`oxSxBZlBXLb#ku|!fj{k+CY?Oy`d{*Jbq)4~m&O6{7TA>2>_Z4quH z&n(s)$VKQ0q6{`!_X8gJUkUE>P1qy$yB;L3+^SP@mm}O0A^oCEL|#>%R?gBHz@`YL z!s$lov6`GJ%v|(pDH1&4psHG z-t}q|pL(?k|IbfWTU&MQPSw;WoX`Ez=4znd?U$>qduHz$d_3EtQ7kAg$$ph7C=Kz!%B{ms8{{;Ke zDQ#UffnbXRZ1+G}F^*i#;q6~feA{Mu_?WmOkR&*=Fh$lkYNn)Hvmk3?3q%3(#|d|{ z5x_1G5f$+U3M1Zw3KZd^k*G5=&%F_?d;G## zNVNWET2Y$*?XI21>QhHG2~V7$uS zXWDp}PwIHE3TzF-as?lBq!KkU}8!w>NhN;7&qV ziv7k6#MXIk<7K1RKPTkWaIb9*RMP1S@FLVEuuNfRl{+*TnN?0ie4N1VJ-k@Gkz^%V zl1gc>vy#K`kE}3smi15If4Y|?@F_FIuUpv6EvzlsVx;3O#_F7ornrQLIHv)>&D1j& zWP_jBiKXz#Cm55Z3&jQQw?V{GzL$uB=MR8|&+(i`m~o~_U3OA<=f#bSfx_l0HeP4}PTKCb_q#3uzEn#Dqr+$(~pC)8{} z`UfD5cjRbs-p;B%h1`V92BygJFuxIEl_Y7bBqXU(8;vSJ>mK+KMCB>59WX&1A~Qrd z8b}3+$Uvvaqz1K%>Xg^NzF)Vv?&jjiprG2twf#9Ck~6=UovqKF$K`F;{?tE<)$g(7 z=u6uM48;d;Hf=UxZ4AFd+!T#U2)T+)Fu0iA! zOSfd+(n*3$C};RcDwL1##u`;;Omqy~aa6%inX%!xOB>~P$-E~^s;xvUT(R|bbRc8F zM`HDMWeyKy@&*=u=-PK^lv(+XmY}!Y(SofkfA|eae&_h4dX>M-+PRspx_XCY9>rY^ z|GAxBO@DW%MES#GJU__aVs~P3TZ=P}B1})=IKH3*?VFiH4z6$GsS0WlL|Z0m&;m!f zC7})?&l-v#=|U&P468V^;2i;+*g1ApKa?QlCg{8BZ`^qHYGAPE+YlBL7nCz$cJZ)6 zIBd4+AJ&%Tch6jSlW$hO8#kXzwcPIjj%QJmnkDqxv0B9cq~C)77lep>A*(M3vKZ$h zI$gULO)>*7Ha`Qba%)O6Mkf)~!Glw(?b7AH&_n>6VFG7KU#IFnU0Zg!S6E;LR`33q z5ByFmW2ddTQk|Vm(7XAme$$6P?!ac8zb(rv9&hObKSK>w{-Aimd|5jC$`<4w&6WNB zg7xls9bU+nuus&zc82C>bgzXb5$9#uqDIc7LsRn-9MX4#6K-^~FlBP1gqAAzT8tWn z&ByNAN)EwQEkPqM+mKVi$YEK5c~H79^-e@rR-+b8dFI4Bt{`2%u4kUq$4<<=zN1BS z%HVm);bZxuj`3}A<4}H(YsfJEp?q=Yk+-FX?(5&(Vf**LIvO21+HKLZ*{or`M=D;A zidrN%WP;;GjTv`9LQ{%-nx=;XbjA1Y&nWtjIWawIu%Wd3^^PTDSUI)qCp7 z>f7Z-Sg*^`!e{Z)6`NSHO=Le+p@7oyq(+GK5QgdBd3|N$qQ?5N8-)eDPC=o*ogwT{ z;*$O#+DP&|mOjIC1Ce>(UyBf#_ms*jd1=F@5sHVC_XWFYQ35q?q+Fx2%xaE7b$MdT zy&I1H&B?gqmN-=fNxJO5RExzOe>E~%|KYOU;X40KuRMN(%qI-jJ?*4F_4`bIHUId# z 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 z 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 literal 0 HcmV?d00001 diff --git a/addons/dialogic/Example Assets/Fonts/Roboto-Regular.ttf.import b/addons/dialogic/Example Assets/Fonts/Roboto-Regular.ttf.import new file mode 100644 index 0000000..32bcf9f --- /dev/null +++ b/addons/dialogic/Example Assets/Fonts/Roboto-Regular.ttf.import @@ -0,0 +1,36 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://vrrmdx83skor" +path="res://.godot/imported/Roboto-Regular.ttf-d9ce0640effe9e93230b445b37d8e692.fontdata" + +[deps] + +source_file="res://addons/dialogic/Example Assets/Fonts/Roboto-Regular.ttf" +dest_files=["res://.godot/imported/Roboto-Regular.ttf-d9ce0640effe9e93230b445b37d8e692.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 +modulate_color_glyphs=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/dialogic/Example Assets/already_read_indicator.gd b/addons/dialogic/Example Assets/already_read_indicator.gd new file mode 100644 index 0000000..4dbf5d3 --- /dev/null +++ b/addons/dialogic/Example Assets/already_read_indicator.gd @@ -0,0 +1,12 @@ +extends Control + +func _ready() -> void: + if DialogicUtil.autoload().has_subsystem('History'): + DialogicUtil.autoload().History.visited_event.connect(_on_visited_event) + DialogicUtil.autoload().History.unvisited_event.connect(_on_not_read_event) + +func _on_visited_event() -> void: + show() + +func _on_not_read_event() -> void: + hide() diff --git a/addons/dialogic/Example Assets/already_read_indicator.gd.uid b/addons/dialogic/Example Assets/already_read_indicator.gd.uid new file mode 100644 index 0000000..9909111 --- /dev/null +++ b/addons/dialogic/Example Assets/already_read_indicator.gd.uid @@ -0,0 +1 @@ +uid://qru8kj5n8hup diff --git a/addons/dialogic/Example Assets/backgrounds/BubbleEnd.png b/addons/dialogic/Example Assets/backgrounds/BubbleEnd.png new file mode 100644 index 0000000000000000000000000000000000000000..c0ff16161436f2bdeb104073c0143d26f7fcb017 GIT binary patch literal 1619 zcmV-Z2CVssP)EX>4Tx04R}tkvmAkP!xv$rbk+gL!Qw&2_3_#Ib|~k`N)IhB7L!5T#us#YBqEV;=rN$DbsZOs+B* zITlcb3d!+<|H1FsnuW;;Hz^ncx?gPjV+0870?oQ@e;?a+^91le16NwxUu^)hpQP8@ zTI2}m-v%zO+nT%wT zj20<--Q(Roopby5PHTQYwkmSM*jm`400006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru<_8!JG7!^SCK&(#02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00b*ZL_t(|+U=ZAh*eb_$3I`01f7V=nnhH!liW!3hm0tR z(wHnFEYOn57TTtE5iMG^Y8L}S3qi05G0U=|KrjRwr!+^3##|VQlTI_0O*2zHb-pd; z6a$Upd+(li-@W&pFU;n>d+#~t`?KQIi8 z0Areclmbebq3sR8R^YPaV`fbNeZUq;r!IA{F7}1( z)xi6}qU32)ngX@}uS*)O_ax2trR~RnoxpN&`E5AY4plYIZ5eg`&5+7aVobv+v-{hU(Q zoH_*D5(`G%5i%=v?E~&j901q>Y?L$=^P+Xno+LR%$$tgj%fPzWFdB-GS&^~_Sku9^ z#X3nJwyJ?v>aL=iieIYPoR%88P|7zq`4Vf!0vzt!myz&H!^=Cx|u zZXhEChcO=NjIWD+*Te!cR^TyChRFD;3^_FxkXk{T4&AXC%Ev1r#G?EpPK|>ZzEo15_bpt!QIpJY6Li zu_ENoHdWy3CGDbO%DTy65ikmL=h){zfX5|$Mg^5MLLSH&#!tXQk_M@$vOYr|$+544 zz#UbFk#)Me!1ih9qwTi4lk4*XS(yWfzie+xZr2B7XNzGRw|!f3x;_{;+CJAJ5Yx8b zw0(IedfV(Q>v`fWOwQI1%&bX$o^Jd4qodpQSPPyNui0Ll9Bv%QtC3;swS9APwmBF* zw#OrZ7_hx6xta|~Ujz_GZ9f`*J0&RtjODg#89?l_-J3wffzf6Aa1#)wY;UuDdvY-@ zkXIT6am4luwy#R=#fPz?&Q$eXn7S@YuC)%vwYE=Q1i*yt4{UF?eN%F)#g%&a=hJTB zhVaoT;LGrL5I895?_^6vD$ow^W{m7Dkw`ionq6gi;C!j8c)uWLaMnI@?l838-5|0^uPJ z7;%Wpph5t%bpyfzz7|=Ez#?o$7KBYZ5Vl}I1;)TcXm`J_W*7th;h($7{qFDn&iS41 z-1B|+@MF1LJ8OW{C^j#J7nWuV04y{+NMJ{R*vLqpj)=BE)XBw)JQ6Y~lo~ZZnoUnj z|A21&7gz%g%@A-Eit|(nhq%d@_vT||3<#KIGysdWxzCoYy(BYF3_zeGk8rU{twC6T zaA<)>h2e7uQ^nar3Br1WcdAi>2#;gD$b#oFoP}fjP*im?KN6jdig5nUWuoZ@(GUv>zymsnARlBP2Mq+E zRf(89;3GSG3%v`j=OL8{sbnBV3J&Ce0))68uy25T(AcPLo^*E*P7&eE3ug0rGl11yfIj7hK1T--_7CD~HaKPzfMW?jPyYrdst4#T1E5W)glZxF z9xL=DN~Hix?Ev=a0M54nY>!y#hHRJ}TJ8WOqgus}05qHj@XbQ8GqyN4843QY+e>|( z)h{BR7qbV62#zc>g~Co^#*Ub3N<)~_lg620&hkm(_uq2o_^UGu2VE9CO@@Jt3SL;_F=;VXiFC&`}hURPS%`v+QEntd8(trp&}ktwGNgm$F@ zN?=^y#ps!&-zy4VC$Ck$oBKBLf@f{C(q}T6vE=u#|C()yHp=}{{V87cP)o1Vf zsByTFS#i#$AW@q5VgQ2zUTc*%&((TlTvq>ivp(<@mk?Poz`t-vWd;BM literal 0 HcmV?d00001 diff --git a/addons/dialogic/Example Assets/backgrounds/rpg_box.webp.import b/addons/dialogic/Example Assets/backgrounds/rpg_box.webp.import new file mode 100644 index 0000000..49d713f --- /dev/null +++ b/addons/dialogic/Example Assets/backgrounds/rpg_box.webp.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dch8fuekijffp" +path="res://.godot/imported/rpg_box.webp-6ea0804b52e01599dbc94ffacc31d433.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Example Assets/backgrounds/rpg_box.webp" +dest_files=["res://.godot/imported/rpg_box.webp-6ea0804b52e01599dbc94ffacc31d433.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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/dialogic/Example Assets/bbcode_transitions/bbcode_transition_effect.gd b/addons/dialogic/Example Assets/bbcode_transitions/bbcode_transition_effect.gd new file mode 100644 index 0000000..536d62a --- /dev/null +++ b/addons/dialogic/Example Assets/bbcode_transitions/bbcode_transition_effect.gd @@ -0,0 +1,84 @@ +@tool +class_name DialogicRichTextTransitionEffect +extends RichTextEffect + +var visible_characters := -1 + +@export var bbcode := "animate_in" +var cache := [] + +@export_range(0.0, 5.0, 0.01) var time := 0.2 +@export_group("Color", "color") +@export var color_modulate: Gradient = null +@export var color_replace: Gradient = null +@export_group("Scale", "scale") +@export var scale_enabled := false +@export var scale_curve := Curve.new() +@export var scale_pivot := Vector2() +@export_group("Position", "position") +@export var position_enabled := false +@export var position_x_curve := Curve.new() +@export var position_y_curve := Curve.new() + +@export_group("Test", "test") +@export_range(-0.1, 1.0, 0.1) var test_value := -0.1 + +var was_skipped := false +var was_reset := false + + +func reset() -> void: + was_reset = true + was_skipped = false + cache.clear() + + +func skip() -> void: + was_skipped = true + + +func _process_custom_fx(char_fx: CharFXTransform) -> bool: + var char_age :float = 0.0 + if test_value >= 0: + char_age = test_value + + else: + if visible_characters == 0: + cache.clear() + return false + if was_reset: + if visible_characters != -1: + was_reset = false + else: + return false + + if len(cache) < visible_characters or visible_characters == -1 or was_skipped: + if char_fx.range.x >= len(cache): + cache.append(char_fx.elapsed_time) + + if was_skipped: + for i in range(len(cache)): + cache[i] = char_fx.elapsed_time-time + + if len(cache) > char_fx.range.x: + char_age = char_fx.elapsed_time - cache[char_fx.range.x] + + var text_server := TextServerManager.get_primary_interface() + var trans: float = clamp(char_age, 0.0, time)/time + + if color_replace: + var c := color_replace.sample(trans) + c.a = 1 + char_fx.color = char_fx.color.lerp(c, color_replace.sample(trans).a) + if color_modulate: + char_fx.color *= color_modulate.sample(trans) + if char_fx.font.is_valid(): + var glyph_size := text_server.font_get_glyph_size(char_fx.font, Vector2i(16,1), char_fx.glyph_index) + if scale_enabled: + char_fx.transform = char_fx.transform.translated_local(scale_pivot*glyph_size*Vector2(1, -1)*(1-scale_curve.sample(trans))) + char_fx.transform = char_fx.transform.scaled_local(Vector2.ONE*scale_curve.sample(trans)) + + if position_enabled: + char_fx.transform = char_fx.transform.translated_local(Vector2(position_x_curve.sample(trans), position_y_curve.sample(trans))*glyph_size) + + return true diff --git a/addons/dialogic/Example Assets/bbcode_transitions/bbcode_transition_effect.gd.uid b/addons/dialogic/Example Assets/bbcode_transitions/bbcode_transition_effect.gd.uid new file mode 100644 index 0000000..bcd0176 --- /dev/null +++ b/addons/dialogic/Example Assets/bbcode_transitions/bbcode_transition_effect.gd.uid @@ -0,0 +1 @@ +uid://wf7hpguw17ex diff --git a/addons/dialogic/Example Assets/bbcode_transitions/fade_in.tres b/addons/dialogic/Example Assets/bbcode_transitions/fade_in.tres new file mode 100644 index 0000000..ac15024 --- /dev/null +++ b/addons/dialogic/Example Assets/bbcode_transitions/fade_in.tres @@ -0,0 +1,17 @@ +[gd_resource type="RichTextEffect" script_class="DialogicRichTextTransitionEffect" load_steps=3 format=3 uid="uid://qegqrr4g2riu"] + +[ext_resource type="Script" uid="uid://wf7hpguw17ex" path="res://addons/dialogic/Example Assets/bbcode_transitions/bbcode_transition_effect.gd" id="1_5w3vn"] + +[sub_resource type="Gradient" id="Gradient_5w3vn"] +colors = PackedColorArray(1, 1, 1, 0, 1, 1, 1, 1) + +[resource] +script = ExtResource("1_5w3vn") +bbcode = "fade_in" +time = 0.2 +color_modulate = SubResource("Gradient_5w3vn") +scale_enabled = false +scale_pivot = Vector2(0, 0) +position_enabled = false +test_value = -0.1 +metadata/_custom_type_script = "uid://wf7hpguw17ex" diff --git a/addons/dialogic/Example Assets/bbcode_transitions/fade_scale_in.tres b/addons/dialogic/Example Assets/bbcode_transitions/fade_scale_in.tres new file mode 100644 index 0000000..0c91435 --- /dev/null +++ b/addons/dialogic/Example Assets/bbcode_transitions/fade_scale_in.tres @@ -0,0 +1,24 @@ +[gd_resource type="RichTextEffect" script_class="DialogicRichTextTransitionEffect" load_steps=4 format=3 uid="uid://hx8qyt5ry3h0"] + +[ext_resource type="Script" uid="uid://wf7hpguw17ex" path="res://addons/dialogic/Example Assets/bbcode_transitions/bbcode_transition_effect.gd" id="1_rsak6"] + +[sub_resource type="Gradient" id="Gradient_rsak6"] +offsets = PackedFloat32Array(0, 0.6351706) +colors = PackedColorArray(1, 1, 1, 0, 1, 1, 1, 1) + +[sub_resource type="Curve" id="Curve_oitc5"] +_limits = [0.0, 2.0, 0.0, 1.0] +_data = [Vector2(0, 2), 0.0, 0.0, 0, 0, Vector2(0.40294844, 1.0066038), -0.13865282, 0.0, 0, 0] +point_count = 2 + +[resource] +script = ExtResource("1_rsak6") +bbcode = "fade_scale_in" +time = 0.30000000000000004 +color_modulate = SubResource("Gradient_rsak6") +scale_enabled = true +scale_curve = SubResource("Curve_oitc5") +scale_pivot = Vector2(0.5, 0.5) +position_enabled = false +test_value = -0.1 +metadata/_custom_type_script = "uid://wf7hpguw17ex" diff --git a/addons/dialogic/Example Assets/bbcode_transitions/fancy_in.tres b/addons/dialogic/Example Assets/bbcode_transitions/fancy_in.tres new file mode 100644 index 0000000..5f48cfc --- /dev/null +++ b/addons/dialogic/Example Assets/bbcode_transitions/fancy_in.tres @@ -0,0 +1,35 @@ +[gd_resource type="RichTextEffect" script_class="DialogicRichTextTransitionEffect" load_steps=6 format=3 uid="uid://c8b884puc720d"] + +[ext_resource type="Script" uid="uid://wf7hpguw17ex" path="res://addons/dialogic/Example Assets/bbcode_transitions/bbcode_transition_effect.gd" id="1_n3lqs"] + +[sub_resource type="Gradient" id="Gradient_n3lqs"] +offsets = PackedFloat32Array(0, 0.45292622) +colors = PackedColorArray(1, 1, 1, 0, 1, 1, 1, 1) + +[sub_resource type="Gradient" id="Gradient_lhhwu"] +interpolation_mode = 1 +offsets = PackedFloat32Array(0, 0.6666667, 0.86513996) +colors = PackedColorArray(0.5208, 0.76631993, 0.93, 0, 0.5242275, 0.76595265, 0.93170327, 1, 0.5208, 0.76631993, 0.93, 0) + +[sub_resource type="Curve" id="Curve_lhhwu"] +_data = [Vector2(0.002457004, 1), 0.0, -1.993977, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0] +point_count = 2 + +[sub_resource type="Curve" id="Curve_4i73d"] +_limits = [0.0, 1.5, 0.0, 1.0] +_data = [Vector2(0, 0.6627359), 0.0, 1.7969435, 0, 0, Vector2(0.4987715, 1.0308962), -1.6188686, -1.6188686, 0, 0, Vector2(0.66093373, 1), -0.34929827, 0.0, 0, 0] +point_count = 3 + +[resource] +script = ExtResource("1_n3lqs") +bbcode = "fancy_in" +time = 0.4 +color_modulate = SubResource("Gradient_n3lqs") +color_replace = SubResource("Gradient_lhhwu") +scale_enabled = true +scale_curve = SubResource("Curve_4i73d") +scale_pivot = Vector2(0.5, 0) +position_enabled = true +position_x_curve = SubResource("Curve_lhhwu") +test_value = -0.1 +metadata/_custom_type_script = "uid://wf7hpguw17ex" diff --git a/addons/dialogic/Example Assets/bbcode_transitions/shaky_in.tres b/addons/dialogic/Example Assets/bbcode_transitions/shaky_in.tres new file mode 100644 index 0000000..f781b31 --- /dev/null +++ b/addons/dialogic/Example Assets/bbcode_transitions/shaky_in.tres @@ -0,0 +1,35 @@ +[gd_resource type="RichTextEffect" script_class="DialogicRichTextTransitionEffect" load_steps=6 format=3 uid="uid://dnxkgwncm1pt5"] + +[ext_resource type="Script" uid="uid://wf7hpguw17ex" path="res://addons/dialogic/Example Assets/bbcode_transitions/bbcode_transition_effect.gd" id="1_ur6c5"] + +[sub_resource type="Gradient" id="Gradient_ur6c5"] +offsets = PackedFloat32Array(0, 0.5089058) +colors = PackedColorArray(1, 1, 1, 0, 1, 1, 1, 1) + +[sub_resource type="Curve" id="Curve_5qe3f"] +_limits = [-0.5, 0.51556605, 0.0, 1.0] +_data = [Vector2(0, 0.0235914), 0.0, 0.0, 0, 0, Vector2(0.019656021, -0.2441923), 0.0, 0.0, 0, 0, Vector2(0.046683047, 0.17305207), 0.0, 0.0, 0, 0, Vector2(0.1081081, -0.23173726), 0.0, 0.0, 0, 0, Vector2(0.16216215, 0.12323183), 0.0, 0.0, 0, 0, Vector2(0.2997543, -0.16946197), 0.0, 0.0, 0, 0, Vector2(0.38329238, 0.042274), 0.0, 0.0, 0, 0, Vector2(0.46928746, -0.107186675), 0.0, 0.0, 0, 0, Vector2(0.5135135, 0.054729044), 0.0, 0.0, 0, 0, Vector2(0.66339064, -0.07604903), 0.0, 0.0, 0, 0, Vector2(0.86240786, 0.054729044), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0] +point_count = 12 + +[sub_resource type="Curve" id="Curve_ur6c5"] +_limits = [-0.5, 0.51556605, 0.0, 1.0] +_data = [Vector2(0, 0.042274), 0.0, 0.0, 0, 0, Vector2(0.051597048, -0.13209677), 0.0, 0.0, 0, 0, Vector2(0.09336609, 0.21041724), 0.0, 0.0, 0, 0, Vector2(0.14742014, -0.25664735), 0.0, 0.0, 0, 0, Vector2(0.22850122, 0.098321736), 0.0, 0.0, 0, 0, Vector2(0.31203932, -0.107186675), 0.0, 0.0, 0, 0, Vector2(0.44717443, 0.054729044), 0.0, 0.0, 0, 0, Vector2(0.5995086, -0.08227658), 0.0, 0.0, 0, 0, Vector2(0.8132678, 0.042274), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0] +point_count = 10 + +[sub_resource type="Curve" id="Curve_qelc7"] +_data = [Vector2(0, 0.57688683), 0.0, 0.0, 0, 0, Vector2(0.14250615, 0.77311325), 0.0, 0.0, 0, 0, Vector2(0.2850123, 0.6443397), 0.0, 0.0, 0, 0, Vector2(0.41769046, 0.7976416), 0.0, 0.0, 0, 0, Vector2(0.5503686, 0.74245286), 0.0, 0.0, 0, 0, Vector2(0.6781328, 0.8712265), 0.0, 0.0, 0, 0, Vector2(0.79606885, 0.8528303), 0.0, 0.0, 0, 0, Vector2(1, 1), 0.0, 0.0, 0, 0] +point_count = 8 + +[resource] +script = ExtResource("1_ur6c5") +bbcode = "shaky_in" +time = 0.4 +color_modulate = SubResource("Gradient_ur6c5") +scale_enabled = true +scale_curve = SubResource("Curve_qelc7") +scale_pivot = Vector2(0.5, 0.5) +position_enabled = true +position_x_curve = SubResource("Curve_5qe3f") +position_y_curve = SubResource("Curve_ur6c5") +test_value = -0.1 +metadata/_custom_type_script = "uid://wf7hpguw17ex" diff --git a/addons/dialogic/Example Assets/default_event.gd b/addons/dialogic/Example Assets/default_event.gd new file mode 100644 index 0000000..6ffbc71 --- /dev/null +++ b/addons/dialogic/Example Assets/default_event.gd @@ -0,0 +1,51 @@ +@tool +extends DialogicEvent + +# DEFINE ALL PROPERTIES OF THE EVENT +# var MySetting: String = "" + +func _execute() -> void: + # I have no idea how this event works ;) + finish() + + +#region INITIALIZE +################################################################################ + +# SET ALL VALUES THAT SHOULD NEVER CHANGE HERE +func _init() -> void: + event_name = "Default" + event_color = Color("#ffffff") + event_category = "Main" + event_sorting_index = 0 + +#endregion + + +#region SAVING/LOADING +################################################################################ +func get_shortcode() -> String: + return "default_shortcode" + + +func get_shortcode_parameters() -> Dictionary: + return { + #param_name : property_name + #"arg_name" : "NameOfProperty", + } + +# You can alternatively overwrite these 3 functions: +# - to_text(), +# - from_text(), +# - is_valid_event() + +#endregion + + +#region EDITOR REPRESENTATION +################################################################################ + +func build_event_editor() -> void: + pass + +#endregion diff --git a/addons/dialogic/Example Assets/default_event.gd.uid b/addons/dialogic/Example Assets/default_event.gd.uid new file mode 100644 index 0000000..46e302f --- /dev/null +++ b/addons/dialogic/Example Assets/default_event.gd.uid @@ -0,0 +1 @@ +uid://dgs7be3hh1crk diff --git a/addons/dialogic/Example Assets/next-indicator/next-indicator-dialogic-1.png b/addons/dialogic/Example Assets/next-indicator/next-indicator-dialogic-1.png new file mode 100644 index 0000000000000000000000000000000000000000..f26ed34293eca439250bbefdbcaf84bec370c10d GIT binary patch literal 2825 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 bO`84>wo1V7cBIVo00000NkvXXu0mjfC_h_G literal 0 HcmV?d00001 diff --git a/addons/dialogic/Example Assets/next-indicator/next-indicator-dialogic-1.png.import b/addons/dialogic/Example Assets/next-indicator/next-indicator-dialogic-1.png.import new file mode 100644 index 0000000..623e114 --- /dev/null +++ b/addons/dialogic/Example Assets/next-indicator/next-indicator-dialogic-1.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bgn2ci6nu85t5" +path="res://.godot/imported/next-indicator-dialogic-1.png-694f122eff55e969b54cc43e62eb4758.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Example Assets/next-indicator/next-indicator-dialogic-1.png" +dest_files=["res://.godot/imported/next-indicator-dialogic-1.png-694f122eff55e969b54cc43e62eb4758.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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/dialogic/Example Assets/next-indicator/next-indicator.png b/addons/dialogic/Example Assets/next-indicator/next-indicator.png new file mode 100644 index 0000000000000000000000000000000000000000..896d3cfc0fc6426518645409ff223c15b9f67bc4 GIT binary patch literal 4189 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 PLSxZ7(BzoPmeT(RF(4jz literal 0 HcmV?d00001 diff --git a/addons/dialogic/Example Assets/sound-effects/typing1.wav.import b/addons/dialogic/Example Assets/sound-effects/typing1.wav.import new file mode 100644 index 0000000..df5f053 --- /dev/null +++ b/addons/dialogic/Example Assets/sound-effects/typing1.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://b6c1p14bc20p1" +path="res://.godot/imported/typing1.wav-b241c6aab4ce82bf04caf8687873cae0.sample" + +[deps] + +source_file="res://addons/dialogic/Example Assets/sound-effects/typing1.wav" +dest_files=["res://.godot/imported/typing1.wav-b241c6aab4ce82bf04caf8687873cae0.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=0 diff --git a/addons/dialogic/Example Assets/sound-effects/typing2.wav b/addons/dialogic/Example Assets/sound-effects/typing2.wav new file mode 100644 index 0000000000000000000000000000000000000000..aff48fab775e1ccd46bf3921cd802cb111ff5f2e GIT binary patch literal 21932 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 fci=Nst5d#}CLZB<&7JlhW`sprWuTFU`yIYk6Lt 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 OReLI8XmzS%VEX^4+VRZ* literal 0 HcmV?d00001 diff --git a/addons/dialogic/Example Assets/sound-effects/typing3.wav.import b/addons/dialogic/Example Assets/sound-effects/typing3.wav.import new file mode 100644 index 0000000..de1c70d --- /dev/null +++ b/addons/dialogic/Example Assets/sound-effects/typing3.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://dnboblpkf0fqi" +path="res://.godot/imported/typing3.wav-083712282583242958aaa68128694f95.sample" + +[deps] + +source_file="res://addons/dialogic/Example Assets/sound-effects/typing3.wav" +dest_files=["res://.godot/imported/typing3.wav-083712282583242958aaa68128694f95.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=0 diff --git a/addons/dialogic/Example Assets/sound-effects/typing4.wav b/addons/dialogic/Example Assets/sound-effects/typing4.wav new file mode 100644 index 0000000000000000000000000000000000000000..071ba816540e1cb9c1e64ba7f5329d4768175eb3 GIT binary patch literal 23404 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 literal 0 HcmV?d00001 diff --git a/addons/dialogic/Example Assets/sound-effects/typing5.wav.import b/addons/dialogic/Example Assets/sound-effects/typing5.wav.import new file mode 100644 index 0000000..4b17d98 --- /dev/null +++ b/addons/dialogic/Example Assets/sound-effects/typing5.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://dwcre3fjf3cj8" +path="res://.godot/imported/typing5.wav-5315fa96c84bd3957d157e8c978c1f04.sample" + +[deps] + +source_file="res://addons/dialogic/Example Assets/sound-effects/typing5.wav" +dest_files=["res://.godot/imported/typing5.wav-5315fa96c84bd3957d157e8c978c1f04.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=0 diff --git a/addons/dialogic/Modules/Audio/event_audio.gd b/addons/dialogic/Modules/Audio/event_audio.gd new file mode 100644 index 0000000..cd4f8cc --- /dev/null +++ b/addons/dialogic/Modules/Audio/event_audio.gd @@ -0,0 +1,397 @@ +@tool +## Event that can play audio on a channel. The channel can be prededinfed +## (with default settings defined in the settings) or created on the spot. +## If no channel is given will play as a One-Shot SFX. +class_name DialogicAudioEvent +extends DialogicEvent + +### Settings + +## The file to play. If empty, the previous audio will be faded out. +var file_path := "": + set(value): + if file_path != value: + file_path = value + ui_update_needed.emit() +## The channel name to use. If none given plays as a One-Shot SFX. +var channel_name := "": + set(value): + if channel_name != channel_name_regex.sub(value, '', true): + channel_name = channel_name_regex.sub(value, '', true) + var defaults: Dictionary = DialogicUtil.get_audio_channel_defaults().get(channel_name, {}) + if defaults: + fade_length = defaults.fade_length + volume = defaults.volume + audio_bus = defaults.audio_bus + loop = defaults.loop + ui_update_needed.emit() + +## The length of the fade. If 0 it's an instant change. +var fade_length: float = 0.0 +## The volume in decibel. +var volume: float = 0.0 +## The audio bus the audio will be played on. +var audio_bus := "" +## If true, the audio will loop, otherwise only play once. +var loop := true +## Sync starting time with different channel (if playing audio on that channel) +var sync_channel := "" + +## Helpers. Set automatically +var set_fade_length := false +var set_volume := false +var set_audio_bus := false +var set_loop := false +var set_sync_channel := false + +var regex := RegEx.create_from_string(r'(?:audio)\s*(?[\w-]{2,}|[\w]*)?\s*(")?(?(?(2)[^"\n]*|[^(: \n]*))(?(2)"|)(?:\s*\[(?.*)\])?') +var channel_name_regex := RegEx.create_from_string(r'(?^-$)|(?[^\w-]{1})') + +################################################################################ +## EXECUTE +################################################################################ + +func _execute() -> void: + var audio_settings_overrides := {} + if set_audio_bus: + audio_settings_overrides["audio_bus"] = audio_bus + if set_volume: + audio_settings_overrides["volume"] = volume + if set_fade_length: + audio_settings_overrides["fade_length"] = fade_length + if set_loop: + audio_settings_overrides["loop"] = loop + audio_settings_overrides["sync_channel"] = sync_channel + dialogic.Audio.update_audio(channel_name, file_path, audio_settings_overrides) + + finish() + +################################################################################ +## INITIALIZE +################################################################################ + +func _init() -> void: + event_name = "Audio" + set_default_color('Color7') + event_category = "Audio" + event_sorting_index = 2 + + +func _get_icon() -> Resource: + return load(this_folder.path_join('icon_music.png')) + +################################################################################ +## SAVING/LOADING +################################################################################ + +func to_text () -> String: + var result_string := "audio " + + if not channel_name.is_empty(): + result_string += channel_name + " " + else: + loop = false + + if not file_path.is_empty(): + result_string += "\"" + file_path + "\"" + else: + result_string += "-" + + var shortcode := store_to_shortcode_parameters() + if not shortcode.is_empty(): + result_string += " [" + shortcode + "]" + + return result_string + + +func from_text(string:String) -> void: + # Pre Alpha 17 Conversion + if string.begins_with('[music'): + _music_from_text(string) + return + elif string.begins_with('[sound'): + _sound_from_text(string) + return + + var result := regex.search(string) + + channel_name = result.get_string('channel') + + if result.get_string('file_path') == '-': + file_path = "" + else: + file_path = result.get_string('file_path') + + if not result.get_string('shortcode'): + return + + load_from_shortcode_parameters(result.get_string('shortcode')) + + +func get_shortcode_parameters() -> Dictionary: + return { + #param_name : property_info + "path" : {"property": "file_path", "default": "", "custom_stored":true, "ext_file":true}, + "channel" : {"property": "channel_name", "default": "", "custom_stored":true}, + "fade" : {"property": "fade_length", "default": 0.0}, + "volume" : {"property": "volume", "default": 0.0}, + "bus" : {"property": "audio_bus", "default": "", + "suggestions": DialogicUtil.get_audio_bus_suggestions}, + "loop" : {"property": "loop", "default": true}, + "sync" : {"property": "sync_channel", "default": "", + "suggestions": get_sync_audio_channel_suggestions}, + } + + +## Returns a string with all the shortcode parameters. +func store_to_shortcode_parameters(params:Dictionary = {}) -> String: + if params.is_empty(): + params = get_shortcode_parameters() + var custom_defaults: Dictionary = DialogicUtil.get_custom_event_defaults(event_name) + var channel_defaults := DialogicUtil.get_audio_channel_defaults() + var result_string := "" + for parameter in params.keys(): + var parameter_info: Dictionary = params[parameter] + var value: Variant = get(parameter_info.property) + var default_value: Variant = custom_defaults.get(parameter_info.property, parameter_info.default) + + if parameter_info.get('custom_stored', false): + continue + + if "set_" + parameter_info.property in self and not get("set_" + parameter_info.property): + continue + + if channel_name in channel_defaults.keys(): + default_value = channel_defaults[channel_name].get(parameter_info.property, default_value) + + if typeof(value) == typeof(default_value) and value == default_value: + if not "set_" + parameter_info.property in self or not get("set_" + parameter_info.property): + continue + + result_string += " " + parameter + '="' + value_to_string(value, parameter_info.get("suggestions", Callable())) + '"' + + return result_string.strip_edges() + + +func is_valid_event(string:String) -> bool: + if string.begins_with("audio"): + return true + # Pre Alpha 17 Converter + if string.strip_edges().begins_with('[music '): + return true + if string.strip_edges().begins_with('[sound '): + return true + return false + + +#region PreAlpha17 Conversion + +func _music_from_text(string:String) -> void: + var data := parse_shortcode_parameters(string) + + if data.has('channel') and data['channel'].to_int() > 0: + channel_name = 'music' + str(data['channel'].to_int() + 1) + else: + channel_name = 'music' + + # Reapply original defaults as setting channel name may have overridden them + fade_length = 0.0 + volume = 0.0 + audio_bus = '' + loop = true + + # Apply any custom event defaults + for default_prop in DialogicUtil.get_custom_event_defaults('music'): + if default_prop in self: + set(default_prop, DialogicUtil.get_custom_event_defaults('music')[default_prop]) + + # Apply shortcodes that exist + if data.has('path'): + file_path = data['path'] + if data.has('fade'): + set_fade_length = true + fade_length = data['fade'].to_float() + if data.has('volume'): + set_volume = true + volume = data['volume'].to_float() + if data.has('bus'): + set_audio_bus = true + audio_bus = data['bus'] + if data.has('loop'): + set_loop = true + loop = str_to_var(data['loop']) + update_text_version() + + +func _sound_from_text(string:String) -> void: + var data := parse_shortcode_parameters(string) + + channel_name = '' + + # Reapply original defaults as setting channel name may have overridden them + fade_length = 0.0 + volume = 0.0 + audio_bus = '' + loop = false + + # Apply any custom event defaults + for default_prop in DialogicUtil.get_custom_event_defaults('sound'): + if default_prop in self: + set(default_prop, DialogicUtil.get_custom_event_defaults('sound')[default_prop]) + + # Apply shortcodes that exist + if data.has('path'): + file_path = data['path'] + if data.has('volume'): + set_volume = true + volume = data['volume'].to_float() + if data.has('bus'): + set_audio_bus = true + audio_bus = data['bus'] + if data.has('loop'): + set_loop = true + loop = str_to_var(data['loop']) + update_text_version() + + +#endregion + +################################################################################ +## EDITOR REPRESENTATION +################################################################################ + +func build_event_editor() -> void: + add_header_edit('file_path', ValueType.FILE, { + 'left_text' : 'Play', + 'file_filter' : "*.mp3, *.ogg, *.wav; Supported Audio Files", + 'placeholder' : "Nothing", + 'editor_icon' : ["AudioStreamMP3", "EditorIcons"]}) + add_header_edit('file_path', ValueType.AUDIO_PREVIEW) + + add_header_edit('channel_name', ValueType.DYNAMIC_OPTIONS, { + 'left_text' :"on", + "right_text" : "channel.", + 'placeholder' : '(One-Shot SFX)', + 'mode' : 3, + 'suggestions_func' : get_audio_channel_suggestions, + 'validation_func' : DialogicUtil.validate_audio_channel_name, + 'tooltip' : 'Use an existing channel or type the name for a new channel.', + }) + + add_header_button('', _open_audio_settings, 'Edit Audio Channels', + editor_node.get_theme_icon("ExternalLink", "EditorIcons")) + + add_body_edit("set_fade_length", ValueType.BOOL_BUTTON,{ + "editor_icon" : ["FadeCross", "EditorIcons"], + "tooltip" : "Overwrite Fade Length" + },"!channel_name.is_empty() and has_channel_defaults()") + add_body_edit('fade_length', ValueType.NUMBER, {'left_text':'Fade Time:'}, + '!channel_name.is_empty() and (not has_channel_defaults() or set_fade_length)') + + add_body_edit("set_volume", ValueType.BOOL_BUTTON,{ + "editor_icon" : ["AudioStreamPlayer", "EditorIcons"], + "tooltip" : "Overwrite Volume" + },"!file_path.is_empty() and has_channel_defaults()") + add_body_edit('volume', ValueType.NUMBER, {'left_text':'Volume:', 'mode':2}, + '!file_path.is_empty() and (not has_channel_defaults() or set_volume)') + add_body_edit("set_audio_bus", ValueType.BOOL_BUTTON,{ + "editor_icon" : ["AudioBusBypass", "EditorIcons"], + "tooltip" : "Overwrite Audio Bus" + },"!file_path.is_empty() and has_channel_defaults()") + add_body_edit('audio_bus', ValueType.DYNAMIC_OPTIONS, { + 'left_text':'Audio Bus:', + 'placeholder' : 'Master', + 'mode' : 2, + 'suggestions_func' : DialogicUtil.get_audio_bus_suggestions, + }, '!file_path.is_empty() and (not has_channel_defaults() or set_audio_bus)') + add_body_edit("set_loop", ValueType.BOOL_BUTTON,{ + "editor_icon" : ["Loop", "EditorIcons"], + "tooltip" : "Overwrite Loop" + },"!channel_name.is_empty() and !file_path.is_empty() and has_channel_defaults()") + add_body_edit('loop', ValueType.BOOL, {'left_text':'Loop:'}, + '!channel_name.is_empty() and !file_path.is_empty() and (not has_channel_defaults() or set_loop)') + add_body_line_break("!channel_name.is_empty() and !file_path.is_empty()") + add_body_edit("set_sync_channel", ValueType.BOOL_BUTTON,{ + "editor_icon" : ["TransitionSync", "EditorIcons"], + "tooltip" : "Enable Syncing" + },"!channel_name.is_empty() and !file_path.is_empty()") + + add_body_edit('sync_channel', ValueType.DYNAMIC_OPTIONS, { + 'left_text' :'Sync with:', + 'placeholder' : '(No Sync)', + 'mode' : 3, + 'suggestions_func' : get_sync_audio_channel_suggestions, + 'validation_func' : DialogicUtil.validate_audio_channel_name, + 'tooltip' : "Use an existing channel or type the name for a new channel. If channel doesn't exist, this setting will be ignored.", + }, '!channel_name.is_empty() and !file_path.is_empty() and set_sync_channel') + + +## Used by the button on the visual event +func _open_audio_settings() -> void: + var editor_manager := editor_node.find_parent('EditorsManager') + if editor_manager: + editor_manager.open_editor(editor_manager.editors['Settings']['node'], true, "Audio") + + +## Helper for the visibility conditions +func has_channel_defaults() -> bool: + var defaults := DialogicUtil.get_audio_channel_defaults() + return defaults.has(channel_name) + + +func get_audio_channel_suggestions(filter:String) -> Dictionary: + var suggestions := {} + suggestions["(One-Shot SFX)"] = { + "value":"", + "tooltip": "Used for one shot sounds effects. Plays each sound in its own AudioStreamPlayer.", + "editor_icon": ["GuiRadioUnchecked", "EditorIcons"] + } + # TODO use .merged after dropping 4.2 support + suggestions.merge(DialogicUtil.get_audio_channel_suggestions(filter)) + return suggestions + +func get_sync_audio_channel_suggestions(filter:="") -> Dictionary: + return DialogicUtil.get_audio_channel_suggestions(filter) + + + +####################### CODE COMPLETION ######################################## +################################################################################ + +func _get_code_completion(CodeCompletionHelper:Node, TextNode:TextEdit, line:String, word:String, symbol:String) -> void: + var line_until: String = CodeCompletionHelper.get_line_untill_caret(line) + if symbol == ' ': + if line_until.count(' ') == 1: + TextNode.add_code_completion_option(CodeEdit.KIND_MEMBER, "One-Shot SFX", ' ', event_color.lerp(TextNode.syntax_highlighter.normal_color, 0.6)) + for i in DialogicUtil.get_audio_channel_suggestions(""): + TextNode.add_code_completion_option(CodeEdit.KIND_MEMBER, i, i, event_color.lerp(TextNode.syntax_highlighter.normal_color, 0.6), null, " ") + elif line_until.count(" ") == 2: + TextNode.add_code_completion_option(CodeEdit.KIND_MEMBER, '"', '"', event_color.lerp(TextNode.syntax_highlighter.normal_color, 0.6)) + + if symbol == "[" or (symbol == " " and line.count("[")): + for i in ["fade", "volume", "bus", "loop", "sync"]: + if not i+"=" in line: + TextNode.add_code_completion_option(CodeEdit.KIND_MEMBER, i, i+'="', event_color.lerp(TextNode.syntax_highlighter.normal_color, 0.6)) + + if (symbol == '"' or symbol == "=") and line.count("["): + CodeCompletionHelper.suggest_shortcode_values(TextNode, self, line, word) + + +func _get_start_code_completion(_CodeCompletionHelper:Node, TextNode:TextEdit) -> void: + TextNode.add_code_completion_option(CodeEdit.KIND_PLAIN_TEXT, 'audio', 'audio ', event_color.lerp(TextNode.syntax_highlighter.normal_color, 0.3)) + + +#################### SYNTAX HIGHLIGHTING ####################################### +################################################################################ + +func _get_syntax_highlighting(Highlighter:SyntaxHighlighter, dict:Dictionary, line:String) -> Dictionary: + var result := regex.search(line) + + dict[result.get_start()] = {"color":event_color.lerp(Highlighter.normal_color, 0.3)} + dict[result.get_start("channel")] = {"color":event_color.lerp(Highlighter.normal_color, 0.8)} + dict[result.get_start("file_path")] = {"color":event_color.lerp(Highlighter.string_color, 0.8)} + if result.get_string("shortcode"): + dict[result.get_start("shortcode")-1] = {"color":Highlighter.normal_color} + dict = Highlighter.color_shortcode_content(dict, line, result.get_start("shortcode"), 0, event_color) + + return dict diff --git a/addons/dialogic/Modules/Audio/event_audio.gd.uid b/addons/dialogic/Modules/Audio/event_audio.gd.uid new file mode 100644 index 0000000..f22125e --- /dev/null +++ b/addons/dialogic/Modules/Audio/event_audio.gd.uid @@ -0,0 +1 @@ +uid://8p4qchmcuj68 diff --git a/addons/dialogic/Modules/Audio/icon_music.png b/addons/dialogic/Modules/Audio/icon_music.png new file mode 100644 index 0000000000000000000000000000000000000000..c94600f56dbb46444b3c4001c9ea2700a0c9b579 GIT binary patch literal 552 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9E$svykh8Km+7D9BhG z*<5q-38Tm7^+gehd*)ub_UCU;cJV{5f3ur+9=-ZZ zyI5+u)UWi4u8*P{B0nvUj63aG+uRX!m$ffQ`irmmr7wb=OSm4m&dQt67=1>D`M?=N z1{f7{iC0kiS!2c~_ZK?M2EMP|?{f*~&tl;}FsG)m?sGD~d)n+Zu1oGNN?@FGHmY}` zw^`Zes0j>A^L}tm{Lblom-X5Qo5Iaa(>l&rGi-iX$zQK3#Icdd>1LlM7v3(_smSr;w% z_5GV(Sba};RLg}`o2RRte7S7O+;c@Xdxd5-D(qX5_2h(7OIYs@*Y-%krMueVn|aRM iIcO5s*Z~F_()SPc8d&e`Q}_mqSO!m5KbLh*2~7Zi4(6T! literal 0 HcmV?d00001 diff --git a/addons/dialogic/Modules/Audio/icon_music.png.import b/addons/dialogic/Modules/Audio/icon_music.png.import new file mode 100644 index 0000000..13d5a06 --- /dev/null +++ b/addons/dialogic/Modules/Audio/icon_music.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://buvpjsvdt4evk" +path="res://.godot/imported/icon_music.png-ffc971ba1265164a55f745186974be5f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Modules/Audio/icon_music.png" +dest_files=["res://.godot/imported/icon_music.png-ffc971ba1265164a55f745186974be5f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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/dialogic/Modules/Audio/icon_sound.png b/addons/dialogic/Modules/Audio/icon_sound.png new file mode 100644 index 0000000000000000000000000000000000000000..c117397f8182c181217ae11c96bb5024f70c84be GIT binary patch literal 524 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9E$svykh8Km+7D9BhG zMt<9ySnReGq(vK~^z`K{!Bd zfpQ7+F2>ZRF3wxL3C$ZAb0*|n$Sbf6>k$d9op@vAU8&isl)T5Fh`5Bxq8Az#MutMB`dN3(bHYBAiuQ*6y#`}F z2IlJ(asmhYzCPYA8I+#5_V1BZrkZD&_x(6k|B2Bj(ps)wsZ^{lT5h+gbD-t(Z|NR0 zTOUt5d0BaX?d}2rN27d3vvTtnvakQ=Z45PN34Nik>zmY^jYVw+?h1-bHx|Z9W=m$( za2WDeIQ&fMt33AdJ!@&I&UMv0-`mW~7V-u?oj2ue?fd)TJJL+9DiOQU}j|IcM)&F)&a$!q(E~mbfy!L!e3@igTe~DWM4fb8y*f literal 0 HcmV?d00001 diff --git a/addons/dialogic/Modules/Audio/icon_sound.png.import b/addons/dialogic/Modules/Audio/icon_sound.png.import new file mode 100644 index 0000000..171732d --- /dev/null +++ b/addons/dialogic/Modules/Audio/icon_sound.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d3ookrkto0yh6" +path="res://.godot/imported/icon_sound.png-7a1a8a5533773d97969b6311b6a9133f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Modules/Audio/icon_sound.png" +dest_files=["res://.godot/imported/icon_sound.png-7a1a8a5533773d97969b6311b6a9133f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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/dialogic/Modules/Audio/index.gd b/addons/dialogic/Modules/Audio/index.gd new file mode 100644 index 0000000..61ca7fa --- /dev/null +++ b/addons/dialogic/Modules/Audio/index.gd @@ -0,0 +1,14 @@ +@tool +extends DialogicIndexer + + +func _get_events() -> Array: + return [this_folder.path_join('event_audio.gd')] + + +func _get_subsystems() -> Array: + return [{'name':'Audio', 'script':this_folder.path_join('subsystem_audio.gd')}] + + +func _get_settings_pages() -> Array: + return [this_folder.path_join('settings_audio.tscn')] diff --git a/addons/dialogic/Modules/Audio/index.gd.uid b/addons/dialogic/Modules/Audio/index.gd.uid new file mode 100644 index 0000000..81c5d1f --- /dev/null +++ b/addons/dialogic/Modules/Audio/index.gd.uid @@ -0,0 +1 @@ +uid://dk46l1toqeswc diff --git a/addons/dialogic/Modules/Audio/settings_audio.gd b/addons/dialogic/Modules/Audio/settings_audio.gd new file mode 100644 index 0000000..8dbfc72 --- /dev/null +++ b/addons/dialogic/Modules/Audio/settings_audio.gd @@ -0,0 +1,241 @@ +@tool +extends DialogicSettingsPage + +## Settings page that contains settings for the audio subsystem + +const TYPE_SOUND_AUDIO_BUS := "dialogic/audio/type_sound_bus" +const CHANNEL_DEFAULTS := "dialogic/audio/channel_defaults" + +var channel_defaults := {} +var _revalidate_channel_names := false + + +func _ready() -> void: + %TypeSoundBus.item_selected.connect(_on_type_sound_bus_item_selected) + $Panel.add_theme_stylebox_override('panel', get_theme_stylebox("Background", "EditorStyles")) + + +func _refresh() -> void: + %TypeSoundBus.clear() + var idx := 0 + for i in range(AudioServer.bus_count): + %TypeSoundBus.add_item(AudioServer.get_bus_name(i)) + if AudioServer.get_bus_name(i) == ProjectSettings.get_setting(TYPE_SOUND_AUDIO_BUS, ""): + idx = i + %TypeSoundBus.select(idx) + + load_channel_defaults(DialogicUtil.get_audio_channel_defaults()) + + +func _about_to_close() -> void: + save_channel_defaults() + + +## TYPE SOUND AUDIO BUS +func _on_type_sound_bus_item_selected(index:int) -> void: + ProjectSettings.set_setting(TYPE_SOUND_AUDIO_BUS, %TypeSoundBus.get_item_text(index)) + ProjectSettings.save() + + +#region AUDIO CHANNELS +################################################################################ + +func load_channel_defaults(dictionary:Dictionary) -> void: + channel_defaults.clear() + for i in %AudioChannelDefaults.get_children(): + i.queue_free() + + var column_names := [ + "Channel Name", + "Volume", + "Audio Bus", + "Fade", + "Loop", + "" + ] + + for column in column_names: + var label := Label.new() + label.text = column + label.theme_type_variation = 'DialogicHintText2' + %AudioChannelDefaults.add_child(label) + + var channel_names := dictionary.keys() + channel_names.sort() + + for channel_name in channel_names: + add_channel_defaults( + channel_name, + dictionary[channel_name].volume, + dictionary[channel_name].audio_bus, + dictionary[channel_name].fade_length, + dictionary[channel_name].loop) + + await get_tree().process_frame + + _revalidate_channel_names = true + revalidate_channel_names.call_deferred() + + +func save_channel_defaults() -> void: + var dictionary := {} + + for i in channel_defaults: + if is_instance_valid(channel_defaults[i].channel_name): + var channel_name := "" + if not channel_defaults[i].channel_name is Label: + if channel_defaults[i].channel_name.current_value.is_empty(): + continue + + channel_name = channel_defaults[i].channel_name.current_value + #channel_name = DialogicUtil.channel_name_regex.sub(channel_name, '', true) + + if channel_name.is_empty(): + dictionary[channel_name] = { + 'volume': channel_defaults[i].volume.get_value(), + 'audio_bus': channel_defaults[i].audio_bus.current_value, + 'fade_length': 0.0, + 'loop': false, + } + else: + dictionary[channel_name] = { + 'volume': channel_defaults[i].volume.get_value(), + 'audio_bus': channel_defaults[i].audio_bus.current_value, + 'fade_length': channel_defaults[i].fade_length.get_value(), + 'loop': channel_defaults[i].loop.button_pressed, + } + + ProjectSettings.set_setting(CHANNEL_DEFAULTS, dictionary) + ProjectSettings.save() + + +func _on_add_channel_defaults_pressed() -> void: + var added_node := add_channel_defaults('new_channel_name', 0.0, '', 0.0, true) + if added_node: + added_node.take_autofocus() + _revalidate_channel_names = true + revalidate_channel_names.call_deferred() + + +func add_channel_defaults(channel_name: String, volume: float, audio_bus: String, fade_length: float, loop: bool) -> Control: + var info := {} + + for i in %AudioChannelDefaultRow.get_children(): + var x := i.duplicate() + %AudioChannelDefaults.add_child(x) + info[i.name] = x + + + if channel_name.is_empty(): + var channel_label := Label.new() + channel_label.text = &"One-Shot SFX" + channel_label.size_flags_horizontal = Control.SIZE_EXPAND_FILL + + %AudioChannelDefaults.add_child(channel_label) + %AudioChannelDefaults.move_child(channel_label, info.channel_name.get_index()) + info.channel_name.queue_free() + info.channel_name = channel_label + + var HintTooltip := preload("res://addons/dialogic/Editor/Common/hint_tooltip_icon.tscn") + var fade_hint := HintTooltip.instantiate() + fade_hint.hint_text = "Fading is disabled for this channel." + %AudioChannelDefaults.add_child(fade_hint) + %AudioChannelDefaults.move_child(fade_hint, info.fade_length.get_index()) + info.fade_length.queue_free() + info.fade_length = fade_hint + + var loop_hint := HintTooltip.instantiate() + loop_hint.hint_text = "Looping is disabled for this channel." + %AudioChannelDefaults.add_child(loop_hint) + %AudioChannelDefaults.move_child(loop_hint, info.loop.get_index()) + info.loop.queue_free() + info.loop = loop_hint + + info.delete.disabled = true + + else: + info.channel_name.suggestions_func = get_audio_channel_suggestions + info.channel_name.validation_func = validate_channel_names.bind(info.channel_name) + info.channel_name.set_value(channel_name) + + info.fade_length.set_value(fade_length) + + info.loop.set_pressed_no_signal(loop) + + info.audio_bus.suggestions_func = DialogicUtil.get_audio_bus_suggestions + info.audio_bus.set_value(audio_bus) + + info.delete.icon = get_theme_icon(&"Remove", &"EditorIcons") + + channel_defaults[len(channel_defaults)] = info + return info['channel_name'] + + +func _on_remove_channel_defaults_pressed(index: int) -> void: + for key in channel_defaults[index]: + channel_defaults[index][key].queue_free() + channel_defaults.erase(index) + + +func get_audio_channel_suggestions(search_text:String) -> Dictionary: + var suggestions := DialogicUtil.get_audio_channel_suggestions(search_text) + + for i in channel_defaults.values(): + if i.channel_name is DialogicVisualEditorField: + suggestions.erase(i.channel_name.current_value) + + for key in suggestions.keys(): + suggestions[key].erase('tooltip') + suggestions[key]['editor_icon'] = ["AudioStreamPlayer", "EditorIcons"] + + return suggestions + + +func revalidate_channel_names() -> void: + _revalidate_channel_names = false + for i in channel_defaults: + if (is_instance_valid(channel_defaults[i].channel_name) + and not channel_defaults[i].channel_name is Label): + channel_defaults[i].channel_name.validate() + + +func validate_channel_names(search_text: String, field_node: Control) -> Dictionary: + var channel_cache = {} + var result := {} + var tooltips := [] + + if search_text.is_empty(): + result['error_tooltip'] = 'Must not be empty.' + return result + + if field_node: + channel_cache[search_text] = [field_node] + if field_node.current_value != search_text: + _revalidate_channel_names = true + revalidate_channel_names.call_deferred() + + # Collect all channel names entered + for i in channel_defaults: + if (is_instance_valid(channel_defaults[i].channel_name) + and not channel_defaults[i].channel_name is Label + and channel_defaults[i].channel_name != field_node): + var text := channel_defaults[i].channel_name.current_value as String + if not channel_cache.has(text): + channel_cache[text] = [] + + channel_cache[text].append(channel_defaults[i].channel_name) + + # Check for duplicate names + if channel_cache.has(search_text) and channel_cache[search_text].size() > 1: + tooltips.append("Duplicate channel name.") + + # Check for invalid characters + result = DialogicUtil.validate_audio_channel_name(search_text) + if result: + tooltips.append(result.error_tooltip) + result.error_tooltip = "\n".join(tooltips) + elif not tooltips.is_empty(): + result['error_tooltip'] = "\n".join(tooltips) + + return result +#endregion diff --git a/addons/dialogic/Modules/Audio/settings_audio.gd.uid b/addons/dialogic/Modules/Audio/settings_audio.gd.uid new file mode 100644 index 0000000..5b8c54f --- /dev/null +++ b/addons/dialogic/Modules/Audio/settings_audio.gd.uid @@ -0,0 +1 @@ +uid://cqyhm6offcitc diff --git a/addons/dialogic/Modules/Audio/settings_audio.tscn b/addons/dialogic/Modules/Audio/settings_audio.tscn new file mode 100644 index 0000000..41805b7 --- /dev/null +++ b/addons/dialogic/Modules/Audio/settings_audio.tscn @@ -0,0 +1,113 @@ +[gd_scene load_steps=6 format=3 uid="uid://c2qgetjc3mfo3"] + +[ext_resource type="Script" uid="uid://cqyhm6offcitc" path="res://addons/dialogic/Modules/Audio/settings_audio.gd" id="1_2iyyr"] +[ext_resource type="PackedScene" uid="uid://dbpkta2tjsqim" path="res://addons/dialogic/Editor/Common/hint_tooltip_icon.tscn" id="2_o1ban"] +[ext_resource type="PackedScene" uid="uid://dpwhshre1n4t6" path="res://addons/dialogic/Editor/Events/Fields/field_options_dynamic.tscn" id="3_bx557"] +[ext_resource type="PackedScene" uid="uid://kdpp3mibml33" path="res://addons/dialogic/Editor/Events/Fields/field_number.tscn" id="4_xfyvc"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_m57ns"] +content_margin_left = 4.0 +content_margin_top = 4.0 +content_margin_right = 4.0 +content_margin_bottom = 4.0 +bg_color = Color(1, 0.365, 0.365, 1) +draw_center = false +border_width_left = 2 +border_width_top = 2 +border_width_right = 2 +border_width_bottom = 2 +corner_detail = 1 + +[node name="Audio" type="VBoxContainer"] +offset_right = 121.0 +offset_bottom = 58.0 +script = ExtResource("1_2iyyr") + +[node name="TypingSoundsTitle" type="Label" parent="."] +layout_mode = 2 +theme_type_variation = &"DialogicSettingsSection" +text = "Typing Sounds" + +[node name="HBoxContainer2" type="HBoxContainer" parent="."] +layout_mode = 2 + +[node name="Label" type="Label" parent="HBoxContainer2"] +layout_mode = 2 +text = "Audio Bus" + +[node name="HintTooltip" parent="HBoxContainer2" instance=ExtResource("2_o1ban")] +layout_mode = 2 +texture = null +hint_text = "The default audio bus used by TypeSound nodes." + +[node name="TypeSoundBus" type="OptionButton" parent="HBoxContainer2"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="HBoxContainer3" type="HBoxContainer" parent="."] +layout_mode = 2 + +[node name="Label" type="Label" parent="HBoxContainer3"] +layout_mode = 2 +theme_type_variation = &"DialogicSettingsSection" +text = "Audio Channel Defaults" + +[node name="HintTooltip" parent="HBoxContainer3" instance=ExtResource("2_o1ban")] +layout_mode = 2 +texture = null +hint_text = "Default settings for named audio channels." + +[node name="Panel" type="PanelContainer" parent="."] +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_m57ns") + +[node name="VBox" type="VBoxContainer" parent="Panel"] +layout_mode = 2 + +[node name="AudioChannelDefaults" type="GridContainer" parent="Panel/VBox"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +columns = 6 + +[node name="AudioChannelDefaultRow" type="HBoxContainer" parent="Panel/VBox"] +unique_name_in_owner = true +visible = false +layout_mode = 2 + +[node name="channel_name" parent="Panel/VBox/AudioChannelDefaultRow" instance=ExtResource("3_bx557")] +layout_mode = 2 +size_flags_horizontal = 3 +placeholder_text = "Enter Channel Name" +mode = 3 + +[node name="volume" parent="Panel/VBox/AudioChannelDefaultRow" instance=ExtResource("4_xfyvc")] +layout_mode = 2 +mode = 2 +min = -80.0 +max = 6.0 +suffix = "dB" + +[node name="audio_bus" parent="Panel/VBox/AudioChannelDefaultRow" instance=ExtResource("3_bx557")] +layout_mode = 2 +placeholder_text = "Master" +mode = 2 + +[node name="fade_length" parent="Panel/VBox/AudioChannelDefaultRow" instance=ExtResource("4_xfyvc")] +layout_mode = 2 +mode = 0 +enforce_step = false +min = 0.0 + +[node name="loop" type="CheckButton" parent="Panel/VBox/AudioChannelDefaultRow"] +layout_mode = 2 + +[node name="delete" type="Button" parent="Panel/VBox/AudioChannelDefaultRow"] +layout_mode = 2 + +[node name="Add" type="Button" parent="Panel/VBox"] +layout_mode = 2 +size_flags_vertical = 4 +text = "Add channel" + +[connection signal="pressed" from="Panel/VBox/Add" to="." method="_on_add_channel_defaults_pressed"] diff --git a/addons/dialogic/Modules/Audio/subsystem_audio.gd b/addons/dialogic/Modules/Audio/subsystem_audio.gd new file mode 100644 index 0000000..8749828 --- /dev/null +++ b/addons/dialogic/Modules/Audio/subsystem_audio.gd @@ -0,0 +1,284 @@ +extends DialogicSubsystem +## Subsystem for managing background audio and one-shot sound effects. +## +## This subsystem has many different helper methods for managing audio +## in your timeline. +## For instance, you can listen to audio changes via [signal audio_started]. + + +## Whenever a new audio event is started, this signal is emitted and +## contains a dictionary with the following keys: [br] +## [br] +## Key | Value Type | Value [br] +## ----------- | ------------- | ----- [br] +## `path` | [type String] | The path to the audio resource file. [br] +## `channel` | [type String] | The channel name to play the audio on. [br] +## `volume` | [type float] | The volume in `db` of the audio resource that will be set to the [AudioStreamPlayer]. [br] +## `audio_bus` | [type String] | The audio bus name that the [AudioStreamPlayer] will use. [br] +## `loop` | [type bool] | Whether the audio resource will loop or not once it finishes playing. [br] +signal audio_started(info: Dictionary) + + +## Audio node for holding audio players +var audio_node := Node.new() +## Sound node for holding sound players +var one_shot_audio_node := Node.new() +## Dictionary with info of all current audio channels +var current_audio_channels: Dictionary = {} + +#region STATE +#################################################################################################### + +## Clears the state on this subsystem and stops all audio. +func clear_game_state(_clear_flag := DialogicGameHandler.ClearFlags.FULL_CLEAR) -> void: + stop_all_channels() + stop_all_one_shot_sounds() + + +## Loads the state on this subsystem from the current state info. +func load_game_state(load_flag:=LoadFlags.FULL_LOAD) -> void: + if load_flag == LoadFlags.ONLY_DNODES: + return + + # Pre Alpha 17 Converter + _convert_state_info() + + var info: Dictionary = dialogic.current_state_info.get("audio", {}) + + for channel_name in info.keys(): + if info[channel_name].path.is_empty(): + update_audio(channel_name) + else: + update_audio(channel_name, info[channel_name].path, info[channel_name].settings_overrides) + + +## Pauses playing audio. +func pause() -> void: + for child in audio_node.get_children(): + child.stream_paused = true + for child in one_shot_audio_node.get_children(): + child.stream_paused = true + + +## Resumes playing audio. +func resume() -> void: + for child in audio_node.get_children(): + child.stream_paused = false + for child in one_shot_audio_node.get_children(): + child.stream_paused = false + + +func _on_dialogic_timeline_ended() -> void: + if not dialogic.Styles.get_layout_node(): + clear_game_state() + +#endregion + + +#region MAIN METHODS +#################################################################################################### + +func _ready() -> void: + dialogic.timeline_ended.connect(_on_dialogic_timeline_ended) + + audio_node.name = "Audio" + add_child(audio_node) + one_shot_audio_node.name = "OneShotAudios" + add_child(one_shot_audio_node) + + +## Plays the given file (or nothing) on the given channel. +## No channel given defaults to the "One-Shot SFX" channel, +## which does not save audio but can have multiple audios playing simultaneously. +func update_audio(channel_name:= "", path := "", settings_overrides := {}) -> void: + #volume := 0.0, audio_bus := "", fade_time := 0.0, loop := true, sync_channel := "") -> void: + if not is_channel_playing(channel_name) and path.is_empty(): + return + + ## Determine audio settings + ## TODO use .merged after dropping 4.2 support + var audio_settings: Dictionary = DialogicUtil.get_audio_channel_defaults().get(channel_name, {}) + audio_settings.merge( + {"volume":0, "audio_bus":"", "fade_length":0.0, "loop":true, "sync_channel":""} + ) + audio_settings.merge(settings_overrides, true) + + ## Handle previous audio on channel + if is_channel_playing(channel_name): + var prev_audio_node: AudioStreamPlayer = current_audio_channels[channel_name] + prev_audio_node.name += "_Prev" + if audio_settings.fade_length > 0.0: + var fade_out_tween: Tween = create_tween() + fade_out_tween.tween_method( + interpolate_volume_linearly.bind(prev_audio_node), + db_to_linear(prev_audio_node.volume_db), + 0.0, + audio_settings.fade_length) + fade_out_tween.tween_callback(prev_audio_node.queue_free) + + else: + prev_audio_node.queue_free() + + ## Set state + if not dialogic.current_state_info.has('audio'): + dialogic.current_state_info['audio'] = {} + + if not path: + dialogic.current_state_info['audio'].erase(channel_name) + return + + dialogic.current_state_info['audio'][channel_name] = {'path':path, 'settings_overrides':settings_overrides} + audio_started.emit(dialogic.current_state_info['audio'][channel_name]) + + var new_player := AudioStreamPlayer.new() + if channel_name: + new_player.name = channel_name.validate_node_name() + audio_node.add_child(new_player) + else: + new_player.name = "OneShotSFX" + one_shot_audio_node.add_child(new_player) + + var file := load(path) + if file == null: + printerr("[Dialogic] Audio file \"%s\" failed to load." % path) + return + + new_player.stream = load(path) + + ## Apply audio settings + + ## Volume & Fade + if audio_settings.fade_length > 0.0: + new_player.volume_db = linear_to_db(0.0) + var fade_in_tween := create_tween() + fade_in_tween.tween_method( + interpolate_volume_linearly.bind(new_player), + 0.0, + db_to_linear(audio_settings.volume), + audio_settings.fade_length) + + else: + new_player.volume_db = audio_settings.volume + + ## Audio Bus + new_player.bus = audio_settings.audio_bus + + ## Loop + if "loop" in new_player.stream: + new_player.stream.loop = audio_settings.loop + elif "loop_mode" in new_player.stream: + if audio_settings.loop: + new_player.stream.loop_mode = AudioStreamWAV.LOOP_FORWARD + new_player.stream.loop_begin = 0 + new_player.stream.loop_end = new_player.stream.mix_rate * new_player.stream.get_length() + else: + new_player.stream.loop_mode = AudioStreamWAV.LOOP_DISABLED + + ## Sync & start player + if audio_settings.sync_channel and is_channel_playing(audio_settings.sync_channel): + var play_position: float = current_audio_channels[audio_settings.sync_channel].get_playback_position() + new_player.play(play_position) + + # TODO Remove this once https://github.com/godotengine/godot/issues/18878 is fixed + if new_player.stream is AudioStreamWAV and new_player.stream.format == AudioStreamWAV.FORMAT_IMA_ADPCM: + printerr("[Dialogic] WAV files using Ima-ADPCM compression cannot be synced. Reimport the file using a different compression mode.") + dialogic.print_debug_moment() + else: + new_player.play() + + new_player.finished.connect(_on_audio_finished.bind(new_player, channel_name, path)) + + if channel_name: + current_audio_channels[channel_name] = new_player + + +## Returns `true` if any audio is playing on the given [param channel_name]. +func is_channel_playing(channel_name: String) -> bool: + return (current_audio_channels.has(channel_name) + and is_instance_valid(current_audio_channels[channel_name]) + and current_audio_channels[channel_name].is_playing()) + + +## Stops audio on all channels. +func stop_all_channels(fade := 0.0) -> void: + for channel_name in current_audio_channels.keys(): + update_audio(channel_name, '', {"fade_length":fade}) + + +### Stops all one-shot sounds. +func stop_all_one_shot_sounds() -> void: + for i in one_shot_audio_node.get_children(): + i.queue_free() + + +## Converts a linear loudness value to decibel and sets that volume to +## the given [param node]. +func interpolate_volume_linearly(value: float, node: AudioStreamPlayer) -> void: + node.volume_db = linear_to_db(value) + + +## Returns whether the currently playing audio resource is the same as this +## event's [param resource_path], for [param channel_name]. +func is_channel_playing_file(file_path: String, channel_name: String) -> bool: + return (is_channel_playing(channel_name) + and current_audio_channels[channel_name].stream.resource_path == file_path) + + +## Returns `true` if any channel is playing. +func is_any_channel_playing() -> bool: + for channel in current_audio_channels: + if is_channel_playing(channel): + return true + return false + + +func _on_audio_finished(player: AudioStreamPlayer, channel_name: String, path: String) -> void: + if current_audio_channels.has(channel_name) and current_audio_channels[channel_name] == player: + current_audio_channels.erase(channel_name) + player.queue_free() + if dialogic.current_state_info.get('audio', {}).get(channel_name, {}).get('path', '') == path: + dialogic.current_state_info['audio'].erase(channel_name) + +#endregion + + +#region Pre Alpha 17 Conversion + +func _convert_state_info() -> void: + var info: Dictionary = dialogic.current_state_info.get("music", {}) + if info.is_empty(): + return + + var new_info := {} + if info.has("path"): + # Pre Alpha 16 Save Data Conversion + new_info['music'] = { + "path":info.path, + "settings_overrides": { + "volume":info.volume, + "audio_bus":info.audio_bus, + "loop":info.loop} + } + + else: + # Pre Alpha 17 Save Data Conversion + for channel_id in info.keys(): + if info[channel_id].is_empty(): + continue + + var channel_name = "music" + if channel_id > 0: + channel_name += str(channel_id + 1) + new_info[channel_name] = { + "path": info[channel_id].path, + "settings_overrides":{ + 'volume': info[channel_id].volume, + 'audio_bus': info[channel_id].audio_bus, + 'loop': info[channel_id].loop, + } + } + + dialogic.current_state_info['audio'] = new_info + dialogic.current_state_info.erase('music') + +#endregion diff --git a/addons/dialogic/Modules/Audio/subsystem_audio.gd.uid b/addons/dialogic/Modules/Audio/subsystem_audio.gd.uid new file mode 100644 index 0000000..5911d0a --- /dev/null +++ b/addons/dialogic/Modules/Audio/subsystem_audio.gd.uid @@ -0,0 +1 @@ +uid://do8vgqtp35d6w diff --git a/addons/dialogic/Modules/Background/DefaultBackgroundScene/default_background.gd b/addons/dialogic/Modules/Background/DefaultBackgroundScene/default_background.gd new file mode 100644 index 0000000..048a61f --- /dev/null +++ b/addons/dialogic/Modules/Background/DefaultBackgroundScene/default_background.gd @@ -0,0 +1,31 @@ +extends DialogicBackground + +## The default background scene. +## Extend the DialogicBackground class to create your own background scene. + +@onready var image_node: TextureRect = $Image +@onready var color_node: ColorRect = $ColorRect + + +func _ready() -> void: + image_node.expand_mode = TextureRect.EXPAND_IGNORE_SIZE + image_node.stretch_mode = TextureRect.STRETCH_KEEP_ASPECT_COVERED + + image_node.anchor_right = 1 + image_node.anchor_bottom = 1 + + +func _update_background(argument:String, _time:float) -> void: + if argument.begins_with('res://'): + image_node.texture = load(argument) + color_node.color = Color.TRANSPARENT + elif argument.begins_with('user://'): + var ext_image = Image.load_from_file(argument) + image_node.texture = ImageTexture.create_from_image(ext_image) + color_node.color = Color.TRANSPARENT + elif argument.is_valid_html_color(): + image_node.texture = null + color_node.color = Color(argument, 1) + else: + image_node.texture = null + color_node.color = Color.from_string(argument, Color.TRANSPARENT) diff --git a/addons/dialogic/Modules/Background/DefaultBackgroundScene/default_background.gd.uid b/addons/dialogic/Modules/Background/DefaultBackgroundScene/default_background.gd.uid new file mode 100644 index 0000000..9b60d17 --- /dev/null +++ b/addons/dialogic/Modules/Background/DefaultBackgroundScene/default_background.gd.uid @@ -0,0 +1 @@ +uid://ci7s5odxo7543 diff --git a/addons/dialogic/Modules/Background/DefaultBackgroundScene/default_background.tscn b/addons/dialogic/Modules/Background/DefaultBackgroundScene/default_background.tscn new file mode 100644 index 0000000..44f6db8 --- /dev/null +++ b/addons/dialogic/Modules/Background/DefaultBackgroundScene/default_background.tscn @@ -0,0 +1,29 @@ +[gd_scene load_steps=2 format=3 uid="uid://cl6g6ymkhjven"] + +[ext_resource type="Script" uid="uid://ci7s5odxo7543" path="res://addons/dialogic/Modules/Background/DefaultBackgroundScene/default_background.gd" id="1_nkdrp"] + +[node name="DefaultBackground" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_nkdrp") + +[node name="ColorRect" type="ColorRect" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="Image" type="TextureRect" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 0 diff --git a/addons/dialogic/Modules/Background/Transitions/Defaults/push_down.gd b/addons/dialogic/Modules/Background/Transitions/Defaults/push_down.gd new file mode 100644 index 0000000..80154d9 --- /dev/null +++ b/addons/dialogic/Modules/Background/Transitions/Defaults/push_down.gd @@ -0,0 +1,7 @@ +extends "res://addons/dialogic/Modules/Background/Transitions/simple_push_transitions.gd" + +func _fade() -> void: + var shader := setup_push_shader() + shader.set_shader_parameter('final_offset', Vector2.DOWN) + tween_shader_progress().set_trans(Tween.TRANS_SINE).set_ease(Tween.EASE_IN_OUT) + diff --git a/addons/dialogic/Modules/Background/Transitions/Defaults/push_down.gd.uid b/addons/dialogic/Modules/Background/Transitions/Defaults/push_down.gd.uid new file mode 100644 index 0000000..a4edee4 --- /dev/null +++ b/addons/dialogic/Modules/Background/Transitions/Defaults/push_down.gd.uid @@ -0,0 +1 @@ +uid://blaaa6obvwknl diff --git a/addons/dialogic/Modules/Background/Transitions/Defaults/push_left.gd b/addons/dialogic/Modules/Background/Transitions/Defaults/push_left.gd new file mode 100644 index 0000000..778e473 --- /dev/null +++ b/addons/dialogic/Modules/Background/Transitions/Defaults/push_left.gd @@ -0,0 +1,7 @@ +extends "res://addons/dialogic/Modules/Background/Transitions/simple_push_transitions.gd" + +func _fade() -> void: + var shader := setup_push_shader() + shader.set_shader_parameter('final_offset', Vector2.LEFT) + tween_shader_progress().set_trans(Tween.TRANS_SINE).set_ease(Tween.EASE_IN_OUT) + diff --git a/addons/dialogic/Modules/Background/Transitions/Defaults/push_left.gd.uid b/addons/dialogic/Modules/Background/Transitions/Defaults/push_left.gd.uid new file mode 100644 index 0000000..9165bf2 --- /dev/null +++ b/addons/dialogic/Modules/Background/Transitions/Defaults/push_left.gd.uid @@ -0,0 +1 @@ +uid://6f7qewx7aga diff --git a/addons/dialogic/Modules/Background/Transitions/Defaults/push_right.gd b/addons/dialogic/Modules/Background/Transitions/Defaults/push_right.gd new file mode 100644 index 0000000..a7799eb --- /dev/null +++ b/addons/dialogic/Modules/Background/Transitions/Defaults/push_right.gd @@ -0,0 +1,7 @@ +extends "res://addons/dialogic/Modules/Background/Transitions/simple_push_transitions.gd" + +func _fade() -> void: + var shader := setup_push_shader() + shader.set_shader_parameter('final_offset', Vector2.RIGHT) + tween_shader_progress().set_trans(Tween.TRANS_SINE).set_ease(Tween.EASE_IN_OUT) + diff --git a/addons/dialogic/Modules/Background/Transitions/Defaults/push_right.gd.uid b/addons/dialogic/Modules/Background/Transitions/Defaults/push_right.gd.uid new file mode 100644 index 0000000..52cdacc --- /dev/null +++ b/addons/dialogic/Modules/Background/Transitions/Defaults/push_right.gd.uid @@ -0,0 +1 @@ +uid://m3anyujei6ro diff --git a/addons/dialogic/Modules/Background/Transitions/Defaults/push_up.gd b/addons/dialogic/Modules/Background/Transitions/Defaults/push_up.gd new file mode 100644 index 0000000..e75ec92 --- /dev/null +++ b/addons/dialogic/Modules/Background/Transitions/Defaults/push_up.gd @@ -0,0 +1,7 @@ +extends "res://addons/dialogic/Modules/Background/Transitions/simple_push_transitions.gd" + +func _fade() -> void: + var shader := setup_push_shader() + shader.set_shader_parameter('final_offset', Vector2.UP) + tween_shader_progress().set_trans(Tween.TRANS_SINE).set_ease(Tween.EASE_IN_OUT) + diff --git a/addons/dialogic/Modules/Background/Transitions/Defaults/push_up.gd.uid b/addons/dialogic/Modules/Background/Transitions/Defaults/push_up.gd.uid new file mode 100644 index 0000000..bf242dd --- /dev/null +++ b/addons/dialogic/Modules/Background/Transitions/Defaults/push_up.gd.uid @@ -0,0 +1 @@ +uid://dnuvmtb036bi3 diff --git a/addons/dialogic/Modules/Background/Transitions/Defaults/simple_fade.gd b/addons/dialogic/Modules/Background/Transitions/Defaults/simple_fade.gd new file mode 100644 index 0000000..917d367 --- /dev/null +++ b/addons/dialogic/Modules/Background/Transitions/Defaults/simple_fade.gd @@ -0,0 +1,13 @@ +extends DialogicBackgroundTransition + + +func _fade() -> void: + var shader := set_shader() + shader.set_shader_parameter("wipe_texture", load(this_folder.path_join("simple_fade.tres"))) + + shader.set_shader_parameter("feather", 1) + + shader.set_shader_parameter("previous_background", prev_texture) + shader.set_shader_parameter("next_background", next_texture) + + tween_shader_progress() diff --git a/addons/dialogic/Modules/Background/Transitions/Defaults/simple_fade.gd.uid b/addons/dialogic/Modules/Background/Transitions/Defaults/simple_fade.gd.uid new file mode 100644 index 0000000..1a4ab9f --- /dev/null +++ b/addons/dialogic/Modules/Background/Transitions/Defaults/simple_fade.gd.uid @@ -0,0 +1 @@ +uid://bed16hbuh4atn diff --git a/addons/dialogic/Modules/Background/Transitions/Defaults/simple_fade.tres b/addons/dialogic/Modules/Background/Transitions/Defaults/simple_fade.tres new file mode 100644 index 0000000..4873e08 --- /dev/null +++ b/addons/dialogic/Modules/Background/Transitions/Defaults/simple_fade.tres @@ -0,0 +1,8 @@ +[gd_resource type="GradientTexture2D" load_steps=2 format=3 uid="uid://qak7mr560k0i"] + +[sub_resource type="Gradient" id="Gradient_skd6w"] +offsets = PackedFloat32Array(1) +colors = PackedColorArray(0.423651, 0.423651, 0.423651, 1) + +[resource] +gradient = SubResource("Gradient_skd6w") diff --git a/addons/dialogic/Modules/Background/Transitions/Defaults/swipe_diagonal_up_left.gd b/addons/dialogic/Modules/Background/Transitions/Defaults/swipe_diagonal_up_left.gd new file mode 100644 index 0000000..061f943 --- /dev/null +++ b/addons/dialogic/Modules/Background/Transitions/Defaults/swipe_diagonal_up_left.gd @@ -0,0 +1,8 @@ +extends "res://addons/dialogic/Modules/Background/Transitions/simple_swipe_transitions.gd" + +func _fade() -> void: + var shader := setup_swipe_shader() + var texture: GradientTexture2D = shader.get_shader_parameter('wipe_texture') + texture.fill_from = Vector2.DOWN + texture.fill_to = Vector2.RIGHT + tween_shader_progress() diff --git a/addons/dialogic/Modules/Background/Transitions/Defaults/swipe_diagonal_up_left.gd.uid b/addons/dialogic/Modules/Background/Transitions/Defaults/swipe_diagonal_up_left.gd.uid new file mode 100644 index 0000000..d3e25d3 --- /dev/null +++ b/addons/dialogic/Modules/Background/Transitions/Defaults/swipe_diagonal_up_left.gd.uid @@ -0,0 +1 @@ +uid://ctoc2p12vahcc diff --git a/addons/dialogic/Modules/Background/Transitions/Defaults/swipe_left_to_right.gd b/addons/dialogic/Modules/Background/Transitions/Defaults/swipe_left_to_right.gd new file mode 100644 index 0000000..8b55d41 --- /dev/null +++ b/addons/dialogic/Modules/Background/Transitions/Defaults/swipe_left_to_right.gd @@ -0,0 +1,10 @@ +extends "res://addons/dialogic/Modules/Background/Transitions/simple_swipe_transitions.gd" + +func _fade() -> void: + var shader := setup_swipe_shader() + var texture: GradientTexture2D = shader.get_shader_parameter('wipe_texture') + + texture.fill_from = Vector2.ZERO + texture.fill_to = Vector2.RIGHT + + tween_shader_progress() diff --git a/addons/dialogic/Modules/Background/Transitions/Defaults/swipe_left_to_right.gd.uid b/addons/dialogic/Modules/Background/Transitions/Defaults/swipe_left_to_right.gd.uid new file mode 100644 index 0000000..57d788a --- /dev/null +++ b/addons/dialogic/Modules/Background/Transitions/Defaults/swipe_left_to_right.gd.uid @@ -0,0 +1 @@ +uid://dknape5pbyevn diff --git a/addons/dialogic/Modules/Background/Transitions/Defaults/swipe_right_to_left.gd b/addons/dialogic/Modules/Background/Transitions/Defaults/swipe_right_to_left.gd new file mode 100644 index 0000000..5433d59 --- /dev/null +++ b/addons/dialogic/Modules/Background/Transitions/Defaults/swipe_right_to_left.gd @@ -0,0 +1,8 @@ +extends "res://addons/dialogic/Modules/Background/Transitions/simple_swipe_transitions.gd" + +func _fade() -> void: + var shader := setup_swipe_shader() + var texture: GradientTexture2D = shader.get_shader_parameter('wipe_texture') + texture.fill_from = Vector2.RIGHT + texture.fill_to = Vector2.ZERO + tween_shader_progress() diff --git a/addons/dialogic/Modules/Background/Transitions/Defaults/swipe_right_to_left.gd.uid b/addons/dialogic/Modules/Background/Transitions/Defaults/swipe_right_to_left.gd.uid new file mode 100644 index 0000000..1e1859f --- /dev/null +++ b/addons/dialogic/Modules/Background/Transitions/Defaults/swipe_right_to_left.gd.uid @@ -0,0 +1 @@ +uid://dwhod30peco4c diff --git a/addons/dialogic/Modules/Background/Transitions/class_dialogic_background_transition.gd b/addons/dialogic/Modules/Background/Transitions/class_dialogic_background_transition.gd new file mode 100644 index 0000000..ea5fc14 --- /dev/null +++ b/addons/dialogic/Modules/Background/Transitions/class_dialogic_background_transition.gd @@ -0,0 +1,57 @@ +class_name DialogicBackgroundTransition +extends Node + +## Helper +var this_folder: String = get_script().resource_path.get_base_dir() + + +## Set before _fade() is called, will be the root node of the previous bg scene. +var prev_scene: Node +## Set before _fade() is called, will be the viewport texture of the previous bg scene. +var prev_texture: ViewportTexture + +## Set before _fade() is called, will be the root node of the upcoming bg scene. +var next_scene: Node +## Set before _fade() is called, will be the viewport texture of the upcoming bg scene. +var next_texture: ViewportTexture + +## Set before _fade() is called, will be the requested time for the fade +var time: float + +## Set before _fade() is called, will be the background holder (TextureRect) +var bg_holder: DialogicNode_BackgroundHolder + + +@warning_ignore("unused_signal") # Used by scripts inheriting this class +signal transition_finished + + +## To be overridden by transitions +func _fade() -> void: + pass + + +func set_shader(path_to_shader:String=DialogicUtil.get_module_path('Background').path_join("Transitions/default_transition_shader.gdshader")) -> ShaderMaterial: + if bg_holder: + if path_to_shader.is_empty(): + bg_holder.material = null + bg_holder.color = Color.TRANSPARENT + return null + bg_holder.material = ShaderMaterial.new() + bg_holder.material.shader = load(path_to_shader) + return bg_holder.material + return null + + +func tween_shader_progress(_progress_parameter:="progress") -> PropertyTweener: + if !bg_holder: + return + + if !bg_holder.material is ShaderMaterial: + return + + bg_holder.material.set_shader_parameter("progress", 0.0) + var tween := create_tween() + var tweener := tween.tween_property(bg_holder, "material:shader_parameter/progress", 1.0, time).from(0.0) + tween.tween_callback(emit_signal.bind('transition_finished')) + return tweener diff --git a/addons/dialogic/Modules/Background/Transitions/class_dialogic_background_transition.gd.uid b/addons/dialogic/Modules/Background/Transitions/class_dialogic_background_transition.gd.uid new file mode 100644 index 0000000..884c65b --- /dev/null +++ b/addons/dialogic/Modules/Background/Transitions/class_dialogic_background_transition.gd.uid @@ -0,0 +1 @@ +uid://cf47aj5eivati diff --git a/addons/dialogic/Modules/Background/Transitions/default_transition_shader.gdshader b/addons/dialogic/Modules/Background/Transitions/default_transition_shader.gdshader new file mode 100644 index 0000000..7fc2cf9 --- /dev/null +++ b/addons/dialogic/Modules/Background/Transitions/default_transition_shader.gdshader @@ -0,0 +1,36 @@ +shader_type canvas_item; + +// Indicates how far the transition is (0 start, 1 end). +uniform float progress : hint_range(0.0, 1.0); +// The previous background, transparent if there was none. +uniform sampler2D previous_background : source_color, hint_default_transparent; +// The next background, transparent if there is none. +uniform sampler2D next_background : source_color, hint_default_transparent; + +// The texture used to determine how far along the progress has to be for bending in the new background. +uniform sampler2D wipe_texture : source_color; +// The size of the trailing smear of the transition. +uniform float feather : hint_range(0.0, 1.0, 0.0001) = 0.1; +// Determines if the wipe texture should keep it's aspect ratio when scaled to the screen's size. +uniform bool keep_aspect_ratio = false; + +void fragment() { + vec2 frag_coord = UV; + if(keep_aspect_ratio) { + vec2 ratio = (SCREEN_PIXEL_SIZE.x > SCREEN_PIXEL_SIZE.y) // determine how to scale + ? vec2(SCREEN_PIXEL_SIZE.y / SCREEN_PIXEL_SIZE.x, 1) // fit to width + : vec2(1, SCREEN_PIXEL_SIZE.x / SCREEN_PIXEL_SIZE.y); // fit to height + + frag_coord *= ratio; + frag_coord += ((vec2(1,1) - ratio) / 2.0); + } + + // get the blend factor between the previous and next background. + float alpha = (texture(wipe_texture, frag_coord).r) - progress; + float blend_factor = 1. - smoothstep(0., feather, alpha + (feather * (1. -progress))); + + vec4 old_frag = texture(previous_background, UV); + vec4 new_frag = texture(next_background, UV); + + COLOR = mix(old_frag, new_frag, blend_factor); +} diff --git a/addons/dialogic/Modules/Background/Transitions/default_transition_shader.gdshader.uid b/addons/dialogic/Modules/Background/Transitions/default_transition_shader.gdshader.uid new file mode 100644 index 0000000..1396f0c --- /dev/null +++ b/addons/dialogic/Modules/Background/Transitions/default_transition_shader.gdshader.uid @@ -0,0 +1 @@ +uid://clabj6a02r7iv diff --git a/addons/dialogic/Modules/Background/Transitions/push_transition_shader.gdshader b/addons/dialogic/Modules/Background/Transitions/push_transition_shader.gdshader new file mode 100644 index 0000000..0d29bf1 --- /dev/null +++ b/addons/dialogic/Modules/Background/Transitions/push_transition_shader.gdshader @@ -0,0 +1,17 @@ +shader_type canvas_item; + +uniform vec2 final_offset = vec2(0,-1); +uniform float progress: hint_range(0.0, 1.0); +uniform sampler2D previous_background: source_color, hint_default_transparent; +uniform sampler2D next_background: source_color, hint_default_transparent; + + +void fragment() { + vec2 uv = UV + final_offset * progress*vec2(-1, -1); + + if (uv.x < 1.0 && uv.x > 0.0 && uv.y < 1.0 && uv.y > 0.0){ + COLOR = texture(previous_background, uv, 1); + } else { + COLOR = texture(next_background, uv-final_offset*vec2(-1,-1)); + } +} diff --git a/addons/dialogic/Modules/Background/Transitions/push_transition_shader.gdshader.uid b/addons/dialogic/Modules/Background/Transitions/push_transition_shader.gdshader.uid new file mode 100644 index 0000000..469402e --- /dev/null +++ b/addons/dialogic/Modules/Background/Transitions/push_transition_shader.gdshader.uid @@ -0,0 +1 @@ +uid://cuj1xsi7d7r5y diff --git a/addons/dialogic/Modules/Background/Transitions/simple_push_transitions.gd b/addons/dialogic/Modules/Background/Transitions/simple_push_transitions.gd new file mode 100644 index 0000000..43f1d74 --- /dev/null +++ b/addons/dialogic/Modules/Background/Transitions/simple_push_transitions.gd @@ -0,0 +1,9 @@ +extends DialogicBackgroundTransition + +func setup_push_shader() -> ShaderMaterial: + var shader := set_shader(DialogicUtil.get_module_path('Background').path_join("Transitions/push_transition_shader.gdshader")) + + shader.set_shader_parameter("previous_background", prev_texture) + shader.set_shader_parameter("next_background", next_texture) + + return shader diff --git a/addons/dialogic/Modules/Background/Transitions/simple_push_transitions.gd.uid b/addons/dialogic/Modules/Background/Transitions/simple_push_transitions.gd.uid new file mode 100644 index 0000000..f5e5125 --- /dev/null +++ b/addons/dialogic/Modules/Background/Transitions/simple_push_transitions.gd.uid @@ -0,0 +1 @@ +uid://bue1pfm6eu7ww diff --git a/addons/dialogic/Modules/Background/Transitions/simple_swipe_gradient.tres b/addons/dialogic/Modules/Background/Transitions/simple_swipe_gradient.tres new file mode 100644 index 0000000..8f8a2a5 --- /dev/null +++ b/addons/dialogic/Modules/Background/Transitions/simple_swipe_gradient.tres @@ -0,0 +1,7 @@ +[gd_resource type="GradientTexture2D" load_steps=2 format=3 uid="uid://cweb3y3xc4uw0"] + +[sub_resource type="Gradient" id="Gradient_skd6w"] +colors = PackedColorArray(0, 0, 0, 1, 0.991164, 0.991164, 0.991164, 1) + +[resource] +gradient = SubResource("Gradient_skd6w") diff --git a/addons/dialogic/Modules/Background/Transitions/simple_swipe_transitions.gd b/addons/dialogic/Modules/Background/Transitions/simple_swipe_transitions.gd new file mode 100644 index 0000000..5705fc7 --- /dev/null +++ b/addons/dialogic/Modules/Background/Transitions/simple_swipe_transitions.gd @@ -0,0 +1,14 @@ +extends DialogicBackgroundTransition + +func setup_swipe_shader() -> ShaderMaterial: + var shader := set_shader() + shader.set_shader_parameter("wipe_texture", load( + DialogicUtil.get_module_path('Background').path_join("Transitions/simple_swipe_gradient.tres") + )) + + shader.set_shader_parameter("feather", 0.3) + + shader.set_shader_parameter("previous_background", prev_texture) + shader.set_shader_parameter("next_background", next_texture) + + return shader diff --git a/addons/dialogic/Modules/Background/Transitions/simple_swipe_transitions.gd.uid b/addons/dialogic/Modules/Background/Transitions/simple_swipe_transitions.gd.uid new file mode 100644 index 0000000..ee5c4e9 --- /dev/null +++ b/addons/dialogic/Modules/Background/Transitions/simple_swipe_transitions.gd.uid @@ -0,0 +1 @@ +uid://bkj1kaqcq5208 diff --git a/addons/dialogic/Modules/Background/dialogic_background.gd b/addons/dialogic/Modules/Background/dialogic_background.gd new file mode 100644 index 0000000..9e84a91 --- /dev/null +++ b/addons/dialogic/Modules/Background/dialogic_background.gd @@ -0,0 +1,38 @@ +extends Node +class_name DialogicBackground + +## This is the base class for dialogic backgrounds. +## Extend it and override it's methods when you create a custom background. +## You can take a look at the default background to get an idea of how it's working. + + +## The subviewport container that holds this background. Set when instanced. +var viewport_container: SubViewportContainer +## The viewport that holds this background. Set when instanced. +var viewport: SubViewport + + +## Load the new background in here. +## The time argument is given for when [_should_do_background_update] returns true +## (then you have to do a transition in here) +func _update_background(_argument:String, _time:float) -> void: + pass + + +## If a background event with this scene is encountered while this background is used, +## this decides whether to create a new instance and call fade_out or just call [_update_background] # on this scene. Default is false +func _should_do_background_update(_argument:String) -> bool: + return false + + +## Called by dialogic when first created. +## If you return false (by default) it will attempt to animate the "modulate" property. +func _custom_fade_in(_time:float) -> bool: + return false + + +## Called by dialogic before removing (done by dialogic). +## If you return false (by default) it will attempt to animate the "modulate" property. +func _custom_fade_out(_time:float) -> bool: + return false + diff --git a/addons/dialogic/Modules/Background/dialogic_background.gd.uid b/addons/dialogic/Modules/Background/dialogic_background.gd.uid new file mode 100644 index 0000000..2518d6a --- /dev/null +++ b/addons/dialogic/Modules/Background/dialogic_background.gd.uid @@ -0,0 +1 @@ +uid://blsjcvm6gvd78 diff --git a/addons/dialogic/Modules/Background/event_background.gd b/addons/dialogic/Modules/Background/event_background.gd new file mode 100644 index 0000000..f2c0c4c --- /dev/null +++ b/addons/dialogic/Modules/Background/event_background.gd @@ -0,0 +1,164 @@ +@tool +class_name DialogicBackgroundEvent +extends DialogicEvent + +## Event to show scenes in the background and switch between them. + +### Settings + +## The scene to use. If empty, this will default to the DefaultBackground.gd scene. +## This scene supports images and fading. +## If you set it to a scene path, then that scene will be instanced. +## Learn more about custom backgrounds in the Subsystem_Background.gd docs. +var scene := "" +## The argument that is passed to the background scene. +## For the default scene it's the path to the image to show. +var argument := "": + set(value): + if argument != value: + argument = value + ui_update_needed.emit() +## The time the fade animation will take. Leave at 0 for instant change. +var fade: float = 0.0 +## Name of the transition to use. +var transition := "" + +## Helpers for visual editor +enum ArgumentTypes {IMAGE, CUSTOM} +var _arg_type := ArgumentTypes.IMAGE : + get: + if argument.begins_with("res://"): + return ArgumentTypes.IMAGE + else: + return _arg_type + set(value): + if value == ArgumentTypes.CUSTOM: + if argument.begins_with("res://"): + argument = " "+argument + _arg_type = value + +enum SceneTypes {DEFAULT, CUSTOM} +var _scene_type := SceneTypes.DEFAULT : + get: + if scene.is_empty(): + return _scene_type + else: + return SceneTypes.CUSTOM + set(value): + if value == SceneTypes.DEFAULT: + scene = "" + _scene_type = value + +#region EXECUTION +################################################################################ + +func _execute() -> void: + var final_fade_duration := fade + + if dialogic.Inputs.auto_skip.enabled: + var time_per_event: float = dialogic.Inputs.auto_skip.time_per_event + final_fade_duration = min(fade, time_per_event) + + dialogic.Backgrounds.update_background(scene, argument, final_fade_duration, transition) + + finish() + +#endregion + +#region INITIALIZE +################################################################################ + +func _init() -> void: + event_name = "Background" + set_default_color('Color8') + event_category = "Visuals" + event_sorting_index = 0 + +#endregion + +#region SAVE & LOAD +################################################################################ + +func get_shortcode() -> String: + return "background" + + +func get_shortcode_parameters() -> Dictionary: + return { + #param_name : property_info + "scene" : {"property": "scene", "default": "", "ext_file":true}, + "arg" : {"property": "argument", "default": "", "ext_file":true}, + "fade" : {"property": "fade", "default": 0}, + "transition" : {"property": "transition", "default": "", + "suggestions": get_transition_suggestions}, + } + + +#endregion + +#region EDITOR REPRESENTATION +################################################################################ + +func build_event_editor() -> void: + add_header_edit('_scene_type', ValueType.FIXED_OPTIONS, { + 'left_text' :'Show', + 'options': [ + { + 'label': 'Background', + 'value': SceneTypes.DEFAULT, + 'icon': ["GuiRadioUnchecked", "EditorIcons"] + }, + { + 'label': 'Custom Scene', + 'value': SceneTypes.CUSTOM, + 'icon': ["PackedScene", "EditorIcons"] + } + ]}) + add_header_label("with image", "_scene_type == SceneTypes.DEFAULT") + add_header_edit("scene", ValueType.FILE, + {'file_filter':'*.tscn, *.scn; Scene Files', + 'placeholder': "Custom scene", + 'editor_icon': ["PackedScene", "EditorIcons"], + }, '_scene_type == SceneTypes.CUSTOM') + add_header_edit('_arg_type', ValueType.FIXED_OPTIONS, { + 'left_text' : 'with', + 'options': [ + { + 'label': 'Image', + 'value': ArgumentTypes.IMAGE, + 'icon': ["Image", "EditorIcons"] + }, + { + 'label': 'Custom Argument', + 'value': ArgumentTypes.CUSTOM, + 'icon': ["String", "EditorIcons"] + } + ], "symbol_only": true}, "_scene_type == SceneTypes.CUSTOM") + add_header_edit('argument', ValueType.FILE, + {'file_filter':'*.jpg, *.jpeg, *.png, *.webp, *.tga, *svg, *.bmp, *.dds, *.exr, *.hdr; Supported Image Files', + 'placeholder': "No Image", + 'editor_icon': ["Image", "EditorIcons"], + }, + '_arg_type == ArgumentTypes.IMAGE or _scene_type == SceneTypes.DEFAULT') + add_header_edit('argument', ValueType.SINGLELINE_TEXT, {}, '_arg_type == ArgumentTypes.CUSTOM') + + add_body_edit("argument", ValueType.IMAGE_PREVIEW, {'left_text':'Preview:'}, + '(_arg_type == ArgumentTypes.IMAGE or _scene_type == SceneTypes.DEFAULT) and !argument.is_empty()') + add_body_line_break('(_arg_type == ArgumentTypes.IMAGE or _scene_type == SceneTypes.DEFAULT) and !argument.is_empty()') + + add_body_edit("transition", ValueType.DYNAMIC_OPTIONS, + {'left_text':'Transition:', + 'empty_text':'Simple Fade', + 'suggestions_func':get_transition_suggestions, + 'editor_icon':["PopupMenu", "EditorIcons"]}) + add_body_edit("fade", ValueType.NUMBER, {'left_text':'Fade time:'}) + + +func get_transition_suggestions(_filter:String="") -> Dictionary: + var transitions := DialogicResourceUtil.list_special_resources("BackgroundTransition") + var suggestions := {} + for i in transitions: + suggestions[DialogicUtil.pretty_name(i)] = {'value': DialogicUtil.pretty_name(i), 'editor_icon': ["PopupMenu", "EditorIcons"]} + return suggestions + +#endregion diff --git a/addons/dialogic/Modules/Background/event_background.gd.uid b/addons/dialogic/Modules/Background/event_background.gd.uid new file mode 100644 index 0000000..7ab0952 --- /dev/null +++ b/addons/dialogic/Modules/Background/event_background.gd.uid @@ -0,0 +1 @@ +uid://sioj2uwexnwx diff --git a/addons/dialogic/Modules/Background/icon.png b/addons/dialogic/Modules/Background/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..d4cf970b5ae561798c7ecbd48f1d241f540ca37f GIT binary patch literal 512 zcmV+b0{{JqP)R5j=%_Yg0g`+L2&{{up`t7>IiNiP9RQTouJ(SAC^Yb(8%Ha+$HzEKrjyTm>mR-4gVN3uGBE|rm#&m(i zUE=>L)+@qTunJ76=jO9QAnk9Tb_R};p8^U1iBkYbT$BOuW5$TnaO(qJG$oOTEpMHV9R=j0kapO?rc?vocJH#16#kz%vh=_=Y$N*oPGA~I0m%sr40000 Array: + return [this_folder.path_join('event_background.gd')] + +func _get_subsystems() -> Array: + return [{'name':'Backgrounds', 'script':this_folder.path_join('subsystem_backgrounds.gd')}] + + +func _get_special_resources() -> Dictionary: + return {&"BackgroundTransition":list_special_resources("Transitions/Defaults", ".gd")} diff --git a/addons/dialogic/Modules/Background/index.gd.uid b/addons/dialogic/Modules/Background/index.gd.uid new file mode 100644 index 0000000..74d5f01 --- /dev/null +++ b/addons/dialogic/Modules/Background/index.gd.uid @@ -0,0 +1 @@ +uid://bj085abnvwkyh diff --git a/addons/dialogic/Modules/Background/node_background_holder.gd b/addons/dialogic/Modules/Background/node_background_holder.gd new file mode 100644 index 0000000..11a2628 --- /dev/null +++ b/addons/dialogic/Modules/Background/node_background_holder.gd @@ -0,0 +1,6 @@ +class_name DialogicNode_BackgroundHolder +extends ColorRect + + +func _ready() -> void: + add_to_group('dialogic_background_holders') diff --git a/addons/dialogic/Modules/Background/node_background_holder.gd.uid b/addons/dialogic/Modules/Background/node_background_holder.gd.uid new file mode 100644 index 0000000..a96ea96 --- /dev/null +++ b/addons/dialogic/Modules/Background/node_background_holder.gd.uid @@ -0,0 +1 @@ +uid://oxcjhq2817c7 diff --git a/addons/dialogic/Modules/Background/subsystem_backgrounds.gd b/addons/dialogic/Modules/Background/subsystem_backgrounds.gd new file mode 100644 index 0000000..e2dbec3 --- /dev/null +++ b/addons/dialogic/Modules/Background/subsystem_backgrounds.gd @@ -0,0 +1,194 @@ +extends DialogicSubsystem +## Subsystem for managing backgrounds. +## +## This subsystem has many different helper methods for managing backgrounds. +## For instance, you can listen to background changes via +## [signal background_changed]. + + +## Whenever a new background is set, this signal is emitted and contains a +## dictionary with the following keys: [br] +## [br] +## Key | Value Type | Value [br] +## ----------- | ------------- | ----- [br] +## `scene` | [type String] | The scene path of the new background. [br] +## `argument` | [type String] | Information given to the background on its update routine. [br] +## `fade_time` | [type float] | The time the background may take to transition in. [br] +## `same_scene`| [type bool] | If the new background uses the same Godot scene. [br] +signal background_changed(info: Dictionary) + +## The default background scene Dialogic will use. +var default_background_scene: PackedScene = load(get_script().resource_path.get_base_dir().path_join('DefaultBackgroundScene/default_background.tscn')) +## The default transition Dialogic will use. +var default_transition: String = get_script().resource_path.get_base_dir().path_join("Transitions/Defaults/simple_fade.gd") + + +#region STATE +#################################################################################################### + +## Empties the current background state. +func clear_game_state(_clear_flag := DialogicGameHandler.ClearFlags.FULL_CLEAR) -> void: + update_background() + +## Loads the background state from the current state info. +func load_game_state(_load_flag := LoadFlags.FULL_LOAD) -> void: + update_background(dialogic.current_state_info.get('background_scene', ''), dialogic.current_state_info.get('background_argument', ''), 0.0, default_transition, true) + +#endregion + + +#region MAIN METHODS +#################################################################################################### + +## Method that adds a given scene as child of the DialogicNode_BackgroundHolder. +## It will call [_update_background()] on that scene with the given argument [argument]. +## It will call [_fade_in()] on that scene with the given fade time. +## Will call fade_out on previous backgrounds scene. +## +## If the scene is the same as the last background you can bypass another instantiating +## and use the same scene. +## To do so implement [_should_do_background_update()] on the custom background scene. +## Then [_update_background()] will be called directly on that previous scene. +func update_background(scene := "", argument := "", fade_time := 0.0, transition_path:=default_transition, force := false) -> void: + var background_holder: DialogicNode_BackgroundHolder + if dialogic.has_subsystem('Styles'): + background_holder = dialogic.Styles.get_first_node_in_layout('dialogic_background_holders') + else: + background_holder = get_tree().get_first_node_in_group('dialogic_background_holders') + + var info := {'scene':scene, 'argument':argument, 'fade_time':fade_time, 'same_scene':false} + if background_holder == null: + background_changed.emit(info) + return + + + var bg_set := false + + # First try just updating the existing scene. + if scene == dialogic.current_state_info.get('background_scene', ''): + + if not force and argument == dialogic.current_state_info.get('background_argument', ''): + return + + for old_bg in background_holder.get_children(): + if !old_bg.has_meta('node') or not old_bg.get_meta('node') is DialogicBackground: + continue + + var prev_bg_node: DialogicBackground = old_bg.get_meta('node') + if prev_bg_node._should_do_background_update(argument): + prev_bg_node._update_background(argument, fade_time) + bg_set = true + info['same_scene'] = true + + dialogic.current_state_info['background_scene'] = scene + dialogic.current_state_info['background_argument'] = argument + + if bg_set: + background_changed.emit(info) + return + + var old_viewport: SubViewportContainer = null + if background_holder.has_meta('current_viewport'): + old_viewport = background_holder.get_meta('current_viewport', null) + + var new_viewport: SubViewportContainer + if scene.ends_with('.tscn') and ResourceLoader.exists(scene): + new_viewport = add_background_node(load(scene), background_holder) + elif argument: + new_viewport = add_background_node(default_background_scene, background_holder) + else: + new_viewport = null + + # if there is still a transition going on, stop it now + for node in get_children(): + if node is DialogicBackgroundTransition: + node.queue_free() + + + var trans_script: Script = load(DialogicResourceUtil.guess_special_resource("BackgroundTransition", transition_path, {"path":default_transition}).path) + var trans_node := Node.new() + trans_node.set_script(trans_script) + trans_node = (trans_node as DialogicBackgroundTransition) + trans_node.bg_holder = background_holder + trans_node.time = fade_time + + if old_viewport: + old_viewport.name = "OldBackground" + trans_node.prev_scene = old_viewport.get_meta('node', null) + trans_node.prev_texture = old_viewport.get_child(0).get_texture() + old_viewport.get_meta('node')._custom_fade_out(fade_time) + old_viewport.hide() + # TODO We have to call this again here because of https://github.com/godotengine/godot/issues/23729 + old_viewport.get_child(0).render_target_update_mode = SubViewport.UPDATE_ALWAYS + trans_node.transition_finished.connect(old_viewport.queue_free) + if new_viewport: + new_viewport.name = "NewBackground" + trans_node.next_scene = new_viewport.get_meta('node', null) + trans_node.next_texture = new_viewport.get_child(0).get_texture() + new_viewport.get_meta('node')._update_background(argument, fade_time) + new_viewport.get_meta('node')._custom_fade_in(fade_time) + else: + background_holder.remove_meta('current_viewport') + + add_child(trans_node) + if fade_time == 0: + trans_node.transition_finished.emit() + _on_transition_finished(background_holder, trans_node) + else: + trans_node.transition_finished.connect(_on_transition_finished.bind(background_holder, trans_node)) + # We need to break this connection if the background_holder get's removed during the transition + background_holder.tree_exited.connect(trans_node.disconnect.bind("transition_finished", _on_transition_finished)) + trans_node._fade() + + background_changed.emit(info) + + +func _on_transition_finished(background_node:DialogicNode_BackgroundHolder, transition_node:DialogicBackgroundTransition) -> void: + if background_node.has_meta("current_viewport"): + if background_node.get_meta("current_viewport").get_meta("node", null) == transition_node.next_scene: + background_node.get_meta("current_viewport").show() + background_node.material = null + background_node.color = Color.TRANSPARENT + transition_node.queue_free() + + +## Adds sub-viewport with the given background scene as child to +## Dialogic scene. +func add_background_node(scene:PackedScene, parent:DialogicNode_BackgroundHolder) -> SubViewportContainer: + var v_con := SubViewportContainer.new() + var viewport := SubViewport.new() + var b_scene := scene.instantiate() + if not b_scene is DialogicBackground: + printerr("[Dialogic] Given background scene was not of type DialogicBackground! Make sure the scene has a script that extends DialogicBackground.") + v_con.queue_free() + viewport.queue_free() + b_scene.queue_free() + return null + + parent.add_child(v_con) + v_con.hide() + v_con.stretch = true + v_con.size = parent.size + v_con.set_anchors_preset(Control.PRESET_FULL_RECT) + + v_con.add_child(viewport) + viewport.transparent_bg = true + viewport.disable_3d = true + viewport.render_target_update_mode = SubViewport.UPDATE_ALWAYS + viewport.canvas_item_default_texture_filter = ProjectSettings.get_setting("rendering/textures/canvas_textures/default_texture_filter") + + viewport.add_child(b_scene) + b_scene.viewport = viewport + b_scene.viewport_container = v_con + + parent.set_meta('current_viewport', v_con) + v_con.set_meta('node', b_scene) + + return v_con + + +## Whether a background is set. +func has_background() -> bool: + return !dialogic.current_state_info.get('background_scene', '').is_empty() or !dialogic.current_state_info.get('background_argument','').is_empty() + +#endregion diff --git a/addons/dialogic/Modules/Background/subsystem_backgrounds.gd.uid b/addons/dialogic/Modules/Background/subsystem_backgrounds.gd.uid new file mode 100644 index 0000000..12c344b --- /dev/null +++ b/addons/dialogic/Modules/Background/subsystem_backgrounds.gd.uid @@ -0,0 +1 @@ +uid://5uwbnllu1kfv diff --git a/addons/dialogic/Modules/Call/event_call.gd b/addons/dialogic/Modules/Call/event_call.gd new file mode 100644 index 0000000..e00a63e --- /dev/null +++ b/addons/dialogic/Modules/Call/event_call.gd @@ -0,0 +1,235 @@ +@tool +class_name DialogicCallEvent +extends DialogicEvent + +## Event that allows calling a method in a node or autoload. + +### Settings + +## The name of the autoload to call the method on. +var autoload_name := "" +## The name of the method to call on the given autoload. +var method := "": + set(value): + method = value + if Engine.is_editor_hint(): + update_argument_info() + check_arguments_and_update_warning() +## A list of arguments to give to the call. +var arguments := []: + set(value): + arguments = value + if Engine.is_editor_hint(): + check_arguments_and_update_warning() + +var _current_method_arg_hints := {'a':null, 'm':null, 'info':{}} + +################################################################################ +## EXECUTION +################################################################################ + +func _execute() -> void: + var object: Object = null + var obj_path := autoload_name + var autoload: Node = dialogic.get_node('/root/'+obj_path.get_slice('.', 0)) + obj_path = obj_path.trim_prefix(obj_path.get_slice('.', 0)+'.') + object = autoload + if object: + while obj_path: + if obj_path.get_slice(".", 0) in object and object.get(obj_path.get_slice(".", 0)) is Object: + object = object.get(obj_path.get_slice(".", 0)) + else: + break + obj_path = obj_path.trim_prefix(obj_path.get_slice('.', 0)+'.') + + if object == null: + printerr("[Dialogic] Call event failed: Unable to find autoload '",autoload_name,"'") + finish() + return + + if object.has_method(method): + var args := [] + for arg in arguments: + if arg is String and arg.begins_with('@'): + args.append(dialogic.Expressions.execute_string(arg.trim_prefix('@'))) + else: + args.append(arg) + dialogic.current_state = dialogic.States.WAITING + await object.callv(method, args) + dialogic.current_state = dialogic.States.IDLE + else: + printerr("[Dialogic] Call event failed: Autoload doesn't have the method '", method,"'.") + + finish() + + +################################################################################ +## INITIALIZE +################################################################################ + +func _init() -> void: + event_name = "Call" + set_default_color('Color6') + event_category = "Logic" + event_sorting_index = 10 + + +################################################################################ +## SAVING/LOADING +################################################################################ + +func to_text() -> String: + var result := "do " + if autoload_name: + result += autoload_name + if method: + result += '.'+method + if arguments.is_empty(): + result += '()' + else: + result += '(' + for i in arguments: + if i is String and i.begins_with('@'): + result += i.trim_prefix('@') + else: + result += var_to_str(i) + result += ', ' + result = result.trim_suffix(', ')+')' + return result + + +func from_text(string:String) -> void: + var result := RegEx.create_from_string(r"do (?[^\(]*)\.((?[^.(]*)(\((?.*)\))?)?").search(string.strip_edges()) + if result: + autoload_name = result.get_string('autoload') + method = result.get_string('method') + if result.get_string('arguments').is_empty(): + arguments = [] + else: + var arr := [] + for i in result.get_string('arguments').split(','): + i = i.strip_edges() + if str_to_var(i) != null: + arr.append(str_to_var(i)) + else: + # Mark this as a complex expression + arr.append("@"+i) + arguments = arr + + +func is_valid_event(string:String) -> bool: + if string.strip_edges().begins_with("do"): + return true + return false + + +func get_shortcode_parameters() -> Dictionary: + return { + #param_name : property_info + "autoload" : {"property": "autoload_name", "default": ""}, + "method" : {"property": "method", "default": ""}, + "args" : {"property": "arguments", "default": []}, + } + + +################################################################################ +## EDITOR REPRESENTATION +################################################################################ + +func build_event_editor() -> void: + add_header_edit('autoload_name', ValueType.DYNAMIC_OPTIONS, {'left_text':'On autoload', + 'empty_text':'Autoload', + 'suggestions_func': DialogicUtil.get_autoload_suggestions, + 'editor_icon':["Node", "EditorIcons"]}) + add_header_edit('method', ValueType.DYNAMIC_OPTIONS, {'left_text':'call', + 'empty_text':'Method', + 'suggestions_func': get_method_suggestions, + 'editor_icon':["Callable", "EditorIcons"]}, 'autoload_name') + add_body_edit('arguments', ValueType.ARRAY, {'left_text':'Arguments:'}, 'not autoload_name.is_empty() and not method.is_empty()') + + +func get_method_suggestions(filter:="") -> Dictionary: + return DialogicUtil.get_autoload_method_suggestions(filter, autoload_name) + + +func update_argument_info() -> void: + if autoload_name and method and not _current_method_arg_hints.is_empty() and (_current_method_arg_hints.a == autoload_name and _current_method_arg_hints.m == method): + if !ResourceLoader.exists(ProjectSettings.get_setting('autoload/'+autoload_name, '').trim_prefix('*')): + _current_method_arg_hints = {} + return + var script: Script = load(ProjectSettings.get_setting('autoload/'+autoload_name, '').trim_prefix('*')) + for m in script.get_script_method_list(): + if m.name == method: + _current_method_arg_hints = {'a':autoload_name, 'm':method, 'info':m} + break + + +func check_arguments_and_update_warning() -> void: + if not _current_method_arg_hints.has("info") or _current_method_arg_hints.info.is_empty(): + ui_update_warning.emit() + return + + var idx := -1 + for arg in arguments: + idx += 1 + if len(_current_method_arg_hints.info.args) <= idx: + continue + if _current_method_arg_hints.info.args[idx].type != 0: + if _current_method_arg_hints.info.args[idx].type != typeof(arg): + if arg is String and arg.begins_with('@'): + continue + var expected_type: String = "" + match _current_method_arg_hints.info.args[idx].type: + TYPE_BOOL: expected_type = "bool" + TYPE_STRING: expected_type = "string" + TYPE_FLOAT: expected_type = "float" + TYPE_INT: expected_type = "int" + _: expected_type = "something else" + + ui_update_warning.emit('Argument '+ str(idx+1)+ ' ('+_current_method_arg_hints.info.args[idx].name+') has the wrong type (method expects '+expected_type+')!') + return + + if len(arguments) < len(_current_method_arg_hints.info.args)-len(_current_method_arg_hints.info.default_args): + ui_update_warning.emit("The method is expecting at least "+str(len(_current_method_arg_hints.info.args)-len(_current_method_arg_hints.info.default_args))+ " arguments, but is given only "+str(len(arguments))+".") + return + elif len(arguments) > len(_current_method_arg_hints.info.args): + ui_update_warning.emit("The method is expecting at most "+str(len(_current_method_arg_hints.info.args))+ " arguments, but is given "+str(len(arguments))+".") + return + ui_update_warning.emit() + +####################### CODE COMPLETION ######################################## +################################################################################ + +func _get_code_completion(CodeCompletionHelper:Node, TextNode:TextEdit, line:String, _word:String, symbol:String) -> void: + var autoloads := DialogicUtil.get_autoload_suggestions() + var line_until_caret: String = CodeCompletionHelper.get_line_untill_caret(line) + + if line.count(' ') == 1 and not '.' in line: + for i in autoloads: + TextNode.add_code_completion_option(CodeEdit.KIND_MEMBER, i, i+'.', event_color.lerp(TextNode.syntax_highlighter.normal_color, 0.3), TextNode.get_theme_icon("Node", "EditorIcons")) + + elif (line_until_caret.ends_with(".") or symbol == "."): + var some_autoload := line_until_caret.split(" ")[-1].split(".")[0] + if some_autoload in autoloads: + var methods := DialogicUtil.get_autoload_method_suggestions("", some_autoload) + for i in methods.keys(): + TextNode.add_code_completion_option(CodeEdit.KIND_MEMBER, i, i+'(', event_color.lerp(TextNode.syntax_highlighter.normal_color, 0.3), TextNode.get_theme_icon("MemberMethod", "EditorIcons")) + + + +func _get_start_code_completion(_CodeCompletionHelper:Node, TextNode:TextEdit) -> void: + TextNode.add_code_completion_option(CodeEdit.KIND_PLAIN_TEXT, 'do', 'do ', event_color.lerp(TextNode.syntax_highlighter.normal_color, 0.3), _get_icon()) + + +#################### SYNTAX HIGHLIGHTING ####################################### +################################################################################ + +func _get_syntax_highlighting(Highlighter:SyntaxHighlighter, dict:Dictionary, line:String) -> Dictionary: + dict[line.find('do')] = {"color":event_color.lerp(Highlighter.normal_color, 0.3)} + dict[line.find('do')+2] = {"color":event_color.lerp(Highlighter.normal_color, 0.5)} + + Highlighter.color_region(dict, Highlighter.normal_color, line, '(', ')') + Highlighter.color_region(dict, Highlighter.string_color, line, '"', '"') + Highlighter.color_word(dict, Highlighter.boolean_operator_color, line, 'true') + Highlighter.color_word(dict, Highlighter.boolean_operator_color, line, 'false') + return dict diff --git a/addons/dialogic/Modules/Call/event_call.gd.uid b/addons/dialogic/Modules/Call/event_call.gd.uid new file mode 100644 index 0000000..551ff02 --- /dev/null +++ b/addons/dialogic/Modules/Call/event_call.gd.uid @@ -0,0 +1 @@ +uid://uhicnbvlk57s diff --git a/addons/dialogic/Modules/Call/icon.png b/addons/dialogic/Modules/Call/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..0bda4de2da2c8d25a50869ae2e4961f88083e25a GIT binary patch literal 554 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9E$svykh8Km+7D9BhG zKZ=9x@PMec-PCg6%7Zq@r>O zizNuqe^zg52^C%WZ*U;fzou+W7h z)+-vlfBYnOHZ%qaxp+F&8Y`B)@_qS+$*q=0^__N>koA{2k}DY&n{58(^+#-L$K0D5 zvM~oed$xu=S|7-4Y48G}T*sPoLyUgfvJ#+dZ`@}PEXQVaA$h-Fz zy_Ej9Z;H|9vYWeDoR;lr-tWBZ&pOT%rgaVb^@8OR9ux}CF;QbMi(U4I^PgK}-Zhq< zjn|5s!YpQ=_4&;k%#`%FmdWaA5Oe*lHAeZ{Y~C@-d(C`Zc+LKIufIg4$^+Zrcb43< z4sFZ#);s^tZ(4!UugK=#Wz`$b+`e@$S@OhF#+N&P@8_5+{C93G<6?=&uAQ&Tu03%3 zl-|_*p4Din@xggd{9C&xD;!T Array: + return [this_folder.path_join('event_call.gd')] diff --git a/addons/dialogic/Modules/Call/index.gd.uid b/addons/dialogic/Modules/Call/index.gd.uid new file mode 100644 index 0000000..3f50c78 --- /dev/null +++ b/addons/dialogic/Modules/Call/index.gd.uid @@ -0,0 +1 @@ +uid://bthb47untmgoo diff --git a/addons/dialogic/Modules/Character/DefaultAnimations/bounce.gd b/addons/dialogic/Modules/Character/DefaultAnimations/bounce.gd new file mode 100644 index 0000000..b99e409 --- /dev/null +++ b/addons/dialogic/Modules/Character/DefaultAnimations/bounce.gd @@ -0,0 +1,16 @@ +extends DialogicAnimation + +func animate() -> void: + var tween := (node.create_tween() as Tween) + tween.set_ease(Tween.EASE_OUT) + tween.tween_property(node, 'position:y', base_position.y-node.get_viewport().size.y/10, time*0.4).set_trans(Tween.TRANS_EXPO) + tween.parallel().tween_property(node, 'scale:y', base_scale.y*1.05, time*0.4).set_trans(Tween.TRANS_EXPO) + tween.tween_property(node, 'position:y', base_position.y, time*0.6).set_trans(Tween.TRANS_BOUNCE) + tween.parallel().tween_property(node, 'scale:y', base_scale.y, time*0.6).set_trans(Tween.TRANS_BOUNCE) + tween.finished.connect(emit_signal.bind('finished_once')) + + +func _get_named_variations() -> Dictionary: + return { + "bounce": {"type": AnimationType.ACTION}, + } diff --git a/addons/dialogic/Modules/Character/DefaultAnimations/bounce.gd.uid b/addons/dialogic/Modules/Character/DefaultAnimations/bounce.gd.uid new file mode 100644 index 0000000..2068624 --- /dev/null +++ b/addons/dialogic/Modules/Character/DefaultAnimations/bounce.gd.uid @@ -0,0 +1 @@ +uid://qruxugkg6y8w diff --git a/addons/dialogic/Modules/Character/DefaultAnimations/bounce_in_out.gd b/addons/dialogic/Modules/Character/DefaultAnimations/bounce_in_out.gd new file mode 100644 index 0000000..d5484d9 --- /dev/null +++ b/addons/dialogic/Modules/Character/DefaultAnimations/bounce_in_out.gd @@ -0,0 +1,39 @@ +extends DialogicAnimation + + +func animate() -> void: + var tween := (node.create_tween() as Tween) + + var end_scale: Vector2 = node.scale + var end_modulate_alpha := 1.0 + var modulation_property := get_modulation_property() + + if is_reversed: + end_scale = Vector2(0, 0) + end_modulate_alpha = 0.0 + + else: + node.scale = Vector2(0, 0) + var original_modulation: Color = node.get(modulation_property) + original_modulation.a = 0.0 + node.set(modulation_property, original_modulation) + + + tween.set_ease(Tween.EASE_IN_OUT) + tween.set_trans(Tween.TRANS_SINE) + tween.set_parallel() + + (tween.tween_property(node, "scale", end_scale, time) + .set_trans(Tween.TRANS_SPRING) + .set_ease(Tween.EASE_OUT)) + tween.tween_property(node, modulation_property + ":a", end_modulate_alpha, time) + + await tween.finished + finished_once.emit() + + +func _get_named_variations() -> Dictionary: + return { + "bounce in": {"reversed": false, "type": AnimationType.IN}, + "bounce out": {"reversed": true, "type": AnimationType.OUT}, + } diff --git a/addons/dialogic/Modules/Character/DefaultAnimations/bounce_in_out.gd.uid b/addons/dialogic/Modules/Character/DefaultAnimations/bounce_in_out.gd.uid new file mode 100644 index 0000000..d397af9 --- /dev/null +++ b/addons/dialogic/Modules/Character/DefaultAnimations/bounce_in_out.gd.uid @@ -0,0 +1 @@ +uid://rfgxn0xtuen3 diff --git a/addons/dialogic/Modules/Character/DefaultAnimations/fade_down_in_out.gd b/addons/dialogic/Modules/Character/DefaultAnimations/fade_down_in_out.gd new file mode 100644 index 0000000..847bda7 --- /dev/null +++ b/addons/dialogic/Modules/Character/DefaultAnimations/fade_down_in_out.gd @@ -0,0 +1,44 @@ +extends DialogicAnimation + +func animate() -> void: + var tween := (node.create_tween() as Tween) + + var start_height: float = base_position.y - node.get_viewport().size.y / 5 + var end_height := base_position.y + + var start_modulation := 0.0 + var end_modulation := 1.0 + + if is_reversed: + end_height = start_height + start_height = base_position.y + end_modulation = 0.0 + start_modulation = 1.0 + + node.position.y = start_height + + tween.set_ease(Tween.EASE_OUT) + tween.set_trans(Tween.TRANS_SINE) + tween.set_parallel() + + var end_postion := Vector2(base_position.x, end_height) + tween.tween_property(node, "position", end_postion, time) + + var property := get_modulation_property() + + var original_modulation: Color = node.get(property) + original_modulation.a = start_modulation + node.set(property, original_modulation) + var modulation_alpha := property + ":a" + + tween.tween_property(node, modulation_alpha, end_modulation, time) + + await tween.finished + finished_once.emit() + + +func _get_named_variations() -> Dictionary: + return { + "fade in down": {"reversed": false, "type": AnimationType.IN}, + "fade out up": {"reversed": true, "type": AnimationType.OUT}, + } diff --git a/addons/dialogic/Modules/Character/DefaultAnimations/fade_down_in_out.gd.uid b/addons/dialogic/Modules/Character/DefaultAnimations/fade_down_in_out.gd.uid new file mode 100644 index 0000000..c98a48a --- /dev/null +++ b/addons/dialogic/Modules/Character/DefaultAnimations/fade_down_in_out.gd.uid @@ -0,0 +1 @@ +uid://bcs0jdci4mngb diff --git a/addons/dialogic/Modules/Character/DefaultAnimations/fade_in_out.gd b/addons/dialogic/Modules/Character/DefaultAnimations/fade_in_out.gd new file mode 100644 index 0000000..e432ecd --- /dev/null +++ b/addons/dialogic/Modules/Character/DefaultAnimations/fade_in_out.gd @@ -0,0 +1,34 @@ +extends DialogicAnimation + +func animate() -> void: + + var modulation_property := get_modulation_property() + var end_modulation_alpha := 1.0 + + if is_reversed: + end_modulation_alpha = 0.0 + + else: + var original_modulation: Color = node.get(modulation_property) + original_modulation.a = 0.0 + node.set(modulation_property, original_modulation) + + var tween := (node.create_tween() as Tween) + if is_reversed: + tween.set_ease(Tween.EASE_IN) + else: + tween.set_ease(Tween.EASE_OUT) + tween.set_trans(Tween.TRANS_SINE) + tween.tween_property(node, modulation_property + ":a", end_modulation_alpha, time) + + await tween.finished + finished_once.emit() + + +func _get_named_variations() -> Dictionary: + return { + "fade in": {"reversed": false, "type": AnimationType.IN}, + "fade out": {"reversed": true, "type": AnimationType.OUT}, + "fade cross": {"type": AnimationType.CROSSFADE}, + } + diff --git a/addons/dialogic/Modules/Character/DefaultAnimations/fade_in_out.gd.uid b/addons/dialogic/Modules/Character/DefaultAnimations/fade_in_out.gd.uid new file mode 100644 index 0000000..7f7960d --- /dev/null +++ b/addons/dialogic/Modules/Character/DefaultAnimations/fade_in_out.gd.uid @@ -0,0 +1 @@ +uid://fekbbs23rj4m diff --git a/addons/dialogic/Modules/Character/DefaultAnimations/fade_up_in_out.gd b/addons/dialogic/Modules/Character/DefaultAnimations/fade_up_in_out.gd new file mode 100644 index 0000000..83a8ba8 --- /dev/null +++ b/addons/dialogic/Modules/Character/DefaultAnimations/fade_up_in_out.gd @@ -0,0 +1,44 @@ +extends DialogicAnimation + +func animate() -> void: + var tween := (node.create_tween() as Tween) + + var start_height: float = base_position.y + node.get_viewport().size.y / 5 + var end_height := base_position.y + + var start_modulation := 0.0 + var end_modulation := 1.0 + + if is_reversed: + end_height = start_height + start_height = base_position.y + end_modulation = 0.0 + start_modulation = 1.0 + + node.position.y = start_height + + tween.set_ease(Tween.EASE_OUT) + tween.set_trans(Tween.TRANS_SINE) + tween.set_parallel() + + var end_postion := Vector2(base_position.x, end_height) + tween.tween_property(node, "position", end_postion, time) + + var property := get_modulation_property() + + var original_modulation: Color = node.get(property) + original_modulation.a = start_modulation + node.set(property, original_modulation) + var modulation_alpha := property + ":a" + + tween.tween_property(node, modulation_alpha, end_modulation, time) + + await tween.finished + finished_once.emit() + + +func _get_named_variations() -> Dictionary: + return { + "fade in up": {"reversed": false, "type": AnimationType.IN}, + "fade out down": {"reversed": true, "type": AnimationType.OUT}, + } diff --git a/addons/dialogic/Modules/Character/DefaultAnimations/fade_up_in_out.gd.uid b/addons/dialogic/Modules/Character/DefaultAnimations/fade_up_in_out.gd.uid new file mode 100644 index 0000000..547dbbf --- /dev/null +++ b/addons/dialogic/Modules/Character/DefaultAnimations/fade_up_in_out.gd.uid @@ -0,0 +1 @@ +uid://dwnfbyjtc2anb diff --git a/addons/dialogic/Modules/Character/DefaultAnimations/heartbeat.gd b/addons/dialogic/Modules/Character/DefaultAnimations/heartbeat.gd new file mode 100644 index 0000000..36e8eab --- /dev/null +++ b/addons/dialogic/Modules/Character/DefaultAnimations/heartbeat.gd @@ -0,0 +1,13 @@ +extends DialogicAnimation + +func animate() -> void: + var tween := (node.create_tween() as Tween) + tween.tween_property(node, 'scale', Vector2(1,1)*1.2, time*0.5).set_trans(Tween.TRANS_ELASTIC).set_ease(Tween.EASE_OUT) + tween.tween_property(node, 'scale', Vector2(1,1), time*0.5).set_trans(Tween.TRANS_BOUNCE).set_ease(Tween.EASE_OUT) + tween.finished.connect(emit_signal.bind('finished_once')) + + +func _get_named_variations() -> Dictionary: + return { + "heartbeat": {"type": AnimationType.ACTION}, + } diff --git a/addons/dialogic/Modules/Character/DefaultAnimations/heartbeat.gd.uid b/addons/dialogic/Modules/Character/DefaultAnimations/heartbeat.gd.uid new file mode 100644 index 0000000..9893d4d --- /dev/null +++ b/addons/dialogic/Modules/Character/DefaultAnimations/heartbeat.gd.uid @@ -0,0 +1 @@ +uid://8ro2ayitmjcp diff --git a/addons/dialogic/Modules/Character/DefaultAnimations/instant_in_out.gd b/addons/dialogic/Modules/Character/DefaultAnimations/instant_in_out.gd new file mode 100644 index 0000000..3044c69 --- /dev/null +++ b/addons/dialogic/Modules/Character/DefaultAnimations/instant_in_out.gd @@ -0,0 +1,12 @@ +extends DialogicAnimation + +func animate() -> void: + await node.get_tree().process_frame + finished.emit() + + +func _get_named_variations() -> Dictionary: + return { + "instant in": {"reversed": false, "type": AnimationType.IN}, + "instant out": {"reversed": true, "type": AnimationType.OUT}, + } diff --git a/addons/dialogic/Modules/Character/DefaultAnimations/instant_in_out.gd.uid b/addons/dialogic/Modules/Character/DefaultAnimations/instant_in_out.gd.uid new file mode 100644 index 0000000..b6c4e80 --- /dev/null +++ b/addons/dialogic/Modules/Character/DefaultAnimations/instant_in_out.gd.uid @@ -0,0 +1 @@ +uid://cn4yveni7rdr7 diff --git a/addons/dialogic/Modules/Character/DefaultAnimations/shake_x.gd b/addons/dialogic/Modules/Character/DefaultAnimations/shake_x.gd new file mode 100644 index 0000000..c71cfde --- /dev/null +++ b/addons/dialogic/Modules/Character/DefaultAnimations/shake_x.gd @@ -0,0 +1,20 @@ +extends DialogicAnimation + +func animate() -> void: + var tween := (node.create_tween() as Tween) + tween.set_ease(Tween.EASE_IN_OUT).set_trans(Tween.TRANS_SINE) + var strength: float = node.get_viewport().size.x/60 + var bound_multitween := DialogicUtil.multitween.bind(node, "position", "animation_shake_x") + tween.tween_method(bound_multitween, Vector2(), Vector2(1, 0)*strength, time*0.2) + tween.tween_method(bound_multitween, Vector2(), Vector2(-1,0)*strength, time*0.1) + tween.tween_method(bound_multitween, Vector2(), Vector2(1, 0)*strength, time*0.1) + tween.tween_method(bound_multitween, Vector2(), Vector2(-1,0)*strength, time*0.1) + tween.tween_method(bound_multitween, Vector2(), Vector2(1, 0)*strength, time*0.1) + tween.tween_method(bound_multitween, Vector2(), Vector2(-1,0)*strength, time*0.1) + tween.tween_method(bound_multitween, Vector2(), Vector2(0, 0)*strength, time*0.2) + tween.finished.connect(emit_signal.bind('finished_once')) + +func _get_named_variations() -> Dictionary: + return { + "shake x": {"type": AnimationType.ACTION}, + } diff --git a/addons/dialogic/Modules/Character/DefaultAnimations/shake_x.gd.uid b/addons/dialogic/Modules/Character/DefaultAnimations/shake_x.gd.uid new file mode 100644 index 0000000..df5b2b4 --- /dev/null +++ b/addons/dialogic/Modules/Character/DefaultAnimations/shake_x.gd.uid @@ -0,0 +1 @@ +uid://3tqien23j50t diff --git a/addons/dialogic/Modules/Character/DefaultAnimations/shake_y.gd b/addons/dialogic/Modules/Character/DefaultAnimations/shake_y.gd new file mode 100644 index 0000000..6a0224c --- /dev/null +++ b/addons/dialogic/Modules/Character/DefaultAnimations/shake_y.gd @@ -0,0 +1,23 @@ +extends DialogicAnimation + +func animate() -> void: + var tween := (node.create_tween() as Tween) + tween.set_ease(Tween.EASE_IN_OUT).set_trans(Tween.TRANS_SINE) + + var strength: float = node.get_viewport().size.y/40 + tween.tween_property(node, 'position:y', base_position.y + strength, time * 0.2) + tween.tween_property(node, 'position:y', base_position.y - strength, time * 0.1) + tween.tween_property(node, 'position:y', base_position.y + strength, time * 0.1) + tween.tween_property(node, 'position:y', base_position.y - strength, time * 0.1) + tween.tween_property(node, 'position:y', base_position.y + strength, time * 0.1) + tween.tween_property(node, 'position:y', base_position.y - strength, time * 0.1) + tween.tween_property(node, 'position:y', base_position.y + strength, time * 0.1) + tween.tween_property(node, 'position:y', base_position.y, time * 0.2) + + tween.finished.connect(emit_signal.bind('finished_once')) + + +func _get_named_variations() -> Dictionary: + return { + "shake y": {"type": AnimationType.ACTION}, + } diff --git a/addons/dialogic/Modules/Character/DefaultAnimations/shake_y.gd.uid b/addons/dialogic/Modules/Character/DefaultAnimations/shake_y.gd.uid new file mode 100644 index 0000000..9db5c83 --- /dev/null +++ b/addons/dialogic/Modules/Character/DefaultAnimations/shake_y.gd.uid @@ -0,0 +1 @@ +uid://lur75holg34f diff --git a/addons/dialogic/Modules/Character/DefaultAnimations/slide_down_in_out.gd b/addons/dialogic/Modules/Character/DefaultAnimations/slide_down_in_out.gd new file mode 100644 index 0000000..d59d34f --- /dev/null +++ b/addons/dialogic/Modules/Character/DefaultAnimations/slide_down_in_out.gd @@ -0,0 +1,27 @@ +extends DialogicAnimation + +func animate() -> void: + var tween := (node.create_tween() as Tween) + tween.set_ease(Tween.EASE_OUT).set_trans(Tween.TRANS_BACK) + + var end_position_y: float = base_position.y + node.get_parent().global_position.y + var start_position: float = -get_node_size().y + get_node_origin().y + + if is_reversed: + tween.set_ease(Tween.EASE_IN) + end_position_y = -get_node_size().y + get_node_origin().y + start_position = base_position.y + + node.position.y = start_position + + tween.tween_property(node, 'global_position:y', end_position_y, time) + + await tween.finished + finished_once.emit() + + +func _get_named_variations() -> Dictionary: + return { + "slide in down": {"reversed": false, "type": AnimationType.IN}, + "slide out up": {"reversed": true, "type": AnimationType.OUT}, + } diff --git a/addons/dialogic/Modules/Character/DefaultAnimations/slide_down_in_out.gd.uid b/addons/dialogic/Modules/Character/DefaultAnimations/slide_down_in_out.gd.uid new file mode 100644 index 0000000..ba6b76c --- /dev/null +++ b/addons/dialogic/Modules/Character/DefaultAnimations/slide_down_in_out.gd.uid @@ -0,0 +1 @@ +uid://d0a5sgbr5imas diff --git a/addons/dialogic/Modules/Character/DefaultAnimations/slide_left_in_out.gd b/addons/dialogic/Modules/Character/DefaultAnimations/slide_left_in_out.gd new file mode 100644 index 0000000..ed9987f --- /dev/null +++ b/addons/dialogic/Modules/Character/DefaultAnimations/slide_left_in_out.gd @@ -0,0 +1,27 @@ +extends DialogicAnimation + + +func animate() -> void: + var tween := (node.create_tween() as Tween) + tween.set_ease(Tween.EASE_OUT).set_trans(Tween.TRANS_BACK) + + var end_position_x: float = base_position.x + node.get_parent().global_position.x + + if is_reversed: + end_position_x = - get_node_size().x + get_node_origin().x + tween.set_ease(Tween.EASE_IN) + + else: + node.global_position.x = -get_node_size().x + get_node_origin().x + + tween.tween_property(node, 'global_position:x', end_position_x, time) + + await tween.finished + finished_once.emit() + + +func _get_named_variations() -> Dictionary: + return { + "slide from left": {"reversed": false, "type": AnimationType.IN}, + "slide to left": {"reversed": true, "type": AnimationType.OUT}, + } diff --git a/addons/dialogic/Modules/Character/DefaultAnimations/slide_left_in_out.gd.uid b/addons/dialogic/Modules/Character/DefaultAnimations/slide_left_in_out.gd.uid new file mode 100644 index 0000000..adda345 --- /dev/null +++ b/addons/dialogic/Modules/Character/DefaultAnimations/slide_left_in_out.gd.uid @@ -0,0 +1 @@ +uid://c8il877nw3xqw diff --git a/addons/dialogic/Modules/Character/DefaultAnimations/slide_right_in_out.gd b/addons/dialogic/Modules/Character/DefaultAnimations/slide_right_in_out.gd new file mode 100644 index 0000000..b248156 --- /dev/null +++ b/addons/dialogic/Modules/Character/DefaultAnimations/slide_right_in_out.gd @@ -0,0 +1,24 @@ +extends DialogicAnimation + +func animate() -> void: + var tween := (node.create_tween() as Tween) + tween.set_ease(Tween.EASE_OUT).set_trans(Tween.TRANS_BACK) + + var viewport_x: float = get_viewport_size().x + var end_position_x : float = base_position.x + node.get_parent().global_position.x + + if is_reversed: + end_position_x = viewport_x + get_node_origin().x + tween.set_ease(Tween.EASE_IN) + else: + node.global_position.x = viewport_x + get_node_origin().x + + tween.tween_property(node, 'global_position:x', end_position_x, time) + tween.finished.connect(emit_signal.bind('finished_once')) + + +func _get_named_variations() -> Dictionary: + return { + "slide from right": {"reversed": false, "type": AnimationType.IN}, + "slide to right": {"reversed": true, "type": AnimationType.OUT}, + } diff --git a/addons/dialogic/Modules/Character/DefaultAnimations/slide_right_in_out.gd.uid b/addons/dialogic/Modules/Character/DefaultAnimations/slide_right_in_out.gd.uid new file mode 100644 index 0000000..fb8adfa --- /dev/null +++ b/addons/dialogic/Modules/Character/DefaultAnimations/slide_right_in_out.gd.uid @@ -0,0 +1 @@ +uid://daj7cqft5hnxg diff --git a/addons/dialogic/Modules/Character/DefaultAnimations/slide_up_in.gd b/addons/dialogic/Modules/Character/DefaultAnimations/slide_up_in.gd new file mode 100644 index 0000000..7e89a06 --- /dev/null +++ b/addons/dialogic/Modules/Character/DefaultAnimations/slide_up_in.gd @@ -0,0 +1,26 @@ +extends DialogicAnimation + +func animate() -> void: + var tween := (node.create_tween() as Tween) + tween.set_ease(Tween.EASE_OUT).set_trans(Tween.TRANS_BACK) + + var start_position_y: float = get_viewport_size().y + get_node_origin().y + var end_position_y: float = base_position.y + node.get_parent().global_position.y + + if is_reversed: + tween.set_ease(Tween.EASE_IN) + start_position_y = end_position_y + end_position_y = get_viewport_size().y + get_node_origin().y + + node.global_position.y = start_position_y + tween.tween_property(node, 'global_position:y', end_position_y, time) + + await tween.finished + finished_once.emit() + + +func _get_named_variations() -> Dictionary: + return { + "slide in up": {"reversed": false, "type": AnimationType.IN}, + "slide out down": {"reversed": true, "type": AnimationType.OUT}, + } diff --git a/addons/dialogic/Modules/Character/DefaultAnimations/slide_up_in.gd.uid b/addons/dialogic/Modules/Character/DefaultAnimations/slide_up_in.gd.uid new file mode 100644 index 0000000..e63f6f5 --- /dev/null +++ b/addons/dialogic/Modules/Character/DefaultAnimations/slide_up_in.gd.uid @@ -0,0 +1 @@ +uid://bj5ak53i7s8ux diff --git a/addons/dialogic/Modules/Character/DefaultAnimations/tada.gd b/addons/dialogic/Modules/Character/DefaultAnimations/tada.gd new file mode 100644 index 0000000..0d578b1 --- /dev/null +++ b/addons/dialogic/Modules/Character/DefaultAnimations/tada.gd @@ -0,0 +1,25 @@ +extends DialogicAnimation + +func animate() -> void: + var tween := (node.create_tween() as Tween) + tween.set_trans(Tween.TRANS_SINE).set_ease(Tween.EASE_OUT) + + var strength: float = 0.01 + + tween.set_parallel(true) + tween.tween_property(node, 'scale', Vector2(1,1)*(1+strength), time*0.3) + tween.tween_property(node, 'rotation', -strength, time*0.1).set_delay(time*0.2) + tween.tween_property(node, 'rotation', strength, time*0.1).set_delay(time*0.3) + tween.tween_property(node, 'rotation', -strength, time*0.1).set_delay(time*0.4) + tween.tween_property(node, 'rotation', strength, time*0.1).set_delay(time*0.5) + tween.tween_property(node, 'rotation', -strength, time*0.1).set_delay(time*0.6) + tween.chain().tween_property(node, 'scale', Vector2(1,1), time*0.3) + tween.parallel().tween_property(node, 'rotation', 0.0, time*0.3) + + tween.finished.connect(emit_signal.bind('finished_once')) + + +func _get_named_variations() -> Dictionary: + return { + "tada": {"type": AnimationType.ACTION}, + } diff --git a/addons/dialogic/Modules/Character/DefaultAnimations/tada.gd.uid b/addons/dialogic/Modules/Character/DefaultAnimations/tada.gd.uid new file mode 100644 index 0000000..21553de --- /dev/null +++ b/addons/dialogic/Modules/Character/DefaultAnimations/tada.gd.uid @@ -0,0 +1 @@ +uid://crv1pn60clrvx diff --git a/addons/dialogic/Modules/Character/DefaultAnimations/zoom_center_in_out.gd b/addons/dialogic/Modules/Character/DefaultAnimations/zoom_center_in_out.gd new file mode 100644 index 0000000..fad8b61 --- /dev/null +++ b/addons/dialogic/Modules/Character/DefaultAnimations/zoom_center_in_out.gd @@ -0,0 +1,36 @@ +extends DialogicAnimation + +func animate() -> void: + var modulate_property := get_modulation_property() + var modulate_alpha_property := modulate_property + ":a" + + var end_scale: Vector2 = node.scale + var end_modulation_alpha := 1.0 + + if is_reversed: + end_modulation_alpha = 0.0 + + else: + node.scale = Vector2(0, 0) + node.position.y = base_position.y - node.get_viewport().size.y * 0.5 + + var original_modulation: Color = node.get(modulate_property) + original_modulation.a = 0.0 + node.set(modulate_property, original_modulation) + + var tween := (node.create_tween() as Tween) + tween.set_ease(Tween.EASE_IN_OUT).set_trans(Tween.TRANS_EXPO) + tween.set_parallel(true) + tween.tween_property(node, "scale", end_scale, time) + tween.tween_property(node, "position", base_position, time) + tween.tween_property(node, modulate_alpha_property, end_modulation_alpha, time) + + await tween.finished + finished_once.emit() + + +func _get_named_variations() -> Dictionary: + return { + "zoom center in": {"reversed": false, "type": AnimationType.IN}, + "zoom center out": {"reversed": true, "type": AnimationType.OUT}, + } diff --git a/addons/dialogic/Modules/Character/DefaultAnimations/zoom_center_in_out.gd.uid b/addons/dialogic/Modules/Character/DefaultAnimations/zoom_center_in_out.gd.uid new file mode 100644 index 0000000..154ef7d --- /dev/null +++ b/addons/dialogic/Modules/Character/DefaultAnimations/zoom_center_in_out.gd.uid @@ -0,0 +1 @@ +uid://cjwdb0jkjrcxe diff --git a/addons/dialogic/Modules/Character/DefaultAnimations/zoom_in_out.gd b/addons/dialogic/Modules/Character/DefaultAnimations/zoom_in_out.gd new file mode 100644 index 0000000..21cc338 --- /dev/null +++ b/addons/dialogic/Modules/Character/DefaultAnimations/zoom_in_out.gd @@ -0,0 +1,35 @@ +extends DialogicAnimation + +func animate() -> void: + var modulate_property := get_modulation_property() + var modulate_alpha_property := modulate_property + ":a" + + var end_scale: Vector2 = node.scale + var end_modulation_alpha := 1.0 + + if is_reversed: + end_scale = Vector2(0, 0) + end_modulation_alpha = 0.0 + + else: + node.scale = Vector2(0,0) + + var original_modulation: Color = node.get(modulate_property) + original_modulation.a = 0.0 + node.set(modulate_property, original_modulation) + + var tween := (node.create_tween() as Tween) + tween.set_ease(Tween.EASE_OUT).set_trans(Tween.TRANS_EXPO) + tween.set_parallel(true) + tween.tween_property(node, "scale", end_scale, time) + tween.tween_property(node, modulate_alpha_property, end_modulation_alpha, time) + + await tween.finished + finished_once.emit() + + +func _get_named_variations() -> Dictionary: + return { + "zoom in": {"reversed": false, "type": AnimationType.IN}, + "zoom out": {"reversed": true, "type": AnimationType.OUT}, + } diff --git a/addons/dialogic/Modules/Character/DefaultAnimations/zoom_in_out.gd.uid b/addons/dialogic/Modules/Character/DefaultAnimations/zoom_in_out.gd.uid new file mode 100644 index 0000000..05fe814 --- /dev/null +++ b/addons/dialogic/Modules/Character/DefaultAnimations/zoom_in_out.gd.uid @@ -0,0 +1 @@ +uid://bl5sdpj631mtt diff --git a/addons/dialogic/Modules/Character/DialogicPortraitAnimationsUtil.gd b/addons/dialogic/Modules/Character/DialogicPortraitAnimationsUtil.gd new file mode 100644 index 0000000..66908e3 --- /dev/null +++ b/addons/dialogic/Modules/Character/DialogicPortraitAnimationsUtil.gd @@ -0,0 +1,47 @@ +@tool +class_name DialogicPortraitAnimationUtil + +enum AnimationType {ALL=-1, IN=1, OUT=2, ACTION=3, CROSSFADE=4} + + +static func guess_animation(string:String, type := AnimationType.ALL) -> String: + var default := {} + var filter := {} + var ignores := [] + match type: + AnimationType.ALL: + pass + AnimationType.IN: + filter = {"type":AnimationType.IN} + ignores = ["in"] + AnimationType.OUT: + filter = {"type":AnimationType.OUT} + ignores = ["out"] + AnimationType.ACTION: + filter = {"type":AnimationType.ACTION} + AnimationType.CROSSFADE: + filter = {"type":AnimationType.CROSSFADE} + ignores = ["cross"] + return DialogicResourceUtil.guess_special_resource(&"PortraitAnimation", string, default, filter, ignores).get("path", "") + + +static func get_portrait_animations_filtered(type := AnimationType.ALL) -> Dictionary: + var filter := {"type":type} + if type == AnimationType.ALL: + filter["type"] = [AnimationType.IN, AnimationType.OUT, AnimationType.ACTION] + return DialogicResourceUtil.list_special_resources("PortraitAnimation", filter) + + +static func get_suggestions(_search_text := "", current_value:= "", empty_text := "Default", action := AnimationType.ALL) -> Dictionary: + var suggestions := {} + + if empty_text and current_value: + suggestions[empty_text] = {'value':"", 'editor_icon':["GuiRadioUnchecked", "EditorIcons"]} + + for anim_name in get_portrait_animations_filtered(action): + suggestions[DialogicUtil.pretty_name(anim_name)] = { + 'value' : DialogicUtil.pretty_name(anim_name), + 'editor_icon' : ["Animation", "EditorIcons"] + } + + return suggestions diff --git a/addons/dialogic/Modules/Character/DialogicPortraitAnimationsUtil.gd.uid b/addons/dialogic/Modules/Character/DialogicPortraitAnimationsUtil.gd.uid new file mode 100644 index 0000000..9ddf912 --- /dev/null +++ b/addons/dialogic/Modules/Character/DialogicPortraitAnimationsUtil.gd.uid @@ -0,0 +1 @@ +uid://j2k3uogf5715 diff --git a/addons/dialogic/Modules/Character/class_dialogic_animation.gd b/addons/dialogic/Modules/Character/class_dialogic_animation.gd new file mode 100644 index 0000000..3c0d8ef --- /dev/null +++ b/addons/dialogic/Modules/Character/class_dialogic_animation.gd @@ -0,0 +1,102 @@ +class_name DialogicAnimation +extends Node + +## Class that can be used to animate portraits. Can be extended to create animations. + +enum AnimationType {IN=1, OUT=2, ACTION=3, CROSSFADE=4} + +signal finished_once +signal finished + +## Set at runtime, will be the node to animate. +var node: Node + +## Set at runtime, will be the length of the animation. +var time: float + +## Set at runtime, will be the base position of the node. +## Depending on the animation, this might be the start, end or both. +var base_position: Vector2 +## Set at runtime, will be the base scale of the node. +var base_scale: Vector2 + +## Used to repeate the animation for a number of times. +var repeats: int + +## If `true`, the animation will be reversed. +## This must be implemented by each animation or it will have no effect. +var is_reversed: bool = false + + +func _ready() -> void: + finished_once.connect(finished_one_loop) + + +## To be overridden. Do the actual animating/tweening in here. +## Use the properties [member node], [member time], [member base_position], etc. +func animate() -> void: + pass + + +## This method controls whether to repeat the animation or not. +## Animations must call this once they finished an animation. +func finished_one_loop() -> void: + repeats -= 1 + + if repeats > 0: + animate() + + else: + finished.emit() + + +func pause() -> void: + if node: + node.process_mode = Node.PROCESS_MODE_DISABLED + + +func resume() -> void: + if node: + node.process_mode = Node.PROCESS_MODE_INHERIT + + +func _get_named_variations() -> Dictionary: + return {} + + +## If the animation wants to change the modulation, this method +## will return the property to change. +## +## The [class CanvasGroup] can use `self_modulate` instead of `modulate` +## to uniformly change the modulation of all children without additively +## overlaying the modulations. +func get_modulation_property() -> String: + if node is CanvasGroup: + return "self_modulate" + else: + return "modulate" + + +## Tries to return the size of the node to be animated. +## For portraits this uses the portrait containers size. +## This is useful if your animation depends on the size of the node. +func get_node_size() -> Vector2: + if not node: + return Vector2() + if node.get_parent() is DialogicNode_PortraitContainer: + return node.get_parent().size + if "size" in node: + return node.size * node.scale + return node.get_viewport().size + + +func get_node_origin() -> Vector2: + if not node: + return Vector2() + if node.get_parent() is DialogicNode_PortraitContainer: + return node.get_parent()._get_origin_position() + return Vector2() + + +func get_viewport_size() -> Vector2: + return node.get_viewport().get_visible_rect().size diff --git a/addons/dialogic/Modules/Character/class_dialogic_animation.gd.uid b/addons/dialogic/Modules/Character/class_dialogic_animation.gd.uid new file mode 100644 index 0000000..e8ff8b4 --- /dev/null +++ b/addons/dialogic/Modules/Character/class_dialogic_animation.gd.uid @@ -0,0 +1 @@ +uid://0hsjlurlblou diff --git a/addons/dialogic/Modules/Character/custom_portrait_thumbnail.png b/addons/dialogic/Modules/Character/custom_portrait_thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..77d3cf323f080bdeb1d28bc3ef51983f76650059 GIT binary patch literal 2888 zcmcgudpOkT7oUV?-N{HaBU)PbHi{6rL`jtENEpU_FxG8c#-(wY$}-jFewnP01~Z6U z3X@u4Ye-BCQj<$*23y80>^r-^=h^4?JimW_|Lh;%@Atgtyx(&^=REJ{ocG!VdmC{P z1rZ1YB7XLal_LbQOAE*kpu*s-VpSY1flNzf}*K<|H6ilP|4KF8VbcpBiHe0p|eRiFKU+B zwe4t1cGJnHyoydWgSws?VKONl9UgEvJOqOozVAZ0zpc=A*?#Zdy$Xto!`QB^sTr@#2bKu6Wr>5!|W;>T95hk>gGE2I#-)Uolf(E<0PaX7K*}3H5aqP&EJ24BR zV+f(Oee}j33hh2^t-f``U?`l6UiZt(&6V&=R{+v5lE4`iq$}JMk6d6Dt#=2|-EB4m^n`tj4JS1n;IjqP^4sV+m0^`?$WrOt1ND;^J8%}j?3SfB z9=v&Gewv7q-CnmF10o87x$>Brt$G{TQ5CR)B2`Bh62^a<^B6-S?&1s$Ucl?jq`Ml_rXih zJjOVSbhKFh_x%CBTAnfY#q|6iktD=PjrBE6>Z4zss_obHUkt#qPQPF&X52Zfze`^D&|_fN0mZ|f7%Q167g zwl^qhhYyF5E;cx8R3>fm#t^$TuL8p}-;3V(<&4?6xiFGrL!HM%ja*y4Egki)G9Vz} zYu{nAA+8!m>TQny62L;EGNiP$LIMJ;l~TSnbgs`TW|K(9QPC*Qcyo(Qx5zu>Zd(nx zECo1xWPbi0;M>US*RpFp6*`@{&t8E)-ODdbQ|G%irep;Ece9vA?v^F>jtmWzM;p~u zRjF+s%_)PwD<~@)C8ul$a}H6KRS2-30GExT=cTH9_BG%Zy#NGEM8u5aTyOb612(VwAe&k3Jk2~NULO_ zPTOhZzNZ=}UV0c_`X7adN3m~10q4gOxvz}fqIv|_j}!0$wjTYnGE#bYd^{vkaBi{# z$KXNv{xVU8Y+XB+B~9gfxvZMX%4a z&8W{(!h7i=%2N_WXyTCqs4J9@euaWkK`K85$q`_7f|`E(!u=zGc-K%FVhe73usVd9 zrfLUr9{y2P)o=6b-ie%J6;z`Bi4(zzf?5RBdhLZDZsQ--)b!1-8-z~;eO@(Y82 z(4nL&r-f^?rTburisXqB*2%|iIFijG9pVi~L^$?_m?kl@Lak-;loYs4G@Fs3vZErV< ziHZ3*iF@nGE816v+x`|GUly1s2Eu5?eOqhD%*=d{va{XDY-w(;>FV+p6%}ny+37@> zCD&$V3ImGDlgFN<{MOqWGt&=aq3?)wvbERO=g1=?Bb8vvX?@)AJ6Z$UXi`S?^(u?< zJBwXAQ#^U3z$i^iT`p_m6NS14y8&6_b}X(ji z$?JffNEL$r7?>3HWYfB~wiB!htLt;|8(^otptaB<#s2hx{uR}IU>cua{5vnpG z8HCO)p2yZ2o77@so`H;(yn0!unqj(W=g|^6)S0xoR!{(&jxTE*t4&^eM{FeGq`?_N zf#voZTe5OEIBc@rrPu&_d|Qxsueh{y1YoZp$k%OZMc-&KLJ@APYM74 literal 0 HcmV?d00001 diff --git a/addons/dialogic/Modules/Character/custom_portrait_thumbnail.png.import b/addons/dialogic/Modules/Character/custom_portrait_thumbnail.png.import new file mode 100644 index 0000000..bdad57f --- /dev/null +++ b/addons/dialogic/Modules/Character/custom_portrait_thumbnail.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c5tu88x32sjkf" +path="res://.godot/imported/custom_portrait_thumbnail.png-0513583853d87342a634d56bc0bec965.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Modules/Character/custom_portrait_thumbnail.png" +dest_files=["res://.godot/imported/custom_portrait_thumbnail.png-0513583853d87342a634d56bc0bec965.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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/dialogic/Modules/Character/default_portrait.gd b/addons/dialogic/Modules/Character/default_portrait.gd new file mode 100644 index 0000000..a9c7775 --- /dev/null +++ b/addons/dialogic/Modules/Character/default_portrait.gd @@ -0,0 +1,15 @@ +@tool +extends DialogicPortrait + +## Default portrait scene. +## The parent class has a character and portrait variable. + +@export_group('Main') +@export_file var image := "" + + +## Load anything related to the given character and portrait +func _update_portrait(passed_character:DialogicCharacter, passed_portrait:String) -> void: + apply_character_and_portrait(passed_character, passed_portrait) + + apply_texture($Portrait, image) diff --git a/addons/dialogic/Modules/Character/default_portrait.gd.uid b/addons/dialogic/Modules/Character/default_portrait.gd.uid new file mode 100644 index 0000000..c4e680f --- /dev/null +++ b/addons/dialogic/Modules/Character/default_portrait.gd.uid @@ -0,0 +1 @@ +uid://cork0heubbx7f diff --git a/addons/dialogic/Modules/Character/default_portrait.tscn b/addons/dialogic/Modules/Character/default_portrait.tscn new file mode 100644 index 0000000..cd3d57d --- /dev/null +++ b/addons/dialogic/Modules/Character/default_portrait.tscn @@ -0,0 +1,9 @@ +[gd_scene load_steps=2 format=3 uid="uid://b32paf0ll6um8"] + +[ext_resource type="Script" uid="uid://cork0heubbx7f" path="res://addons/dialogic/Modules/Character/default_portrait.gd" id="1_wn77n"] + +[node name="DefaultPortrait" type="Node2D"] +script = ExtResource("1_wn77n") + +[node name="Portrait" type="Sprite2D" parent="."] +centered = false diff --git a/addons/dialogic/Modules/Character/default_portrait_thumbnail.png b/addons/dialogic/Modules/Character/default_portrait_thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..369a1118b9a08d0b8e2f0b81b9f2d337d5ec0374 GIT binary patch literal 5647 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 bool: + return false + + +## If the custom portrait accepts a change, then accept it here +## You should position your portrait so that the root node is at the pivot point*. +## For example for a simple sprite this code would work: +## >>> $Sprite.position = $Sprite.get_rect().size * Vector2(-0.5, -1) +## +## * this depends on the portrait containers, but it will most likely be the bottom center (99% of cases) +func _update_portrait(_passed_character: DialogicCharacter, _passed_portrait: String) -> void: + pass + + +## This should be implemented. It is used for sizing in the +## character editor preview and in portrait containers. +## Scale and offset will be applied by Dialogic. +## For example, a simple sprite: +## >>> return Rect2($Sprite.position, $Sprite.get_rect().size) +## +## This will only work as expected if the portrait is positioned so that the +## root is at the pivot point. +## +## If you've used apply_texture this should work automatically. +func _get_covered_rect() -> Rect2: + if has_meta('texture_holder_node') and get_meta('texture_holder_node', null) != null and is_instance_valid(get_meta('texture_holder_node')): + var node: Node = get_meta('texture_holder_node') + if node is Sprite2D or node is TextureRect: + return Rect2(node.position, node.get_rect().size) + return Rect2() + + +## If implemented, this is called when the mirror changes +func _set_mirror(mirror:bool) -> void: + if has_meta('texture_holder_node') and get_meta('texture_holder_node', null) != null and is_instance_valid(get_meta('texture_holder_node')): + var node: Node = get_meta('texture_holder_node') + if node is Sprite2D or node is TextureRect: + node.flip_h = mirror + + +## Function to accept and use the extra data, if the custom portrait wants to accept it +func _set_extra_data(_data: String) -> void: + pass + +#endregion + +#region HIGHLIGHT OVERRIDES +################################################################################ + +## Called when this becomes the active speaker +func _highlight() -> void: + pass + + +## Called when this stops being the active speaker +func _unhighlight() -> void: + pass +#endregion + + +#region HELPERS +################################################################################ + +## Helper that quickly setups and checks the character and portrait. +func apply_character_and_portrait(passed_character:DialogicCharacter, passed_portrait:String) -> void: + if passed_portrait == "" or not passed_portrait in passed_character.portraits.keys(): + passed_portrait = passed_character.default_portrait + + portrait = passed_portrait + character = passed_character + + +func apply_texture(node:Node, texture_path:String) -> void: + if not character or not character.portraits.has(portrait): + return + + if not "texture" in node: + return + + node.texture = null + + if not ResourceLoader.exists(texture_path): + # This is a leftover from alpha. + # Removing this will break any portraits made before alpha-10 + if ResourceLoader.exists(character.portraits[portrait].get('image', '')): + texture_path = character.portraits[portrait].get('image', '') + else: + return + + node.texture = load(texture_path) + + if node is Sprite2D or node is TextureRect: + if node is Sprite2D: + node.centered = false + node.scale = Vector2.ONE + if node is TextureRect: + if !is_inside_tree(): + await ready + node.position = node.get_rect().size * Vector2(-0.5, -1) + + set_meta('texture_holder_node', node) + +#endregion diff --git a/addons/dialogic/Modules/Character/dialogic_portrait.gd.uid b/addons/dialogic/Modules/Character/dialogic_portrait.gd.uid new file mode 100644 index 0000000..5428091 --- /dev/null +++ b/addons/dialogic/Modules/Character/dialogic_portrait.gd.uid @@ -0,0 +1 @@ +uid://djbg8sc0q67ow diff --git a/addons/dialogic/Modules/Character/event_character.gd b/addons/dialogic/Modules/Character/event_character.gd new file mode 100644 index 0000000..41256e3 --- /dev/null +++ b/addons/dialogic/Modules/Character/event_character.gd @@ -0,0 +1,581 @@ +@tool +class_name DialogicCharacterEvent +extends DialogicEvent +## Event that allows to manipulate character portraits. + +enum Actions {JOIN, LEAVE, UPDATE} + +### Settings + +## The type of action of this event (JOIN/LEAVE/UPDATE). See [Actions]. +var action := Actions.JOIN +## The character that will join/leave/update. +var character: DialogicCharacter = null +## For Join/Update, this will be the portrait of the character that is shown. +## Not used on Leave. +## If empty, the default portrait will be used. +var portrait := "" +## The index of the position this character should move to +var transform := "center" + +## Name of the animation script (extending DialogicAnimation). +## On Join/Leave empty (default) will fallback to the animations set in the settings. +## On Update empty will mean no animation. +var animation_name := "" +## Length of the animation. +var animation_length: float = 0.5 +## How often the animation is repeated. Only for Update events. +var animation_repeats: int = 1 +## If true, the events waits for the animation to finish before the next event starts. +var animation_wait := false + +## The fade animation to use. If left empty, the default cross-fade animation AND time will be used. +var fade_animation := "" +var fade_length := 0.5 + +## For Update only. If bigger then 0, the portrait will tween to the +## new position (if changed) in this time (in seconds). +var transform_time: float = 0.0 +var transform_ease := Tween.EaseType.EASE_IN_OUT +var transform_trans := Tween.TransitionType.TRANS_SINE + +var ease_options := [ + {'label': 'In', 'value': Tween.EASE_IN}, + {'label': 'Out', 'value': Tween.EASE_OUT}, + {'label': 'In_Out', 'value': Tween.EASE_IN_OUT}, + {'label': 'Out_In', 'value': Tween.EASE_OUT_IN}, + ] + +var trans_options := [ + {'label': 'Linear', 'value': Tween.TRANS_LINEAR}, + {'label': 'Sine', 'value': Tween.TRANS_SINE}, + {'label': 'Quint', 'value': Tween.TRANS_QUINT}, + {'label': 'Quart', 'value': Tween.TRANS_QUART}, + {'label': 'Quad', 'value': Tween.TRANS_QUAD}, + {'label': 'Expo', 'value': Tween.TRANS_EXPO}, + {'label': 'Elastic', 'value': Tween.TRANS_ELASTIC}, + {'label': 'Cubic', 'value': Tween.TRANS_CUBIC}, + {'label': 'Circ', 'value': Tween.TRANS_CIRC}, + {'label': 'Bounce', 'value': Tween.TRANS_BOUNCE}, + {'label': 'Back', 'value': Tween.TRANS_BACK}, + {'label': 'Spring', 'value': Tween.TRANS_SPRING} + ] + +## The z_index that the portrait should have. +var z_index: int = 0 +## If true, the portrait will be set to mirrored. +var mirrored := false +## If set, will be passed to the portrait scene. +var extra_data := "" + + +### Helpers + +## Indicators for whether something should be updated (UPDATE mode only) +var set_portrait := false +var set_transform := false +var set_z_index := false +var set_mirrored := false +## Used to set the character resource from the unique name identifier and vice versa +var character_identifier: String: + get: + if character_identifier == '--All--': + return '--All--' + if character: + var identifier := character.get_identifier() + if not identifier.is_empty(): + return identifier + return character_identifier + set(value): + character_identifier = value + character = DialogicResourceUtil.get_character_resource(value) + if (not character) or (character and not character.portraits.has(portrait)): + portrait = "" + ui_update_needed.emit() + +var regex := RegEx.create_from_string(r'(?join|update|leave)\s*(")?(?(?(2)[^"\n]*|[^(: \n]*))(?(2)"|)(\W*\((?.*)\))?(\s*(?[^\[]*))?(\s*\[(?.*)\])?') + +################################################################################ +## EXECUTION +################################################################################ + +func _execute() -> void: + if not character and not character_identifier == "--All--": + finish() + return + + # Calculate animation time (can be shortened during skipping) + var final_animation_length: float = animation_length + var final_position_move_time: float = transform_time + if dialogic.Inputs.auto_skip.enabled: + var max_time: float = dialogic.Inputs.auto_skip.time_per_event + final_animation_length = min(max_time, animation_length) + final_position_move_time = min(max_time, transform_time) + + + # JOIN ------------------------------------- + if action == Actions.JOIN: + if dialogic.has_subsystem('History') and !dialogic.Portraits.is_character_joined(character): + var character_name_text := dialogic.Text.get_character_name_parsed(character) + dialogic.History.store_simple_history_entry(character_name_text + " joined", event_name, {'character': character_name_text, 'mode':'Join'}) + + await dialogic.Portraits.join_character( + character, portrait, transform, + mirrored, z_index, extra_data, + animation_name, final_animation_length, animation_wait) + + # LEAVE ------------------------------------- + elif action == Actions.LEAVE: + if character_identifier == '--All--': + if dialogic.has_subsystem('History') and len(dialogic.Portraits.get_joined_characters()): + dialogic.History.store_simple_history_entry("Everyone left", event_name, {'character': "All", 'mode':'Leave'}) + + await dialogic.Portraits.leave_all_characters( + animation_name, + final_animation_length, + animation_wait + ) + + elif character: + if dialogic.has_subsystem('History') and dialogic.Portraits.is_character_joined(character): + var character_name_text := dialogic.Text.get_character_name_parsed(character) + dialogic.History.store_simple_history_entry(character_name_text+" left", event_name, {'character': character_name_text, 'mode':'Leave'}) + + await dialogic.Portraits.leave_character( + character, + animation_name, + final_animation_length, + animation_wait + ) + + # UPDATE ------------------------------------- + elif action == Actions.UPDATE: + if not character or not dialogic.Portraits.is_character_joined(character): + finish() + return + + if set_portrait: + await dialogic.Portraits.change_character_portrait(character, portrait, fade_animation, fade_length) + + dialogic.Portraits.change_character_extradata(character, extra_data) + + if set_mirrored: + dialogic.Portraits.change_character_mirror(character, mirrored) + + if set_z_index: + dialogic.Portraits.change_character_z_index(character, z_index) + + if set_transform: + dialogic.Portraits.move_character(character, transform, final_position_move_time, transform_ease, transform_trans) + + if animation_name: + var final_animation_repetitions: int = animation_repeats + + if dialogic.Inputs.auto_skip.enabled: + var time_per_event: float = dialogic.Inputs.auto_skip.time_per_event + var time_for_repetitions: float = time_per_event / animation_repeats + final_animation_length = time_for_repetitions + + var animation := dialogic.Portraits.animate_character( + character, + animation_name, + final_animation_length, + final_animation_repetitions, + ) + + if animation_wait: + dialogic.current_state = DialogicGameHandler.States.ANIMATING + await animation.finished + dialogic.current_state = DialogicGameHandler.States.IDLE + + + finish() + + +#region INITIALIZE +############################################################################### + +func _init() -> void: + event_name = "Character" + set_default_color('Color2') + event_category = "Main" + event_sorting_index = 2 + + +func _get_icon() -> Resource: + return load(self.get_script().get_path().get_base_dir().path_join('icon.svg')) + +#endregion + +#region SAVING, LOADING, DEFAULTS +################################################################################ + +func to_text() -> String: + var result_string := "" + + # ACTIONS + match action: + Actions.JOIN: result_string += "join " + Actions.LEAVE: result_string += "leave " + Actions.UPDATE: result_string += "update " + + var default_values := DialogicUtil.get_custom_event_defaults(event_name) + + # CHARACTER IDENTIFIER + if action == Actions.LEAVE and character_identifier == '--All--': + result_string += "--All--" + elif character: + var name := character.get_character_name() + + if name.count(" ") > 0: + name = '"' + name + '"' + + result_string += name + + # PORTRAIT + if portrait.strip_edges() != default_values.get('portrait', ''): + if action != Actions.LEAVE and (action != Actions.UPDATE or set_portrait): + result_string += " (" + portrait + ")" + + # TRANSFORM + if action == Actions.JOIN or (action == Actions.UPDATE and set_transform): + result_string += " " + str(transform) + + # SETS: + if action == Actions.JOIN or action == Actions.LEAVE: + set_mirrored = mirrored != default_values.get("mirrored", false) + set_z_index = z_index != default_values.get("z_index", 0) + + var shortcode := store_to_shortcode_parameters() + + if shortcode != "": + result_string += " [" + shortcode + "]" + + return result_string + + +func from_text(string:String) -> void: + # Load default character + character = DialogicResourceUtil.get_character_resource(character_identifier) + + var result := regex.search(string) + + # ACTION + match result.get_string('type'): + "join": action = Actions.JOIN + "leave": action = Actions.LEAVE + "update": action = Actions.UPDATE + + # CHARACTER + var given_name := result.get_string('name').strip_edges() + var given_portrait := result.get_string('portrait').strip_edges() + var given_transform := result.get_string('transform').strip_edges() + + if given_name: + if action == Actions.LEAVE and given_name == "--All--": + character_identifier = '--All--' + else: + character = DialogicResourceUtil.get_character_resource(given_name) + + # PORTRAIT + if given_portrait: + portrait = given_portrait.trim_prefix('(').trim_suffix(')') + set_portrait = true + + # TRANSFORM + if given_transform: + transform = given_transform + set_transform = true + + # SHORTCODE + if not result.get_string('shortcode'): + return + + load_from_shortcode_parameters(result.get_string('shortcode')) + + +func get_shortcode_parameters() -> Dictionary: + return { + #param_name : property_info + "action" : {"property": "action", "default": 0, "custom_stored":true, + "suggestions": func(): return {'Join': + {'value':Actions.JOIN}, + 'Leave':{'value':Actions.LEAVE}, + 'Update':{'value':Actions.UPDATE}}}, + "character" : {"property": "character_identifier", "default": "", "custom_stored":true, "ext_file":true}, + "portrait" : {"property": "portrait", "default": "", "custom_stored":true,}, + "transform" : {"property": "transform", "default": "center", "custom_stored":true,}, + + "animation" : {"property": "animation_name", "default": ""}, + "length" : {"property": "animation_length", "default": 0.5}, + "wait" : {"property": "animation_wait", "default": false}, + "repeat" : {"property": "animation_repeats", "default": 1}, + + "z_index" : {"property": "z_index", "default": 0}, + "mirrored" : {"property": "mirrored", "default": false}, + "fade" : {"property": "fade_animation", "default":""}, + "fade_length" : {"property": "fade_length", "default":0.5}, + "move_time" : {"property": "transform_time", "default": 0.0}, + "move_ease" : {"property": "transform_ease", "default": Tween.EaseType.EASE_IN_OUT, + "suggestions": func(): return list_to_suggestions(ease_options)}, + "move_trans" : {"property": "transform_trans", "default": Tween.TransitionType.TRANS_SINE, + "suggestions": func(): return list_to_suggestions(trans_options)}, + "extra_data" : {"property": "extra_data", "default": ""}, + } + + +func is_valid_event(string:String) -> bool: + if string.begins_with("join") or string.begins_with("leave") or string.begins_with("update"): + return true + return false + +#endregion + +################################################################################ +## EDITOR REPRESENTATION +################################################################################ + +func build_event_editor() -> void: + add_header_edit('action', ValueType.FIXED_OPTIONS, { + 'options': [ + { + 'label': 'Join', + 'value': Actions.JOIN, + 'icon': load("res://addons/dialogic/Editor/Images/Dropdown/join.svg") + }, + { + 'label': 'Leave', + 'value': Actions.LEAVE, + 'icon': load("res://addons/dialogic/Editor/Images/Dropdown/leave.svg") + }, + { + 'label': 'Update', + 'value': Actions.UPDATE, + 'icon': load("res://addons/dialogic/Editor/Images/Dropdown/update.svg") + } + ] + }) + add_header_edit('character_identifier', ValueType.DYNAMIC_OPTIONS, + {'placeholder' : 'Character', + 'file_extension' : '.dch', + 'mode' : 2, + 'suggestions_func' : get_character_suggestions, + 'icon' : load("res://addons/dialogic/Editor/Images/Resources/character.svg"), + 'autofocus' : true}) + + add_header_edit('set_portrait', ValueType.BOOL_BUTTON, + {'icon':load("res://addons/dialogic/Modules/Character/update_portrait.svg"), + 'tooltip':'Change Portrait'}, "should_show_portrait_selector() and action == Actions.UPDATE") + add_header_edit('portrait', ValueType.DYNAMIC_OPTIONS, + {'placeholder' : 'Default', + 'collapse_when_empty':true, + 'suggestions_func' : get_portrait_suggestions, + 'icon' : load("res://addons/dialogic/Editor/Images/Resources/portrait.svg")}, + 'should_show_portrait_selector() and (action != Actions.UPDATE or set_portrait)') + add_header_edit('set_transform', ValueType.BOOL_BUTTON, + {'icon': load("res://addons/dialogic/Modules/Character/update_position.svg"), 'tooltip':'Change Position'}, "character != null and !has_no_portraits() and action == Actions.UPDATE") + add_header_label('at position', 'character != null and !has_no_portraits() and action == Actions.JOIN') + add_header_label('to position', 'character != null and !has_no_portraits() and action == Actions.UPDATE and set_transform') + add_header_edit('transform', ValueType.DYNAMIC_OPTIONS, + {'placeholder' : 'center', + 'mode' : 0, + 'suggestions_func' : get_position_suggestions, + 'tooltip' : "You can use a predefined position or a custom transform like 'pos=x0.5y1 size=x0.5y1 rot=10'.\nLearn more about this in the documentation."}, + 'character != null and !has_no_portraits() and action != %s and (action != Actions.UPDATE or set_transform)' %Actions.LEAVE) + + # Body + add_body_edit('fade_animation', ValueType.DYNAMIC_OPTIONS, + {'left_text' : 'Fade:', + 'suggestions_func' : get_fade_suggestions, + 'editor_icon' : ["Animation", "EditorIcons"], + 'placeholder' : 'Default', + 'enable_pretty_name' : true}, + 'should_show_fade_options()') + add_body_edit('fade_length', ValueType.NUMBER, {'left_text':'Length:', 'suffix':'s', "min":0}, + 'should_show_fade_options() and !fade_animation.is_empty()') + add_body_line_break("should_show_fade_options()") + add_body_edit('animation_name', ValueType.DYNAMIC_OPTIONS, + {'left_text' : 'Animation:', + 'suggestions_func' : get_animation_suggestions, + 'editor_icon' : ["Animation", "EditorIcons"], + 'placeholder' : 'Default', + 'enable_pretty_name' : true}, + 'should_show_animation_options()') + add_body_edit('animation_length', ValueType.NUMBER, {'left_text':'Length:', 'suffix':'s', "min":0}, + 'should_show_animation_options() and !animation_name.is_empty()') + add_body_edit('animation_wait', ValueType.BOOL, {'left_text':'Await end:'}, + 'should_show_animation_options() and !animation_name.is_empty()') + add_body_edit('animation_repeats', ValueType.NUMBER, {'left_text':'Repeat:', 'mode':1, "min":1}, + 'should_show_animation_options() and !animation_name.is_empty() and action == %s)' %Actions.UPDATE) + add_body_line_break() + add_body_edit('transform_time', ValueType.NUMBER, {'left_text':'Movement duration:', "min":0}, + "should_show_transform_options()") + add_body_edit("transform_trans", ValueType.FIXED_OPTIONS, {'options':trans_options, 'left_text':"Trans:"}, 'should_show_transform_options() and transform_time > 0') + add_body_edit("transform_ease", ValueType.FIXED_OPTIONS, {'options':ease_options, 'left_text':"Ease:"}, 'should_show_transform_options() and transform_time > 0') + + add_body_edit('set_z_index', ValueType.BOOL_BUTTON, {'icon':load("res://addons/dialogic/Modules/Character/update_z_index.svg"), 'tooltip':'Change Z-Index'}, "character != null and action == Actions.UPDATE") + add_body_edit('z_index', ValueType.NUMBER, {'left_text':'Z-index:', 'mode':1}, + 'action != %s and (action != Actions.UPDATE or set_z_index)' %Actions.LEAVE) + add_body_edit('set_mirrored', ValueType.BOOL_BUTTON, {'icon':load("res://addons/dialogic/Modules/Character/update_mirror.svg"), 'tooltip':'Change Mirroring'}, "character != null and action == Actions.UPDATE") + add_body_edit('mirrored', ValueType.BOOL, {'left_text':'Mirrored:'}, + 'action != %s and (action != Actions.UPDATE or set_mirrored)' %Actions.LEAVE) + add_body_edit('extra_data', ValueType.SINGLELINE_TEXT, {'left_text':'Extra Data:'}, 'action != Actions.LEAVE') + + +func should_show_transform_options() -> bool: + return action == Actions.UPDATE and set_transform + + +func should_show_animation_options() -> bool: + return (character and !character.portraits.is_empty()) or character_identifier == '--All--' + + +func should_show_fade_options() -> bool: + return action == Actions.UPDATE and set_portrait and character and not character.portraits.is_empty() + + +func should_show_portrait_selector() -> bool: + return character and len(character.portraits) > 1 and action != Actions.LEAVE + + +func has_no_portraits() -> bool: + return character and character.portraits.is_empty() + + +func get_character_suggestions(search_text:String) -> Dictionary: + return DialogicUtil.get_character_suggestions(search_text, character, false, action == Actions.LEAVE, editor_node) + + +func get_portrait_suggestions(search_text:String) -> Dictionary: + var empty_text := "Don't Change" + if action == Actions.JOIN: + empty_text = "Default portrait" + return DialogicUtil.get_portrait_suggestions(search_text, character, true, empty_text) + + +func get_position_suggestions(search_text:String='') -> Dictionary: + return DialogicUtil.get_portrait_position_suggestions(search_text) + + +func get_animation_suggestions(search_text:String='') -> Dictionary: + var DPAU := DialogicPortraitAnimationUtil + match action: + Actions.JOIN: + return DPAU.get_suggestions(search_text, animation_name, "Default", DPAU.AnimationType.IN) + Actions.LEAVE: + return DPAU.get_suggestions(search_text, animation_name, "Default", DPAU.AnimationType.OUT) + Actions.UPDATE: + return DPAU.get_suggestions(search_text, animation_name, "None", DPAU.AnimationType.ACTION) + return {} + + +func get_fade_suggestions(search_text:String='') -> Dictionary: + return DialogicPortraitAnimationUtil.get_suggestions(search_text, fade_animation, "Default", DialogicPortraitAnimationUtil.AnimationType.CROSSFADE) + + +####################### CODE COMPLETION ######################################## +################################################################################ + +func _get_code_completion(CodeCompletionHelper:Node, TextNode:TextEdit, line:String, _word:String, symbol:String) -> void: + var line_until_caret: String = CodeCompletionHelper.get_line_untill_caret(line) + if symbol == ' ' and line_until_caret.count(" ") == 1: + CodeCompletionHelper.suggest_characters(TextNode, CodeEdit.KIND_MEMBER, self) + if line.begins_with('leave'): + TextNode.add_code_completion_option(CodeEdit.KIND_MEMBER, 'All', '--All-- ', event_color, TextNode.get_theme_icon("GuiEllipsis", "EditorIcons")) + + if symbol == '(': + var completion_character := regex.search(line).get_string('name') + CodeCompletionHelper.suggest_portraits(TextNode, completion_character) + + elif not '[' in line_until_caret and symbol == ' ' and line_until_caret.split(" ", false).size() > 1: + if not line.begins_with("leave"): + if not line_until_caret.split(" ", false)[-1] in get_position_suggestions(): + for position in get_position_suggestions(): + TextNode.add_code_completion_option(CodeEdit.KIND_MEMBER, position, position+' ', TextNode.syntax_highlighter.normal_color) + + # Shortcode Part + if '[' in line_until_caret: + # Suggest Parameters + if symbol == '[' or symbol == ' ' and line_until_caret.count('"')%2 == 0:# and (symbol == "[" or (symbol == " " and line_until_caret.rfind('="') < line_until_caret.rfind('"')-1)): + suggest_parameter("animation", line, TextNode) + + if "animation=" in line: + for param in ["length", "wait"]: + suggest_parameter(param, line, TextNode) + if line.begins_with('update'): + suggest_parameter("repeat", line, TextNode) + if line.begins_with("update"): + for param in ["move_time", "move_trans", "move_ease", "fade"]: + suggest_parameter(param, line, TextNode) + if "fade=" in line_until_caret: + suggest_parameter("fade_length", line, TextNode) + if not line.begins_with('leave'): + for param in ["mirrored", "z_index", "extra_data"]: + suggest_parameter(param, line, TextNode) + + # Suggest Values + else: + var current_param: RegExMatch = CodeCompletionHelper.completion_shortcode_param_getter_regex.search(line) + if not current_param: + return + + match current_param.get_string("param"): + "animation": + var animations := {} + if line.begins_with('join'): + animations = DialogicPortraitAnimationUtil.get_portrait_animations_filtered(DialogicPortraitAnimationUtil.AnimationType.IN) + elif line.begins_with('update'): + animations = DialogicPortraitAnimationUtil.get_portrait_animations_filtered(DialogicPortraitAnimationUtil.AnimationType.ACTION) + elif line.begins_with('leave'): + animations = DialogicPortraitAnimationUtil.get_portrait_animations_filtered(DialogicPortraitAnimationUtil.AnimationType.OUT) + + for script: String in animations: + TextNode.add_code_completion_option(CodeEdit.KIND_VARIABLE, DialogicUtil.pretty_name(script), DialogicUtil.pretty_name(script), TextNode.syntax_highlighter.normal_color, null, '" ') + + "wait", "mirrored": + CodeCompletionHelper.suggest_bool(TextNode, TextNode.syntax_highlighter.normal_color) + "move_trans": + CodeCompletionHelper.suggest_custom_suggestions(list_to_suggestions(trans_options), TextNode, TextNode.syntax_highlighter.normal_color) + "move_ease": + CodeCompletionHelper.suggest_custom_suggestions(list_to_suggestions(ease_options), TextNode, TextNode.syntax_highlighter.normal_color) + + +func suggest_parameter(parameter:String, line:String, TextNode:TextEdit) -> void: + if not parameter + "=" in line: + TextNode.add_code_completion_option(CodeEdit.KIND_MEMBER, parameter, parameter + '="', TextNode.syntax_highlighter.normal_color) + + +func _get_start_code_completion(_CodeCompletionHelper:Node, TextNode:TextEdit) -> void: + TextNode.add_code_completion_option(CodeEdit.KIND_PLAIN_TEXT, 'join', 'join ', event_color, load('res://addons/dialogic/Editor/Images/Dropdown/join.svg')) + TextNode.add_code_completion_option(CodeEdit.KIND_PLAIN_TEXT, 'leave', 'leave ', event_color, load('res://addons/dialogic/Editor/Images/Dropdown/leave.svg')) + TextNode.add_code_completion_option(CodeEdit.KIND_PLAIN_TEXT, 'update', 'update ', event_color, load('res://addons/dialogic/Editor/Images/Dropdown/update.svg')) + + +#################### SYNTAX HIGHLIGHTING ####################################### +################################################################################ + +func _get_syntax_highlighting(Highlighter:SyntaxHighlighter, dict:Dictionary, line:String) -> Dictionary: + var word := line.get_slice(' ', 0) + + dict[line.find(word)] = {"color":event_color} + dict[line.find(word)+len(word)] = {"color":Highlighter.normal_color} + var result := regex.search(line) + if result.get_string('name'): + dict[result.get_start('name')] = {"color":event_color.lerp(Highlighter.normal_color, 0.5)} + dict[result.get_end('name')] = {"color":Highlighter.normal_color} + if result.get_string('portrait'): + dict[result.get_start('portrait')] = {"color":event_color.lerp(Highlighter.normal_color, 0.6)} + dict[result.get_end('portrait')] = {"color":Highlighter.normal_color} + if result.get_string('shortcode'): + dict = Highlighter.color_shortcode_content(dict, line, result.get_start('shortcode'), result.get_end('shortcode'), event_color) + return dict + + +## HELPER +func list_to_suggestions(list:Array) -> Dictionary: + return list.reduce( + func(accum, value): + accum[value.label] = value + accum[value.label]["text_alt"] = [value.label.to_lower()] + return accum, + {}) diff --git a/addons/dialogic/Modules/Character/event_character.gd.uid b/addons/dialogic/Modules/Character/event_character.gd.uid new file mode 100644 index 0000000..cedaeb7 --- /dev/null +++ b/addons/dialogic/Modules/Character/event_character.gd.uid @@ -0,0 +1 @@ +uid://b88y7tdin2uu5 diff --git a/addons/dialogic/Modules/Character/icon.png.import b/addons/dialogic/Modules/Character/icon.png.import new file mode 100644 index 0000000..ec40123 --- /dev/null +++ b/addons/dialogic/Modules/Character/icon.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dn5jx2ucynfio" +path="res://.godot/imported/icon.png-a6ef7c3eeb0fb100c7d0b0c505ea4b6f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Events/Character/icon.png" +dest_files=["res://.godot/imported/icon.png-a6ef7c3eeb0fb100c7d0b0c505ea4b6f.ctex"] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/bptc_ldr=0 +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/dialogic/Modules/Character/icon.svg b/addons/dialogic/Modules/Character/icon.svg new file mode 100644 index 0000000..6638227 --- /dev/null +++ b/addons/dialogic/Modules/Character/icon.svg @@ -0,0 +1,4 @@ + + + + diff --git a/addons/dialogic/Modules/Character/icon.svg.import b/addons/dialogic/Modules/Character/icon.svg.import new file mode 100644 index 0000000..4dd47d3 --- /dev/null +++ b/addons/dialogic/Modules/Character/icon.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://q6lanmf18ii6" +path="res://.godot/imported/icon.svg-4f340f6efbb83004dbd5c761dd1dc448.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Modules/Character/icon.svg" +dest_files=["res://.godot/imported/icon.svg-4f340f6efbb83004dbd5c761dd1dc448.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Modules/Character/icon_position.png b/addons/dialogic/Modules/Character/icon_position.png new file mode 100644 index 0000000000000000000000000000000000000000..7f01934ecb234a9c353efb20bb6005ecbbc71de4 GIT binary patch literal 1017 zcmVk)giH{3g0KN(0_X&3CxA|XGePJCm#07MvoJ=ML~Qrz z_nw}Fk@e4ar_%`_5C{YUfj}S-=oE-Jq%@(lq_o8&drE8mFM|IOn%EOh)Pxt8g&07G zP+y(0C8bzAK2S<2?YMkPX+$X!buvm1gTY_}eT7AStBLxI7p1CxTv2}neT4@9Lri94 zD%QM61zYT+U7$fH+9ZYz-(QILm(VvfQI5a@t&JG^0_*ZWiw>4(?JP{+`v{&8UoL{9 zg;u!|=Nrz8-y5>n4_s#~n)wO#s2$+I?cYhchs9 zXEU(;`nAv?#;lWDyaH$XRCeG6?eKg0!*Z0xJ7@abXw{0ipfY$vt~0_sg0w{si%_cq zm^&p>rwfsfxJo4cZ`QG<0@T+W%4c{L8<^DTHcxo2JyzoP)BiIt>sQ&IH5@-eM(K-(qxJis7ETlAMZ+cvdnK7eU%*pO&gw{vr#35w zu2b>#6R-sH9Ylubx_>4>?LGh;!SW@^9vuTLR|m_!d;*TJ6gX{*?*@y%#LL&x7Il58 zewz^?8U9K=Zdl#ZbdUG_#@MPs|DDct8BFZ znBTz0(A))%L|MM;&1+MtMB^*2$n-u>uvGycH$ssp`*vGpd$r@Vk^oOPLRXQ13U2ED zw6*~pfXKiPBk+4&W-Og;?gE)8KY}N)d_khvK^LhwyiCCn%uj{;CWoTdqQY!Ll&2Pn z#~I{X)+?7U*@nXQC>6SgQ;YwdRJHT&@CyC&H Array: + return [this_folder.path_join('event_character.gd')] + + +func _get_subsystems() -> Array: + return [{'name':'Portraits', 'script':this_folder.path_join('subsystem_portraits.gd')}, {'name':'PortraitContainers', 'script':this_folder.path_join('subsystem_containers.gd')}] + +func _get_settings_pages() -> Array: + return [this_folder.path_join('settings_portraits.tscn')] + +func _get_text_effects() -> Array[Dictionary]: + return [ + {'command':'portrait', 'subsystem':'Portraits', 'method':'text_effect_portrait', 'arg':true}, + {'command':'extra_data', 'subsystem':'Portraits', 'method':'text_effect_extradata', 'arg':true}, + ] + + +func _get_special_resources() -> Dictionary: + return {&'PortraitAnimation': list_animations("DefaultAnimations")} + + +func _get_portrait_scene_presets() -> Array[Dictionary]: + return [ + { + "path": "", + "name": "Default Scene", + "description": "The default scene defined in Settings>Portraits.", + "author":"Dialogic", + "type": "Default", + "icon":"", + "preview_image":[this_folder.path_join("default_portrait_thumbnail.png")], + "documentation":"", + }, + { + "path": "CUSTOM", + "name": "Custom Scene", + "description": "A custom scene. Should extend DialogicPortrait and be in @tool mode.", + "author":"Dialogic", + "type": "Custom", + "icon":"", + "preview_image":[this_folder.path_join("custom_portrait_thumbnail.png")], + "documentation":"https://docs.dialogic.pro/custom-portraits.html", + }, + { + "path": this_folder.path_join("default_portrait.tscn"), + "name": "Simple Image Portrait", + "description": "Can display images as portraits. Does nothing else.", + "author":"Dialogic", + "type": "General", + "icon":"", + "preview_image":[this_folder.path_join("simple_image_portrait_thumbnail.png")], + "documentation":"", + } + ] diff --git a/addons/dialogic/Modules/Character/index.gd.uid b/addons/dialogic/Modules/Character/index.gd.uid new file mode 100644 index 0000000..0f8ab23 --- /dev/null +++ b/addons/dialogic/Modules/Character/index.gd.uid @@ -0,0 +1 @@ +uid://4tu24b2ex257 diff --git a/addons/dialogic/Modules/Character/node_portrait_container.gd b/addons/dialogic/Modules/Character/node_portrait_container.gd new file mode 100644 index 0000000..20d7c5d --- /dev/null +++ b/addons/dialogic/Modules/Character/node_portrait_container.gd @@ -0,0 +1,258 @@ +@tool +class_name DialogicNode_PortraitContainer +extends Control + +## Node that defines a position for dialogic portraits and how to display portraits at that position. + +enum PositionModes { + POSITION, ## This container can be joined/moved to with the Character Event + SPEAKER, ## This container is joined/left automatically based on the speaker. + } + +@export var mode := PositionModes.POSITION + +@export_subgroup('Mode: Position') +## The position this node corresponds to. +@export var container_ids: PackedStringArray = ["1"] + + +@export_subgroup('Mode: Speaker') +## Can be used to use a different portrait. +## E.g. "Faces/" would mean instead of "happy" it will use portrait "Faces/happy" +@export var portrait_prefix := '' + +@export_subgroup('Portrait Placement') +enum SizeModes { + KEEP, ## The height and width of the container have no effect, only the origin. + FIT_STRETCH, ## The portrait will be fitted into the container, ignoring it's aspect ratio and the character/portrait scale. + FIT_IGNORE_SCALE, ## The portrait will be fitted into the container, ignoring the character/portrait scale, but preserving the aspect ratio. + FIT_SCALE_HEIGHT ## Recommended. The portrait will be scaled to fit the container height. A character/portrait scale of 100% means 100% container height. Aspect ratio will be preserved. + } +## Defines how to affect the scale of the portrait +@export var size_mode: SizeModes = SizeModes.FIT_SCALE_HEIGHT : + set(mode): + size_mode = mode + _update_debug_portrait_transform() + +## If true, portraits will be mirrored in this position. +@export var mirrored := false : + set(mirror): + mirrored = mirror + _update_debug_portrait_scene() + + +@export_group('Origin', 'origin') +enum OriginAnchors {TOP_LEFT, TOP_CENTER, TOP_RIGHT, LEFT_MIDDLE, CENTER, RIGHT_MIDDLE, BOTTOM_LEFT, BOTTOM_CENTER, BOTTOM_RIGHT} +## The portrait will be placed relative to this point in the container. +@export var origin_anchor: OriginAnchors = OriginAnchors.BOTTOM_CENTER : + set(anchor): + origin_anchor = anchor + _update_debug_origin() + +## An offset to apply to the origin. Rarely useful. +@export var origin_offset := Vector2() : + set(offset): + origin_offset = offset + _update_debug_origin() + +enum PivotModes {AT_ORIGIN, PERCENTAGE, PIXELS} +## Usually you want to rotate or scale around the portrait origin. +## For the moments where that is not the case, set the mode to PERCENTAGE or PIXELS and use [member pivot_value]. +@export var pivot_mode: PivotModes = PivotModes.AT_ORIGIN +## Only has an effect when [member pivot_mode] is not AT_ORIGIN. Meaning depends on whether [member pivot_mode] is PERCENTAGE or PIXELS. +@export var pivot_value := Vector2() + +@export_group('Debug', 'debug') +## A character that will be displayed in the editor, useful for getting the right size. +@export var debug_character: DialogicCharacter = null: + set(character): + debug_character = character + _update_debug_portrait_scene() +@export var debug_character_portrait := "": + set(portrait): + debug_character_portrait = portrait + _update_debug_portrait_scene() + +var debug_character_holder_node: Node2D = null +var debug_character_scene_node: Node = null +var debug_origin: Sprite2D = null +var default_portrait_scene: String = DialogicUtil.get_module_path('Character').path_join("default_portrait.tscn") +# Used if no debug character is specified +var default_debug_character := load(DialogicUtil.get_module_path('Character').path_join("preview_character.tres")) + +var ignore_resize := false + + +func _ready() -> void: + match mode: + PositionModes.POSITION: + add_to_group('dialogic_portrait_con_position') + PositionModes.SPEAKER: + add_to_group('dialogic_portrait_con_speaker') + + if Engine.is_editor_hint(): + resized.connect(_update_debug_origin) + + if !ProjectSettings.get_setting('dialogic/portraits/default_portrait', '').is_empty(): + default_portrait_scene = ProjectSettings.get_setting('dialogic/portraits/default_portrait', '') + + debug_origin = Sprite2D.new() + add_child(debug_origin) + debug_origin.texture = load("res://addons/dialogic/Editor/Images/Dropdown/default.svg") + + _update_debug_origin() + _update_debug_portrait_scene() + else: + resized.connect(update_portrait_transforms) + + +################################################################################ +## MAIN METHODS +################################################################################ + +func update_portrait_transforms() -> void: + if ignore_resize: + return + + match pivot_mode: + PivotModes.AT_ORIGIN: + pivot_offset = _get_origin_position() + PivotModes.PERCENTAGE: + pivot_offset = size*pivot_value + PivotModes.PIXELS: + pivot_offset = pivot_value + + for child in get_children(): + DialogicUtil.autoload().Portraits._update_character_transform(child) + + +## Returns a Rect2 with the position as the position and the scale as the size. +func get_local_portrait_transform(portrait_rect:Rect2, character_scale:=1.0) -> Rect2: + var transform := Rect2() + transform.position = _get_origin_position() + + # Mode that ignores the containers size + if size_mode == SizeModes.KEEP: + transform.size = Vector2(1,1) * character_scale + + # Mode that makes sure neither height nor width go out of container + elif size_mode == SizeModes.FIT_IGNORE_SCALE: + if size.x/size.y < portrait_rect.size.x/portrait_rect.size.y: + transform.size = Vector2(1,1) * size.x/portrait_rect.size.x + else: + transform.size = Vector2(1,1) * size.y/portrait_rect.size.y + + # Mode that stretches the portrait to fill the whole container + elif size_mode == SizeModes.FIT_STRETCH: + transform.size = size/portrait_rect.size + + # Mode that size the character so 100% size fills the height + elif size_mode == SizeModes.FIT_SCALE_HEIGHT: + transform.size = Vector2(1,1) * size.y / portrait_rect.size.y*character_scale + + return transform + + +## Returns the current origin position +func _get_origin_position(rect_size = null) -> Vector2: + if rect_size == null: + rect_size = size + return rect_size * Vector2(origin_anchor%3 / 2.0, floor(origin_anchor/3.0) / 2.0) + origin_offset + + +func is_container(id:Variant) -> bool: + return str(id) in container_ids + +#region DEBUG METHODS +################################################################################ +### USE THIS TO DEBUG THE POSITIONS +#func _draw(): + #draw_rect(Rect2(Vector2(), size), Color(1, 0.3098039329052, 1), false, 2) + #draw_string(get_theme_default_font(),get_theme_default_font().get_string_size(container_ids[0], HORIZONTAL_ALIGNMENT_LEFT, 1, get_theme_default_font_size()) , container_ids[0], HORIZONTAL_ALIGNMENT_CENTER) +# +#func _process(delta:float) -> void: + #queue_redraw() + + +## Loads the debug_character with the debug_character_portrait +## Creates a holder node and applies mirror +func _update_debug_portrait_scene() -> void: + if !Engine.is_editor_hint(): + return + if is_instance_valid(debug_character_holder_node): + for child in get_children(): + if child != debug_origin: + child.free() + + # Get character + var character := _get_debug_character() + if not character is DialogicCharacter or character.portraits.is_empty(): + return + + # Determine portrait + var debug_portrait := debug_character_portrait + if debug_portrait.is_empty(): + debug_portrait = character.default_portrait + if mode == PositionModes.SPEAKER and !portrait_prefix.is_empty(): + if portrait_prefix+debug_portrait in character.portraits: + debug_portrait = portrait_prefix+debug_portrait + if not debug_portrait in character.portraits: + debug_portrait = character.default_portrait + + var portrait_info: Dictionary = character.get_portrait_info(debug_portrait) + + # Determine scene + var portrait_scene_path: String = portrait_info.get('scene', default_portrait_scene) + if portrait_scene_path.is_empty(): + portrait_scene_path = default_portrait_scene + + debug_character_scene_node = load(portrait_scene_path).instantiate() + + if !is_instance_valid(debug_character_scene_node): + return + + # Load portrait + DialogicUtil.apply_scene_export_overrides(debug_character_scene_node, character.portraits[debug_portrait].get('export_overrides', {})) + debug_character_scene_node._update_portrait(character, debug_portrait) + + # Add character node + if !is_instance_valid(debug_character_holder_node): + debug_character_holder_node = Node2D.new() + add_child(debug_character_holder_node) + + # Add portrait node + debug_character_holder_node.add_child(debug_character_scene_node) + move_child(debug_character_holder_node, 0) + debug_character_scene_node._set_mirror(character.mirror != mirrored != portrait_info.get('mirror', false)) + + _update_debug_portrait_transform() + + +## Set's the size and position of the holder and scene node +## according to the size_mode +func _update_debug_portrait_transform() -> void: + if !Engine.is_editor_hint() or !is_instance_valid(debug_character_scene_node) or !is_instance_valid(debug_origin): + return + var character := _get_debug_character() + var portrait_info := character.get_portrait_info(debug_character_portrait) + var transform := get_local_portrait_transform(debug_character_scene_node._get_covered_rect(), character.scale*portrait_info.get('scale', 1)) + debug_character_holder_node.position = transform.position + debug_character_scene_node.position = portrait_info.get('offset', Vector2())+character.offset + + debug_character_holder_node.scale = transform.size + + +## Updates the debug origins position. Also calls _update_debug_portrait_transform() +func _update_debug_origin() -> void: + if !Engine.is_editor_hint() or !is_instance_valid(debug_origin): + return + debug_origin.position = _get_origin_position() + _update_debug_portrait_transform() + + + +## Returns the debug character or the default debug character +func _get_debug_character() -> DialogicCharacter: + return debug_character if debug_character != null else default_debug_character + +#endregion diff --git a/addons/dialogic/Modules/Character/node_portrait_container.gd.uid b/addons/dialogic/Modules/Character/node_portrait_container.gd.uid new file mode 100644 index 0000000..5e01837 --- /dev/null +++ b/addons/dialogic/Modules/Character/node_portrait_container.gd.uid @@ -0,0 +1 @@ +uid://d0ptqnbudhkyj diff --git a/addons/dialogic/Modules/Character/portrait_position.svg b/addons/dialogic/Modules/Character/portrait_position.svg new file mode 100644 index 0000000..b022121 --- /dev/null +++ b/addons/dialogic/Modules/Character/portrait_position.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/addons/dialogic/Modules/Character/portrait_position.svg.import b/addons/dialogic/Modules/Character/portrait_position.svg.import new file mode 100644 index 0000000..aada16b --- /dev/null +++ b/addons/dialogic/Modules/Character/portrait_position.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bn3nq7gw67kye" +path="res://.godot/imported/portrait_position.svg-f025767e40032b9ebdeab1f9e882467a.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Modules/Character/portrait_position.svg" +dest_files=["res://.godot/imported/portrait_position.svg-f025767e40032b9ebdeab1f9e882467a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Modules/Character/preview_character.tres b/addons/dialogic/Modules/Character/preview_character.tres new file mode 100644 index 0000000..5ec5b32 --- /dev/null +++ b/addons/dialogic/Modules/Character/preview_character.tres @@ -0,0 +1,32 @@ +[gd_resource type="Resource" script_class="DialogicCharacter" load_steps=2 format=3 uid="uid://dykf1j17ct5mo"] + +[ext_resource type="Script" uid="uid://don4ds5f38byo" path="res://addons/dialogic/Resources/character.gd" id="1_qsljv"] + +[resource] +script = ExtResource("1_qsljv") +display_name = "Preview" +nicknames = [""] +color = Color(1, 1, 1, 1) +description = "" +scale = 1.0 +offset = Vector2(0, 0) +mirror = false +default_portrait = "character" +portraits = { +"character": { +"image": "res://addons/dialogic/Editor/Images/preview_character.png", +"offset": Vector2(0, 0), +"scene": "res://addons/dialogic/Modules/Character/default_portrait.tscn" +}, +"speaker": { +"image": "res://addons/dialogic/Editor/Images/preview_character_speaker.png", +"offset": Vector2(0, 0), +"scene": "res://addons/dialogic/Modules/Character/default_portrait.tscn" +} +} +custom_info = { +"sound_mood_default": "", +"sound_moods": {}, +"style": "" +} +metadata/timeline_not_saved = true diff --git a/addons/dialogic/Modules/Character/settings_portraits.gd b/addons/dialogic/Modules/Character/settings_portraits.gd new file mode 100644 index 0000000..51b45ac --- /dev/null +++ b/addons/dialogic/Modules/Character/settings_portraits.gd @@ -0,0 +1,92 @@ +@tool +extends DialogicSettingsPage + + +const POSITION_SUGGESTION_KEY := 'dialogic/portraits/position_suggestion_names' + +const DEFAULT_PORTRAIT_SCENE_KEY := 'dialogic/portraits/default_portrait' + +const ANIMATION_JOIN_DEFAULT_KEY := 'dialogic/animations/join_default' +const ANIMATION_JOIN_DEFAULT_LENGTH_KEY := 'dialogic/animations/join_default_length' +const ANIMATION_JOIN_DEFAULT_WAIT_KEY := 'dialogic/animations/join_default_wait' +const ANIMATION_LEAVE_DEFAULT_KEY := 'dialogic/animations/leave_default' +const ANIMATION_LEAVE_DEFAULT_LENGTH_KEY := 'dialogic/animations/leave_default_length' +const ANIMATION_LEAVE_DEFAULT_WAIT_KEY := 'dialogic/animations/leave_default_wait' +const ANIMATION_CROSSFADE_DEFAULT_KEY := 'dialogic/animations/cross_fade_default' +const ANIMATION_CROSSFADE_DEFAULT_LENGTH_KEY:= 'dialogic/animations/cross_fade_default_length' + + +func _ready(): + %JoinDefault.suggestions_func = get_join_animation_suggestions + %JoinDefault.mode = 1 + %LeaveDefault.suggestions_func = get_leave_animation_suggestions + %LeaveDefault.mode = 1 + %CrossFadeDefault.suggestions_func = get_crossfade_animation_suggestions + %CrossFadeDefault.mode = 1 + + %PositionSuggestions.text_submitted.connect(save_setting.bind(POSITION_SUGGESTION_KEY)) + %CustomPortraitScene.value_changed.connect(save_setting_with_name.bind(DEFAULT_PORTRAIT_SCENE_KEY)) + + %JoinDefault.value_changed.connect( + save_setting_with_name.bind(ANIMATION_JOIN_DEFAULT_KEY)) + %JoinDefaultLength.value_changed.connect( + save_setting.bind(ANIMATION_JOIN_DEFAULT_LENGTH_KEY)) + %JoinDefaultWait.toggled.connect( + save_setting.bind(ANIMATION_JOIN_DEFAULT_WAIT_KEY)) + + %LeaveDefault.value_changed.connect( + save_setting_with_name.bind(ANIMATION_LEAVE_DEFAULT_KEY)) + %LeaveDefaultLength.value_changed.connect( + save_setting.bind(ANIMATION_LEAVE_DEFAULT_LENGTH_KEY)) + %LeaveDefaultWait.toggled.connect( + save_setting.bind(ANIMATION_LEAVE_DEFAULT_WAIT_KEY)) + + %CrossFadeDefault.value_changed.connect( + save_setting_with_name.bind(ANIMATION_CROSSFADE_DEFAULT_KEY)) + %CrossFadeDefaultLength.value_changed.connect( + save_setting.bind(ANIMATION_CROSSFADE_DEFAULT_LENGTH_KEY)) + + +func _refresh(): + %PositionSuggestions.text = ProjectSettings.get_setting(POSITION_SUGGESTION_KEY, 'leftmost, left, center, right, rightmost') + + %CustomPortraitScene.resource_icon = get_theme_icon(&"PackedScene", &"EditorIcons") + %CustomPortraitScene.set_value(ProjectSettings.get_setting(DEFAULT_PORTRAIT_SCENE_KEY, '')) + + # JOIN + %JoinDefault.resource_icon = get_theme_icon(&"Animation", &"EditorIcons") + %JoinDefault.set_value(ProjectSettings.get_setting(ANIMATION_JOIN_DEFAULT_KEY, "Fade In Up")) + %JoinDefaultLength.set_value(ProjectSettings.get_setting(ANIMATION_JOIN_DEFAULT_LENGTH_KEY, 0.5)) + %JoinDefaultWait.button_pressed = ProjectSettings.get_setting(ANIMATION_JOIN_DEFAULT_WAIT_KEY, true) + + # LEAVE + %LeaveDefault.resource_icon = get_theme_icon(&"Animation", &"EditorIcons") + %LeaveDefault.set_value(ProjectSettings.get_setting(ANIMATION_LEAVE_DEFAULT_KEY, "Fade Out Down")) + %LeaveDefaultLength.set_value(ProjectSettings.get_setting(ANIMATION_LEAVE_DEFAULT_LENGTH_KEY, 0.5)) + %LeaveDefaultWait.button_pressed = ProjectSettings.get_setting(ANIMATION_LEAVE_DEFAULT_WAIT_KEY, true) + + # CROSS FADE + %CrossFadeDefault.resource_icon = get_theme_icon(&"Animation", &"EditorIcons") + %CrossFadeDefault.set_value(ProjectSettings.get_setting(ANIMATION_CROSSFADE_DEFAULT_KEY, "Fade Cross")) + %CrossFadeDefaultLength.set_value(ProjectSettings.get_setting(ANIMATION_CROSSFADE_DEFAULT_LENGTH_KEY, 0.5)) + + +func save_setting_with_name(property_name:String, value:Variant, settings_key:String) -> void: + save_setting(value, settings_key) + + +func save_setting(value:Variant, settings_key:String) -> void: + ProjectSettings.set_setting(settings_key, value) + ProjectSettings.save() + + +func get_join_animation_suggestions(search_text:String) -> Dictionary: + return DialogicPortraitAnimationUtil.get_suggestions(search_text, %JoinDefault.current_value, "", DialogicPortraitAnimationUtil.AnimationType.IN) + + +func get_leave_animation_suggestions(search_text:String) -> Dictionary: + return DialogicPortraitAnimationUtil.get_suggestions(search_text, %LeaveDefault.current_value, "", DialogicPortraitAnimationUtil.AnimationType.OUT) + + +func get_crossfade_animation_suggestions(search_text:String) -> Dictionary: + return DialogicPortraitAnimationUtil.get_suggestions(search_text, %CrossFadeDefault.current_value, "", DialogicPortraitAnimationUtil.AnimationType.CROSSFADE) diff --git a/addons/dialogic/Modules/Character/settings_portraits.gd.uid b/addons/dialogic/Modules/Character/settings_portraits.gd.uid new file mode 100644 index 0000000..4feebae --- /dev/null +++ b/addons/dialogic/Modules/Character/settings_portraits.gd.uid @@ -0,0 +1 @@ +uid://c3hdycwp0hrdm diff --git a/addons/dialogic/Modules/Character/settings_portraits.tscn b/addons/dialogic/Modules/Character/settings_portraits.tscn new file mode 100644 index 0000000..9969701 --- /dev/null +++ b/addons/dialogic/Modules/Character/settings_portraits.tscn @@ -0,0 +1,157 @@ +[gd_scene load_steps=5 format=3 uid="uid://cp463rpri5j8a"] + +[ext_resource type="Script" uid="uid://c3hdycwp0hrdm" path="res://addons/dialogic/Modules/Character/settings_portraits.gd" id="2"] +[ext_resource type="PackedScene" uid="uid://dbpkta2tjsqim" path="res://addons/dialogic/Editor/Common/hint_tooltip_icon.tscn" id="2_dce78"] +[ext_resource type="PackedScene" uid="uid://dpwhshre1n4t6" path="res://addons/dialogic/Editor/Events/Fields/field_options_dynamic.tscn" id="3"] +[ext_resource type="PackedScene" uid="uid://7mvxuaulctcq" path="res://addons/dialogic/Editor/Events/Fields/field_file.tscn" id="3_m06d8"] + +[node name="Portraits" type="VBoxContainer"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +script = ExtResource("2") + +[node name="PositionsTitle" type="HBoxContainer" parent="."] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 0.5 + +[node name="Title2" type="Label" parent="PositionsTitle"] +layout_mode = 2 +theme_type_variation = &"DialogicSettingsSection" +text = "Position Suggestions" + +[node name="HintTooltip" parent="PositionsTitle" instance=ExtResource("2_dce78")] +layout_mode = 2 +tooltip_text = "You can change the position names that will be suggested in the timeline editor here." +texture = null +hint_text = "You can change the position names that will be suggested in the timeline editor here." + +[node name="PositionSuggestions" type="LineEdit" parent="."] +unique_name_in_owner = true +layout_mode = 2 + +[node name="DefaultSceneTitle" type="HBoxContainer" parent="."] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 0.5 + +[node name="Title2" type="Label" parent="DefaultSceneTitle"] +layout_mode = 2 +theme_type_variation = &"DialogicSettingsSection" +text = "Default Portrait Scene" + +[node name="HintTooltip" parent="DefaultSceneTitle" instance=ExtResource("2_dce78")] +layout_mode = 2 +tooltip_text = "If this is set, this scene will be what is used by default for any portrait that has no scene specified" +texture = null +hint_text = "If this is set, this scene will be what is used by default for any portrait that has no scene specified" + +[node name="DefaultScene" type="HBoxContainer" parent="."] +layout_mode = 2 + +[node name="Label" type="Label" parent="DefaultScene"] +layout_mode = 2 +text = "Scene" + +[node name="CustomPortraitScene" parent="DefaultScene" instance=ExtResource("3_m06d8")] +unique_name_in_owner = true +layout_mode = 2 +file_filter = "*.tscn, *.scn; PortraitScene" +placeholder = "Default Scene" + +[node name="Animations2" type="HBoxContainer" parent="."] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 0.5 + +[node name="Title2" type="Label" parent="Animations2"] +layout_mode = 2 +theme_type_variation = &"DialogicSettingsSection" +text = "Default Animations" + +[node name="HintTooltip" parent="Animations2" instance=ExtResource("2_dce78")] +layout_mode = 2 +tooltip_text = "These settings are used for Leave and Join events if no animation is selected. + +The Cross-Fade will play if the portrait of a character changes and +no animation is set." +texture = null +hint_text = "These settings are used for Leave and Join events if no animation is selected. + +The Cross-Fade will play if the portrait of a character changes and +no animation is set." + +[node name="GridContainer" type="GridContainer" parent="."] +layout_mode = 2 +columns = 2 + +[node name="DefaultJoinLabel" type="Label" parent="GridContainer"] +layout_mode = 2 +text = "Join" + +[node name="DefaultIn" type="HBoxContainer" parent="GridContainer"] +layout_mode = 2 + +[node name="JoinDefault" parent="GridContainer/DefaultIn" instance=ExtResource("3")] +unique_name_in_owner = true +layout_mode = 2 +mode = 1 + +[node name="JoinDefaultLength" type="SpinBox" parent="GridContainer/DefaultIn"] +unique_name_in_owner = true +layout_mode = 2 +step = 0.1 + +[node name="JoinDefaultWait" type="CheckButton" parent="GridContainer/DefaultIn"] +unique_name_in_owner = true +layout_mode = 2 +text = "Wait:" + +[node name="DefaultOutLabel" type="Label" parent="GridContainer"] +layout_mode = 2 +text = "Leave" + +[node name="DefaultOut" type="HBoxContainer" parent="GridContainer"] +layout_mode = 2 + +[node name="LeaveDefault" parent="GridContainer/DefaultOut" instance=ExtResource("3")] +unique_name_in_owner = true +layout_mode = 2 +mode = 1 + +[node name="LeaveDefaultLength" type="SpinBox" parent="GridContainer/DefaultOut"] +unique_name_in_owner = true +layout_mode = 2 +step = 0.1 + +[node name="LeaveDefaultWait" type="CheckButton" parent="GridContainer/DefaultOut"] +unique_name_in_owner = true +layout_mode = 2 +text = "Wait:" + +[node name="CrossFadeLabel" type="Label" parent="GridContainer"] +layout_mode = 2 +text = "Cross-Fade" + +[node name="DefaultCrossFade" type="HBoxContainer" parent="GridContainer"] +layout_mode = 2 + +[node name="CrossFadeDefault" parent="GridContainer/DefaultCrossFade" instance=ExtResource("3")] +unique_name_in_owner = true +layout_mode = 2 +mode = 1 + +[node name="CrossFadeDefaultLength" type="SpinBox" parent="GridContainer/DefaultCrossFade"] +unique_name_in_owner = true +layout_mode = 2 +step = 0.1 + +[connection signal="value_changed" from="GridContainer/DefaultIn/JoinDefault" to="." method="_on_JoinDefault_value_changed"] +[connection signal="value_changed" from="GridContainer/DefaultIn/JoinDefaultLength" to="." method="_on_JoinDefaultLength_value_changed"] +[connection signal="toggled" from="GridContainer/DefaultIn/JoinDefaultWait" to="." method="_on_JoinDefaultWait_toggled"] +[connection signal="value_changed" from="GridContainer/DefaultOut/LeaveDefault" to="." method="_on_LeaveDefault_value_changed"] +[connection signal="value_changed" from="GridContainer/DefaultOut/LeaveDefaultLength" to="." method="_on_LeaveDefaultLength_value_changed"] +[connection signal="toggled" from="GridContainer/DefaultOut/LeaveDefaultWait" to="." method="_on_LeaveDefaultWait_toggled"] +[connection signal="value_changed" from="GridContainer/DefaultCrossFade/CrossFadeDefault" to="." method="_on_LeaveDefault_value_changed"] +[connection signal="value_changed" from="GridContainer/DefaultCrossFade/CrossFadeDefaultLength" to="." method="_on_LeaveDefaultLength_value_changed"] diff --git a/addons/dialogic/Modules/Character/simple_image_portrait_thumbnail.png b/addons/dialogic/Modules/Character/simple_image_portrait_thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..656215f706a361304b8ab69fe6b2aa6f22636054 GIT binary patch literal 3462 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 Vtf?`)4(?D8J1Zy4T64_xe*kv1S7HDF literal 0 HcmV?d00001 diff --git a/addons/dialogic/Modules/Character/simple_image_portrait_thumbnail.png.import b/addons/dialogic/Modules/Character/simple_image_portrait_thumbnail.png.import new file mode 100644 index 0000000..d56dac5 --- /dev/null +++ b/addons/dialogic/Modules/Character/simple_image_portrait_thumbnail.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://qihj11n7kx3m" +path="res://.godot/imported/simple_image_portrait_thumbnail.png-3d6c6de8187fd7911017e2ef9d3c40a4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Modules/Character/simple_image_portrait_thumbnail.png" +dest_files=["res://.godot/imported/simple_image_portrait_thumbnail.png-3d6c6de8187fd7911017e2ef9d3c40a4.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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/dialogic/Modules/Character/subsystem_containers.gd b/addons/dialogic/Modules/Character/subsystem_containers.gd new file mode 100644 index 0000000..239e423 --- /dev/null +++ b/addons/dialogic/Modules/Character/subsystem_containers.gd @@ -0,0 +1,285 @@ +extends DialogicSubsystem + +## Subsystem that manages portrait positions. + +signal position_changed(info: Dictionary) + + +var transform_regex := r"(?position|pos|size|siz|rotation|rot)\W*=(?((?!(pos|siz|rot)).)*)" + +#region STATE +#################################################################################################### + + +#endregion + + +#region MAIN METHODS +#################################################################################################### + +func get_container(position_id: String) -> DialogicNode_PortraitContainer: + for portrait_position:DialogicNode_PortraitContainer in get_tree().get_nodes_in_group(&'dialogic_portrait_con_position'): + if portrait_position.is_visible_in_tree() and portrait_position.is_container(position_id): + return portrait_position + return null + + +func get_containers(position_id: String) -> Array[DialogicNode_PortraitContainer]: + return get_tree().get_nodes_in_group(&'dialogic_portrait_con_position').filter( + func(node:DialogicNode_PortraitContainer): + return node.is_visible_in_tree() and node.is_container(position_id)) + + +func get_container_container() -> CanvasItem: + var any_portrait_container := get_tree().get_first_node_in_group(&'dialogic_portrait_con_position') + if any_portrait_container: + return any_portrait_container.get_parent() + return null + + +## Creates a new portrait container node. +## It will copy it's size and most settings from the first p_container in the tree. +## It will be added as a sibling of the first p_container in the tree. +func add_container(position_id: String) -> DialogicNode_PortraitContainer: + var example_position := get_tree().get_first_node_in_group(&'dialogic_portrait_con_position') + if example_position: + var new_position := DialogicNode_PortraitContainer.new() + example_position.get_parent().add_child(new_position) + new_position.name = "Portrait_"+position_id.validate_node_name() + copy_container_setup(example_position, new_position) + new_position.container_ids = [position_id] + position_changed.emit({&'change':'added', &'container_node':new_position, &'position_id':position_id}) + return new_position + return null + + +## Moves the [container] to the [destionation] (using [tween] and [time]). +## The destination can be a position_id (e.g. "center") or translation, roataion and scale. +## When moving to a preset container, then some more will be "copied" (e.g. anchors, etc.) +func move_container(container:DialogicNode_PortraitContainer, destination:String, tween:Tween = null, time:float=1.0) -> void: + var target_position: Vector2 = container.position + container._get_origin_position() + var target_rotation: float = container.rotation + var target_size: Vector2 = container.size + + var destination_container := get_container(destination) + if destination_container: + container.set_meta("target_container", destination_container) + target_position = destination_container.position + destination_container._get_origin_position() + target_rotation = destination_container.rotation_degrees + target_size = destination_container.size + else: + var regex := RegEx.create_from_string(transform_regex) + for found in regex.search_all(destination): + match found.get_string('part'): + 'pos', 'position': + target_position = str_to_vector(found.get_string("value"), target_position) + 'rot', 'rotation': + target_rotation = float(found.get_string("value")) + 'siz', 'size': + target_size = str_to_vector(found.get_string("value"), target_size) + + translate_container(container, target_position, false, tween, time) + rotate_container(container, target_rotation, false, tween, time) + resize_container(container, target_size, false, tween, time) + + if destination_container: + if time: + tween.finished.connect(func(): + if container.has_meta("target_container"): + if container.get_meta("target_container") == destination_container: + copy_container_setup(destination_container, container) + ) + else: + copy_container_setup(destination_container, container) + + +func copy_container_setup(from:DialogicNode_PortraitContainer, to:DialogicNode_PortraitContainer) -> void: + to.ignore_resize = true + to.layout_mode = from.layout_mode + to.anchors_preset = from.anchors_preset + to.anchor_bottom = from.anchor_bottom + to.anchor_left = from.anchor_left + to.anchor_right = from.anchor_right + to.anchor_top = from.anchor_top + to.offset_bottom = from.offset_bottom + to.offset_top = from.offset_top + to.offset_right = from.offset_right + to.offset_left = from.offset_left + to.size_mode = from.size_mode + to.origin_anchor = from.origin_anchor + to.ignore_resize = false + to.update_portrait_transforms() + + +## Translates the given container. +## The given translation should be the target position of the ORIGIN point, not the container! +func translate_container(container:DialogicNode_PortraitContainer, translation:Variant, relative := false, tween:Tween=null, time:float=1.0) -> void: + if !container.has_meta(&'default_translation'): + container.set_meta(&'default_translation', container.position + container._get_origin_position()) + + var final_translation: Vector2 + if typeof(translation) == TYPE_STRING: + final_translation = str_to_vector(translation, container.position+container._get_origin_position()) + elif typeof(translation) == TYPE_VECTOR2: + final_translation = translation + + if relative: + final_translation += container.position + else: + final_translation -= container._get_origin_position() + + if tween: + tween.tween_method(DialogicUtil.multitween.bind(container, "position", "base"), container.position, final_translation, time) + if not tween.finished.is_connected(save_position_container): + tween.finished.connect(save_position_container.bind(container)) + else: + container.position = final_translation + save_position_container(container) + position_changed.emit({&'change':'moved', &'container_node':container}) + + +func rotate_container(container:DialogicNode_PortraitContainer, rotation:float, relative := false, tween:Tween=null, time:float=1.0) -> void: + if !container.has_meta(&'default_rotation'): + container.set_meta(&'default_rotation', container.rotation_degrees) + + var final_rotation := rotation + + if relative: + final_rotation += container.rotation_degrees + + container.pivot_offset = container._get_origin_position() + + if tween: + tween.tween_property(container, 'rotation_degrees', final_rotation, time) + if not tween.finished.is_connected(save_position_container): + tween.finished.connect(save_position_container.bind(container)) + else: + container.rotation_degrees = final_rotation + save_position_container(container) + + position_changed.emit({&'change':'rotated', &'container_node':container}) + + +func resize_container(container: DialogicNode_PortraitContainer, rect_size: Variant, relative := false, tween:Tween=null, time:float=1.0) -> void: + if !container.has_meta(&'default_size'): + container.set_meta(&'default_size', container.size) + + var final_rect_resize: Vector2 + if typeof(rect_size) == TYPE_STRING: + final_rect_resize = str_to_vector(rect_size, container.size) + elif typeof(rect_size) == TYPE_VECTOR2: + final_rect_resize = rect_size + + if relative: + final_rect_resize += container.rect_size + + var relative_position_change := container._get_origin_position()-container._get_origin_position(final_rect_resize) + + if tween: + tween.tween_method(DialogicUtil.multitween.bind(container, "position", "resize_move"), Vector2(), relative_position_change, time) + tween.tween_property(container, 'size', final_rect_resize, time) + if not tween.finished.is_connected(save_position_container): + tween.finished.connect(save_position_container.bind(container)) + else: + container.position = container.position + relative_position_change + #container.size = final_rect_resize + container.set_deferred("size", final_rect_resize) + save_position_container(container) + + position_changed.emit({&'change':'resized', &'container_node':container}) + + +func save_position_container(container: DialogicNode_PortraitContainer) -> void: + if not dialogic.current_state_info.has('portrait_containers'): + dialogic.current_state_info['portrait_containers'] = {} + + var info := { + "container_ids" : container.container_ids, + "position" : container.position, + "rotation" : container.rotation_degrees, + "size" : container.size, + "pivot_mode" : container.pivot_mode, + "pivot_value" : container.pivot_value, + "origin_anchor" : container.origin_anchor, + "anchor_left" : container.anchor_left, + "anchor_right" : container.anchor_right, + "anchor_top" : container.anchor_top, + "anchor_bottom" : container.anchor_bottom, + "offset_left" : container.offset_left, + "offset_right" : container.offset_right, + "offset_top" : container.offset_top, + "offset_bottom" : container.offset_bottom, + } + + dialogic.current_state_info.portrait_containers[container.container_ids[0]] = info + + +func load_position_container(position_id: String) -> DialogicNode_PortraitContainer: + # First check whether the container already exists: + var container := get_container(position_id) + if container: + return container + + if not dialogic.current_state_info.has('portrait_containers') or not dialogic.current_state_info.portrait_containers.has(position_id): + return null + + var info: Dictionary = dialogic.current_state_info.portrait_containers[position_id] + container = add_container(position_id) + + if not container: + return null + + container.container_ids = info.container_ids + container.position = info.position + container.rotation = info.rotation + container.size = info.size + container.pivot_mode = info.pivot_mode + container.pivot_value = info.pivot_value + container.origin_anchor = info.origin_anchor + container.anchor_left = info.anchor_left + container.anchor_right = info.anchor_right + container.anchor_top = info.anchor_top + container.anchor_bottom = info.anchor_bottom + container.offset_left = info.offset_left + container.offset_right = info.offset_right + container.offset_top = info.offset_top + container.offset_bottom = info.offset_bottom + + return container + + +func str_to_vector(input: String, base_vector:=Vector2()) -> Vector2: + var vector_regex := RegEx.create_from_string(r"(?x|y)\s*(?(-|\+)?(\d|\.|)*)(\s*(?%|px))?") + var vec := base_vector + for i in vector_regex.search_all(input): + var value := float(i.get_string(&'number')) + match i.get_string(&'type'): + 'px': + pass # Keep values as they are + '%', _: + match i.get_string(&'part'): + 'x': value *= get_viewport().get_visible_rect().size.x + 'y': value *= get_viewport().get_visible_rect().size.y + + match i.get_string(&'part'): + 'x': vec.x = value + 'y': vec.y = value + return vec + + +func vector_to_str(vec:Vector2) -> String: + return "x" + str(vec.x) + "px y" + str(vec.y) + "px" + + +func reset_all_containers(time:= 0.0, tween:Tween = null) -> void: + for container in get_tree().get_nodes_in_group(&'dialogic_portrait_con_position'): + reset_container(container, time, tween) + + +func reset_container(container:DialogicNode_PortraitContainer, time := 0.0, tween: Tween = null ) -> void: + if container.has_meta(&'default_translation'): + translate_container(container, vector_to_str(container.get_meta(&'default_translation')), false, tween, time) + if container.has_meta(&'default_rotation'): + rotate_container(container, container.get_meta(&'default_rotation'), false, tween, time) + if container.has_meta(&'default_size'): + resize_container(container, vector_to_str(container.get_meta(&'default_size')), false, tween, time) diff --git a/addons/dialogic/Modules/Character/subsystem_containers.gd.uid b/addons/dialogic/Modules/Character/subsystem_containers.gd.uid new file mode 100644 index 0000000..98412db --- /dev/null +++ b/addons/dialogic/Modules/Character/subsystem_containers.gd.uid @@ -0,0 +1 @@ +uid://c5dk5rh4vj8rd diff --git a/addons/dialogic/Modules/Character/subsystem_portraits.gd b/addons/dialogic/Modules/Character/subsystem_portraits.gd new file mode 100644 index 0000000..c87468d --- /dev/null +++ b/addons/dialogic/Modules/Character/subsystem_portraits.gd @@ -0,0 +1,729 @@ +extends DialogicSubsystem + +## Subsystem that manages portraits and portrait positions. + +signal character_joined(info:Dictionary) +signal character_left(info:Dictionary) +signal character_portrait_changed(info:Dictionary) +signal character_moved(info:Dictionary) + +## Emitted when a portrait starts animating. +#signal portrait_animating(character_node: Node, portrait_node: Node, animation_name: String, animation_length: float) + + +## The default portrait scene. +var default_portrait_scene: PackedScene = load(get_script().resource_path.get_base_dir().path_join('default_portrait.tscn')) + + +#region STATE +#################################################################################################### + +func clear_game_state(_clear_flag:=DialogicGameHandler.ClearFlags.FULL_CLEAR) -> void: + for character_identifier in dialogic.current_state_info.get('portraits', {}).keys(): + remove_character(DialogicResourceUtil.get_character_resource(character_identifier)) + dialogic.current_state_info['portraits'] = {} + + +func load_game_state(_load_flag:=LoadFlags.FULL_LOAD) -> void: + if not "portraits" in dialogic.current_state_info: + dialogic.current_state_info["portraits"] = {} + + # Load Position Portraits + var portraits_info: Dictionary = dialogic.current_state_info.portraits.duplicate() + dialogic.current_state_info.portraits = {} + for character_identifier in portraits_info: + var character_info: Dictionary = portraits_info[character_identifier] + var character: DialogicCharacter = DialogicResourceUtil.get_character_resource(character_identifier) + if character: + var container := dialogic.PortraitContainers.load_position_container(character.get_character_name()) + add_character(character, container, character_info.portrait, character_info.position_id) + change_character_mirror(character, character_info.get('custom_mirror', false)) + change_character_z_index(character, character_info.get('z_index', 0)) + change_character_extradata(character, character_info.get('extra_data', "")) + else: + push_error('[Dialogic] Failed to load character "' + str(character_identifier) + '".') + + # Load Speaker Portrait + var speaker: Variant = dialogic.current_state_info.get("speaker", "") + if speaker: + dialogic.current_state_info["speaker"] = "" + change_speaker(DialogicResourceUtil.get_character_resource(speaker)) + dialogic.current_state_info["speaker"] = speaker + + +func pause() -> void: + for portrait in dialogic.current_state_info['portraits'].values(): + if portrait.node.has_meta('animation_node'): + portrait.node.get_meta('animation_node').pause() + + +func resume() -> void: + for portrait in dialogic.current_state_info['portraits'].values(): + if portrait.node.has_meta('animation_node'): + portrait.node.get_meta('animation_node').resume() + + +func _ready() -> void: + if !ProjectSettings.get_setting('dialogic/portraits/default_portrait', '').is_empty(): + default_portrait_scene = load(ProjectSettings.get_setting('dialogic/portraits/default_portrait', '')) + + +#region MAIN METHODS +#################################################################################################### +## The following methods allow manipulating portraits. +## A portrait is made up of a character node [Node2D] that instances the portrait scene as it's child. +## The character node is then always the child of a portrait container. +## - Position (PortraitContainer) +## ---- character_node (Node2D) +## --------- portrait_node (e.g. default_portrait.tscn, or a custom portrait) +## +## Using these main methods a character can be present multiple times. +## For a VN style, the "character" methods (next section) provide access based on the character. +## - (That is what the character event uses) + + +## Creates a new [character node] for the given [character], and add it to the given [portrait container]. +func _create_character_node(character:DialogicCharacter, container:DialogicNode_PortraitContainer) -> Node: + if container == null: + return null + var character_node := Node2D.new() + character_node.name = character.get_character_name() + character_node.set_meta('character', character) + container.add_child(character_node) + return character_node + + +## Changes the portrait of a specific [character node]. +func _change_portrait(character_node: Node2D, portrait: String, fade_animation:="", fade_length := 0.5) -> Dictionary: + var character: DialogicCharacter = character_node.get_meta('character') + + if portrait.is_empty(): + portrait = character.default_portrait + + var info := {'character':character, 'portrait':portrait, 'same_scene':false} + + if not portrait in character.portraits.keys(): + print_debug('[Dialogic] Change to not-existing portrait will be ignored!') + return info + + # Path to the scene to use. + var scene_path: String = character.portraits[portrait].get('scene', '') + + var portrait_node: Node = null + var previous_portrait: Node = null + var portrait_count := character_node.get_child_count() + + if portrait_count > 0: + previous_portrait = character_node.get_child(-1) + + # Check if the scene is the same as the currently loaded scene. + if (not previous_portrait == null and + previous_portrait.get_meta('scene', '') == scene_path and + # Also check if the scene supports changing to the given portrait. + previous_portrait.has_method('_should_do_portrait_update') and + previous_portrait._should_do_portrait_update(character, portrait)): + portrait_node = previous_portrait + info['same_scene'] = true + + else: + + if ResourceLoader.exists(scene_path): + ResourceLoader.load_threaded_request(scene_path) + + var load_status := ResourceLoader.load_threaded_get_status(scene_path) + while load_status == ResourceLoader.THREAD_LOAD_IN_PROGRESS: + await get_tree().process_frame + load_status = ResourceLoader.load_threaded_get_status(scene_path) + + if load_status == ResourceLoader.THREAD_LOAD_LOADED: + var packed_scene: PackedScene = ResourceLoader.load_threaded_get(scene_path) + if packed_scene: + portrait_node = packed_scene.instantiate() + else: + push_error('[Dialogic] Portrait node "' + str(scene_path) + '" for character [' + character.display_name + '] could not be loaded. Your portrait might not show up on the screen. Confirm the path is correct.') + else: + push_error('[Dialogic] Failed to load portrait node "' + str(scene_path) + '" for character [' + character.display_name + '].') + + if !portrait_node: + portrait_node = default_portrait_scene.instantiate() + + portrait_node.set_meta('scene', scene_path) + + + if portrait_node: + portrait_node.set_meta('portrait', portrait) + character_node.set_meta('portrait', portrait) + + DialogicUtil.apply_scene_export_overrides(portrait_node, character.portraits[portrait].get('export_overrides', {})) + + if portrait_node.has_method('_update_portrait'): + portrait_node._update_portrait(character, portrait) + + if not portrait_node.is_inside_tree(): + character_node.add_child(portrait_node) + + _update_portrait_transform(portrait_node) + + ## Handle Cross-Animating + if previous_portrait and previous_portrait != portrait_node: + if not fade_animation.is_empty() and fade_length > 0: + var fade_out := _animate_node(previous_portrait, fade_animation, fade_length, 1, true) + var _fade_in := _animate_node(portrait_node, fade_animation, fade_length, 1, false) + fade_out.finished.connect(previous_portrait.queue_free) + else: + previous_portrait.queue_free() + + return info + + +## Changes the mirroring of the given portrait. +## Unless @force is false, this will take into consideration the character mirror, +## portrait mirror and portrait position mirror settings. +func _change_portrait_mirror(character_node: Node2D, mirrored := false, force := false) -> void: + var latest_portrait := character_node.get_child(-1) if character_node.get_child_count() > 0 else null + + if latest_portrait and latest_portrait.has_method("_set_mirror"): + var character: DialogicCharacter = character_node.get_meta('character') + var current_portrait_info := character.get_portrait_info(character_node.get_meta('portrait')) + latest_portrait._set_mirror(force or (mirrored != character.mirror != character_node.get_parent().mirrored != current_portrait_info.get('mirror', false))) + + +func _change_portrait_extradata(character_node: Node2D, extra_data := "") -> void: + if not is_instance_valid(character_node): + push_error("[Dialogic] Invalid character node provided.") + return + + if character_node.get_child_count() > 0: + var latest_portrait := character_node.get_child(-1) + + if latest_portrait and latest_portrait.has_method("_set_extra_data"): + latest_portrait._set_extra_data(extra_data) + else: + push_warning("[Dialogic] No portrait found for character node: " + character_node.name) + +func _update_character_transform(character_node:Node, time := 0.0) -> void: + for child in character_node.get_children(): + _update_portrait_transform(child, time) + + +func _update_portrait_transform(portrait_node: Node, time:float = 0.0) -> void: + var character_node: Node = portrait_node.get_parent() + + var character: DialogicCharacter = character_node.get_meta('character') + var portrait_info: Dictionary = character.portraits.get(portrait_node.get_meta('portrait'), {}) + + # ignore the character scale on custom portraits that have 'ignore_char_scale' set to true + var apply_character_scale: bool = not portrait_info.get('ignore_char_scale', false) + + var transform: Rect2 = character_node.get_parent().get_local_portrait_transform( + portrait_node._get_covered_rect(), + (character.scale * portrait_info.get('scale', 1))*int(apply_character_scale)+portrait_info.get('scale', 1)*int(!apply_character_scale)) + + var tween: Tween + + if character_node.has_meta('move_tween'): + if character_node.get_meta('move_tween').is_running(): + time = character_node.get_meta('move_time')-character_node.get_meta('move_tween').get_total_elapsed_time() + tween = character_node.get_meta('move_tween') + tween.stop() + if time == 0: + character_node.position = transform.position + portrait_node.position = character.offset + portrait_info.get('offset', Vector2()) + portrait_node.scale = transform.size + else: + if not tween: + tween = character_node.create_tween().set_parallel().set_ease(Tween.EASE_IN_OUT).set_trans(Tween.TRANS_SINE) + character_node.set_meta('move_tween', tween) + character_node.set_meta('move_time', time) + tween.tween_method(DialogicUtil.multitween.bind(character_node, "position", "base"), character_node.position, transform.position, time) + tween.tween_property(portrait_node, 'position',character.offset + portrait_info.get('offset', Vector2()), time) + tween.tween_property(portrait_node, 'scale', transform.size, time) + + +## Animates the node with the given animation. +## Is used both on the character node (most animations) and the portrait nodes (cross-fade animations) +func _animate_node(node: Node, animation_path: String, length: float, repeats := 1, is_reversed := false) -> DialogicAnimation: + if node.has_meta('animation_node') and is_instance_valid(node.get_meta('animation_node')): + node.get_meta('animation_node').queue_free() + + var anim_script: Script = load(animation_path) + var anim_node := Node.new() + anim_node.set_script(anim_script) + anim_node = (anim_node as DialogicAnimation) + anim_node.node = node + anim_node.base_position = node.position + anim_node.base_scale = node.scale + anim_node.time = length + anim_node.repeats = repeats + anim_node.is_reversed = is_reversed + + add_child(anim_node) + anim_node.animate() + + node.set_meta("animation_path", animation_path) + node.set_meta("animation_length", length) + node.set_meta("animation_node", anim_node) + + #if not is_silent: + #portrait_animating.emit(portrait_node.get_parent(), portrait_node, animation_path, length) + + return anim_node + + +## Moves the given portrait to the given container. +func _move_character(character_node: Node2D, transform:="", time := 0.0, easing:= Tween.EASE_IN_OUT, trans:= Tween.TRANS_SINE) -> void: + var tween := character_node.create_tween().set_ease(easing).set_trans(trans).set_parallel() + if time == 0: + tween.kill() + tween = null + var container: DialogicNode_PortraitContainer = character_node.get_parent() + dialogic.PortraitContainers.move_container(container, transform, tween, time) + + for portrait_node in character_node.get_children(): + _update_portrait_transform(portrait_node, time) + + +## Changes the given portraits z_index. +func _change_portrait_z_index(character_node: Node, z_index:int, update_zindex:= true) -> void: + if update_zindex: + character_node.get_parent().set_meta('z_index', z_index) + + var sorted_children := character_node.get_parent().get_parent().get_children() + sorted_children.sort_custom(z_sort_portrait_containers) + var idx := 0 + for con in sorted_children: + con.get_parent().move_child(con, idx) + idx += 1 + + +## Checks if [para, character] has joined the scene, if so, returns its +## active [DialogicPortrait] node. +## +## The difference between an active and inactive nodes is whether the node is +## the latest node. [br] +## If a portrait is fading/animating from portrait A and B, both will exist +## in the scene, but only the new portrait is active, even if it is not +## fully visible yet. +func get_character_portrait(character: DialogicCharacter) -> DialogicPortrait: + if is_character_joined(character): + var portrait_node: DialogicPortrait = dialogic.current_state_info['portraits'][character.get_identifier()].node.get_child(-1) + return portrait_node + + return null + + +func z_sort_portrait_containers(con1: DialogicNode_PortraitContainer, con2: DialogicNode_PortraitContainer) -> bool: + if con1.get_meta('z_index', 0) < con2.get_meta('z_index', 0): + return true + + return false + + +## Private method to remove a [param portrait_node]. +func _remove_portrait(portrait_node: Node) -> void: + portrait_node.get_parent().remove_child(portrait_node) + portrait_node.queue_free() + + +## Gets the default animation length for joining characters +## If Auto-Skip is enabled, limits the time. +func _get_join_default_length() -> float: + var default_time: float = ProjectSettings.get_setting('dialogic/animations/join_default_length', 0.5) + + if dialogic.Inputs.auto_skip.enabled: + default_time = min(default_time, dialogic.Inputs.auto_skip.time_per_event) + + return default_time + + +## Gets the default animation length for leaving characters +## If Auto-Skip is enabled, limits the time. +func _get_leave_default_length() -> float: + var default_time: float = ProjectSettings.get_setting('dialogic/animations/leave_default_length', 0.5) + + if dialogic.Inputs.auto_skip.enabled: + default_time = min(default_time, dialogic.Inputs.auto_skip.time_per_event) + + return default_time + + +## Checks multiple cases to return a valid portrait to use. +func get_valid_portrait(character:DialogicCharacter, portrait:String) -> String: + if character == null: + printerr('[Dialogic] Tried to use portrait "', portrait, '" on character.') + dialogic.print_debug_moment() + return "" + + if "{" in portrait and dialogic.has_subsystem("Expressions"): + var test: Variant = dialogic.Expressions.execute_string(portrait) + if test: + portrait = str(test) + + if not portrait in character.portraits: + if not portrait.is_empty(): + printerr('[Dialogic] Tried to use invalid portrait "', portrait, '" on character "', character.get_character_name(), '". Using default portrait instead.') + dialogic.print_debug_moment() + portrait = character.default_portrait + + if portrait.is_empty(): + portrait = character.default_portrait + + return portrait + +#endregion + + +#region Character Methods +#################################################################################################### +## The following methods are used to manage character portraits with the following rules: +## - a character can only be present once with these methods. +## Most of them will fail silently if the character isn't joined yet. + + +## Adds a character at a position and sets it's portrait. +## If the character is already joined it will only update, portrait, position, etc. +func join_character(character:DialogicCharacter, portrait:String, position_id:String, mirrored:= false, z_index:= 0, extra_data:= "", animation_name:= "", animation_length:= 0.0, animation_wait := false) -> Node: + if is_character_joined(character): + change_character_portrait(character, portrait) + + if animation_name.is_empty(): + animation_length = _get_join_default_length() + + if animation_wait: + dialogic.current_state = DialogicGameHandler.States.ANIMATING + await get_tree().create_timer(animation_length).timeout + dialogic.current_state = DialogicGameHandler.States.IDLE + move_character(character, position_id, animation_length) + change_character_mirror(character, mirrored) + return + + var container := dialogic.PortraitContainers.add_container(character.get_character_name()) + var character_node := await add_character(character, container, portrait, position_id) + if character_node == null: + return null + + dialogic.current_state_info['portraits'][character.get_identifier()] = {'portrait':portrait, 'node':character_node, 'position_id':position_id, 'custom_mirror':mirrored} + + _change_portrait_mirror(character_node, mirrored) + _change_portrait_extradata(character_node, extra_data) + _change_portrait_z_index(character_node, z_index) + + var info := {'character':character} + info.merge(dialogic.current_state_info['portraits'][character.get_identifier()]) + character_joined.emit(info) + + if animation_name.is_empty(): + animation_name = ProjectSettings.get_setting('dialogic/animations/join_default', "Fade In Up") + animation_length = _get_join_default_length() + animation_wait = ProjectSettings.get_setting('dialogic/animations/join_default_wait', true) + + animation_name = DialogicPortraitAnimationUtil.guess_animation(animation_name, DialogicPortraitAnimationUtil.AnimationType.IN) + + if animation_name and animation_length > 0: + var anim: DialogicAnimation = _animate_node(character_node, animation_name, animation_length) + if animation_wait: + dialogic.current_state = DialogicGameHandler.States.ANIMATING + await anim.finished + dialogic.current_state = DialogicGameHandler.States.IDLE + + return character_node + + +func add_character(character: DialogicCharacter, container: DialogicNode_PortraitContainer, portrait: String, position_id: String) -> Node: + if is_character_joined(character): + printerr('[DialogicError] Cannot add an already joined character. If this is intended, call _create_character_node manually.') + return null + + portrait = get_valid_portrait(character, portrait) + + if portrait.is_empty(): + return null + + if not character: + printerr('[DialogicError] Cannot call add_portrait() with null character.') + return null + + var character_node := _create_character_node(character, container) + + if character_node == null: + printerr('[Dialogic] Failed to join character to position ', position_id, ". Could not find position container.") + return null + + dialogic.current_state_info['portraits'][character.get_identifier()] = {'portrait': portrait, 'node': character_node, 'position_id': position_id} + + _move_character(character_node, position_id) + await _change_portrait(character_node, portrait) + + return character_node + + +## Changes the portrait of a character. Only works with joined characters. +func change_character_portrait(character: DialogicCharacter, portrait: String, fade_animation:="", fade_length := -1.0) -> void: + if not is_character_joined(character): + return + + portrait = get_valid_portrait(character, portrait) + + if dialogic.current_state_info.portraits[character.get_identifier()].portrait == portrait: + return + + if fade_animation == "": + fade_animation = ProjectSettings.get_setting('dialogic/animations/cross_fade_default', "Fade Cross") + fade_length = ProjectSettings.get_setting('dialogic/animations/cross_fade_default_length', 0.5) + + fade_animation = DialogicPortraitAnimationUtil.guess_animation(fade_animation, DialogicPortraitAnimationUtil.AnimationType.CROSSFADE) + + var info := await _change_portrait(dialogic.current_state_info.portraits[character.get_identifier()].node, portrait, fade_animation, fade_length) + dialogic.current_state_info.portraits[character.get_identifier()].portrait = info.portrait + _change_portrait_mirror( + dialogic.current_state_info.portraits[character.get_identifier()].node, + dialogic.current_state_info.portraits[character.get_identifier()].get('custom_mirror', false) + ) + character_portrait_changed.emit(info) + + +## Changes the mirror of the given character. Only works with joined characters +func change_character_mirror(character:DialogicCharacter, mirrored:= false, force:= false) -> void: + if !is_character_joined(character): + return + + _change_portrait_mirror(dialogic.current_state_info.portraits[character.get_identifier()].node, mirrored, force) + dialogic.current_state_info.portraits[character.get_identifier()]['custom_mirror'] = mirrored + + +## Changes the z_index of a character. Only works with joined characters +func change_character_z_index(character:DialogicCharacter, z_index:int, update_zindex:= true) -> void: + if !is_character_joined(character): + return + + _change_portrait_z_index(dialogic.current_state_info.portraits[character.get_identifier()].node, z_index, update_zindex) + if update_zindex: + dialogic.current_state_info.portraits[character.get_identifier()]['z_index'] = z_index + + +## Changes the extra data on the given character. Only works with joined characters +func change_character_extradata(character:DialogicCharacter, extra_data:="") -> void: + if !is_character_joined(character): + return + _change_portrait_extradata(dialogic.current_state_info.portraits[character.get_identifier()].node, extra_data) + dialogic.current_state_info.portraits[character.get_identifier()]['extra_data'] = extra_data + + +## Starts the given animation on the given character. Only works with joined characters +func animate_character(character: DialogicCharacter, animation_path: String, length: float, repeats := 1, is_reversed := false) -> DialogicAnimation: + if not is_character_joined(character): + return null + + animation_path = DialogicPortraitAnimationUtil.guess_animation(animation_path) + + var character_node: Node = dialogic.current_state_info.portraits[character.get_identifier()].node + + return _animate_node(character_node, animation_path, length, repeats, is_reversed) + + +## Moves the given character to the given position. Only works with joined characters +func move_character(character:DialogicCharacter, position_id:String, time:= 0.0, easing:=Tween.EASE_IN_OUT, trans:=Tween.TRANS_SINE) -> void: + if !is_character_joined(character): + return + + if dialogic.current_state_info.portraits[character.get_identifier()].position_id == position_id: + return + + _move_character(dialogic.current_state_info.portraits[character.get_identifier()].node, position_id, time, easing, trans) + dialogic.current_state_info.portraits[character.get_identifier()].position_id = position_id + character_moved.emit({'character':character, 'position_id':position_id, 'time':time}) + + +## Removes a character with a given animation or the default animation. +func leave_character(character: DialogicCharacter, animation_name:= "", animation_length:= 0.0, animation_wait := false) -> void: + if not is_character_joined(character): + return + + if animation_name.is_empty(): + animation_name = ProjectSettings.get_setting('dialogic/animations/leave_default', "Fade Out Down") + animation_length = _get_leave_default_length() + animation_wait = ProjectSettings.get_setting('dialogic/animations/leave_default_wait', true) + + animation_name = DialogicPortraitAnimationUtil.guess_animation(animation_name, DialogicPortraitAnimationUtil.AnimationType.OUT) + + if not animation_name.is_empty(): + var character_node := get_character_node(character) + + var animation := _animate_node(character_node, animation_name, animation_length, 1, true) + if animation_length > 0: + if animation_wait: + dialogic.current_state = DialogicGameHandler.States.ANIMATING + await animation.finished + dialogic.current_state = DialogicGameHandler.States.IDLE + remove_character(character) + else: + animation.finished.connect(func(): remove_character(character)) + else: + remove_character(character) + + +## Removes all joined characters with a given animation or the default animation. +func leave_all_characters(animation_name:="", animation_length:=0.0, animation_wait := false) -> void: + for character in get_joined_characters(): + await leave_character(character, animation_name, animation_length, animation_wait) + + +## Finds the character node for a [param character]. +## Return `null` if the [param character] is not part of the scene. +func get_character_node(character: DialogicCharacter) -> Node: + if is_character_joined(character): + if is_instance_valid(dialogic.current_state_info['portraits'][character.get_identifier()].node): + return dialogic.current_state_info['portraits'][character.get_identifier()].node + return null + + +## Removes the given characters portrait. +## Only works with joined characters. +func remove_character(character: DialogicCharacter) -> void: + var character_node := get_character_node(character) + + if is_instance_valid(character_node) and character_node is Node: + var container := character_node.get_parent() + container.get_parent().remove_child(container) + container.queue_free() + character_node.queue_free() + character_left.emit({'character': character}) + + dialogic.current_state_info['portraits'].erase(character.get_identifier()) + + +## Returns true if the given character is currently joined. +func is_character_joined(character: DialogicCharacter) -> bool: + if character == null or not character.get_identifier() in dialogic.current_state_info['portraits']: + return false + + return true + + +## Returns a list of the joined charcters (as resources) +func get_joined_characters() -> Array[DialogicCharacter]: + var chars: Array[DialogicCharacter] = [] + + for char_identifier: String in dialogic.current_state_info.get('portraits', {}).keys(): + chars.append(DialogicResourceUtil.get_character_resource(char_identifier)) + + return chars + + +## Returns a dictionary with info on a given character. +## Keys can be [joined, character, node (for the portrait node), position_id] +## Only joined is included (and false) for not joined characters +func get_character_info(character:DialogicCharacter) -> Dictionary: + if is_character_joined(character): + var info: Dictionary = dialogic.current_state_info['portraits'][character.get_identifier()] + info['joined'] = true + return info + else: + return {'joined':false} + +#endregion + + +#region SPEAKER PORTRAIT CONTAINERS +#################################################################################################### + +## Updates all portrait containers set to SPEAKER. +func change_speaker(speaker: DialogicCharacter = null, portrait := "") -> void: + for container: Node in get_tree().get_nodes_in_group('dialogic_portrait_con_speaker'): + + var just_joined := true + for character_node: Node in container.get_children(): + if not character_node.get_meta('character') == speaker: + var leave_animation: String = ProjectSettings.get_setting('dialogic/animations/leave_default', "Fade Out") + leave_animation = DialogicPortraitAnimationUtil.guess_animation(leave_animation, DialogicPortraitAnimationUtil.AnimationType.OUT) + var leave_animation_length := _get_leave_default_length() + + if leave_animation and leave_animation_length: + var animate_out := _animate_node(character_node, leave_animation, leave_animation_length, 1, true) + await animate_out.finished + character_node.queue_free() + else: + character_node.get_parent().remove_child(character_node) + character_node.queue_free() + else: + just_joined = false + + if speaker == null or speaker.portraits.is_empty(): + continue + + if just_joined: + _create_character_node(speaker, container) + + elif portrait.is_empty(): + continue + + if portrait.is_empty(): + portrait = speaker.default_portrait + + var character_node := container.get_child(-1) + + var fade_animation: String = ProjectSettings.get_setting('dialogic/animations/cross_fade_default', "Fade Cross") + var fade_length: float = ProjectSettings.get_setting('dialogic/animations/cross_fade_default_length', 0.5) + + fade_animation = DialogicPortraitAnimationUtil.guess_animation(fade_animation, DialogicPortraitAnimationUtil.AnimationType.CROSSFADE) + + if container.portrait_prefix + portrait in speaker.portraits: + portrait = container.portrait_prefix + portrait + + await _change_portrait(character_node, portrait, fade_animation, fade_length) + + # if the character has no portraits _change_portrait won't actually add a child node + if character_node.get_child_count() == 0: + continue + + if just_joined: + # Change speaker is called before the text is changed. + # In styles where the speaker is IN the textbox, + # this can mean the portrait container isn't sized correctly yet. + character_node.hide() + if not container.is_visible_in_tree(): + await get_tree().process_frame + + # There is chance that the style changed (due to a speaker style) and thus the character node is gone now. + # In that case, just give up. + if not is_instance_valid(character_node): + return + character_node.show() + var join_animation: String = ProjectSettings.get_setting('dialogic/animations/join_default', "Fade In Up") + join_animation = DialogicPortraitAnimationUtil.guess_animation(join_animation, DialogicPortraitAnimationUtil.AnimationType.IN) + var join_animation_length := _get_join_default_length() + + if join_animation and join_animation_length: + await _animate_node(character_node, join_animation, join_animation_length).finished + + _change_portrait_mirror(character_node) + + var prev_speaker: DialogicCharacter = dialogic.Text.get_current_speaker() + if speaker != prev_speaker: + if is_character_joined(prev_speaker): + dialogic.current_state_info["portraits"][prev_speaker.get_identifier()].node.get_child(-1)._unhighlight() + + if is_character_joined(speaker): + dialogic.current_state_info["portraits"][speaker.get_identifier()].node.get_child(-1)._highlight() + +#endregion + + +#region TEXT EFFECTS +#################################################################################################### + +## Called from the [portrait=something] text effect. +func text_effect_portrait(_text_node:Control, _skipped:bool, argument:String) -> void: + if argument: + var current_speaker := dialogic.Text.get_current_speaker() + if current_speaker: + change_character_portrait(current_speaker, argument) + change_speaker(current_speaker, argument) + + +## Called from the [extra_data=something] text effect. +func text_effect_extradata(_text_node:Control, _skipped:bool, argument:String) -> void: + if argument: + if dialogic.Text.get_current_speaker(): + change_character_extradata(dialogic.Text.get_current_speaker(), argument) +#endregion diff --git a/addons/dialogic/Modules/Character/subsystem_portraits.gd.uid b/addons/dialogic/Modules/Character/subsystem_portraits.gd.uid new file mode 100644 index 0000000..7f2b29c --- /dev/null +++ b/addons/dialogic/Modules/Character/subsystem_portraits.gd.uid @@ -0,0 +1 @@ +uid://fyhfur7bpp4v diff --git a/addons/dialogic/Modules/Character/update_mirror.svg b/addons/dialogic/Modules/Character/update_mirror.svg new file mode 100644 index 0000000..561cbc9 --- /dev/null +++ b/addons/dialogic/Modules/Character/update_mirror.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/addons/dialogic/Modules/Character/update_mirror.svg.import b/addons/dialogic/Modules/Character/update_mirror.svg.import new file mode 100644 index 0000000..d2aad72 --- /dev/null +++ b/addons/dialogic/Modules/Character/update_mirror.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c735ss4h37y8i" +path="res://.godot/imported/update_mirror.svg-d6fa4832a7758cad02a7f32282433230.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Modules/Character/update_mirror.svg" +dest_files=["res://.godot/imported/update_mirror.svg-d6fa4832a7758cad02a7f32282433230.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Modules/Character/update_portrait.svg b/addons/dialogic/Modules/Character/update_portrait.svg new file mode 100644 index 0000000..b0856b3 --- /dev/null +++ b/addons/dialogic/Modules/Character/update_portrait.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/addons/dialogic/Modules/Character/update_portrait.svg.import b/addons/dialogic/Modules/Character/update_portrait.svg.import new file mode 100644 index 0000000..b6a73d2 --- /dev/null +++ b/addons/dialogic/Modules/Character/update_portrait.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://qx5bntelnslj" +path="res://.godot/imported/update_portrait.svg-b90fa6163d3720d34df8578ce2aa35e1.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Modules/Character/update_portrait.svg" +dest_files=["res://.godot/imported/update_portrait.svg-b90fa6163d3720d34df8578ce2aa35e1.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Modules/Character/update_position.svg b/addons/dialogic/Modules/Character/update_position.svg new file mode 100644 index 0000000..6e15feb --- /dev/null +++ b/addons/dialogic/Modules/Character/update_position.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/addons/dialogic/Modules/Character/update_position.svg.2023_09_23_08_37_47.0.svg b/addons/dialogic/Modules/Character/update_position.svg.2023_09_23_08_37_47.0.svg new file mode 100644 index 0000000..6e15feb --- /dev/null +++ b/addons/dialogic/Modules/Character/update_position.svg.2023_09_23_08_37_47.0.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/addons/dialogic/Modules/Character/update_position.svg.2023_09_23_08_37_47.0.svg.import b/addons/dialogic/Modules/Character/update_position.svg.2023_09_23_08_37_47.0.svg.import new file mode 100644 index 0000000..537be0c --- /dev/null +++ b/addons/dialogic/Modules/Character/update_position.svg.2023_09_23_08_37_47.0.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://deu1h3rsp3p8y" +path="res://.godot/imported/update_position.svg.2023_09_23_08_37_47.0.svg-d66e70a05e9de92a595b70fa88fca0d4.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Modules/Character/update_position.svg.2023_09_23_08_37_47.0.svg" +dest_files=["res://.godot/imported/update_position.svg.2023_09_23_08_37_47.0.svg-d66e70a05e9de92a595b70fa88fca0d4.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Modules/Character/update_position.svg.import b/addons/dialogic/Modules/Character/update_position.svg.import new file mode 100644 index 0000000..0c98cc7 --- /dev/null +++ b/addons/dialogic/Modules/Character/update_position.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://rslog4jar4gu" +path="res://.godot/imported/update_position.svg-4be50608dc0768e715ff659ca62cf187.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Modules/Character/update_position.svg" +dest_files=["res://.godot/imported/update_position.svg-4be50608dc0768e715ff659ca62cf187.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Modules/Character/update_z_index.svg b/addons/dialogic/Modules/Character/update_z_index.svg new file mode 100644 index 0000000..11cf3fc --- /dev/null +++ b/addons/dialogic/Modules/Character/update_z_index.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/addons/dialogic/Modules/Character/update_z_index.svg.import b/addons/dialogic/Modules/Character/update_z_index.svg.import new file mode 100644 index 0000000..0b25a61 --- /dev/null +++ b/addons/dialogic/Modules/Character/update_z_index.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c5xa3i541igyk" +path="res://.godot/imported/update_z_index.svg-204064db9241de79bf8dfd23af57c6c6.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Modules/Character/update_z_index.svg" +dest_files=["res://.godot/imported/update_z_index.svg-204064db9241de79bf8dfd23af57c6c6.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Modules/Choice/event_choice.gd b/addons/dialogic/Modules/Choice/event_choice.gd new file mode 100644 index 0000000..cbe15e3 --- /dev/null +++ b/addons/dialogic/Modules/Choice/event_choice.gd @@ -0,0 +1,236 @@ +@tool +class_name DialogicChoiceEvent +extends DialogicEvent + +## Event that allows adding choices. Needs to go after a text event (or another choices EndBranch). + +enum ElseActions {HIDE=0, DISABLE=1, DEFAULT=2} + + +### Settings +## The text that is displayed on the choice button. +var text := "" +## If not empty this condition will determine if this choice is active. +var condition := "" +## Determines what happens if [condition] is false. Default will use the action set in the settings. +var else_action := ElseActions.DEFAULT +## The text that is displayed if [condition] is false and [else_action] is Disable. +## If empty [text] will be used for disabled button as well. +var disabled_text := "" +## A dictionary that can be filled with arbitrary information +## This can then be interpreted by a custom choice layer +var extra_data := {} + + +## UI helper +var _has_condition := false + +#endregion + +var regex := RegEx.create_from_string(r'- (?(?>\\\||(?(?=.*\|)[^|]|(?!\[if)[^|]))*)\|?\s*(\[if(?([^\]\[]|\[[^\]]*\])+)\])?\s*(\[(?[^]]*)\])?') + +#region EXECUTION +################################################################################ + +func _execute() -> void: + if dialogic.Choices.is_question(dialogic.current_event_idx): + dialogic.Choices.show_current_question(false) + dialogic.current_state = dialogic.States.AWAITING_CHOICE + + +func _is_branch_starter() -> bool: + return dialogic.Choices.is_question(dialogic.current_timeline_events.find(self)) + +#endregion + + +#region INITIALIZE +################################################################################ + +func _init() -> void: + event_name = "Choice" + set_default_color('Color3') + event_category = "Flow" + event_sorting_index = 0 + can_contain_events = true + wants_to_group = true + + +# return a control node that should show on the END BRANCH node +func _get_end_branch_control() -> Control: + return load(get_script().resource_path.get_base_dir().path_join('ui_choice_end.tscn')).instantiate() +#endregion + + +#region SAVING/LOADING +################################################################################ + +func to_text() -> String: + var result_string := "" + + result_string = "- "+text.strip_edges() + var shortcode := store_to_shortcode_parameters() + if (condition and _has_condition) or shortcode or extra_data: + result_string += " |" + if condition and _has_condition: + result_string += " [if " + condition + "]" + + if shortcode or extra_data: + result_string += " [" + shortcode + if extra_data: + var extra_data_string := "" + for i in extra_data: + extra_data_string += " " + i + '="' + value_to_string(extra_data[i]) + '"' + if shortcode: + result_string += " " + result_string += extra_data_string.strip_edges() + result_string += "]" + + return result_string + + +func from_text(string:String) -> void: + var result := regex.search(string.strip_edges()) + if result == null: + return + text = result.get_string('text').strip_edges() + condition = result.get_string('condition').strip_edges() + _has_condition = not condition.is_empty() + if result.get_string('shortcode'): + load_from_shortcode_parameters(result.get_string("shortcode")) + var shortcode := parse_shortcode_parameters(result.get_string('shortcode')) + shortcode.erase("else") + shortcode.erase("alt_text") + extra_data = shortcode.duplicate() + + +func get_shortcode_parameters() -> Dictionary: + return { + "else" : {"property": "else_action", "default": ElseActions.DEFAULT, + "suggestions": func(): return { + "Default" :{'value':ElseActions.DEFAULT, 'text_alt':['default']}, + "Hide" :{'value':ElseActions.HIDE,'text_alt':['hide'] }, + "Disable" :{'value':ElseActions.DISABLE,'text_alt':['disable']}}}, + "alt_text" : {"property": "disabled_text", "default": ""}, + "extra_data" : {"property": "extra_data", "default": {}, "custom_stored":true}, + } + + +func is_valid_event(string:String) -> bool: + if string.strip_edges().begins_with("-"): + return true + return false + +#endregion + +#region TRANSLATIONS +################################################################################ + +func _get_translatable_properties() -> Array: + return ['text', 'disabled_text'] + + +func _get_property_original_translation(property:String) -> String: + match property: + 'text': + return text + 'disabled_text': + return disabled_text + return '' +#endregion + + +#region EDITOR REPRESENTATION +################################################################################ + +func build_event_editor() -> void: + add_header_edit("text", ValueType.SINGLELINE_TEXT, {'autofocus':true}) + add_body_edit("", ValueType.LABEL, {"text":"Condition:"}) + add_body_edit("_has_condition", ValueType.BOOL_BUTTON, {"editor_icon":["Add", "EditorIcons"], "tooltip":"Add Condition"}, "not _has_condition") + add_body_edit("condition", ValueType.CONDITION, {}, "_has_condition") + add_body_edit("_has_condition", ValueType.BOOL_BUTTON, {"editor_icon":["Remove", "EditorIcons"], "tooltip":"Remove Condition"}, "_has_condition") + add_body_edit("else_action", ValueType.FIXED_OPTIONS, {'left_text':'Else:', + 'options': [ + { + 'label': 'Default', + 'value': ElseActions.DEFAULT, + }, + { + 'label': 'Hide', + 'value': ElseActions.HIDE, + }, + { + 'label': 'Disable', + 'value': ElseActions.DISABLE, + } + ]}, '_has_condition') + add_body_edit("disabled_text", ValueType.SINGLELINE_TEXT, { + 'left_text':'Disabled text:', + 'placeholder':'(Empty for same)'}, 'allow_alt_text()') + add_body_line_break() + add_body_edit("extra_data", ValueType.DICTIONARY, {"left_text":"Extra Data:"}) + + +func allow_alt_text() -> bool: + return _has_condition and ( + else_action == ElseActions.DISABLE or + (else_action == ElseActions.DEFAULT and + ProjectSettings.get_setting("dialogic/choices/def_false_behaviour", 0) == 1)) +#endregion + + +#region CODE COMPLETION +################################################################################ + +func _get_code_completion(CodeCompletionHelper:Node, TextNode:TextEdit, line:String, _word:String, symbol:String) -> void: + line = CodeCompletionHelper.get_line_untill_caret(line) + + if !'[if' in line: + if symbol == '{': + CodeCompletionHelper.suggest_variables(TextNode) + return + + if symbol == '[': + if !'[if' in line and line.count('[') - line.count(']') == 1: + TextNode.add_code_completion_option(CodeEdit.KIND_MEMBER, 'if', 'if ', TextNode.syntax_highlighter.code_flow_color) + elif '[if' in line: + TextNode.add_code_completion_option(CodeEdit.KIND_MEMBER, 'else', 'else="', TextNode.syntax_highlighter.code_flow_color) + if symbol == ' ' and '[else' in line: + TextNode.add_code_completion_option(CodeEdit.KIND_MEMBER, 'alt_text', 'alt_text="', event_color.lerp(TextNode.syntax_highlighter.normal_color, 0.5)) + elif symbol == '{': + CodeCompletionHelper.suggest_variables(TextNode) + if (symbol == '=' or symbol == '"') and line.count('[') > 1 and !'" ' in line: + TextNode.add_code_completion_option(CodeEdit.KIND_MEMBER, 'default', "default", event_color.lerp(TextNode.syntax_highlighter.normal_color, 0.5), null, '"') + TextNode.add_code_completion_option(CodeEdit.KIND_MEMBER, 'hide', "hide", event_color.lerp(TextNode.syntax_highlighter.normal_color, 0.5), null, '"') + TextNode.add_code_completion_option(CodeEdit.KIND_MEMBER, 'disable', "disable", event_color.lerp(TextNode.syntax_highlighter.normal_color, 0.5), null, '"') +#endregion + + +#region SYNTAX HIGHLIGHTING +################################################################################ + +func _get_syntax_highlighting(Highlighter:SyntaxHighlighter, dict:Dictionary, line:String) -> Dictionary: + var result := regex.search(line) + + dict[0] = {'color':event_color} + + if not result: + return dict + + var condition_begin := result.get_start("condition") + var condition_end := result.get_end("condition") + + var shortcode_begin := result.get_start("shortcode") + + dict = Highlighter.color_region(dict, event_color.lerp(Highlighter.variable_color, 0.5), line, '{','}', 0, condition_begin, event_color) + + if condition_begin > 0: + var from := line.find('[if') + dict[from] = {"color":Highlighter.normal_color} + dict[from+1] = {"color":Highlighter.code_flow_color} + dict[condition_begin] = {"color":Highlighter.normal_color} + dict = Highlighter.color_condition(dict, line, condition_begin, condition_end) + if shortcode_begin: + dict = Highlighter.color_shortcode_content(dict, line, shortcode_begin, 0, event_color) + return dict +#endregion diff --git a/addons/dialogic/Modules/Choice/event_choice.gd.uid b/addons/dialogic/Modules/Choice/event_choice.gd.uid new file mode 100644 index 0000000..5ea1d4c --- /dev/null +++ b/addons/dialogic/Modules/Choice/event_choice.gd.uid @@ -0,0 +1 @@ +uid://cltu1tykths0n diff --git a/addons/dialogic/Modules/Choice/icon.svg b/addons/dialogic/Modules/Choice/icon.svg new file mode 100644 index 0000000..b69a86d --- /dev/null +++ b/addons/dialogic/Modules/Choice/icon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/addons/dialogic/Modules/Choice/icon.svg.import b/addons/dialogic/Modules/Choice/icon.svg.import new file mode 100644 index 0000000..6a28924 --- /dev/null +++ b/addons/dialogic/Modules/Choice/icon.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://wd4fnxjfmj5m" +path="res://.godot/imported/icon.svg-372a9bfce8bea67fff1988d7acf09a9a.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Modules/Choice/icon.svg" +dest_files=["res://.godot/imported/icon.svg-372a9bfce8bea67fff1988d7acf09a9a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Modules/Choice/index.gd b/addons/dialogic/Modules/Choice/index.gd new file mode 100644 index 0000000..23d0ec2 --- /dev/null +++ b/addons/dialogic/Modules/Choice/index.gd @@ -0,0 +1,14 @@ +@tool +extends DialogicIndexer + + +func _get_events() -> Array: + return [this_folder.path_join('event_choice.gd')] + + +func _get_subsystems() -> Array: + return [{'name':'Choices', 'script':this_folder.path_join('subsystem_choices.gd')}] + + +func _get_settings_pages() -> Array: + return [this_folder.path_join('settings_choices.tscn')] diff --git a/addons/dialogic/Modules/Choice/index.gd.uid b/addons/dialogic/Modules/Choice/index.gd.uid new file mode 100644 index 0000000..ea40483 --- /dev/null +++ b/addons/dialogic/Modules/Choice/index.gd.uid @@ -0,0 +1 @@ +uid://bo0dqybasbqd diff --git a/addons/dialogic/Modules/Choice/node_button_sound.gd b/addons/dialogic/Modules/Choice/node_button_sound.gd new file mode 100644 index 0000000..3f6cdbe --- /dev/null +++ b/addons/dialogic/Modules/Choice/node_button_sound.gd @@ -0,0 +1,52 @@ +class_name DialogicNode_ButtonSound +extends AudioStreamPlayer + +## Node that is used for playing sound effects on hover/focus/press of sibling DialogicNode_ChoiceButtons. + +## Sound to be played if one of the sibling ChoiceButtons is pressed. +## If sibling ChoiceButton has a sound_pressed set, that is prioritized. +@export var sound_pressed: AudioStream +## Sound to be played on hover. See [sound_pressed] for more. +@export var sound_hover: AudioStream +## Sound to be played on focus. See [sound_pressed] for more. +@export var sound_focus: AudioStream + +func _ready() -> void: + add_to_group('dialogic_button_sound') + _connect_all_buttons() + +#basic play sound +func play_sound(sound) -> void: + if sound != null: + stream = sound + play() + +func _connect_all_buttons() -> void: + for child in get_parent().get_children(): + if child is DialogicNode_ChoiceButton: + child.button_up.connect(_on_pressed.bind(child.sound_pressed)) + child.mouse_entered.connect(_on_hover.bind(child.sound_hover)) + child.focus_entered.connect(_on_focus.bind(child.sound_focus)) + + +#the custom_sound argument comes from the specifec button and get used +#if none are found, it uses the above sounds + +func _on_pressed(custom_sound) -> void: + if custom_sound != null: + play_sound(custom_sound) + else: + play_sound(sound_pressed) + +func _on_hover(custom_sound) -> void: + if custom_sound != null: + play_sound(custom_sound) + else: + play_sound(sound_hover) + +func _on_focus(custom_sound) -> void: + if custom_sound != null: + play_sound(custom_sound) + else: + play_sound(sound_focus) + diff --git a/addons/dialogic/Modules/Choice/node_button_sound.gd.uid b/addons/dialogic/Modules/Choice/node_button_sound.gd.uid new file mode 100644 index 0000000..e40f8b2 --- /dev/null +++ b/addons/dialogic/Modules/Choice/node_button_sound.gd.uid @@ -0,0 +1 @@ +uid://b1stj4ljd2vo7 diff --git a/addons/dialogic/Modules/Choice/node_choice_button.gd b/addons/dialogic/Modules/Choice/node_choice_button.gd new file mode 100644 index 0000000..724f592 --- /dev/null +++ b/addons/dialogic/Modules/Choice/node_choice_button.gd @@ -0,0 +1,120 @@ +class_name DialogicNode_ChoiceButton +extends Button +## This button allows the player to make a choice in the Dialogic system. +## +## When a choice is reached Dialogic will automatically show ChoiceButtons +## and call their [code]_load_info()[/code] method which will display the choices. +## You will need to ensure that enough choice buttons are available in the tree +## to display all choices.[br] +## +## [br] +## You can extend this node and implement some custom logic by overwriting +## the [code]_load_info(info:Dictionary)[/code] method. [br] +## [br] +## If you need RichText support, consider adding a RichTextLabel child and setting it as the [member text_node].[br] +## +## [br] +## DialogicChoiceButtons will grab the focus when hovered to avoid a confusing +## focus style being present for players who use the mouse.[br] +## To avoid the opposite situation, when the focus is changed by the player +## and a different button is still hovered the mouse pointer will be moved +## to the now focused button as well. + + +## Emitted when the choice is selected. Unless overridden, this is when the button or its shortcut is pressed. +signal choice_selected + + +## Used to identify what choices to put on. If you leave it at -1, choices will be distributed automatically. +@export var choice_index: int = -1 + +## Can be set to play this sound when pressed. Requires a sibling DialogicNode_ButtonSound node. +@export var sound_pressed: AudioStream +## Can be set to play this sound when hovered. Requires a sibling DialogicNode_ButtonSound node. +@export var sound_hover: AudioStream +## Can be set to play this sound when focused. Requires a sibling DialogicNode_ButtonSound node. +@export var sound_focus: AudioStream + +## If set, the text will be set on this node's `text` property instead. +## This can be used to have a custom text rendering child, like a RichTextLabel. +@export var text_node: Node + + +func _ready() -> void: + add_to_group('dialogic_choice_button') + shortcut_in_tooltip = false + hide() + + # For players who use a mouse to make choices, mouse hover should grab focus. + # Otherwise the auto-focused button will always show a highlighted color when + # the mouse cursor is hovering on another button. + if not mouse_entered.is_connected(grab_focus): + mouse_entered.connect(grab_focus) + if not focus_entered.is_connected(_on_choice_button_focus_entred): + focus_entered.connect(_on_choice_button_focus_entred.bind(self)) + + +## Custom choice buttons can override this for specialized behavior when the choice button is pressed. +func _pressed(): + choice_selected.emit() + + +## Custom choice buttons can override this if their behavior should change +## based on event data. If the custom choice button does not override +## visibility, disabled-ness, nor the choice text, consider +## calling super(choice_info) at the start of the override. +## +## The choice_info Dictionary has the following keys: +## - event_index: The index of the choice event in the timeline. +## - button_index: The relative index of the choice (starts from 1). +## - visible: If the choice should be visible. +## - disabled: If the choice should be selectable. +## - text: The text of the choice. +## - visited_before: If the choice has been selected before. Only available is the History submodule is enabled. +## - *: Information from the event's additional info. +func _load_info(choice_info: Dictionary) -> void: + set_choice_text(choice_info.text) + visible = choice_info.visible + disabled = choice_info.disabled + + +## Called when the text changes. +func set_choice_text(new_text: String) -> void: + if text_node: + text_node.text = new_text + else: + text = new_text + + +## This method moves the mouse to the focused choice when the focus changes +## while a choice button was hovered. [br] +## For players who use many devices (mouse/keyboard/gamepad, etc) at the same time to make choices, +## a grabing-focus triggered by keyboard/gamepad should also change the mouse cursor's +## position otherwise two buttons will have highlighted color(one highlighted button +## triggered by mouse hover and another highlighted button triggered by other devices' choice). +func _on_choice_button_focus_entred(focused_button: Button): + var global_mouse_pos = get_global_mouse_position() + var focused_button_rect = focused_button.get_global_rect() + if focused_button_rect.has_point(global_mouse_pos): + return + # Only change mouse curor position when an unfocused button' rect has the cursor. + for node in get_tree().get_nodes_in_group('dialogic_choice_button'): + if node is Button: + if node != focused_button and node.get_global_rect().has_point(global_mouse_pos): + # We prefer to change only mouse_position.y or mouse_position.x to warp the + # mouse to the focused button's rect to achieve the best visual effect. + var modify_y_pos = Vector2(global_mouse_pos.x, focused_button.get_global_rect().get_center().y) + if focused_button_rect.has_point(modify_y_pos): + get_viewport().warp_mouse(modify_y_pos) + return + + var modify_x_pos = Vector2(focused_button.get_global_rect().get_center().x, global_mouse_pos.y) + if focused_button_rect.has_point(modify_x_pos): + get_viewport().warp_mouse(modify_x_pos) + return + + # Maybe the buttons are not aligned as vertically or horizontlly. + # Or perhaps the length difference between the two buttons is quite large. + # So we just make the cursor hover on the center of the focused button. + get_viewport().warp_mouse(focused_button.get_global_rect().get_center()) + return diff --git a/addons/dialogic/Modules/Choice/node_choice_button.gd.uid b/addons/dialogic/Modules/Choice/node_choice_button.gd.uid new file mode 100644 index 0000000..dbb12ef --- /dev/null +++ b/addons/dialogic/Modules/Choice/node_choice_button.gd.uid @@ -0,0 +1 @@ +uid://bldt7xlfum7ov diff --git a/addons/dialogic/Modules/Choice/settings_choices.gd b/addons/dialogic/Modules/Choice/settings_choices.gd new file mode 100644 index 0000000..66e4482 --- /dev/null +++ b/addons/dialogic/Modules/Choice/settings_choices.gd @@ -0,0 +1,67 @@ +@tool +extends DialogicSettingsPage + +func _refresh() -> void: + %Autofocus.button_pressed = ProjectSettings.get_setting('dialogic/choices/autofocus_first', true) + %Delay.value = ProjectSettings.get_setting('dialogic/choices/delay', 0.2) + %FalseBehaviour.select(ProjectSettings.get_setting('dialogic/choices/def_false_behaviour', 0)) + %HotkeyType.select(ProjectSettings.get_setting('dialogic/choices/hotkey_behaviour', 0)) + + var reveal_delay: float = ProjectSettings.get_setting('dialogic/choices/reveal_delay', 0) + var reveal_by_input: bool = ProjectSettings.get_setting('dialogic/choices/reveal_by_input', false) + if not reveal_by_input and reveal_delay == 0: + _on_appear_mode_item_selected(0) + if not reveal_by_input and reveal_delay != 0: + _on_appear_mode_item_selected(1) + if reveal_by_input and reveal_delay == 0: + _on_appear_mode_item_selected(2) + if reveal_by_input and reveal_delay != 0: + _on_appear_mode_item_selected(3) + + %RevealDelay.value = reveal_delay + +func _on_Autofocus_toggled(button_pressed: bool) -> void: + ProjectSettings.set_setting('dialogic/choices/autofocus_first', button_pressed) + ProjectSettings.save() + + +func _on_FalseBehaviour_item_selected(index) -> void: + ProjectSettings.set_setting('dialogic/choices/def_false_behaviour', index) + ProjectSettings.save() + + +func _on_HotkeyType_item_selected(index) -> void: + ProjectSettings.set_setting('dialogic/choices/hotkey_behaviour', index) + ProjectSettings.save() + + +func _on_Delay_value_changed(value) -> void: + ProjectSettings.set_setting('dialogic/choices/delay', value) + ProjectSettings.save() + + +func _on_reveal_delay_value_changed(value) -> void: + ProjectSettings.set_setting('dialogic/choices/reveal_delay', value) + ProjectSettings.save() + + +func _on_appear_mode_item_selected(index:int) -> void: + %AppearMode.selected = index + match index: + 0: + ProjectSettings.set_setting('dialogic/choices/reveal_delay', 0) + ProjectSettings.set_setting('dialogic/choices/reveal_by_input', false) + %RevealDelay.hide() + 1: + ProjectSettings.set_setting('dialogic/choices/reveal_delay', %RevealDelay.value) + ProjectSettings.set_setting('dialogic/choices/reveal_by_input', false) + %RevealDelay.show() + 2: + ProjectSettings.set_setting('dialogic/choices/reveal_delay', 0) + ProjectSettings.set_setting('dialogic/choices/reveal_by_input', true) + %RevealDelay.hide() + 3: + ProjectSettings.set_setting('dialogic/choices/reveal_delay', %RevealDelay.value) + ProjectSettings.set_setting('dialogic/choices/reveal_by_input', true) + %RevealDelay.show() + ProjectSettings.save() diff --git a/addons/dialogic/Modules/Choice/settings_choices.gd.uid b/addons/dialogic/Modules/Choice/settings_choices.gd.uid new file mode 100644 index 0000000..70d9924 --- /dev/null +++ b/addons/dialogic/Modules/Choice/settings_choices.gd.uid @@ -0,0 +1 @@ +uid://dbbbq1hcbhmi2 diff --git a/addons/dialogic/Modules/Choice/settings_choices.tscn b/addons/dialogic/Modules/Choice/settings_choices.tscn new file mode 100644 index 0000000..195c5f8 --- /dev/null +++ b/addons/dialogic/Modules/Choice/settings_choices.tscn @@ -0,0 +1,176 @@ +[gd_scene load_steps=5 format=3 uid="uid://uarvgnbrcltm"] + +[ext_resource type="Script" uid="uid://dbbbq1hcbhmi2" path="res://addons/dialogic/Modules/Choice/settings_choices.gd" id="2"] +[ext_resource type="PackedScene" uid="uid://dbpkta2tjsqim" path="res://addons/dialogic/Editor/Common/hint_tooltip_icon.tscn" id="2_nxutt"] + +[sub_resource type="Image" id="Image_xvnnc"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_udy8i"] +image = SubResource("Image_xvnnc") + +[node name="Choices" type="VBoxContainer"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_bottom = -227.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("2") + +[node name="VBoxContainer2" type="HBoxContainer" parent="."] +layout_mode = 2 + +[node name="Title" type="Label" parent="VBoxContainer2"] +layout_mode = 2 +theme_type_variation = &"DialogicSettingsSection" +text = "Behaviour" + +[node name="VBoxContainer" type="GridContainer" parent="."] +layout_mode = 2 +size_flags_horizontal = 3 +columns = 2 + +[node name="AutofocusLabel" type="HBoxContainer" parent="VBoxContainer"] +layout_mode = 2 + +[node name="Label" type="Label" parent="VBoxContainer/AutofocusLabel"] +layout_mode = 2 +text = "Autofocus first choice" + +[node name="Autofocus" type="CheckBox" parent="VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="AppearModeLabel" type="HBoxContainer" parent="VBoxContainer"] +layout_mode = 2 + +[node name="Label2" type="Label" parent="VBoxContainer/AppearModeLabel"] +layout_mode = 2 +text = "Choices appear" + +[node name="HintTooltip" parent="VBoxContainer/AppearModeLabel" instance=ExtResource("2_nxutt")] +layout_mode = 2 +tooltip_text = "Choices can appear either instantly when the text finished, after a delay, a click or either." +texture = SubResource("ImageTexture_udy8i") +hint_text = "Choices can appear either instantly when the text finished, after a delay, a click or either." + +[node name="RevealDelayLabel" type="HBoxContainer" parent="VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="AppearMode" type="OptionButton" parent="VBoxContainer/RevealDelayLabel"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +item_count = 4 +selected = 0 +fit_to_longest_item = false +popup/item_0/text = "Instantly" +popup/item_0/id = 0 +popup/item_1/text = "After delay" +popup/item_1/id = 1 +popup/item_2/text = "After another click" +popup/item_2/id = 2 +popup/item_3/text = "After delay or click" +popup/item_3/id = 3 + +[node name="RevealDelay" type="SpinBox" parent="VBoxContainer/RevealDelayLabel"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Delay after which choices will appear (in seconds)." +step = 0.01 + +[node name="DelayLabel" type="HBoxContainer" parent="VBoxContainer"] +layout_mode = 2 + +[node name="Label2" type="Label" parent="VBoxContainer/DelayLabel"] +layout_mode = 2 +text = "Delay before choices can be pressed" + +[node name="HintTooltip2" parent="VBoxContainer/DelayLabel" instance=ExtResource("2_nxutt")] +layout_mode = 2 +tooltip_text = "Adding a small delay before choices can be activated can prevent accidentally choosing an option." +texture = SubResource("ImageTexture_udy8i") +hint_text = "Adding a small delay before choices can be activated can prevent accidentally choosing an option." + +[node name="Delay" type="SpinBox" parent="VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +step = 0.01 + +[node name="DefaultFalseBehaviourLabel" type="HBoxContainer" parent="VBoxContainer"] +layout_mode = 2 + +[node name="Label3" type="Label" parent="VBoxContainer/DefaultFalseBehaviourLabel"] +layout_mode = 2 +text = "Default behaviour for false choices" + +[node name="HintTooltip3" parent="VBoxContainer/DefaultFalseBehaviourLabel" instance=ExtResource("2_nxutt")] +layout_mode = 2 +tooltip_text = "Define the default behaviour (hide or disable) for choices that have a condition that isn't met. + +Choices can overwrite this setting individually." +texture = SubResource("ImageTexture_udy8i") +hint_text = "Define the default behaviour (hide or disable) for choices that have a condition that isn't met. + +Choices can overwrite this setting individually." + +[node name="FalseBehaviour" type="OptionButton" parent="VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +item_count = 2 +selected = 0 +popup/item_0/text = "Hide" +popup/item_0/id = 0 +popup/item_1/text = "Disable" +popup/item_1/id = 1 + +[node name="HSeparator" type="HSeparator" parent="."] +layout_mode = 2 + +[node name="HotkeySelection" type="HBoxContainer" parent="."] +layout_mode = 2 + +[node name="Title2" type="Label" parent="HotkeySelection"] +layout_mode = 2 +theme_type_variation = &"DialogicSettingsSection" +text = "Choice Hotkeys" + +[node name="HintTooltip4" parent="HotkeySelection" instance=ExtResource("2_nxutt")] +layout_mode = 2 +tooltip_text = "You can add more complex hotkeys (or individual ones) by editing the choice buttons of your layout scene." +texture = SubResource("ImageTexture_udy8i") +hint_text = "You can add more complex hotkeys (or individual ones) by editing the choice buttons of your layout scene." + +[node name="VBoxContainer3" type="HBoxContainer" parent="."] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="Label4" type="Label" parent="VBoxContainer3"] +layout_mode = 2 +text = "Hotkey type" + +[node name="HotkeyType" type="OptionButton" parent="VBoxContainer3"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 4 +item_count = 2 +selected = 0 +popup/item_0/text = "No Hotkeys" +popup/item_0/id = 0 +popup/item_1/text = "Default (1-9)" +popup/item_1/id = 1 + +[connection signal="toggled" from="VBoxContainer/Autofocus" to="." method="_on_Autofocus_toggled"] +[connection signal="item_selected" from="VBoxContainer/RevealDelayLabel/AppearMode" to="." method="_on_appear_mode_item_selected"] +[connection signal="value_changed" from="VBoxContainer/RevealDelayLabel/RevealDelay" to="." method="_on_reveal_delay_value_changed"] +[connection signal="value_changed" from="VBoxContainer/Delay" to="." method="_on_Delay_value_changed"] +[connection signal="item_selected" from="VBoxContainer/FalseBehaviour" to="." method="_on_FalseBehaviour_item_selected"] +[connection signal="item_selected" from="VBoxContainer3/HotkeyType" to="." method="_on_HotkeyType_item_selected"] diff --git a/addons/dialogic/Modules/Choice/subsystem_choices.gd b/addons/dialogic/Modules/Choice/subsystem_choices.gd new file mode 100644 index 0000000..cbafed6 --- /dev/null +++ b/addons/dialogic/Modules/Choice/subsystem_choices.gd @@ -0,0 +1,301 @@ +extends DialogicSubsystem + +## Subsystem that manages showing and activating of choices. + +## Emitted when a choice button was pressed. Info includes the keys 'button_index', 'text', 'event_index'. +signal choice_selected(info:Dictionary) +## Emitted when a set of choices is reached and shown. +## Info includes the keys 'choices' (an array of dictionaries with infos on all the choices). +signal question_shown(info:Dictionary) + +## Contains information on the latest question. +var last_question_info := {} + +## The delay between the text finishing revealing and the choices appearing +var reveal_delay := 0.0 +## If true the player has to click to reveal choices when they are reached +var reveal_by_input := false +## The delay between the choices becoming visible and being clickable. Can prevent accidental selection. +var block_delay := 0.2 +## If true, the first (top-most) choice will be focused +var autofocus_first_choice := true +## If true the dialogic input action is used to trigger choices. +## However mouse events will be ignored no matter what. +var use_input_action := false + +enum FalseBehaviour {HIDE=0, DISABLE=1} +## The behaviour of choices with a false condition and else_action set to DEFAULT. +var default_false_behaviour := FalseBehaviour.HIDE + +enum HotkeyBehaviour {NONE, NUMBERS} +## Will add some hotkeys to the choices if different then HotkeyBehaviour.NONE. +var hotkey_behaviour := HotkeyBehaviour.NONE + + +### INTERNALS + +## Used to block choices from being clicked for a couple of seconds (if delay is set in settings). +var _choice_blocker := Timer.new() + +#region STATE +#################################################################################################### + +func clear_game_state(_clear_flag:=DialogicGameHandler.ClearFlags.FULL_CLEAR) -> void: + hide_all_choices() + + +func _ready() -> void: + _choice_blocker.one_shot = true + DialogicUtil.update_timer_process_callback(_choice_blocker) + add_child(_choice_blocker) + + reveal_delay = float(ProjectSettings.get_setting('dialogic/choices/reveal_delay', reveal_delay)) + reveal_by_input = ProjectSettings.get_setting('dialogic/choices/reveal_by_input', reveal_by_input) + block_delay = ProjectSettings.get_setting('dialogic/choices/delay', block_delay) + autofocus_first_choice = ProjectSettings.get_setting('dialogic/choices/autofocus_first', autofocus_first_choice) + hotkey_behaviour = ProjectSettings.get_setting('dialogic/choices/hotkey_behaviour', hotkey_behaviour) + default_false_behaviour = ProjectSettings.get_setting('dialogic/choices/def_false_behaviour', default_false_behaviour) + + +func post_install() -> void: + dialogic.Inputs.dialogic_action.connect(_on_dialogic_action) + +#endregion + + +#region MAIN METHODS +#################################################################################################### + +## Hides all choice buttons. +func hide_all_choices() -> void: + for node in get_tree().get_nodes_in_group('dialogic_choice_button'): + node.hide() + if node.choice_selected.is_connected(_on_choice_selected): + node.choice_selected.disconnect(_on_choice_selected) + + +## Collects information on all the choices of the current question. +## The result is a dictionary like this: +## {'choices': +## [ +## {'event_index':10, 'button_index':1, 'disabled':false, 'text':"My Choice", 'visible':true}, +## {'event_index':15, 'button_index':2, 'disabled':false, 'text':"My Choice2", 'visible':true}, +## ] +func get_current_question_info() -> Dictionary: + var question_info := {'choices':[]} + + var button_idx := 1 + last_question_info = {'choices':[]} + + for choice_index in get_current_choice_indexes(): + var event: DialogicEvent = dialogic.current_timeline_events[choice_index] + + if not event is DialogicChoiceEvent: + continue + + var choice_event: DialogicChoiceEvent = event + var choice_info := {} + choice_info['event_index'] = choice_index + choice_info['button_index'] = button_idx + + # Check Condition + var condition: String = choice_event.condition + + if condition.is_empty() or dialogic.Expressions.execute_condition(choice_event.condition): + choice_info['disabled'] = false + choice_info['text'] = choice_event.get_property_translated('text') + choice_info['visible'] = true + button_idx += 1 + else: + choice_info['disabled'] = true + if not choice_event.disabled_text.is_empty(): + choice_info['text'] = choice_event.get_property_translated('disabled_text') + else: + choice_info['text'] = choice_event.get_property_translated('text') + + var hide := choice_event.else_action == DialogicChoiceEvent.ElseActions.HIDE + hide = hide or choice_event.else_action == DialogicChoiceEvent.ElseActions.DEFAULT and default_false_behaviour == DialogicChoiceEvent.ElseActions.HIDE + choice_info['visible'] = not hide + + if not hide: + button_idx += 1 + + choice_info.text = dialogic.Text.parse_text(choice_info.text, 1) + + choice_info.merge(choice_event.extra_data) + + if dialogic.has_subsystem('History'): + choice_info['visited_before'] = dialogic.History.has_event_been_visited(choice_index) + + question_info['choices'].append(choice_info) + last_question_info['choices'].append(choice_info['text']) + + return question_info + + +## Lists all current choices and shows buttons. +func show_current_question(instant:=true) -> void: + hide_all_choices() + _choice_blocker.stop() + + if !instant and (reveal_delay != 0 or reveal_by_input): + if reveal_delay != 0: + _choice_blocker.start(reveal_delay) + _choice_blocker.timeout.connect(show_current_question) + if reveal_by_input: + dialogic.Inputs.dialogic_action.connect(show_current_question) + return + + if _choice_blocker.timeout.is_connected(show_current_question): + _choice_blocker.timeout.disconnect(show_current_question) + if dialogic.Inputs.dialogic_action.is_connected(show_current_question): + dialogic.Inputs.dialogic_action.disconnect(show_current_question) + + var missing_button := false + + var question_info := get_current_question_info() + + for choice in question_info.choices: + var node: DialogicNode_ChoiceButton = get_choice_button(choice.button_index) + + if not node: + missing_button = true + continue + + node._load_info(choice) + + if choice.button_index == 1 and autofocus_first_choice: + node.grab_focus() + + match hotkey_behaviour: + ## Add 1 to 9 as shortcuts if it's enabled + HotkeyBehaviour.NUMBERS: + if choice.button_index > 0 or choice.button_index < 10: + var shortcut: Shortcut + if node.shortcut != null: + shortcut = node.shortcut + else: + shortcut = Shortcut.new() + + var input_key := InputEventKey.new() + input_key.keycode = OS.find_keycode_from_string(str(choice.button_index)) + shortcut.events.append(input_key) + node.shortcut = shortcut + + if node.choice_selected.is_connected(_on_choice_selected): + node.choice_selected.disconnect(_on_choice_selected) + node.choice_selected.connect(_on_choice_selected.bind(choice)) + + _choice_blocker.start(block_delay) + question_shown.emit(question_info) + + if missing_button: + printerr("[Dialogic] The layout you are using doesn't have enough Choice Buttons for the choices you are trying to display.") + + +func focus_choice(button_index:int) -> void: + var node: DialogicNode_ChoiceButton = get_choice_button(button_index) + if node: + node.grab_focus() + + +func select_choice(button_index:int) -> void: + var node: DialogicNode_ChoiceButton = get_choice_button(button_index) + if node: + node.choice_selected.emit() + + +func select_focused_choice() -> void: + if get_viewport().gui_get_focus_owner() is DialogicNode_ChoiceButton: + (get_viewport().gui_get_focus_owner() as DialogicNode_ChoiceButton).choice_selected.emit() + + +func get_choice_button(button_index:int) -> DialogicNode_ChoiceButton: + var idx := 1 + for node: DialogicNode_ChoiceButton in get_tree().get_nodes_in_group('dialogic_choice_button'): + if !node.get_parent().is_visible_in_tree(): + continue + if node.choice_index == button_index or (node.choice_index == -1 and idx == button_index): + return node + + if node.choice_index > 0: + idx = node.choice_index + idx += 1 + + return null + + +func _on_choice_selected(choice_info := {}) -> void: + if dialogic.paused or not _choice_blocker.is_stopped(): + return + + if dialogic.has_subsystem('History'): + var all_choices: Array = dialogic.Choices.last_question_info['choices'] + if dialogic.has_subsystem('VAR'): + dialogic.History.store_simple_history_entry(dialogic.VAR.parse_variables(choice_info.text), "Choice", {'all_choices': all_choices}) + else: + dialogic.History.store_simple_history_entry(choice_info.text, "Choice", {'all_choices': all_choices}) + if dialogic.has_subsystem("History"): + dialogic.History.mark_event_as_visited(choice_info.event_index) + + choice_selected.emit(choice_info) + hide_all_choices() + dialogic.current_state = dialogic.States.IDLE + dialogic.handle_event(choice_info.event_index + 1) + + +## Returns the indexes of the choice events related to the current question. +func get_current_choice_indexes() -> Array: + var choices := [] + var index := dialogic.current_event_idx-1 + while true: + index += 1 + if index >= len(dialogic.current_timeline_events): + break + + var event: DialogicEvent = dialogic.current_timeline_events[index] + if event is DialogicChoiceEvent: + choices.append(index) + index = event.get_end_branch_index() + else: + break + + return choices + + +## Forward the dialogic action to the focused button +func _on_dialogic_action() -> void: + if use_input_action and not dialogic.Inputs.input_was_mouse_input: + select_focused_choice() + + +#endregion + + +#region HELPERS +#################################################################################################### + +## Returns `true` if the given index is a text event before a question or the first choice event of a question. +func is_question(index:int) -> bool: + var event: DialogicEvent = dialogic.current_timeline_events[index] + if event is DialogicTextEvent: + if len(dialogic.current_timeline_events)-1 != index: + var next_event: DialogicEvent = dialogic.current_timeline_events[index+1] + if next_event is DialogicChoiceEvent: + return true + + if event is DialogicChoiceEvent: + if index == 0: + return true + var prev_event: DialogicEvent = dialogic.current_timeline_events[index-1] + if not prev_event is DialogicEndBranchEvent: + return true + var prev_event_opener: DialogicEvent = dialogic.current_timeline_events[prev_event.get_opening_index()] + if prev_event_opener is DialogicChoiceEvent: + return false + else: + return true + + return false + +#endregion diff --git a/addons/dialogic/Modules/Choice/subsystem_choices.gd.uid b/addons/dialogic/Modules/Choice/subsystem_choices.gd.uid new file mode 100644 index 0000000..1f06988 --- /dev/null +++ b/addons/dialogic/Modules/Choice/subsystem_choices.gd.uid @@ -0,0 +1 @@ +uid://cewv4d3aw0kj3 diff --git a/addons/dialogic/Modules/Choice/ui_choice_end.gd b/addons/dialogic/Modules/Choice/ui_choice_end.gd new file mode 100644 index 0000000..acc5d82 --- /dev/null +++ b/addons/dialogic/Modules/Choice/ui_choice_end.gd @@ -0,0 +1,28 @@ +@tool +extends HBoxContainer + +var parent_resource: DialogicChoiceEvent = null + +func refresh() -> void: + $AddChoice.icon = get_theme_icon("Add", "EditorIcons") + + if parent_resource is DialogicChoiceEvent: + show() + if len(parent_resource.text) > 12: + $Label.text = "End of choice ("+parent_resource.text.substr(0,12)+"...)" + else: + $Label.text = "End of choice ("+parent_resource.text+")" + else: + hide() + + +func _on_add_choice_pressed() -> void: + var timeline := find_parent('VisualEditor') + if timeline: + var resource := DialogicChoiceEvent.new() + resource.created_by_button = true + timeline.add_event_undoable(resource, get_parent().get_index()+1) + timeline.indent_events() + timeline.something_changed() + # Prevent focusing on future redos + resource.created_by_button = false diff --git a/addons/dialogic/Modules/Choice/ui_choice_end.gd.uid b/addons/dialogic/Modules/Choice/ui_choice_end.gd.uid new file mode 100644 index 0000000..04c99df --- /dev/null +++ b/addons/dialogic/Modules/Choice/ui_choice_end.gd.uid @@ -0,0 +1 @@ +uid://d28x7h2ufh3dd diff --git a/addons/dialogic/Modules/Choice/ui_choice_end.tscn b/addons/dialogic/Modules/Choice/ui_choice_end.tscn new file mode 100644 index 0000000..835a65c --- /dev/null +++ b/addons/dialogic/Modules/Choice/ui_choice_end.tscn @@ -0,0 +1,20 @@ +[gd_scene load_steps=2 format=3 uid="uid://cn0wbb2lk0s22"] + +[ext_resource type="Script" uid="uid://d28x7h2ufh3dd" path="res://addons/dialogic/Modules/Choice/ui_choice_end.gd" id="1_7qd85"] + +[node name="Choice_End" type="HBoxContainer"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_bottom = -625.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_7qd85") + +[node name="AddChoice" type="Button" parent="."] +layout_mode = 2 + +[node name="Label" type="Label" parent="."] +layout_mode = 2 + +[connection signal="pressed" from="AddChoice" to="." method="_on_add_choice_pressed"] diff --git a/addons/dialogic/Modules/Clear/clear_background.svg b/addons/dialogic/Modules/Clear/clear_background.svg new file mode 100644 index 0000000..9bb6889 --- /dev/null +++ b/addons/dialogic/Modules/Clear/clear_background.svg @@ -0,0 +1,2 @@ + + diff --git a/addons/dialogic/Modules/Clear/clear_background.svg.import b/addons/dialogic/Modules/Clear/clear_background.svg.import new file mode 100644 index 0000000..67f5a98 --- /dev/null +++ b/addons/dialogic/Modules/Clear/clear_background.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://brc74uf1yvlfr" +path="res://.godot/imported/clear_background.svg-32f657ae646e5867a8ceb0543ae207de.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Modules/Clear/clear_background.svg" +dest_files=["res://.godot/imported/clear_background.svg-32f657ae646e5867a8ceb0543ae207de.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Modules/Clear/clear_characters.svg b/addons/dialogic/Modules/Clear/clear_characters.svg new file mode 100644 index 0000000..868afba --- /dev/null +++ b/addons/dialogic/Modules/Clear/clear_characters.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/addons/dialogic/Modules/Clear/clear_characters.svg.import b/addons/dialogic/Modules/Clear/clear_characters.svg.import new file mode 100644 index 0000000..23cfa81 --- /dev/null +++ b/addons/dialogic/Modules/Clear/clear_characters.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d3b85xt58e8ej" +path="res://.godot/imported/clear_characters.svg-58481eec0869d46b2d90f2102edd1687.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Modules/Clear/clear_characters.svg" +dest_files=["res://.godot/imported/clear_characters.svg-58481eec0869d46b2d90f2102edd1687.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Modules/Clear/clear_music.svg b/addons/dialogic/Modules/Clear/clear_music.svg new file mode 100644 index 0000000..e992063 --- /dev/null +++ b/addons/dialogic/Modules/Clear/clear_music.svg @@ -0,0 +1,2 @@ + + diff --git a/addons/dialogic/Modules/Clear/clear_music.svg.import b/addons/dialogic/Modules/Clear/clear_music.svg.import new file mode 100644 index 0000000..043a2da --- /dev/null +++ b/addons/dialogic/Modules/Clear/clear_music.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c70ten8d456b5" +path="res://.godot/imported/clear_music.svg-ab19a5f3dc85de8ba17b7c720b838a73.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Modules/Clear/clear_music.svg" +dest_files=["res://.godot/imported/clear_music.svg-ab19a5f3dc85de8ba17b7c720b838a73.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Modules/Clear/clear_positions.svg b/addons/dialogic/Modules/Clear/clear_positions.svg new file mode 100644 index 0000000..78e5ac7 --- /dev/null +++ b/addons/dialogic/Modules/Clear/clear_positions.svg @@ -0,0 +1,2 @@ + + diff --git a/addons/dialogic/Modules/Clear/clear_positions.svg.import b/addons/dialogic/Modules/Clear/clear_positions.svg.import new file mode 100644 index 0000000..a01717d --- /dev/null +++ b/addons/dialogic/Modules/Clear/clear_positions.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://rs76jb858p8e" +path="res://.godot/imported/clear_positions.svg-9c6ef9c2e28a63b87a3c7d0ed63620d8.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Modules/Clear/clear_positions.svg" +dest_files=["res://.godot/imported/clear_positions.svg-9c6ef9c2e28a63b87a3c7d0ed63620d8.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Modules/Clear/clear_style.svg b/addons/dialogic/Modules/Clear/clear_style.svg new file mode 100644 index 0000000..d9ca782 --- /dev/null +++ b/addons/dialogic/Modules/Clear/clear_style.svg @@ -0,0 +1,2 @@ + + diff --git a/addons/dialogic/Modules/Clear/clear_style.svg.import b/addons/dialogic/Modules/Clear/clear_style.svg.import new file mode 100644 index 0000000..d1f6c7e --- /dev/null +++ b/addons/dialogic/Modules/Clear/clear_style.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://clpxmppelspva" +path="res://.godot/imported/clear_style.svg-ab3288e6e47f45c4e12ce1862403a99c.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Modules/Clear/clear_style.svg" +dest_files=["res://.godot/imported/clear_style.svg-ab3288e6e47f45c4e12ce1862403a99c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Modules/Clear/clear_textbox.svg b/addons/dialogic/Modules/Clear/clear_textbox.svg new file mode 100644 index 0000000..6383b72 --- /dev/null +++ b/addons/dialogic/Modules/Clear/clear_textbox.svg @@ -0,0 +1,2 @@ + + diff --git a/addons/dialogic/Modules/Clear/clear_textbox.svg.import b/addons/dialogic/Modules/Clear/clear_textbox.svg.import new file mode 100644 index 0000000..e658a4f --- /dev/null +++ b/addons/dialogic/Modules/Clear/clear_textbox.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://co8t6o06m76ed" +path="res://.godot/imported/clear_textbox.svg-04935e3d82350d24a197adcb47df6f57.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Modules/Clear/clear_textbox.svg" +dest_files=["res://.godot/imported/clear_textbox.svg-04935e3d82350d24a197adcb47df6f57.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Modules/Clear/event_clear.gd b/addons/dialogic/Modules/Clear/event_clear.gd new file mode 100644 index 0000000..9b1b3d7 --- /dev/null +++ b/addons/dialogic/Modules/Clear/event_clear.gd @@ -0,0 +1,114 @@ +@tool +class_name DialogicClearEvent +extends DialogicEvent + +## Event that clears audio & visuals (not variables). +## Useful to make sure the scene is clear for a completely new thing. + +var time := 1.0 +var step_by_step := true + +var clear_textbox := true +var clear_portraits := true +var clear_style := true +var clear_music := true +var clear_portrait_positions := true +var clear_background := true + +################################################################################ +## EXECUTE +################################################################################ + +func _execute() -> void: + var final_time := time + + if dialogic.Inputs.auto_skip.enabled: + var time_per_event: float = dialogic.Inputs.auto_skip.time_per_event + final_time = min(time, time_per_event) + + if clear_textbox and dialogic.has_subsystem("Text") and dialogic.Text.is_textbox_visible(): + dialogic.Text.update_dialog_text('') + dialogic.Text.hide_textbox(final_time == 0) + dialogic.current_state = dialogic.States.IDLE + if step_by_step: await dialogic.get_tree().create_timer(final_time).timeout + + if clear_portraits and dialogic.has_subsystem('Portraits') and len(dialogic.Portraits.get_joined_characters()) != 0: + if final_time == 0: + dialogic.Portraits.leave_all_characters("Instant", final_time, step_by_step) + else: + dialogic.Portraits.leave_all_characters("", final_time, step_by_step) + if step_by_step: await dialogic.get_tree().create_timer(final_time).timeout + + if clear_background and dialogic.has_subsystem('Backgrounds') and dialogic.Backgrounds.has_background(): + dialogic.Backgrounds.update_background('', '', final_time) + if step_by_step: await dialogic.get_tree().create_timer(final_time).timeout + + if clear_music and dialogic.has_subsystem('Audio'): + dialogic.Audio.stop_all_one_shot_sounds() + if dialogic.Audio.is_any_channel_playing(): + dialogic.Audio.stop_all_channels(final_time) + if step_by_step: await dialogic.get_tree().create_timer(final_time).timeout + + if clear_style and dialogic.has_subsystem('Styles'): + dialogic.Styles.change_style() + + if clear_portrait_positions and dialogic.has_subsystem('Portraits'): + dialogic.PortraitContainers.reset_all_containers() + + if not step_by_step: + await dialogic.get_tree().create_timer(final_time).timeout + + finish() + + +################################################################################ +## INITIALIZE +################################################################################ + +func _init() -> void: + event_name = "Clear" + set_default_color('Color9') + event_category = "Other" + event_sorting_index = 2 + + +################################################################################ +## SAVING/LOADING +################################################################################ + +func get_shortcode() -> String: + return "clear" + + +func get_shortcode_parameters() -> Dictionary: + return { + #param_name : property_info + "time" : {"property": "time", "default": ""}, + "step" : {"property": "step_by_step", "default": true}, + "text" : {"property": "clear_textbox", "default": true}, + "portraits" : {"property": "clear_portraits", "default": true}, + "music" : {"property": "clear_music", "default": true}, + "background": {"property": "clear_background", "default": true}, + "positions" : {"property": "clear_portrait_positions", "default": true}, + "style" : {"property": "clear_style", "default": true}, + } + + +################################################################################ +## EDITOR REPRESENTATION +################################################################################ + +func build_event_editor() -> void: + add_header_label('Clear') + + add_body_edit('time', ValueType.NUMBER, {'left_text':'Time:'}) + + add_body_edit('step_by_step', ValueType.BOOL, {'left_text':'Step by Step:'}, 'time > 0') + add_body_line_break() + + add_body_edit('clear_textbox', ValueType.BOOL_BUTTON, {'left_text':'Clear:', 'icon':load("res://addons/dialogic/Modules/Clear/clear_textbox.svg"), 'tooltip':'Clear Textbox'}) + add_body_edit('clear_portraits', ValueType.BOOL_BUTTON, {'icon':load("res://addons/dialogic/Modules/Clear/clear_characters.svg"), 'tooltip':'Clear Portraits'}) + add_body_edit('clear_background', ValueType.BOOL_BUTTON, {'icon':load("res://addons/dialogic/Modules/Clear/clear_background.svg"), 'tooltip':'Clear Background'}) + add_body_edit('clear_music', ValueType.BOOL_BUTTON, {'icon':load("res://addons/dialogic/Modules/Clear/clear_music.svg"), 'tooltip':'Clear Audio'}) + add_body_edit('clear_style', ValueType.BOOL_BUTTON, {'icon':load("res://addons/dialogic/Modules/Clear/clear_style.svg"), 'tooltip':'Clear Style'}) + add_body_edit('clear_portrait_positions', ValueType.BOOL_BUTTON, {'icon':load("res://addons/dialogic/Modules/Clear/clear_positions.svg"), 'tooltip':'Clear Portrait Positions'}) diff --git a/addons/dialogic/Modules/Clear/event_clear.gd.uid b/addons/dialogic/Modules/Clear/event_clear.gd.uid new file mode 100644 index 0000000..7f8fe27 --- /dev/null +++ b/addons/dialogic/Modules/Clear/event_clear.gd.uid @@ -0,0 +1 @@ +uid://7aikid38is1o diff --git a/addons/dialogic/Modules/Clear/icon.png b/addons/dialogic/Modules/Clear/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..d97548051128613659ed7d84696b3acc64ff4279 GIT binary patch literal 558 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9E$svykh8Km+7D9BhG zNupn+*h5A1vnHB0WXW$Z40O znTJ`1*@3wVHy7Mgc*T;do?*>+SK;o1EN#bK5i=4}&h+0`S6uQ#;Z8G)P6yCnAW*QC ztW0_qw7y7c`F5StVRq7YChnhe?DagGQqF`h0R~k*#(+l%DzA&NCcq(>`+@8EZ}ZN~ zYCCi|@LJ)DS+mMtN%K2f_PMqdTsrO4qq~A%X8t7KmrJ)ut#yj%Jl}OXowfB?q2}tJ zlO>|NH||;X)9Z$S#k{>a6V}gOzh-T+w#@HaK^ijsd(LdloR(rZK>NxZRc%Dud8zNRhL?>$E25}8_)LrI`C1}$|SyW>4hCXw~OD}nELs5+s0!8yY|S`URZtM|Ax}dJLLE3 zeEssh|2)6ZGPU(9je}E47e5QWu9LY&COu#MSZsQH Array: + return [this_folder.path_join('event_clear.gd')] diff --git a/addons/dialogic/Modules/Clear/index.gd.uid b/addons/dialogic/Modules/Clear/index.gd.uid new file mode 100644 index 0000000..e637770 --- /dev/null +++ b/addons/dialogic/Modules/Clear/index.gd.uid @@ -0,0 +1 @@ +uid://cyftouhvjfun2 diff --git a/addons/dialogic/Modules/Comment/event_comment.gd b/addons/dialogic/Modules/Comment/event_comment.gd new file mode 100644 index 0000000..ad0b1dd --- /dev/null +++ b/addons/dialogic/Modules/Comment/event_comment.gd @@ -0,0 +1,65 @@ +@tool +class_name DialogicCommentEvent +extends DialogicEvent + +## Event that does nothing but store a comment string. Will print the comment in debug builds. + + +### Settings + +## Content of the comment. +var text := "" + + +################################################################################ +## EXECUTE +################################################################################ + +func _execute() -> void: + print("[Dialogic Comment] #", text) + finish() + + +################################################################################ +## INITIALIZE +################################################################################ + +func _init() -> void: + event_name = "Comment" + set_default_color('Color9') + event_category = "Helpers" + event_sorting_index = 0 + + +################################################################################ +## SAVING/LOADING +################################################################################ + +func to_text() -> String: + return "# "+text + + +func from_text(string:String) -> void: + text = string.trim_prefix("# ") + + +func is_valid_event(string:String) -> bool: + if string.strip_edges().begins_with('#'): + return true + return false + + +################################################################################ +## EDITOR REPRESENTATION +################################################################################ + +func build_event_editor() -> void: + add_header_edit('text', ValueType.SINGLELINE_TEXT, {'left_text':'#', 'autofocus':true}) + + +#################### SYNTAX HIGHLIGHTING ####################################### +################################################################################ + +func _get_syntax_highlighting(Highlighter:SyntaxHighlighter, dict:Dictionary, _line:String) -> Dictionary: + dict[0] = {'color':event_color.lerp(Highlighter.normal_color, 0.3)} + return dict diff --git a/addons/dialogic/Modules/Comment/event_comment.gd.uid b/addons/dialogic/Modules/Comment/event_comment.gd.uid new file mode 100644 index 0000000..ba26e81 --- /dev/null +++ b/addons/dialogic/Modules/Comment/event_comment.gd.uid @@ -0,0 +1 @@ +uid://dbcesveorhh6m diff --git a/addons/dialogic/Modules/Comment/icon.png b/addons/dialogic/Modules/Comment/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..417537cff5dc04cecb198e38c923076b8890e3c8 GIT binary patch literal 398 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9E$svykh8Km+7D9BhG zJx9(oPEYmG_qVKM)77;R+_cYJBqkSx{b;soWAAA1u6bVgiDBhEK`qHi>uP0hz zb`9>9U0RKo56yV}N#BrhuZ*kegW|+9x$GyrVi-f!6E-M+2rANBw}oZL`~QKQ66tmC zpRU<5c|rEybk(&DhL5;nf|%}!E?6S;B6PC-JBGDPE~YM<{O+qCy7(yN>wWGO&hOZw z_xyXo{p5T4)r47pj{6utag9!&{N|FA`H7_Ey56s2ycHiQJgK@HD?G8`;rz$j*Z%5H nFjHOVy?^_`FtFbk4qUBejCkeU`%=2?I7r0P)z4*}Q$iB}zD1(m literal 0 HcmV?d00001 diff --git a/addons/dialogic/Modules/Comment/icon.png.import b/addons/dialogic/Modules/Comment/icon.png.import new file mode 100644 index 0000000..8fc2a38 --- /dev/null +++ b/addons/dialogic/Modules/Comment/icon.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://hbx10ru6sxfb" +path="res://.godot/imported/icon.png-fab76b8a5886dac0012cf73c317dbee4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Modules/Comment/icon.png" +dest_files=["res://.godot/imported/icon.png-fab76b8a5886dac0012cf73c317dbee4.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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/dialogic/Modules/Comment/index.gd b/addons/dialogic/Modules/Comment/index.gd new file mode 100644 index 0000000..53ceb32 --- /dev/null +++ b/addons/dialogic/Modules/Comment/index.gd @@ -0,0 +1,6 @@ +@tool +extends DialogicIndexer + + +func _get_events() -> Array: + return [this_folder.path_join('event_comment.gd')] diff --git a/addons/dialogic/Modules/Comment/index.gd.uid b/addons/dialogic/Modules/Comment/index.gd.uid new file mode 100644 index 0000000..47a801f --- /dev/null +++ b/addons/dialogic/Modules/Comment/index.gd.uid @@ -0,0 +1 @@ +uid://b27oui35aoff4 diff --git a/addons/dialogic/Modules/Condition/event_condition.gd b/addons/dialogic/Modules/Condition/event_condition.gd new file mode 100644 index 0000000..936a690 --- /dev/null +++ b/addons/dialogic/Modules/Condition/event_condition.gd @@ -0,0 +1,137 @@ +@tool +class_name DialogicConditionEvent +extends DialogicEvent + +## Event that allows branching a timeline based on a condition. + +enum ConditionTypes {IF, ELIF, ELSE} + +### Settings + +## Condition type (see [ConditionTypes]). Defaults to if. +var condition_type := ConditionTypes.IF +## The condition as a string. Will be executed as an Expression. +var condition := "" + + +################################################################################ +## EXECUTE +################################################################################ + +func _execute() -> void: + if condition_type == ConditionTypes.ELSE: + finish() + return + + if condition.is_empty(): condition = "true" + + var result: bool = dialogic.Expressions.execute_condition(condition) + if not result: + dialogic.current_event_idx = get_end_branch_index() + + finish() + + +func _is_branch_starter() -> bool: + return condition_type == ConditionTypes.IF + + +################################################################################ +## INITIALIZE +################################################################################ + +func _init() -> void: + event_name = "Condition" + set_default_color('Color3') + event_category = "Flow" + event_sorting_index = 1 + can_contain_events = true + + +# return a control node that should show on the END BRANCH node +func _get_end_branch_control() -> Control: + return load(get_script().resource_path.get_base_dir().path_join('ui_condition_end.tscn')).instantiate() + +################################################################################ +## SAVING/LOADING +################################################################################ + +func to_text() -> String: + var result_string := "" + + match condition_type: + ConditionTypes.IF: + result_string = 'if '+condition+':' + ConditionTypes.ELIF: + result_string = 'elif '+condition+':' + ConditionTypes.ELSE: + result_string = 'else:' + + return result_string + + +func from_text(string:String) -> void: + if string.strip_edges().begins_with('if'): + condition = string.strip_edges().trim_prefix('if ').trim_suffix(':').strip_edges() + condition_type = ConditionTypes.IF + elif string.strip_edges().begins_with('elif'): + condition = string.strip_edges().trim_prefix('elif ').trim_suffix(':').strip_edges() + condition_type = ConditionTypes.ELIF + elif string.strip_edges().begins_with('else'): + condition = "" + condition_type = ConditionTypes.ELSE + + +func is_valid_event(string:String) -> bool: + if string.strip_edges() in ['if', 'elif', 'else'] or (string.strip_edges().begins_with('if ') or string.strip_edges().begins_with('elif ') or string.strip_edges().begins_with('else')): + return true + return false + + +################################################################################ +## EDITOR REPRESENTATION +################################################################################ + +func build_event_editor() -> void: + add_header_edit('condition_type', ValueType.FIXED_OPTIONS, { + 'options': [ + { + 'label': 'IF', + 'value': ConditionTypes.IF, + }, + { + 'label': 'ELIF', + 'value': ConditionTypes.ELIF, + }, + { + 'label': 'ELSE', + 'value': ConditionTypes.ELSE, + } + ], 'disabled':true}) + add_header_edit('condition', ValueType.CONDITION, {}, 'condition_type != %s'%ConditionTypes.ELSE) + + +####################### CODE COMPLETION ######################################## +################################################################################ + +func _get_code_completion(CodeCompletionHelper:Node, TextNode:TextEdit, line:String, _word:String, symbol:String) -> void: + if (line.begins_with('if') or line.begins_with('elif')) and symbol == '{': + CodeCompletionHelper.suggest_variables(TextNode) + + +func _get_start_code_completion(_CodeCompletionHelper:Node, TextNode:TextEdit) -> void: + TextNode.add_code_completion_option(CodeEdit.KIND_PLAIN_TEXT, 'if', 'if ', TextNode.syntax_highlighter.code_flow_color) + TextNode.add_code_completion_option(CodeEdit.KIND_PLAIN_TEXT, 'elif', 'elif ', TextNode.syntax_highlighter.code_flow_color) + TextNode.add_code_completion_option(CodeEdit.KIND_PLAIN_TEXT, 'else', 'else:\n ', TextNode.syntax_highlighter.code_flow_color) + + +#################### SYNTAX HIGHLIGHTING ####################################### +################################################################################ + + +func _get_syntax_highlighting(Highlighter:SyntaxHighlighter, dict:Dictionary, line:String) -> Dictionary: + var word := line.get_slice(' ', 0) + dict[line.find(word)] = {"color":Highlighter.code_flow_color} + dict[line.find(word)+len(word)] = {"color":Highlighter.normal_color} + dict = Highlighter.color_condition(dict, line) + return dict diff --git a/addons/dialogic/Modules/Condition/event_condition.gd.uid b/addons/dialogic/Modules/Condition/event_condition.gd.uid new file mode 100644 index 0000000..91be9b8 --- /dev/null +++ b/addons/dialogic/Modules/Condition/event_condition.gd.uid @@ -0,0 +1 @@ +uid://g8gaor7ewun6 diff --git a/addons/dialogic/Modules/Condition/icon.svg b/addons/dialogic/Modules/Condition/icon.svg new file mode 100644 index 0000000..805e95d --- /dev/null +++ b/addons/dialogic/Modules/Condition/icon.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/addons/dialogic/Modules/Condition/icon.svg.import b/addons/dialogic/Modules/Condition/icon.svg.import new file mode 100644 index 0000000..d792f29 --- /dev/null +++ b/addons/dialogic/Modules/Condition/icon.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bco4t1ey0fkpm" +path="res://.godot/imported/icon.svg-502d45c064cc30f576b7b105a01357ce.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Modules/Condition/icon.svg" +dest_files=["res://.godot/imported/icon.svg-502d45c064cc30f576b7b105a01357ce.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Modules/Condition/index.gd b/addons/dialogic/Modules/Condition/index.gd new file mode 100644 index 0000000..c84f897 --- /dev/null +++ b/addons/dialogic/Modules/Condition/index.gd @@ -0,0 +1,6 @@ +@tool +extends DialogicIndexer + + +func _get_events() -> Array: + return [this_folder.path_join('event_condition.gd')] diff --git a/addons/dialogic/Modules/Condition/index.gd.uid b/addons/dialogic/Modules/Condition/index.gd.uid new file mode 100644 index 0000000..b3b4e52 --- /dev/null +++ b/addons/dialogic/Modules/Condition/index.gd.uid @@ -0,0 +1 @@ +uid://bsn2cv832qlam diff --git a/addons/dialogic/Modules/Condition/ui_condition_end.gd b/addons/dialogic/Modules/Condition/ui_condition_end.gd new file mode 100644 index 0000000..4a5ac1d --- /dev/null +++ b/addons/dialogic/Modules/Condition/ui_condition_end.gd @@ -0,0 +1,51 @@ +@tool +extends HBoxContainer + +var parent_resource: DialogicEvent = null + + +func _ready() -> void: + $AddElif.button_up.connect(add_elif) + $AddElse.button_up.connect(add_else) + + +func refresh() -> void: + if parent_resource is DialogicConditionEvent: + # hide add elif and add else button on ELSE event + $AddElif.visible = parent_resource.condition_type != DialogicConditionEvent.ConditionTypes.ELSE + $AddElse.visible = parent_resource.condition_type != DialogicConditionEvent.ConditionTypes.ELSE + $Label.text = "End of "+["IF", "ELIF", "ELSE"][parent_resource.condition_type]+" ("+parent_resource.condition+")" + + # hide add add else button if followed by ELIF or ELSE event + var timeline_editor := find_parent('VisualEditor') + if timeline_editor: + var next_event: DialogicEvent = null + if timeline_editor.get_block_below(get_parent()): + next_event = timeline_editor.get_block_below(get_parent()).resource + if next_event is DialogicConditionEvent: + if next_event.condition_type != DialogicConditionEvent.ConditionTypes.IF: + $AddElse.hide() + if parent_resource.condition_type == DialogicConditionEvent.ConditionTypes.ELSE: + $Label.text = "End of ELSE" + else: + hide() + + +func add_elif() -> void: + var timeline := find_parent('VisualEditor') + if timeline: + var resource := DialogicConditionEvent.new() + resource.condition_type = DialogicConditionEvent.ConditionTypes.ELIF + timeline.add_event_undoable(resource, get_parent().get_index()+1) + timeline.indent_events() + timeline.something_changed() + + +func add_else() -> void: + var timeline := find_parent('VisualEditor') + if timeline: + var resource := DialogicConditionEvent.new() + resource.condition_type = DialogicConditionEvent.ConditionTypes.ELSE + timeline.add_event_undoable(resource, get_parent().get_index()+1) + timeline.indent_events() + timeline.something_changed() diff --git a/addons/dialogic/Modules/Condition/ui_condition_end.gd.uid b/addons/dialogic/Modules/Condition/ui_condition_end.gd.uid new file mode 100644 index 0000000..4c3145c --- /dev/null +++ b/addons/dialogic/Modules/Condition/ui_condition_end.gd.uid @@ -0,0 +1 @@ +uid://hiahx6lrlm17 diff --git a/addons/dialogic/Modules/Condition/ui_condition_end.tscn b/addons/dialogic/Modules/Condition/ui_condition_end.tscn new file mode 100644 index 0000000..00c36ba --- /dev/null +++ b/addons/dialogic/Modules/Condition/ui_condition_end.tscn @@ -0,0 +1,26 @@ +[gd_scene load_steps=2 format=3 uid="uid://dpt6fwem03sqw"] + +[ext_resource type="Script" uid="uid://hiahx6lrlm17" path="res://addons/dialogic/Modules/Condition/ui_condition_end.gd" id="1_sh52m"] + +[node name="Condition_End" type="HBoxContainer"] +offset_right = 90.0 +offset_bottom = 23.0 +script = ExtResource("1_sh52m") + +[node name="Label" type="Label" parent="."] +offset_top = 2.0 +offset_right = 141.0 +offset_bottom = 28.0 +text = "End of condition X" + +[node name="AddElif" type="Button" parent="."] +offset_left = 145.0 +offset_right = 212.0 +offset_bottom = 31.0 +text = "Add Elif" + +[node name="AddElse" type="Button" parent="."] +offset_left = 216.0 +offset_right = 290.0 +offset_bottom = 31.0 +text = "Add Else" diff --git a/addons/dialogic/Modules/Core/event_end_branch.gd b/addons/dialogic/Modules/Core/event_end_branch.gd new file mode 100644 index 0000000..306adc5 --- /dev/null +++ b/addons/dialogic/Modules/Core/event_end_branch.gd @@ -0,0 +1,81 @@ +@tool +class_name DialogicEndBranchEvent +extends DialogicEvent + +## Event that indicates the end of a condition or choice (or custom branch). +## In text this is not stored (only as a change in indentation). + + +#region EXECUTE +################################################################################ + +func _execute() -> void: + dialogic.current_event_idx = find_next_index()-1 + finish() + + +## Returns the index of the first event that +## - is on the same "indentation" +## - is not a branching event (unless it is a branch starter) +func find_next_index() -> int: + var idx: int = dialogic.current_event_idx + while true: + idx += 1 + var event: DialogicEvent = dialogic.current_timeline.get_event(idx) + if not event: + return idx + + if event.can_contain_events: + if event._is_branch_starter(): + break + else: + idx = event.get_end_branch_index() + break + else: + break + + return idx + + +func get_opening_index() -> int: + var index: int = dialogic.current_timeline_events.find(self) + while true: + index -= 1 + if index < 0: + break + var event: DialogicEvent = dialogic.current_timeline_events[index] + if event is DialogicEndBranchEvent: + index = event.get_opening_index() + elif event.can_contain_events: + return index + return 0 + +#endregion + +#region INITIALIZE +################################################################################ + +func _init() -> void: + event_name = "End Branch" + disable_editor_button = true + +#endregion + +#region SAVING/LOADING +################################################################################ + +## NOTE: This event is very special. It is rarely stored at all, as it is usually +## just a placeholder for removing an indentation level. +## When copying events however, some representation of this is necessary. That's why this is half-implemented. +func to_text() -> String: + return "<>" + + +func from_text(_string:String) -> void: + pass + + +func is_valid_event(string:String) -> bool: + if string.strip_edges().begins_with("<>"): + return true + return false diff --git a/addons/dialogic/Modules/Core/event_end_branch.gd.uid b/addons/dialogic/Modules/Core/event_end_branch.gd.uid new file mode 100644 index 0000000..892b16c --- /dev/null +++ b/addons/dialogic/Modules/Core/event_end_branch.gd.uid @@ -0,0 +1 @@ +uid://3wq6lhrhifgj diff --git a/addons/dialogic/Modules/Core/icon.png b/addons/dialogic/Modules/Core/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..d97548051128613659ed7d84696b3acc64ff4279 GIT binary patch literal 558 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9E$svykh8Km+7D9BhG zNupn+*h5A1vnHB0WXW$Z40O znTJ`1*@3wVHy7Mgc*T;do?*>+SK;o1EN#bK5i=4}&h+0`S6uQ#;Z8G)P6yCnAW*QC ztW0_qw7y7c`F5StVRq7YChnhe?DagGQqF`h0R~k*#(+l%DzA&NCcq(>`+@8EZ}ZN~ zYCCi|@LJ)DS+mMtN%K2f_PMqdTsrO4qq~A%X8t7KmrJ)ut#yj%Jl}OXowfB?q2}tJ zlO>|NH||;X)9Z$S#k{>a6V}gOzh-T+w#@HaK^ijsd(LdloR(rZK>NxZRc%Dud8zNRhL?>$E25}8_)LrI`C1}$|SyW>4hCXw~OD}nELs5+s0!8yY|S`URZtM|Ax}dJLLE3 zeEssh|2)6ZGPU(9je}E47e5QWu9LY&COu#MSZsQH Array: + return [this_folder.path_join('event_end_branch.gd')] + + +func _get_subsystems() -> Array: + return [ + {'name':'Expressions', 'script':this_folder.path_join('subsystem_expression.gd')}, + {'name':'Animations', 'script':this_folder.path_join('subsystem_animation.gd')}, + {'name':'Inputs', 'script':this_folder.path_join('subsystem_input.gd')}, + ] + + +func _get_text_effects() -> Array[Dictionary]: + return [ + {'command':'aa', 'subsystem':'Inputs', 'method':'effect_autoadvance'}, + {'command':'ns', 'subsystem':'Inputs', 'method':'effect_noskip'}, + {'command':'input', 'subsystem':'Inputs', 'method':'effect_input'}, + ] + +func _get_text_modifiers() -> Array[Dictionary]: + return [ + {'subsystem':'Expressions', 'method':"modifier_condition", 'command':'if', 'mode':-1, "order":20}, + ] diff --git a/addons/dialogic/Modules/Core/index.gd.uid b/addons/dialogic/Modules/Core/index.gd.uid new file mode 100644 index 0000000..ab8c9c1 --- /dev/null +++ b/addons/dialogic/Modules/Core/index.gd.uid @@ -0,0 +1 @@ +uid://hdi17v8hqb0p diff --git a/addons/dialogic/Modules/Core/subsystem_animation.gd b/addons/dialogic/Modules/Core/subsystem_animation.gd new file mode 100644 index 0000000..4769134 --- /dev/null +++ b/addons/dialogic/Modules/Core/subsystem_animation.gd @@ -0,0 +1,42 @@ +extends DialogicSubsystem + +## Subsystem that allows entering and leaving an animation state. + +signal finished +signal animation_interrupted + +var prev_state: DialogicGameHandler.States = DialogicGameHandler.States.IDLE + +var _is_animating := false + +#region MAIN METHODS +#################################################################################################### + +func clear_game_state(_clear_flag := DialogicGameHandler.ClearFlags.FULL_CLEAR) -> void: + stop_animation() + + +func is_animating() -> bool: + return _is_animating + + +func start_animating() -> void: + prev_state = dialogic.current_state + dialogic.current_state = dialogic.States.ANIMATING + _is_animating = true + + +func animation_finished(_arg := "") -> void: + # It can happen that the animation state has already been stopped + if not is_animating(): + return + _is_animating = false + dialogic.current_state = prev_state as DialogicGameHandler.States + finished.emit() + + +func stop_animation() -> void: + animation_finished() + animation_interrupted.emit() + +#endregion diff --git a/addons/dialogic/Modules/Core/subsystem_animation.gd.uid b/addons/dialogic/Modules/Core/subsystem_animation.gd.uid new file mode 100644 index 0000000..f107f50 --- /dev/null +++ b/addons/dialogic/Modules/Core/subsystem_animation.gd.uid @@ -0,0 +1 @@ +uid://drgk63svehoum diff --git a/addons/dialogic/Modules/Core/subsystem_expression.gd b/addons/dialogic/Modules/Core/subsystem_expression.gd new file mode 100644 index 0000000..763d741 --- /dev/null +++ b/addons/dialogic/Modules/Core/subsystem_expression.gd @@ -0,0 +1,103 @@ +extends DialogicSubsystem + +## Subsystem that allows executing strings (with the Expression class). +## This is used by conditions and to allow expresions as variables. + + +#region MAIN METHODS +#################################################################################################### + +func execute_string(string:String, default: Variant = null, no_warning := false) -> Variant: + # Some methods are not supported by the expression class, but very useful. + # Thus they are recreated below and secretly added. + string = string.replace('range(', 'd_range(') + string = string.replace('len(', 'd_len(') + string = string.replace('regex(', 'd_regex(') + + + var regex: RegEx = RegEx.create_from_string('{([^{}]*)}') + + for res in regex.search_all(string): + var value: Variant = dialogic.VAR.get_variable(res.get_string()) + string = string.replace(res.get_string(), var_to_str(value)) + + if string.begins_with("{") and string.ends_with('}') and string.count("{") == 1: + string = string.trim_prefix("{").trim_suffix("}") + + var expr := Expression.new() + + var autoloads := [] + var autoload_names := [] + for c in get_tree().root.get_children(): + autoloads.append(c) + autoload_names.append(c.name) + + if expr.parse(string, autoload_names) != OK: + if not no_warning: + printerr('[Dialogic] Expression "', string, '" failed to parse.') + printerr(' ', expr.get_error_text()) + dialogic.print_debug_moment() + return default + + var result: Variant = expr.execute(autoloads, self) + if expr.has_execute_failed(): + if not no_warning: + printerr('[Dialogic] Expression "', string, '" failed to parse.') + printerr(' ', expr.get_error_text()) + dialogic.print_debug_moment() + return default + return result + + +func execute_condition(condition:String) -> bool: + if execute_string(condition, false): + return true + return false + + +var condition_modifier_regex := RegEx.create_from_string(r"(?(DEFINE)(?([^{}]|\{(?P>nobraces)\})*))\[if *(?(\{(?P>nobraces)\}|true\b|false\b))(?(\\\]|\\\/|[^\]\/])*)(\/(?(\\\]|[^\]])*))?\]") +func modifier_condition(text:String) -> String: + for find in condition_modifier_regex.search_all(text): + var insert := "" + if execute_condition(find.get_string("condition")): + insert = find.get_string("truetext") + else: + insert = find.get_string("falsetext") + + # Avoid double spaces at the insert position if the insert is empty. + if not insert.strip_edges() and " "+find.get_string()+" " in text: + text = text.replace(find.get_string()+" ", insert.strip_edges()) + else: + text = text.replace(find.get_string(), insert.strip_edges()) + + return text +#endregion + + +#region HELPERS +#################################################################################################### +func d_range(a1, a2=null,a3=null,a4=null) -> Array: + if !a2: + return range(a1) + elif !a3: + return range(a1, a2) + elif !a4: + return range(a1, a2, a3) + else: + return range(a1, a2, a3, a4) + +func d_len(arg:Variant) -> int: + return len(arg) + + +# Checks if there is a match in a string based on a regex pattern string. +func d_regex(input: String, pattern: String, offset: int = 0, end: int = -1) -> bool: + var regex: RegEx = RegEx.create_from_string(pattern) + regex.compile(pattern) + var match := regex.search(input, offset, end) + if match: + return true + else: + return false + +#endregion diff --git a/addons/dialogic/Modules/Core/subsystem_expression.gd.uid b/addons/dialogic/Modules/Core/subsystem_expression.gd.uid new file mode 100644 index 0000000..de98ff1 --- /dev/null +++ b/addons/dialogic/Modules/Core/subsystem_expression.gd.uid @@ -0,0 +1 @@ +uid://cn3846afxgeux diff --git a/addons/dialogic/Modules/Core/subsystem_input.gd b/addons/dialogic/Modules/Core/subsystem_input.gd new file mode 100644 index 0000000..8b31564 --- /dev/null +++ b/addons/dialogic/Modules/Core/subsystem_input.gd @@ -0,0 +1,217 @@ +extends DialogicSubsystem +## Subsystem that handles input, Auto-Advance, and skipping. +## +## This subsystem can be accessed via GDScript: `Dialogic.Inputs`. + + +signal dialogic_action_priority +signal dialogic_action + +## Whenever the Auto-Skip timer finishes, this signal is emitted. +## Configure Auto-Skip settings via [member auto_skip]. +signal autoskip_timer_finished + + +const _SETTING_INPUT_ACTION := "dialogic/text/input_action" +const _SETTING_INPUT_ACTION_DEFAULT := "dialogic_default_action" + +var input_block_timer := Timer.new() +var _auto_skip_timer_left: float = 0.0 +var action_was_consumed := false +var input_was_mouse_input := false + +var auto_skip: DialogicAutoSkip = null +var auto_advance: DialogicAutoAdvance = null +var manual_advance: DialogicManualAdvance = null + + +#region SUBSYSTEM METHODS +################################################################################ + +func clear_game_state(_clear_flag := DialogicGameHandler.ClearFlags.FULL_CLEAR) -> void: + if not is_node_ready(): + await ready + + manual_advance.disabled_until_next_event = false + manual_advance.system_enabled = true + + +func pause() -> void: + auto_advance.autoadvance_timer.paused = true + input_block_timer.paused = true + set_process(false) + + +func resume() -> void: + auto_advance.autoadvance_timer.paused = false + input_block_timer.paused = false + var is_autoskip_timer_done := _auto_skip_timer_left > 0.0 + set_process(!is_autoskip_timer_done) + + +func post_install() -> void: + dialogic.Settings.connect_to_change('autoadvance_delay_modifier', auto_advance._update_autoadvance_delay_modifier) + auto_skip.toggled.connect(_on_autoskip_toggled) + auto_skip._init() + add_child(input_block_timer) + input_block_timer.one_shot = true + + +#endregion + + +#region MAIN METHODS +################################################################################ + +func handle_input() -> void: + if dialogic.paused or is_input_blocked(): + return + + if not action_was_consumed: + # We want to stop auto-advancing that cancels on user inputs. + if (auto_advance.is_enabled() + and auto_advance.enabled_until_user_input): + auto_advance.enabled_until_user_input = false + action_was_consumed = true + + # We want to stop auto-skipping if it's enabled, we are listening + # to user inputs, and it's not instant skipping. + if (auto_skip.disable_on_user_input + and auto_skip.enabled): + auto_skip.enabled = false + action_was_consumed = true + + + dialogic_action_priority.emit() + + if action_was_consumed: + action_was_consumed = false + return + + dialogic_action.emit() + input_was_mouse_input = false + + +## Unhandled Input is used for all NON-Mouse based inputs. +func _unhandled_input(event:InputEvent) -> void: + if is_input_pressed(event, true): + if event is InputEventMouse or event is InputEventScreenTouch: + return + input_was_mouse_input = false + handle_input() + + +## Input is used for all mouse based inputs. +## If any DialogicInputNode is present this won't do anything (because that node handles MouseInput then). +func _input(event:InputEvent) -> void: + if is_input_pressed(event): + if not event is InputEventMouse: + return + if get_tree().get_nodes_in_group('dialogic_input').any(func(node):return node.is_visible_in_tree()): + return + input_was_mouse_input = true + handle_input() + + +func is_input_pressed(event: InputEvent, exact := false) -> bool: + var action: String = ProjectSettings.get_setting(_SETTING_INPUT_ACTION, _SETTING_INPUT_ACTION_DEFAULT) + return (event is InputEventAction and event.action == action) or Input.is_action_just_pressed(action, exact) + + +## This is called from the gui_input of the InputCatcher and DialogText nodes +func handle_node_gui_input(event:InputEvent) -> void: + if Input.is_action_just_pressed(ProjectSettings.get_setting(_SETTING_INPUT_ACTION, _SETTING_INPUT_ACTION_DEFAULT)): + if event is InputEventMouseButton and event.pressed: + input_was_mouse_input = true + handle_input() + + +func is_input_blocked() -> bool: + return input_block_timer.time_left > 0.0 and not auto_skip.enabled + + +func block_input(time:=0.1) -> void: + if time > 0: + input_block_timer.wait_time = max(time, input_block_timer.time_left) + input_block_timer.start() + + +func _ready() -> void: + auto_skip = DialogicAutoSkip.new() + auto_advance = DialogicAutoAdvance.new() + manual_advance = DialogicManualAdvance.new() + + # We use the process method to count down the auto-start_autoskip_timer timer. + set_process(false) + + +func stop_timers() -> void: + auto_advance.autoadvance_timer.stop() + input_block_timer.stop() + _auto_skip_timer_left = 0.0 + +#endregion + + +#region AUTO-SKIP +################################################################################ + +## This method will advance the timeline based on Auto-Skip settings. +## The state, whether Auto-Skip is enabled, is ignored. +func start_autoskip_timer() -> void: + _auto_skip_timer_left = auto_skip.time_per_event + set_process(true) + await autoskip_timer_finished + + +## If Auto-Skip disables, we want to stop the timer. +func _on_autoskip_toggled(enabled: bool) -> void: + if not enabled: + _auto_skip_timer_left = 0.0 + + +## Handles fine-grained Auto-Skip logic. +## The [method _process] method allows for a more precise timer than the +## [Timer] class. +func _process(delta: float) -> void: + if _auto_skip_timer_left > 0: + _auto_skip_timer_left -= delta + + if _auto_skip_timer_left <= 0: + autoskip_timer_finished.emit() + + else: + autoskip_timer_finished.emit() + set_process(false) + +#endregion + +#region TEXT EFFECTS +################################################################################ + + +func effect_input(_text_node:Control, skipped:bool, _argument:String) -> void: + if skipped: + return + dialogic.Text.show_next_indicators() + await dialogic.Inputs.dialogic_action_priority + dialogic.Text.hide_next_indicators() + dialogic.Inputs.action_was_consumed = true + + +func effect_noskip(text_node:Control, skipped:bool, argument:String) -> void: + dialogic.Text.set_text_reveal_skippable(false, true) + manual_advance.disabled_until_next_event = true + effect_autoadvance(text_node, skipped, argument) + + +func effect_autoadvance(_text_node: Control, _skipped:bool, argument:String) -> void: + if argument.ends_with('?'): + argument = argument.trim_suffix('?') + else: + auto_advance.enabled_until_next_event = true + + if argument.is_valid_float(): + auto_advance.override_delay_for_current_event = float(argument) + +#endregion diff --git a/addons/dialogic/Modules/Core/subsystem_input.gd.uid b/addons/dialogic/Modules/Core/subsystem_input.gd.uid new file mode 100644 index 0000000..29cc846 --- /dev/null +++ b/addons/dialogic/Modules/Core/subsystem_input.gd.uid @@ -0,0 +1 @@ +uid://crdsvy044intj diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Base_Default/default_layout_base.gd b/addons/dialogic/Modules/DefaultLayoutParts/Base_Default/default_layout_base.gd new file mode 100644 index 0000000..af6878c --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Base_Default/default_layout_base.gd @@ -0,0 +1,21 @@ +@tool +extends DialogicLayoutBase + +## The default layout base scene. + +@export var canvas_layer: int = 1 +@export var follow_viewport: bool = false + +@export_subgroup("Global") +@export var global_bg_color: Color = Color(0, 0, 0, 0.9) +@export var global_font_color: Color = Color("white") +@export_file('*.ttf', '*.tres') var global_font: String = "" +@export var global_font_size: int = 18 + + +func _apply_export_overrides() -> void: + # apply layer + set(&'layer', canvas_layer) + set(&'follow_viewport_enabled', follow_viewport) + + diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Base_Default/default_layout_base.gd.uid b/addons/dialogic/Modules/DefaultLayoutParts/Base_Default/default_layout_base.gd.uid new file mode 100644 index 0000000..b39227f --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Base_Default/default_layout_base.gd.uid @@ -0,0 +1 @@ +uid://yivwmkfwrvfr diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Base_Default/default_layout_base.tscn b/addons/dialogic/Modules/DefaultLayoutParts/Base_Default/default_layout_base.tscn new file mode 100644 index 0000000..da9159f --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Base_Default/default_layout_base.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=3 uid="uid://cqpb3ie51rwl5"] + +[ext_resource type="Script" uid="uid://yivwmkfwrvfr" path="res://addons/dialogic/Modules/DefaultLayoutParts/Base_Default/default_layout_base.gd" id="1_ifsho"] + +[node name="DefaultLayoutBase" type="CanvasLayer"] +script = ExtResource("1_ifsho") diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Base_Default/part_config.cfg b/addons/dialogic/Modules/DefaultLayoutParts/Base_Default/part_config.cfg new file mode 100644 index 0000000..99751e8 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Base_Default/part_config.cfg @@ -0,0 +1,6 @@ +[style] +type = "Layout Base" +name = "Default Layout Base" +author = "Dialogic" +description = "A very simple base for layouts." +scene = "default_layout_base.tscn" diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Base_TextBubble/part_config.cfg b/addons/dialogic/Modules/DefaultLayoutParts/Base_TextBubble/part_config.cfg new file mode 100644 index 0000000..7b1adc9 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Base_TextBubble/part_config.cfg @@ -0,0 +1,6 @@ +[style] +type = "Layout Base" +name = "Textbubble Base" +author = "Dialogic" +description = "A base scene for the textbubble style. Expects a textbubble layer." +scene = "text_bubble_base.tscn" diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Base_TextBubble/text_bubble_base.gd b/addons/dialogic/Modules/DefaultLayoutParts/Base_TextBubble/text_bubble_base.gd new file mode 100644 index 0000000..604b46b --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Base_TextBubble/text_bubble_base.gd @@ -0,0 +1,95 @@ +@tool +extends DialogicLayoutBase + +## This layout won't do anything on its own + +var bubbles: Array = [] +var registered_characters: Dictionary = {} + +@export_group("Main") +@export_range(1, 25, 1) var bubble_count: int = 2 + + +func _ready() -> void: + if Engine.is_editor_hint(): + return + + DialogicUtil.autoload().Text.about_to_show_text.connect(_on_dialogic_text_event) + $Example/CRT.position = $Example.get_viewport_rect().size/2 + + if not has_node('TextBubbleLayer'): + return + + if len(bubbles) < bubble_count: + add_bubble() + + +func register_character(character:Variant, node:Node): + if typeof(character) == TYPE_STRING: + var character_string: String = character + if character.begins_with("res://"): + character = load(character) + else: + character = DialogicResourceUtil.get_character_resource(character) + if not character: + printerr("[Dialogic] Textbubble: Tried registering character from invalid string '", character_string, "'.") + + registered_characters[character] = node + if len(registered_characters) > len(bubbles) and len(bubbles) < bubble_count: + add_bubble() + + +func _get_persistent_info() -> Dictionary: + return {"textbubble_registers": registered_characters} + + +func _load_persistent_info(info: Dictionary) -> void: + var register_info: Dictionary = info.get("textbubble_registers", {}) + for character in register_info: + if is_instance_valid(register_info[character]): + register_character(character, register_info[character]) + + +func add_bubble() -> void: + if not has_node('TextBubbleLayer'): + return + + var new_bubble: Control = get_node("TextBubbleLayer").add_bubble() + bubbles.append(new_bubble) + + +func _on_dialogic_text_event(info:Dictionary): + var bubble_to_use: Node + for bubble in bubbles: + if bubble.current_character == info.character: + bubble_to_use = bubble + + if bubble_to_use == null: + for bubble in bubbles: + if bubble.current_character == null: + bubble_to_use = bubble + + if bubble_to_use == null: + bubble_to_use = bubbles[0] + + var node_to_point_at: Node + if info.character in registered_characters: + node_to_point_at = registered_characters[info.character] + $Example.hide() + else: + node_to_point_at = $Example/CRT/Marker + $Example.show() + + bubble_to_use.current_character = info.character + bubble_to_use.node_to_point_at = node_to_point_at + if not bubble_to_use.visible: + bubble_to_use.reset() + if has_node('TextBubbleLayer'): + get_node("TextBubbleLayer").bubble_apply_overrides(bubble_to_use) + bubble_to_use.open() + + ## Now close other bubbles + for bubble in bubbles: + if bubble != bubble_to_use: + bubble.close() + bubble.current_character = null diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Base_TextBubble/text_bubble_base.gd.uid b/addons/dialogic/Modules/DefaultLayoutParts/Base_TextBubble/text_bubble_base.gd.uid new file mode 100644 index 0000000..b1e68a3 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Base_TextBubble/text_bubble_base.gd.uid @@ -0,0 +1 @@ +uid://v8guu7n6gv8a diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Base_TextBubble/text_bubble_base.tscn b/addons/dialogic/Modules/DefaultLayoutParts/Base_TextBubble/text_bubble_base.tscn new file mode 100644 index 0000000..9b08a54 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Base_TextBubble/text_bubble_base.tscn @@ -0,0 +1,55 @@ +[gd_scene load_steps=3 format=3 uid="uid://syki6k0e6aac"] + +[ext_resource type="Script" uid="uid://v8guu7n6gv8a" path="res://addons/dialogic/Modules/DefaultLayoutParts/Base_TextBubble/text_bubble_base.gd" id="1_urqwc"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_70ljh"] +content_margin_left = 5.0 +content_margin_top = 5.0 +content_margin_right = 5.0 +content_margin_bottom = 5.0 +bg_color = Color(0, 0, 0, 0.654902) + +[node name="TextBubbleHolder" type="CanvasLayer"] +script = ExtResource("1_urqwc") + +[node name="Example" type="Control" parent="."] +visible = false +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="Label" type="RichTextLabel" parent="Example"] +layout_mode = 1 +anchors_preset = 2 +anchor_top = 1.0 +anchor_bottom = 1.0 +offset_left = 12.0 +offset_top = -235.0 +offset_right = 835.0 +offset_bottom = -14.0 +grow_vertical = 0 +theme_override_styles/normal = SubResource("StyleBoxFlat_70ljh") +bbcode_enabled = true +text = "This is a fallback bubble, that is not actually connected to any character. In game use the following code to add speech bubbles to a character: +[color=darkgray] +var layout = Dialogic.start(timeline_path) +layout.register_character(character_resource, node) +[/color] +- [color=lightblue]character_resource[/color] should be a loaded DialogicCharacter (a .dch file). +- [color=lightblue]node[/color] should be the 2D or 3D node the bubble should point at. + -> E.g. [color=darkgray]layout.register_character(load(\"res://path/to/my/character.dch\"), $BubbleMarker)" + +[node name="CRT" type="ColorRect" parent="Example"] +layout_mode = 0 +offset_left = 504.0 +offset_top = 290.0 +offset_right = 540.0 +offset_bottom = 324.0 +rotation = 0.785397 +color = Color(1, 0.313726, 1, 1) + +[node name="Marker" type="Marker2D" parent="Example/CRT"] +position = Vector2(10.6066, 9.1924) diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_FullBackground/background_layer_icon.svg b/addons/dialogic/Modules/DefaultLayoutParts/Layer_FullBackground/background_layer_icon.svg new file mode 100644 index 0000000..3e0b300 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_FullBackground/background_layer_icon.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_FullBackground/background_layer_icon.svg.import b/addons/dialogic/Modules/DefaultLayoutParts/Layer_FullBackground/background_layer_icon.svg.import new file mode 100644 index 0000000..0897452 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_FullBackground/background_layer_icon.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cm8w3lr5o038d" +path="res://.godot/imported/background_layer_icon.svg-021cd7ab7c646ee621f9b89b8dfc9d60.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_FullBackground/background_layer_icon.svg" +dest_files=["res://.godot/imported/background_layer_icon.svg-021cd7ab7c646ee621f9b89b8dfc9d60.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_FullBackground/full_background_layer.gd b/addons/dialogic/Modules/DefaultLayoutParts/Layer_FullBackground/full_background_layer.gd new file mode 100644 index 0000000..9162300 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_FullBackground/full_background_layer.gd @@ -0,0 +1,2 @@ +@tool +extends DialogicLayoutLayer diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_FullBackground/full_background_layer.gd.uid b/addons/dialogic/Modules/DefaultLayoutParts/Layer_FullBackground/full_background_layer.gd.uid new file mode 100644 index 0000000..6006d13 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_FullBackground/full_background_layer.gd.uid @@ -0,0 +1 @@ +uid://bqdylb4maacf0 diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_FullBackground/full_background_layer.tscn b/addons/dialogic/Modules/DefaultLayoutParts/Layer_FullBackground/full_background_layer.tscn new file mode 100644 index 0000000..7e2bdcb --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_FullBackground/full_background_layer.tscn @@ -0,0 +1,25 @@ +[gd_scene load_steps=3 format=3 uid="uid://c1k5m0w3r40xf"] + +[ext_resource type="Script" uid="uid://bqdylb4maacf0" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_FullBackground/full_background_layer.gd" id="1_tu40u"] +[ext_resource type="Script" uid="uid://oxcjhq2817c7" path="res://addons/dialogic/Modules/Background/node_background_holder.gd" id="2_ghan2"] + +[node name="BackgroundLayer" type="Control"] +layout_direction = 2 +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_tu40u") + +[node name="DialogicNode_BackgroundHolder" type="ColorRect" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +color = Color(1, 1, 1, 0) +script = ExtResource("2_ghan2") diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_FullBackground/part_config.cfg b/addons/dialogic/Modules/DefaultLayoutParts/Layer_FullBackground/part_config.cfg new file mode 100644 index 0000000..2dd606a --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_FullBackground/part_config.cfg @@ -0,0 +1,7 @@ +[style] +type = "Layer" +name = "Full Background" +author = "Dialogic" +description = "A simple layer displaying backgrounds." +scene = "full_background_layer.tscn" +icon = "background_layer_icon.svg" diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_FullBackground/preview.png b/addons/dialogic/Modules/DefaultLayoutParts/Layer_FullBackground/preview.png new file mode 100644 index 0000000000000000000000000000000000000000..9c42d7d8ffcb07feca49d23f5726e8135d455840 GIT binary patch literal 924 zcmeAS@N?(olHy`uVBq!ia0y~yVAKJ!w{S24$%V0PJAeW$na<7up3cq+1x5L3nK`Kp z3>p(_C)#=(4iIVe4_>-Rl%2cFB4vf2m`k^XmuPpw!Y!gvr3RHRd3sxPJ=fY-RdT=XQSzGh2S+J=5~MwZ(Jn z7$j$1{lr^Pz|kYFS$+5MUE8_EzrXus*V%uWSaf@vn`j;|S~v?lB8wRq^pruEv0|xx z8BmbD#M9T6{W-Tdw}tSd|7SCSLXst}5hc#~xw)x%B@E6*sfi`2DGKG8B^e6tp1uL$ zjeO$3$Zhj Control: + return $Pointer + + +func get_title() -> Label: + return %Title + + +func get_text() -> RichTextLabel: + return %Text + + +func get_extra() -> RichTextLabel: + return %Extra + + +func get_panel() -> PanelContainer: + return %Panel + + +func get_panel_point() -> PanelContainer: + return %PanelPoint + + +func _ready() -> void: + if Engine.is_editor_hint(): + return + + get_pointer().hide() + var text_system: Node = DialogicUtil.autoload().get(&'Text') + var _error: int = 0 + _error = text_system.connect(&'animation_textbox_hide', get_pointer().hide) + _error = text_system.connect(&'meta_hover_started', _on_dialogic_display_dialog_text_meta_hover_started) + _error = text_system.connect(&'meta_hover_ended', _on_dialogic_display_dialog_text_meta_hover_ended) + + +## Method that shows the bubble and fills in the info +func _on_dialogic_display_dialog_text_meta_hover_started(meta: String) -> void: + var entry_info := DialogicUtil.autoload().Glossary.get_entry(meta) + + if entry_info.is_empty(): + return + + get_pointer().show() + get_title().text = entry_info.title + get_text().text = entry_info.text + get_text().text = ['', '[center]', '[right]'][text_alignment] + get_text().text + get_extra().text = entry_info.extra + get_extra().text = ['', '[center]', '[right]'][extra_alignment] + get_extra().text + get_pointer().global_position = get_pointer().get_global_mouse_position() + + if title_color_mode == TextColorModes.ENTRY: + get_title().add_theme_color_override(&"font_color", entry_info.color) + if text_color_mode == TextColorModes.ENTRY: + get_text().add_theme_color_override(&"default_color", entry_info.color) + if extra_color_mode == TextColorModes.ENTRY: + get_extra().add_theme_color_override(&"default_color", entry_info.color) + + match box_modulate_mode: + ModulateModes.ENTRY_COLOR_ON_BOX: + get_panel().self_modulate = entry_info.color + get_panel_point().self_modulate = entry_info.color + + +## Method that keeps the bubble at mouse position when visible +func _process(_delta: float) -> void: + if Engine.is_editor_hint(): + return + + var pointer: Control = get_pointer() + if pointer.visible: + pointer.global_position = pointer.get_global_mouse_position() + + +## Method that hides the bubble +func _on_dialogic_display_dialog_text_meta_hover_ended(_meta:String) -> void: + get_pointer().hide() + + + +func _apply_export_overrides() -> void: + # Apply fonts + var font: Font + var global_font_setting: String = get_global_setting(&"font", '') + if font_use_global and ResourceLoader.exists(global_font_setting): + font = load(global_font_setting) + elif ResourceLoader.exists(font_custom): + font = load(font_custom) + + var title: Label = get_title() + if font: + title.add_theme_font_override(&"font", font) + title.horizontal_alignment = title_alignment as HorizontalAlignment + + # Apply font & sizes + title.add_theme_font_size_override(&"font_size", font_title_size) + var labels: Array[RichTextLabel] = [get_text(), get_extra()] + var sizes: PackedInt32Array = [font_text_size, font_extra_size] + for i : int in len(labels): + if font: + labels[i].add_theme_font_override(&'normal_font', font) + + labels[i].add_theme_font_size_override(&"normal_font_size", sizes[i]) + labels[i].add_theme_font_size_override(&"bold_font_size", sizes[i]) + labels[i].add_theme_font_size_override(&"italics_font_size", sizes[i]) + labels[i].add_theme_font_size_override(&"bold_italics_font_size", sizes[i]) + labels[i].add_theme_font_size_override(&"mono_font_size", sizes[i]) + + + # Apply text colors + # this applies Global or Custom colors, entry colors are applied on hover + var controls: Array[Control] = [get_title(), get_text(), get_extra()] + var settings: Array[StringName] = [&'font_color', &'default_color', &'default_color'] + var color_modes: Array[TextColorModes] = [title_color_mode, text_color_mode, extra_color_mode] + var custom_colors: PackedColorArray = [title_custom_color, text_custom_color, extra_custom_color] + for i : int in len(controls): + match color_modes[i]: + TextColorModes.GLOBAL: + controls[i].add_theme_color_override(settings[i], get_global_setting(&'font_color', custom_colors[i]) as Color) + TextColorModes.CUSTOM: + controls[i].add_theme_color_override(settings[i], custom_colors[i]) + + # Apply box size + var panel: PanelContainer = get_panel() + panel.size.x = box_width + panel.position.x = -box_width/2.0 + + # Apply box coloring + match box_modulate_mode: + ModulateModes.BASE_COLOR_ONLY: + panel.self_modulate = box_base_modulate + get_panel_point().self_modulate = box_base_modulate + ModulateModes.GLOBAL_BG_COLOR: + panel.self_modulate = get_global_setting(&'bg_color', box_base_modulate) + get_panel_point().self_modulate = get_global_setting(&'bg_color', box_base_modulate) diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_Glossary/glossary_popup_layer.gd.uid b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Glossary/glossary_popup_layer.gd.uid new file mode 100644 index 0000000..2204abd --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Glossary/glossary_popup_layer.gd.uid @@ -0,0 +1 @@ +uid://o2cnjam8bomr diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_Glossary/glossary_popup_layer.tscn b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Glossary/glossary_popup_layer.tscn new file mode 100644 index 0000000..933fc6e --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Glossary/glossary_popup_layer.tscn @@ -0,0 +1,87 @@ +[gd_scene load_steps=3 format=3 uid="uid://dsbwnp5hegnu3"] + +[ext_resource type="Script" uid="uid://o2cnjam8bomr" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_Glossary/glossary_popup_layer.gd" id="1_3nmfj"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_a3cyk"] +bg_color = Color(0.12549, 0.12549, 0.12549, 1) +border_width_left = 2 +border_width_top = 4 +border_width_right = 4 +border_width_bottom = 2 +corner_radius_top_left = 5 +corner_radius_top_right = 5 +corner_radius_bottom_right = 5 +corner_radius_bottom_left = 5 +expand_margin_left = 5.0 +expand_margin_top = 5.0 +expand_margin_right = 5.0 +expand_margin_bottom = 5.0 + +[node name="Glossary" type="Control"] +layout_mode = 3 +anchors_preset = 0 +mouse_filter = 2 +script = ExtResource("1_3nmfj") + +[node name="Pointer" type="Control" parent="."] +anchors_preset = 0 + +[node name="Panel" type="PanelContainer" parent="Pointer"] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = 7 +anchor_left = 0.5 +anchor_top = 1.0 +anchor_right = 0.5 +anchor_bottom = 1.0 +offset_left = -81.0 +offset_top = -113.0 +offset_right = 86.0 +offset_bottom = -35.0 +grow_horizontal = 2 +grow_vertical = 0 +theme_override_styles/panel = SubResource("StyleBoxFlat_a3cyk") +metadata/_edit_use_custom_anchors = true +metadata/_edit_layout_mode = 1 + +[node name="VBox" type="VBoxContainer" parent="Pointer/Panel"] +layout_mode = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Pointer/Panel/VBox"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="HSeparator" type="HSeparator" parent="Pointer/Panel/VBox"] +layout_mode = 2 + +[node name="Text" type="RichTextLabel" parent="Pointer/Panel/VBox"] +unique_name_in_owner = true +layout_mode = 2 +bbcode_enabled = true +fit_content = true + +[node name="Extra" type="RichTextLabel" parent="Pointer/Panel/VBox"] +unique_name_in_owner = true +layout_mode = 2 +theme_override_font_sizes/normal_font_size = 15 +bbcode_enabled = true +fit_content = true + +[node name="Control" type="Control" parent="Pointer/Panel"] +show_behind_parent = true +layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 8 + +[node name="PanelPoint" type="PanelContainer" parent="Pointer/Panel/Control"] +unique_name_in_owner = true +layout_mode = 0 +offset_left = -0.999999 +offset_top = -14.0 +offset_right = 19.0 +offset_bottom = 6.0 +rotation = 0.75799 +size_flags_horizontal = 4 +size_flags_vertical = 8 +theme_override_styles/panel = SubResource("StyleBoxFlat_a3cyk") diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_Glossary/part_config.cfg b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Glossary/part_config.cfg new file mode 100644 index 0000000..e7e772b --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Glossary/part_config.cfg @@ -0,0 +1,7 @@ +[style] +type = "Layer" +name = "Popup Glossary" +author = "Dialogic" +description = "A popup that that appears when hovering glossary entries." +scene = "glossary_popup_layer.tscn" +icon = "popup_glossary_layer_icon.svg" diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_Glossary/popup_glossary_layer_icon.svg b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Glossary/popup_glossary_layer_icon.svg new file mode 100644 index 0000000..bedd4a7 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Glossary/popup_glossary_layer_icon.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_Glossary/popup_glossary_layer_icon.svg.import b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Glossary/popup_glossary_layer_icon.svg.import new file mode 100644 index 0000000..3c17af6 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Glossary/popup_glossary_layer_icon.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c3q86ma7r6l57" +path="res://.godot/imported/popup_glossary_layer_icon.svg-4af96bdb70714a5289a4ffe42cf8f357.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_Glossary/popup_glossary_layer_icon.svg" +dest_files=["res://.godot/imported/popup_glossary_layer_icon.svg-4af96bdb70714a5289a4ffe42cf8f357.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=0.3 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_Glossary/preview.png b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Glossary/preview.png new file mode 100644 index 0000000000000000000000000000000000000000..8dc08bbb4796c82fab40115c270933a7cbed7e96 GIT binary patch literal 12796 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 literal 0 HcmV?d00001 diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_Glossary/preview.png.import b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Glossary/preview.png.import new file mode 100644 index 0000000..06b40ed --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Glossary/preview.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dydv1g180rqex" +path="res://.godot/imported/preview.png-573567ffd6162e40c78fe5aca0af73c9.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_Glossary/preview.png" +dest_files=["res://.godot/imported/preview.png-573567ffd6162e40c78fe5aca0af73c9.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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/dialogic/Modules/DefaultLayoutParts/Layer_History/example_history_item.gd b/addons/dialogic/Modules/DefaultLayoutParts/Layer_History/example_history_item.gd new file mode 100644 index 0000000..83fef50 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_History/example_history_item.gd @@ -0,0 +1,30 @@ +extends Container + +func get_text_box() -> RichTextLabel: + return %TextBox + + +func get_name_label() -> Label: + return %NameLabel + + +func get_icon() -> TextureRect: + return %Icon + + +func load_info(text:String, character:String = "", character_color: Color =Color(), icon:Texture= null) -> void: + get_text_box().text = text + var name_label: Label = get_name_label() + if character: + name_label.text = character + name_label.add_theme_color_override('font_color', character_color) + name_label.show() + else: + name_label.hide() + + var icon_node: TextureRect = get_icon() + if icon == null: + icon_node.hide() + else: + icon_node.show() + icon_node.texture = icon diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_History/example_history_item.gd.uid b/addons/dialogic/Modules/DefaultLayoutParts/Layer_History/example_history_item.gd.uid new file mode 100644 index 0000000..a06b4bf --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_History/example_history_item.gd.uid @@ -0,0 +1 @@ +uid://67t6pr2eatac diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_History/example_history_item.tscn b/addons/dialogic/Modules/DefaultLayoutParts/Layer_History/example_history_item.tscn new file mode 100644 index 0000000..4ae76d4 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_History/example_history_item.tscn @@ -0,0 +1,46 @@ +[gd_scene load_steps=3 format=3 uid="uid://cuoywrmvda1yg"] + +[ext_resource type="Script" uid="uid://67t6pr2eatac" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_History/example_history_item.gd" id="1_dgoja"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_upgjp"] +content_margin_left = 5.0 +content_margin_top = 5.0 +content_margin_right = 5.0 +content_margin_bottom = 5.0 +bg_color = Color(0.780392, 0.780392, 0.780392, 0.156863) +corner_radius_top_left = 5 +corner_radius_top_right = 5 +corner_radius_bottom_right = 5 +corner_radius_bottom_left = 5 + +[node name="HistoryItem" type="PanelContainer"] +offset_left = -37.0 +offset_top = 510.0 +offset_right = 1085.0 +offset_bottom = 555.0 +theme_override_styles/panel = SubResource("StyleBoxFlat_upgjp") +script = ExtResource("1_dgoja") + +[node name="HBoxContainer" type="HBoxContainer" parent="."] +layout_mode = 2 + +[node name="Icon" type="TextureRect" parent="HBoxContainer"] +unique_name_in_owner = true +custom_minimum_size = Vector2(30, 30) +layout_mode = 2 +expand_mode = 1 +stretch_mode = 4 + +[node name="NameLabel" type="Label" parent="HBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 0 + +[node name="TextBox" type="RichTextLabel" parent="HBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 4 +bbcode_enabled = true +text = "Some tex" +fit_content = true diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_History/history_icon.svg b/addons/dialogic/Modules/DefaultLayoutParts/Layer_History/history_icon.svg new file mode 100644 index 0000000..4d21936 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_History/history_icon.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_History/history_icon.svg.import b/addons/dialogic/Modules/DefaultLayoutParts/Layer_History/history_icon.svg.import new file mode 100644 index 0000000..a1619ef --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_History/history_icon.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cvq7qbkngeoud" +path="res://.godot/imported/history_icon.svg-0be9d23e65368ea3983968e4ce0e43d3.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_History/history_icon.svg" +dest_files=["res://.godot/imported/history_icon.svg-0be9d23e65368ea3983968e4ce0e43d3.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=0.3 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_History/history_layer.gd b/addons/dialogic/Modules/DefaultLayoutParts/Layer_History/history_layer.gd new file mode 100644 index 0000000..d420021 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_History/history_layer.gd @@ -0,0 +1,151 @@ +@tool +extends DialogicLayoutLayer + +## Example scene for viewing the History +## Implements most of the visual options from 1.x History mode + +@export_group('Look') +@export_subgroup('Font') +@export var font_use_global_size: bool = true +@export var font_custom_size: int = 15 +@export var font_use_global_fonts: bool = true +@export_file('*.ttf', '*.tres') var font_custom_normal: String = "" +@export_file('*.ttf', '*.tres') var font_custom_bold: String = "" +@export_file('*.ttf', '*.tres') var font_custom_italics: String = "" + +@export_subgroup('Buttons') +@export var show_open_button: bool = true +@export var show_close_button: bool = true + +@export_group('Settings') +@export_subgroup('Events') +@export var show_all_choices: bool = true +@export var show_join_and_leave: bool = true + +@export_subgroup('Behaviour') +@export var scroll_to_bottom: bool = true +@export var show_name_colors: bool = true +@export var name_delimeter: String = ": " + +var scroll_to_bottom_flag: bool = false + +@export_group('Private') +@export var HistoryItem: PackedScene = null + +var history_item_theme: Theme = null + +func get_show_history_button() -> Button: + return $ShowHistory + + +func get_hide_history_button() -> Button: + return $HideHistory + + +func get_history_box() -> ScrollContainer: + return %HistoryBox + + +func get_history_log() -> VBoxContainer: + return %HistoryLog + + +func _ready() -> void: + if Engine.is_editor_hint(): + return + DialogicUtil.autoload().History.open_requested.connect(_on_show_history_pressed) + DialogicUtil.autoload().History.close_requested.connect(_on_hide_history_pressed) + + +func _apply_export_overrides() -> void: + var history_subsystem: Node = DialogicUtil.autoload().get(&'History') + if history_subsystem != null: + get_show_history_button().visible = show_open_button and history_subsystem.get(&'simple_history_enabled') + else: + set(&'visible', false) + + history_item_theme = Theme.new() + + if font_use_global_size: + history_item_theme.default_font_size = get_global_setting(&'font_size', font_custom_size) + else: + history_item_theme.default_font_size = font_custom_size + + if font_use_global_fonts and ResourceLoader.exists(get_global_setting(&'font', '') as String): + history_item_theme.default_font = load(get_global_setting(&'font', '') as String) as Font + elif ResourceLoader.exists(font_custom_normal): + history_item_theme.default_font = load(font_custom_normal) + + if ResourceLoader.exists(font_custom_bold): + history_item_theme.set_font(&'RichtTextLabel', &'bold_font', load(font_custom_bold) as Font) + if ResourceLoader.exists(font_custom_italics): + history_item_theme.set_font(&'RichtTextLabel', &'italics_font', load(font_custom_italics) as Font) + + + +func _process(_delta : float) -> void: + if Engine.is_editor_hint(): + return + if scroll_to_bottom_flag and get_history_box().visible and get_history_log().get_child_count(): + await get_tree().process_frame + get_history_box().ensure_control_visible(get_history_log().get_children()[-1] as Control) + scroll_to_bottom_flag = false + + +func _on_show_history_pressed() -> void: + DialogicUtil.autoload().paused = true + show_history() + + +func show_history() -> void: + for child: Node in get_history_log().get_children(): + child.queue_free() + + var history_subsystem: Node = DialogicUtil.autoload().get(&'History') + for info: Dictionary in history_subsystem.call(&'get_simple_history'): + var history_item : Node = HistoryItem.instantiate() + history_item.set(&'theme', history_item_theme) + match info.event_type: + "Text": + if info.has('character') and info['character']: + if show_name_colors: + history_item.call(&'load_info', info['text'], info['character']+name_delimeter, info['character_color']) + else: + history_item.call(&'load_info', info['text'], info['character']+name_delimeter) + else: + history_item.call(&'load_info', info['text']) + "Character": + if !show_join_and_leave: + history_item.queue_free() + continue + history_item.call(&'load_info', '[i]'+info['text']) + "Choice": + var choices_text: String = "" + if show_all_choices: + for i : String in info['all_choices']: + if i.ends_with('#disabled'): + choices_text += "- [i]("+i.trim_suffix('#disabled')+")[/i]\n" + elif i == info['text']: + choices_text += "-> [b]"+i+"[/b]\n" + else: + choices_text += "-> "+i+"\n" + else: + choices_text += "- [b]"+info['text']+"[/b]\n" + history_item.call(&'load_info', choices_text) + + get_history_log().add_child(history_item) + + if scroll_to_bottom: + scroll_to_bottom_flag = true + + get_show_history_button().hide() + get_hide_history_button().visible = show_close_button + get_history_box().show() + + +func _on_hide_history_pressed() -> void: + DialogicUtil.autoload().paused = false + get_history_box().hide() + get_hide_history_button().hide() + var history_subsystem: Node = DialogicUtil.autoload().get(&'History') + get_show_history_button().visible = show_open_button and history_subsystem.get(&'simple_history_enabled') diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_History/history_layer.gd.uid b/addons/dialogic/Modules/DefaultLayoutParts/Layer_History/history_layer.gd.uid new file mode 100644 index 0000000..5641a01 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_History/history_layer.gd.uid @@ -0,0 +1 @@ +uid://gv8mqbjor5nu diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_History/history_layer.tscn b/addons/dialogic/Modules/DefaultLayoutParts/Layer_History/history_layer.tscn new file mode 100644 index 0000000..030e357 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_History/history_layer.tscn @@ -0,0 +1,93 @@ +[gd_scene load_steps=4 format=3 uid="uid://lx24i8fl6uo"] + +[ext_resource type="Script" uid="uid://gv8mqbjor5nu" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_History/history_layer.gd" id="1_4mqm3"] +[ext_resource type="PackedScene" uid="uid://cuoywrmvda1yg" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_History/example_history_item.tscn" id="2_x1xgk"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_1hdvb"] +content_margin_left = 10.0 +content_margin_top = 10.0 +content_margin_right = 10.0 +content_margin_bottom = 10.0 +bg_color = Color(0, 0, 0, 0.776471) +border_color = Color(0.8, 0.8, 0.8, 0) +corner_radius_top_left = 20 +corner_radius_top_right = 20 +corner_radius_bottom_right = 20 +corner_radius_bottom_left = 20 + +[node name="ExampleHistoryScene" type="Control"] +layout_direction = 1 +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +mouse_filter = 2 +script = ExtResource("1_4mqm3") +font_use_global_size = null +font_custom_size = null +font_use_global_fonts = null +font_custom_normal = null +font_custom_bold = null +font_custom_italics = null +HistoryItem = ExtResource("2_x1xgk") +disabled = null + +[node name="HistoryBox" type="ScrollContainer" parent="."] +unique_name_in_owner = true +visible = false +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = 74.0 +offset_top = 65.0 +offset_right = -74.0 +offset_bottom = -57.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_vertical = 3 +theme_override_styles/panel = SubResource("StyleBoxFlat_1hdvb") +horizontal_scroll_mode = 0 + +[node name="HistoryLog" type="VBoxContainer" parent="HistoryBox"] +unique_name_in_owner = true +layout_direction = 1 +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="ShowHistory" type="Button" parent="."] +layout_mode = 1 +anchors_preset = 1 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = -73.0 +offset_top = 7.0 +offset_right = -9.0 +offset_bottom = 38.0 +grow_horizontal = 0 +size_flags_horizontal = 4 +size_flags_vertical = 4 +text = "History" + +[node name="HideHistory" type="Button" parent="."] +visible = false +layout_mode = 1 +anchors_preset = 1 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = -123.0 +offset_top = 58.0 +offset_right = -62.0 +offset_bottom = 89.0 +grow_horizontal = 0 +size_flags_horizontal = 4 +size_flags_vertical = 4 +text = "Return" + +[connection signal="pressed" from="ShowHistory" to="." method="_on_show_history_pressed"] +[connection signal="pressed" from="HideHistory" to="." method="_on_hide_history_pressed"] diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_History/part_config.cfg b/addons/dialogic/Modules/DefaultLayoutParts/Layer_History/part_config.cfg new file mode 100644 index 0000000..fd104d9 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_History/part_config.cfg @@ -0,0 +1,7 @@ +[style] +type = "Layer" +name = "Overlay History" +author = "Dialogic" +description = "Provides a history button and overlay." +scene = "history_layer.tscn" +icon = "history_icon.svg" diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_History/preview.png b/addons/dialogic/Modules/DefaultLayoutParts/Layer_History/preview.png new file mode 100644 index 0000000000000000000000000000000000000000..e22843fc64efd68067450ec80a6c5d6435e01d03 GIT binary patch literal 11740 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 DN;gu* literal 0 HcmV?d00001 diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_History/preview.png.import b/addons/dialogic/Modules/DefaultLayoutParts/Layer_History/preview.png.import new file mode 100644 index 0000000..936047e --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_History/preview.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b7ep7q40d2amu" +path="res://.godot/imported/preview.png-b328f7e30aebed2adb4720cdbf791362.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_History/preview.png" +dest_files=["res://.godot/imported/preview.png-b328f7e30aebed2adb4720cdbf791362.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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/dialogic/Modules/DefaultLayoutParts/Layer_Input/full_advance_input_layer.gd b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Input/full_advance_input_layer.gd new file mode 100644 index 0000000..e48a1f8 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Input/full_advance_input_layer.gd @@ -0,0 +1,4 @@ +@tool +extends DialogicLayoutLayer + +## A layer that holds a full-screen input catcher. diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_Input/full_advance_input_layer.gd.uid b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Input/full_advance_input_layer.gd.uid new file mode 100644 index 0000000..b70af5f --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Input/full_advance_input_layer.gd.uid @@ -0,0 +1 @@ +uid://dwml743wmb7mn diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_Input/full_advance_input_layer.tscn b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Input/full_advance_input_layer.tscn new file mode 100644 index 0000000..e66cc34 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Input/full_advance_input_layer.tscn @@ -0,0 +1,24 @@ +[gd_scene load_steps=3 format=3 uid="uid://cn674foxwedqu"] + +[ext_resource type="Script" uid="uid://dwml743wmb7mn" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_Input/full_advance_input_layer.gd" id="1_3cmha"] +[ext_resource type="Script" uid="uid://ctog34kdg222q" path="res://addons/dialogic/Modules/Text/node_input.gd" id="2_dxpjw"] + +[node name="FullAdvanceInputLayer" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +script = ExtResource("1_3cmha") + +[node name="DialogicNode_Input" type="Control" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 1 +script = ExtResource("2_dxpjw") diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_Input/input_layer_icon.svg b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Input/input_layer_icon.svg new file mode 100644 index 0000000..512ca5b --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Input/input_layer_icon.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_Input/input_layer_icon.svg.import b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Input/input_layer_icon.svg.import new file mode 100644 index 0000000..0dfa079 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Input/input_layer_icon.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bv38272320783" +path="res://.godot/imported/input_layer_icon.svg-3f439e08e8c66cbf3522ce60714f7588.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_Input/input_layer_icon.svg" +dest_files=["res://.godot/imported/input_layer_icon.svg-3f439e08e8c66cbf3522ce60714f7588.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=0.3 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_Input/part_config.cfg b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Input/part_config.cfg new file mode 100644 index 0000000..89a7679 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Input/part_config.cfg @@ -0,0 +1,7 @@ +[style] +type = "Layer" +name = "Input Catcher" +author = "Dialogic" +description = "A full screen mouse input catcher for advancing dialog." +scene = "full_advance_input_layer.tscn" +icon = "input_layer_icon.svg" diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_Input/preview.png b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Input/preview.png new file mode 100644 index 0000000000000000000000000000000000000000..4cb51443c3214f27390e6e5a4be33c5ff1a3452b GIT binary patch literal 2258 zcmbVNYdF;F79Sax*^@#UcP42ggE$)_qbWm7xr8v3(zrEc+{Pug>&OYCnWiKu<|LQO zZHTFjVUJwfB9|eYVGknBE+&_m_Y6zjv+oT`TL1i-X)x zYCnNMAUUj~ojV95fdFv5tTZ5v(F%)z;yM9?IfKPu;1N;b!GzEt5J;b%M7ME#b!LBt zt4C?Ek_x@zXpnbz(`T zo!fyOus_voVo;wcjlyYy_#9P*?fsASsI^uakL$(j$Z7Tt-b2Ok&Y%^xXob5kFp>Nt&av$u^ zk>HuIHch3$v1!3PRx6Fz6u(Q%NHeVZRAZ4k<~k@K8YO~vhe|4s5}hX{jpI`JdVXfQ z4qrSV8M~H}Pfq1ZN{6RSn#YAzksclcsTOd*$VEiR<|rHd%A4WY6q3G)T&^agSLjg_ ztdmM%KwBUYjy@!yI|p};#I;g%ETEK$#yZ=}%tMu-Rwl!g)EYpg8f}k@#)K1zL1ED# zOjOXN=%7G&93lEL+yU!+#yf3~G6*EyjI}#)_S*O-9xt4`s`4M6DRnc;IHUTEm|%nx0Jg|J+L6E?M}5mj)#CayW|na znIJF}5IYzU-!T~a9sh{&haLZCivNt#y`847pLtU-(t#22LQLfmgH=duaY>!o*4wx8 zS1X<&WXbjkn~2|Hb#D`f@B^>!)<*IguLZ7!Leu@}$Lyt~UTs})_fc)NBp$$(nBjWf zIOrG{w^$IlBb|@SjKGw7KZt|7yPHBy0ZSg?PJ)NMRHRxE*?#BLDW^{xsgUiD>Q!nt zHWlk!cv?ei@bnBgxd%)!aLdoxcHHfJPTlF8ER4{sNJSED#Qz{bInyJCr=qMCN6~k1 z-paH$_X7?nAO_Vd4?Nep2EPz?Idhy_5x!nvERXo|41RxuuCISMJG-1gy(t*&GMVpd zcp?k)czlHBF_80hc_uErg)nZ*%rBOt&x#z+Ggu!50X-XEVJaLQ+CDEca|e89bG&fE za`MQ|-Ih-w$Lm*Plae-`RrcZ!;+)J5_Y7-iEiBJ0pDSAZ5+MfAXRLCX1XlR5iWg)@Q@$+tTE3ay76wf^K z+^N|LP_qIS%=n^~x|$l^C;m6N6HGDPzhw4mN!e6N%0^kW@rbu~S5BL)I?#j`$W8L8>UGxBYg_|}A$_&GesB;cTo=@~G#(9BQX13ckQd7f>Q!GRTJ<%sPR50V zI4M^$erf7oqWK%d%L!h8U5+ekFn7_gQFFfUwBpCULXt;>Z`dH{nbhKRviIljpP)@gs>yw7#oZvW*4YiTGMMdIjw#_(Ao5p4& z!IbNKC{%#0A-{u46)!g}`UXaAr(S`mz$y(MGK2H(b^YOrx}BFy?{&sJUC9tX zz!v#NfGJpwOo$Usa&uEyv-eo0q;>3Uw0UJRUkXa~H(lK~!aaSjI8re3?oLnp7K??P znk*XPM!cyDf@yN_AIUKdFDzrjd1~7mCrY+>@A8M1ZJMKkP)C1dWjHXq58wjMLuyu5 z+Nq*RO1h@ztI3wuDx-v!ji_lE=1XKz#naj)S=iS?=6Zk8&DQWS#T%}LYQm}Qq2b&i zQr=mw&H_C~y%_L-cwO}N4xMPWqQ=J2*59#>jI5k}6cqNNzl9=#?C$4(B z^xIT4qef7xxz5L#Dx$)rb?tt0%dU%)Dd@g6k?RLPjqw*I^W_&;djBST_t0uhf`dn~ z8)210j1;ZK&=VyB1suY`STp9auJZY_W7 zS#7A~q@{iM^qJbUSqC}!=h-8@U5rG| zdm7dct$^t6&us|5c(%&V`Y$5z1|OoLbhm^94g=iL5IQhs%z}cOb!S6 zpr^gB(0cQf378UnbZ~foE3O5#=dbaYAxmfA10B}ZvYwNQ`O-FeNrEf|$EErMg$KkA z29c${V_DdD{3Av$;DeTwtPZF7GHB7Sau++y^CG7tv~r+iBb1J literal 0 HcmV?d00001 diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_Input/preview.png.import b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Input/preview.png.import new file mode 100644 index 0000000..b404155 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Input/preview.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b6wifoui7fdf1" +path="res://.godot/imported/preview.png-c20c74f5253522c0ea9ec9a21fcd804d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_Input/preview.png" +dest_files=["res://.godot/imported/preview.png-c20c74f5253522c0ea9ec9a21fcd804d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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/dialogic/Modules/DefaultLayoutParts/Layer_SpeakerPortraitTextbox/default_stylebox.tres b/addons/dialogic/Modules/DefaultLayoutParts/Layer_SpeakerPortraitTextbox/default_stylebox.tres new file mode 100644 index 0000000..57300ef --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_SpeakerPortraitTextbox/default_stylebox.tres @@ -0,0 +1,13 @@ +[gd_resource type="StyleBoxFlat" format=3 uid="uid://cmpf1qxjh5tuw"] + +[resource] +content_margin_left = 10.0 +content_margin_top = 10.0 +content_margin_right = 10.0 +content_margin_bottom = 10.0 +bg_color = Color(1, 1, 1, 1) +skew = Vector2(0.073, 0) +corner_radius_top_left = 10 +corner_radius_top_right = 10 +corner_radius_bottom_right = 10 +corner_radius_bottom_left = 10 diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_SpeakerPortraitTextbox/part_config.cfg b/addons/dialogic/Modules/DefaultLayoutParts/Layer_SpeakerPortraitTextbox/part_config.cfg new file mode 100644 index 0000000..e3fc33c --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_SpeakerPortraitTextbox/part_config.cfg @@ -0,0 +1,7 @@ +[style] +type = "Layer" +name = "Textbox with Portrait " +author = "Dialogic" +description = "A layer with a textbox that also contains a speaker portrait." +scene = "textbox_with_speaker_portrait.tscn" +icon = "speaker-textbox-icon.svg" diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_SpeakerPortraitTextbox/preview.png b/addons/dialogic/Modules/DefaultLayoutParts/Layer_SpeakerPortraitTextbox/preview.png new file mode 100644 index 0000000000000000000000000000000000000000..1c61ce8dcafbe2462ddc4dad3bc8daf465fdecff GIT binary patch literal 7997 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≷(*>?8#RJ`6nj@up89| zOE>*Rfr^!x=uP8jDjvgt?>@tK*6&Q9dI?a3U|CHJO f=OW@*KaPk~z$s5vPwhFrt_sjl)dkkQu#5UHqDQBF literal 0 HcmV?d00001 diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_SpeakerPortraitTextbox/preview.png.import b/addons/dialogic/Modules/DefaultLayoutParts/Layer_SpeakerPortraitTextbox/preview.png.import new file mode 100644 index 0000000..cec9777 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_SpeakerPortraitTextbox/preview.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://s5s4lmhfnav2" +path="res://.godot/imported/preview.png-dcc8befd9aebdd8b4c988971a734c72f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_SpeakerPortraitTextbox/preview.png" +dest_files=["res://.godot/imported/preview.png-dcc8befd9aebdd8b4c988971a734c72f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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/dialogic/Modules/DefaultLayoutParts/Layer_SpeakerPortraitTextbox/speaker-textbox-icon.svg b/addons/dialogic/Modules/DefaultLayoutParts/Layer_SpeakerPortraitTextbox/speaker-textbox-icon.svg new file mode 100644 index 0000000..02b5b02 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_SpeakerPortraitTextbox/speaker-textbox-icon.svg @@ -0,0 +1,19 @@ + + + + + + + + + + diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_SpeakerPortraitTextbox/speaker-textbox-icon.svg.import b/addons/dialogic/Modules/DefaultLayoutParts/Layer_SpeakerPortraitTextbox/speaker-textbox-icon.svg.import new file mode 100644 index 0000000..ea16b0c --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_SpeakerPortraitTextbox/speaker-textbox-icon.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c0v3akss47tgy" +path="res://.godot/imported/speaker-textbox-icon.svg-e67964032c31cfdc4bf5a376d48a985e.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_SpeakerPortraitTextbox/speaker-textbox-icon.svg" +dest_files=["res://.godot/imported/speaker-textbox-icon.svg-e67964032c31cfdc4bf5a376d48a985e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_SpeakerPortraitTextbox/speaker_portrait_textbox_layer.gd b/addons/dialogic/Modules/DefaultLayoutParts/Layer_SpeakerPortraitTextbox/speaker_portrait_textbox_layer.gd new file mode 100644 index 0000000..61e3714 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_SpeakerPortraitTextbox/speaker_portrait_textbox_layer.gd @@ -0,0 +1,129 @@ +@tool +extends DialogicLayoutLayer + +enum Alignments {LEFT, CENTER, RIGHT} +enum LimitedAlignments {LEFT=0, RIGHT=1} + +@export_group('Text') +@export_subgroup("Text") +@export var text_alignment: Alignments = Alignments.LEFT +@export_subgroup('Size') +@export var text_use_global_size: bool = true +@export var text_custom_size: int = 15 +@export_subgroup('Color') +@export var text_use_global_color: bool = true +@export var text_custom_color: Color = Color.WHITE +@export_subgroup('Fonts') +@export var use_global_fonts: bool = true +@export_file('*.ttf', '*.tres') var custom_normal_font: String = "" +@export_file('*.ttf', '*.tres') var custom_bold_font: String = "" +@export_file('*.ttf', '*.tres') var custom_italic_font: String = "" +@export_file('*.ttf', '*.tres') var custom_bold_italic_font: String = "" + +@export_group('Name Label') +@export_subgroup("Color") +enum NameLabelColorModes {GLOBAL_COLOR, CHARACTER_COLOR, CUSTOM_COLOR} +@export var name_label_color_mode: NameLabelColorModes = NameLabelColorModes.GLOBAL_COLOR +@export var name_label_custom_color: Color = Color.WHITE +@export_subgroup("Behaviour") +@export var name_label_alignment: Alignments = Alignments.LEFT +@export var name_label_hide_when_no_character: bool = false +@export_subgroup("Font & Size") +@export var name_label_use_global_size: bool = true +@export var name_label_custom_size: int = 15 +@export var name_label_use_global_font: bool = true +@export_file('*.ttf', '*.tres') var name_label_customfont: String = "" + +@export_group('Box') +@export_subgroup("Box") +@export_file('*.tres') var box_panel: String = this_folder.path_join("default_stylebox.tres") +@export var box_modulate_global_color: bool = true +@export var box_modulate_custom_color: Color = Color(0.47247135639191, 0.31728461384773, 0.16592600941658) +@export var box_size: Vector2 = Vector2(600, 160) +@export var box_distance: int = 25 + +@export_group('Portrait') +@export_subgroup('Portrait') +@export var portrait_stretch_factor: float = 0.3 +@export var portrait_position: LimitedAlignments = LimitedAlignments.LEFT +@export var portrait_bg_modulate: Color = Color(0, 0, 0, 0.5137255191803) + + +## Called by dialogic whenever export overrides might change +func _apply_export_overrides() -> void: + ## FONT SETTINGS + var dialog_text: DialogicNode_DialogText = %DialogicNode_DialogText + dialog_text.alignment = text_alignment as DialogicNode_DialogText.Alignment + + var text_size: int = text_custom_size + if text_use_global_size: + text_size = get_global_setting(&'font_size', text_custom_size) + + dialog_text.add_theme_font_size_override(&"normal_font_size", text_size) + dialog_text.add_theme_font_size_override(&"bold_font_size", text_size) + dialog_text.add_theme_font_size_override(&"italics_font_size", text_size) + dialog_text.add_theme_font_size_override(&"bold_italics_font_size", text_size) + + + var text_color: Color = text_custom_color + if text_use_global_color: + text_color = get_global_setting(&'font_color', text_custom_color) + dialog_text.add_theme_color_override(&"default_color", text_color) + + var normal_font: String = custom_normal_font + if use_global_fonts and ResourceLoader.exists(get_global_setting(&'font', '') as String): + normal_font = get_global_setting(&'font', '') + + if !normal_font.is_empty(): + dialog_text.add_theme_font_override(&"normal_font", load(normal_font) as Font) + if !custom_bold_font.is_empty(): + dialog_text.add_theme_font_override(&"bold_font", load(custom_bold_font) as Font) + if !custom_italic_font.is_empty(): + dialog_text.add_theme_font_override(&"italics_font", load(custom_italic_font) as Font) + if !custom_bold_italic_font.is_empty(): + dialog_text.add_theme_font_override(&"bold_italics_font", load(custom_bold_italic_font) as Font) + + ## BOX SETTINGS + var panel: PanelContainer = %Panel + var portrait_panel: Panel = %PortraitPanel + if box_modulate_global_color: + panel.self_modulate = get_global_setting(&'bg_color', box_modulate_custom_color) + else: + panel.self_modulate = box_modulate_custom_color + panel.size = box_size + panel.position = Vector2(-box_size.x/2, -box_size.y-box_distance) + portrait_panel.size_flags_stretch_ratio = portrait_stretch_factor + + var stylebox: StyleBox = load(box_panel) + panel.add_theme_stylebox_override(&'panel', stylebox) + + ## PORTRAIT SETTINGS + var portrait_background_color: ColorRect = %PortraitBackgroundColor + portrait_background_color.color = portrait_bg_modulate + + portrait_panel.get_parent().move_child(portrait_panel, portrait_position) + + ## NAME LABEL SETTINGS + var name_label: DialogicNode_NameLabel = %DialogicNode_NameLabel + if name_label_use_global_size: + name_label.add_theme_font_size_override(&"font_size", get_global_setting(&'font_size', name_label_custom_size) as int) + else: + name_label.add_theme_font_size_override(&"font_size", name_label_custom_size) + + var name_label_font: String = name_label_customfont + if name_label_use_global_font and ResourceLoader.exists(get_global_setting(&'font', '') as String): + name_label_font = get_global_setting(&'font', '') + if !name_label_font.is_empty(): + name_label.add_theme_font_override(&'font', load(name_label_font) as Font) + + name_label.use_character_color = false + match name_label_color_mode: + NameLabelColorModes.GLOBAL_COLOR: + name_label.add_theme_color_override(&"font_color", get_global_setting(&'font_color', name_label_custom_color) as Color) + NameLabelColorModes.CUSTOM_COLOR: + name_label.add_theme_color_override(&"font_color", name_label_custom_color) + NameLabelColorModes.CHARACTER_COLOR: + name_label.use_character_color = true + + name_label.horizontal_alignment = name_label_alignment as HorizontalAlignment + name_label.hide_when_empty = name_label_hide_when_no_character diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_SpeakerPortraitTextbox/speaker_portrait_textbox_layer.gd.uid b/addons/dialogic/Modules/DefaultLayoutParts/Layer_SpeakerPortraitTextbox/speaker_portrait_textbox_layer.gd.uid new file mode 100644 index 0000000..080aec0 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_SpeakerPortraitTextbox/speaker_portrait_textbox_layer.gd.uid @@ -0,0 +1 @@ +uid://bk84r61kckpxa diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_SpeakerPortraitTextbox/textbox_with_speaker_portrait.tscn b/addons/dialogic/Modules/DefaultLayoutParts/Layer_SpeakerPortraitTextbox/textbox_with_speaker_portrait.tscn new file mode 100644 index 0000000..ae6a3b3 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_SpeakerPortraitTextbox/textbox_with_speaker_portrait.tscn @@ -0,0 +1,124 @@ +[gd_scene load_steps=7 format=3 uid="uid://by6waso0mjpjp"] + +[ext_resource type="Script" uid="uid://d0ptqnbudhkyj" path="res://addons/dialogic/Modules/Character/node_portrait_container.gd" id="1_4jxq7"] +[ext_resource type="Script" uid="uid://bk84r61kckpxa" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_SpeakerPortraitTextbox/speaker_portrait_textbox_layer.gd" id="1_7jt4d"] +[ext_resource type="Script" uid="uid://bak74s0kcr0ao" path="res://addons/dialogic/Modules/Text/node_name_label.gd" id="2_y0h34"] +[ext_resource type="Script" uid="uid://drhfq6rmdeuri" path="res://addons/dialogic/Modules/Text/node_dialog_text.gd" id="3_11puy"] +[ext_resource type="Script" uid="uid://dpv2dfiv5dhmr" path="res://addons/dialogic/Modules/Text/node_type_sound.gd" id="5_sr2qw"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_dmg1w"] +bg_color = Color(0.254902, 0.254902, 0.254902, 1) +skew = Vector2(0.073, 0) +corner_radius_top_left = 3 +corner_radius_top_right = 3 +corner_radius_bottom_right = 3 +corner_radius_bottom_left = 3 + +[node name="TextboxWithSpeakerPortrait" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +script = ExtResource("1_7jt4d") +box_panel = "res://addons/dialogic/Modules/DefaultLayoutParts/Layer_SpeakerPortraitTextbox/default_stylebox.tres" + +[node name="Anchor" type="Control" parent="."] +layout_mode = 1 +anchors_preset = 7 +anchor_left = 0.5 +anchor_top = 1.0 +anchor_right = 0.5 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 0 +mouse_filter = 2 + +[node name="Panel" type="PanelContainer" parent="Anchor"] +unique_name_in_owner = true +self_modulate = Color(0.533333, 0.376471, 0.176471, 1) +layout_mode = 1 +anchors_preset = 7 +anchor_left = 0.5 +anchor_top = 1.0 +anchor_right = 0.5 +anchor_bottom = 1.0 +offset_left = -250.0 +offset_top = -200.0 +offset_right = 250.0 +offset_bottom = -50.0 +grow_horizontal = 2 +grow_vertical = 0 +mouse_filter = 2 + +[node name="HBox" type="HBoxContainer" parent="Anchor/Panel"] +layout_mode = 2 +mouse_filter = 2 +theme_override_constants/separation = 15 + +[node name="PortraitPanel" type="Panel" parent="Anchor/Panel/HBox"] +unique_name_in_owner = true +clip_children = 1 +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 0.3 +mouse_filter = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_dmg1w") + +[node name="PortraitBackgroundColor" type="ColorRect" parent="Anchor/Panel/HBox/PortraitPanel"] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = -7.0 +offset_top = -3.0 +offset_right = 7.0 +offset_bottom = 3.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +color = Color(0, 0, 0, 0.231373) + +[node name="DialogicNode_PortraitContainer" type="Control" parent="Anchor/Panel/HBox/PortraitPanel/PortraitBackgroundColor"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_top = 4.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +script = ExtResource("1_4jxq7") +mode = 1 +container_ids = PackedStringArray("1") +debug_character_portrait = "speaker" + +[node name="VBoxContainer" type="VBoxContainer" parent="Anchor/Panel/HBox"] +layout_mode = 2 +size_flags_horizontal = 3 +mouse_filter = 2 + +[node name="DialogicNode_NameLabel" type="Label" parent="Anchor/Panel/HBox/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +theme_override_font_sizes/font_size = 8 +text = "Name" +script = ExtResource("2_y0h34") + +[node name="DialogicNode_DialogText" type="RichTextLabel" parent="Anchor/Panel/HBox/VBoxContainer" node_paths=PackedStringArray("textbox_root")] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 3 +theme_override_font_sizes/normal_font_size = 6 +bbcode_enabled = true +text = "Some text" +scroll_following = true +visible_characters_behavior = 1 +script = ExtResource("3_11puy") +textbox_root = NodePath("../../..") + +[node name="DialogicNode_TypeSounds" type="AudioStreamPlayer" parent="Anchor/Panel/HBox/VBoxContainer/DialogicNode_DialogText"] +script = ExtResource("5_sr2qw") diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_TextInput/part_config.cfg b/addons/dialogic/Modules/DefaultLayoutParts/Layer_TextInput/part_config.cfg new file mode 100644 index 0000000..b6f8add --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_TextInput/part_config.cfg @@ -0,0 +1,7 @@ +[style] +type = "Layer" +name = "Simple Text Input Box" +author = "Dialogic" +description = "A layer with a simple text input box." +scene = "text_input_layer.tscn" +icon = "text_input_layer_icon.svg" diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_TextInput/preview.png b/addons/dialogic/Modules/DefaultLayoutParts/Layer_TextInput/preview.png new file mode 100644 index 0000000000000000000000000000000000000000..8b591b6e814accb9450ad59ca719125d4cff136a GIT binary patch literal 4097 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 literal 0 HcmV?d00001 diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_TextInput/preview.png.import b/addons/dialogic/Modules/DefaultLayoutParts/Layer_TextInput/preview.png.import new file mode 100644 index 0000000..a0587e5 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_TextInput/preview.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bn2b53n51smoo" +path="res://.godot/imported/preview.png-bcceb5d2b7f92c1d0f818071294dc895.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_TextInput/preview.png" +dest_files=["res://.godot/imported/preview.png-bcceb5d2b7f92c1d0f818071294dc895.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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/dialogic/Modules/DefaultLayoutParts/Layer_TextInput/text_input_layer.gd b/addons/dialogic/Modules/DefaultLayoutParts/Layer_TextInput/text_input_layer.gd new file mode 100644 index 0000000..bd853aa --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_TextInput/text_input_layer.gd @@ -0,0 +1,14 @@ +@tool +extends DialogicLayoutLayer + +## A layer that contains a text-input node. + + +func _apply_export_overrides() -> void: + var layer_theme: Theme = get(&'theme') + if layer_theme == null: + layer_theme = Theme.new() + + if get_global_setting(&'font', ''): + layer_theme.default_font = load(get_global_setting(&'font', '') as String) + layer_theme.default_font_size = get_global_setting(&'font_size', 0) diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_TextInput/text_input_layer.gd.uid b/addons/dialogic/Modules/DefaultLayoutParts/Layer_TextInput/text_input_layer.gd.uid new file mode 100644 index 0000000..e67f09f --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_TextInput/text_input_layer.gd.uid @@ -0,0 +1 @@ +uid://cjdvjwjrj86sj diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_TextInput/text_input_layer.tscn b/addons/dialogic/Modules/DefaultLayoutParts/Layer_TextInput/text_input_layer.tscn new file mode 100644 index 0000000..4198bd7 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_TextInput/text_input_layer.tscn @@ -0,0 +1,76 @@ +[gd_scene load_steps=5 format=3 uid="uid://cvgf4c6gg0tsy"] + +[ext_resource type="Script" uid="uid://cjdvjwjrj86sj" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_TextInput/text_input_layer.gd" id="1_7ahrn"] +[ext_resource type="Script" uid="uid://biqpjv0qyefvf" path="res://addons/dialogic/Modules/TextInput/node_text_input.gd" id="1_mxdep"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_3dpjm"] +content_margin_left = 15.0 +content_margin_top = 15.0 +content_margin_right = 15.0 +content_margin_bottom = 15.0 +bg_color = Color(1, 1, 1, 1) +corner_radius_top_left = 5 +corner_radius_top_right = 5 +corner_radius_bottom_right = 5 +corner_radius_bottom_left = 5 + +[sub_resource type="Theme" id="Theme_8xwp1"] + +[node name="TextInputLayer" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +script = ExtResource("1_7ahrn") + +[node name="DialogicNode_TextInput" type="Control" parent="."] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -50.0 +offset_right = 210.0 +offset_bottom = 50.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +script = ExtResource("1_mxdep") +input_line_edit = NodePath("TextInputPanel/VBoxContainer/InputField") +text_label = NodePath("TextInputPanel/VBoxContainer/TextLabel") +confirmation_button = NodePath("TextInputPanel/VBoxContainer/ConfirmationButton") +metadata/_edit_layout_mode = 1 + +[node name="TextInputPanel" type="PanelContainer" parent="DialogicNode_TextInput"] +unique_name_in_owner = true +self_modulate = Color(0, 0, 0, 0.780392) +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_3dpjm") + +[node name="VBoxContainer" type="VBoxContainer" parent="DialogicNode_TextInput/TextInputPanel"] +layout_mode = 2 + +[node name="TextLabel" type="Label" parent="DialogicNode_TextInput/TextInputPanel/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +theme = SubResource("Theme_8xwp1") +text = "Please enter some text:" +autowrap_mode = 3 + +[node name="InputField" type="LineEdit" parent="DialogicNode_TextInput/TextInputPanel/VBoxContainer"] +layout_mode = 2 + +[node name="ConfirmationButton" type="Button" parent="DialogicNode_TextInput/TextInputPanel/VBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 8 +text = "Confirm" diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_TextInput/text_input_layer_icon.svg b/addons/dialogic/Modules/DefaultLayoutParts/Layer_TextInput/text_input_layer_icon.svg new file mode 100644 index 0000000..9f8d592 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_TextInput/text_input_layer_icon.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_TextInput/text_input_layer_icon.svg.import b/addons/dialogic/Modules/DefaultLayoutParts/Layer_TextInput/text_input_layer_icon.svg.import new file mode 100644 index 0000000..181a884 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_TextInput/text_input_layer_icon.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d1irtbrawo1jp" +path="res://.godot/imported/text_input_layer_icon.svg-5a1e8bca317bf45f6805d82812407215.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_TextInput/text_input_layer_icon.svg" +dest_files=["res://.godot/imported/text_input_layer_icon.svg-5a1e8bca317bf45f6805d82812407215.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=0.3 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/part_config.cfg b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/part_config.cfg new file mode 100644 index 0000000..203a685 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/part_config.cfg @@ -0,0 +1,7 @@ +[style] +type = "Layer" +name = "Textbubble Layer" +author = "Dialogic" +description = "A simple textbubble layer. Expects a textbubble base. Each textbubble provides a name label, dialog text and choices." +scene = "text_bubble_layer.tscn" +icon = "text_bubble_layer_icon.svg" diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/preview.png b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/preview.png new file mode 100644 index 0000000000000000000000000000000000000000..54b08d621b9ad3737adb4c43e437e1b5a062744c GIT binary patch literal 7302 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 literal 0 HcmV?d00001 diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/preview.png.import b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/preview.png.import new file mode 100644 index 0000000..086ab46 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/preview.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://x0kxo1qd4jqf" +path="res://.godot/imported/preview.png-136e526350ab989f1e1d2ba13d756aaa.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/preview.png" +dest_files=["res://.godot/imported/preview.png-136e526350ab989f1e1d2ba13d756aaa.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/speech_bubble.gdshader b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/speech_bubble.gdshader new file mode 100644 index 0000000..c1e348f --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/speech_bubble.gdshader @@ -0,0 +1,17 @@ +shader_type canvas_item; + +uniform sampler2D deformation_sampler : filter_linear, repeat_enable; +uniform float radius :hint_range(1.0, 200, 0.01)= 25; +uniform vec2 box_size = vec2(100, 100); +uniform float box_padding = 15; +uniform float wobble_amount : hint_range(0.0, 1.0, 0.01) = 0.2; +uniform float wobble_speed : hint_range(0.0, 10.0, 0.01) = 1; +uniform float wobble_detail : hint_range(0.01, 1, 0.01) = 0.5; + +void fragment() { + float adjusted_radius = min(min(radius, box_size.x/2.0), box_size.y/2.0); + vec2 deformation_sample = texture(deformation_sampler, UV*wobble_detail+TIME*wobble_speed*0.05).xy*(vec2(box_padding)/box_size)*0.9; + vec2 deformed_UV = UV+((deformation_sample)-vec2(0.5)*vec2(box_padding)/box_size)*wobble_amount; + float rounded_box = length(max(abs(deformed_UV*(box_size+vec2(box_padding))-vec2(0.5)*(box_size+vec2(box_padding)))+adjusted_radius-vec2(0.5)*box_size,0))-adjusted_radius; + COLOR.a = min(smoothstep(0.0, -1, rounded_box), COLOR.a); +} diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/speech_bubble.gdshader.uid b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/speech_bubble.gdshader.uid new file mode 100644 index 0000000..f6eb360 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/speech_bubble.gdshader.uid @@ -0,0 +1 @@ +uid://cs2o12y1i6cti diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/text_bubble.gd b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/text_bubble.gd new file mode 100644 index 0000000..ff7913c --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/text_bubble.gd @@ -0,0 +1,246 @@ +extends Control + +@onready var tail: Line2D = ($Group/Tail as Line2D) +@onready var bubble: Control = ($Group/Background as Control) +@onready var text: DialogicNode_DialogText = (%DialogText as DialogicNode_DialogText) +# The choice container is added by the TextBubble layer +@onready var choice_container: Container = null +@onready var name_label: Label = (%NameLabel as Label) +@onready var name_label_box: PanelContainer = (%NameLabelPanel as PanelContainer) +@onready var name_label_holder: HBoxContainer = $DialogText/NameLabelPositioner + +var node_to_point_at: Node = null: + set(val): + node_to_point_at = val + base_position = get_speaker_canvas_position() + base_direction * safe_zone + position = base_position + +var current_character: DialogicCharacter = null + +var max_width := 300 + +var bubble_rect: Rect2 = Rect2(0.0, 0.0, 2.0, 2.0) +var base_position := Vector2.ZERO + +var base_direction := Vector2(1.0, -1.0).normalized() +var safe_zone := 50.0 +var padding := Vector2() + +var name_label_alignment := HBoxContainer.ALIGNMENT_BEGIN +var name_label_offset := Vector2() +var force_choices_on_separate_lines := false + +# Sets the padding shader paramter. +# It's the amount of spacing around the background to allow some wobbeling. +var bg_padding := 30 + + +func _ready() -> void: + reset() + DialogicUtil.autoload().Choices.question_shown.connect(_on_question_shown) + + +func reset() -> void: + set_process(false) + scale = Vector2.ZERO + modulate.a = 0.0 + + tail.points = [] + bubble_rect = Rect2(0,0,2,2) + + base_position = get_speaker_canvas_position() + base_direction * safe_zone + position = base_position + + +func _process(delta:float) -> void: + base_position = get_speaker_canvas_position() + + var center := get_viewport_rect().size / 2.0 + + var dist_x := absf(base_position.x - center.x) + var dist_y := absf(base_position.y - center.y) + var x_e := center.x - bubble_rect.size.x + var y_e := center.y - bubble_rect.size.y + var influence_x := remap(clamp(dist_x, x_e, center.x), x_e, center.x * 0.8, 0.0, 1.0) + var influence_y := remap(clamp(dist_y, y_e, center.y), y_e, center.y * 0.8, 0.0, 1.0) + if base_position.x > center.x: influence_x = -influence_x + if base_position.y > center.y: influence_y = -influence_y + var edge_influence := Vector2(influence_x, influence_y) + + var direction := (base_direction + edge_influence).normalized() + + var p: Vector2 = base_position + direction * ( + safe_zone + lerp(bubble_rect.size.y, bubble_rect.size.x, abs(direction.x)) * 0.4 + ) + p = p.clamp(bubble_rect.size / 2.0, get_viewport_rect().size - bubble_rect.size / 2.0) + + position = position.lerp(p, 5 * delta) + + var point_a: Vector2 = Vector2.ZERO + var point_b: Vector2 = (base_position - position) * 0.75 + + var offset: Vector2 = Vector2.from_angle(point_a.angle_to_point(point_b)) * bubble_rect.size * abs(direction.x) * 0.4 + + point_a += offset + point_b += offset * 0.5 + + var curve := Curve2D.new() + var direction_point := Vector2(0, (point_b.y - point_a.y)) + curve.add_point(point_a, Vector2.ZERO, direction_point * 0.5) + curve.add_point(point_b) + tail.points = curve.tessellate(5) + tail.width = bubble_rect.size.x * 0.15 + + +func open() -> void: + set_process(true) + show() + text.enabled = true + var open_tween := create_tween().set_parallel(true) + open_tween.tween_property(self, "scale", Vector2.ONE, 0.1).from(Vector2.ZERO) + open_tween.tween_property(self, "modulate:a", 1.0, 0.1).from(0.0) + + +func close() -> void: + text.enabled = false + var close_tween := create_tween().set_parallel(true) + close_tween.tween_property(self, "scale", Vector2.ONE * 0.8, 0.2) + close_tween.tween_property(self, "modulate:a", 0.0, 0.2) + await close_tween.finished + hide() + set_process(false) + + +func _on_dialog_text_started_revealing_text() -> void: + _resize_bubble(await get_base_content_size(), true) + + +func _resize_bubble(content_size:Vector2, popup:=false) -> void: + var bubble_size: Vector2 = content_size+(padding*2)+Vector2.ONE*bg_padding + var half_size: Vector2= (bubble_size / 2.0) + bubble.pivot_offset = half_size + bubble_rect = Rect2(position, bubble_size * Vector2(1.1, 1.1)) + bubble.position = -half_size + bubble.size = bubble_size + + text.size = content_size + text.position = -(content_size/2.0) + + if popup: + var t := create_tween().set_ease(Tween.EASE_OUT).set_trans(Tween.TRANS_BACK) + t.tween_property(bubble, "scale", Vector2.ONE, 0.2).from(Vector2.ZERO) + else: + bubble.scale = Vector2.ONE + + bubble.material.set(&"shader_parameter/box_size", bubble_size) + name_label_holder.position = Vector2(0, bubble.position.y - text.position.y - name_label_holder.size.y/2.0) + name_label_holder.position += name_label_offset + name_label_holder.alignment = name_label_alignment + name_label_holder.size.x = text.size.x + + +func _on_question_shown(info:Dictionary) -> void: + if !is_visible_in_tree(): + return + + # Avoid choice_container's flickering(because some ticks will happen in + # `await get_base_content_size()` which will make choice_container exist + # at its old position for several tens of milliseconds). + choice_container.modulate.a = 0 + + var content_size := await get_base_content_size() + content_size.y += choice_container.size.y + content_size.x = max(content_size.x, choice_container.size.x) + _resize_bubble(content_size) + + # Now, choice_container has changed to its new position, so we can make it + # actually show up. + choice_container.modulate.a = 1 + + +func get_base_content_size() -> Vector2: + var font: Font = text.get_theme_font(&"normal_font") + var text_width = font.get_multiline_string_size( + text.get_parsed_text(), + HORIZONTAL_ALIGNMENT_LEFT, + max_width, + text.get_theme_font_size(&"normal_font_size") + ).x + + # Let text use content's width, and let text auto shrink height to its content. + text.size = Vector2(text_width, 0) + await get_tree().process_frame + + # Don't know why text.size.y != content's height, + # so we re-set text.size.y to 0 to let text shrink to its content again. + # Finally works this time. + text.size.y = 0 + await get_tree().process_frame + return text.size + + +func add_choice_container(node:Container, alignment:=FlowContainer.ALIGNMENT_BEGIN, choices_button_path:="", maximum_choices:=5) -> void: + if choice_container: + choice_container.get_parent().remove_child(choice_container) + choice_container.queue_free() + + node.name = "ChoiceContainer" + choice_container = node + node.set_anchors_preset(LayoutPreset.PRESET_BOTTOM_WIDE) + node.grow_vertical = Control.GROW_DIRECTION_BEGIN + text.add_child(node) + + if node is HFlowContainer: + (node as HFlowContainer).alignment = alignment + + var choices_button: PackedScene = null + if not choices_button_path.is_empty(): + if ResourceLoader.exists(choices_button_path): + choices_button = (load(choices_button_path) as PackedScene) + else: + printerr("[Dialogic] Unable to load custom choice button from ", choices_button_path) + + for i:int in range(maximum_choices): + var new_button : DialogicNode_ChoiceButton + if choices_button == null: + new_button = DialogicNode_ChoiceButton.new() + else: + new_button = (choices_button.instantiate() as DialogicNode_ChoiceButton) + choice_container.add_child(new_button) + if node is HFlowContainer: + continue + match alignment: + HBoxContainer.ALIGNMENT_BEGIN: + (choice_container.get_child(-1) as Control).size_flags_horizontal = SIZE_SHRINK_BEGIN + HBoxContainer.ALIGNMENT_CENTER: + (choice_container.get_child(-1) as Control).size_flags_horizontal = SIZE_SHRINK_CENTER + HBoxContainer.ALIGNMENT_END: + (choice_container.get_child(-1) as Control).size_flags_horizontal = SIZE_SHRINK_END + + for child:Button in choice_container.get_children(): + var prev := child.get_parent().get_child(wrap(child.get_index()-1, 0, choice_container.get_child_count()-1)).get_path() + var next := child.get_parent().get_child(wrap(child.get_index()+1, 0, choice_container.get_child_count()-1)).get_path() + child.focus_next = next + child.focus_previous = prev + child.focus_neighbor_left = prev + child.focus_neighbor_top = prev + child.focus_neighbor_right = next + child.focus_neighbor_bottom = next + + +func get_speaker_canvas_position() -> Vector2: + if is_instance_valid(node_to_point_at): + if node_to_point_at is Node3D: + base_position = get_viewport().get_camera_3d().unproject_position( + (node_to_point_at as Node3D).global_position) + if node_to_point_at is CanvasItem: + base_position = (node_to_point_at as CanvasItem).get_global_transform_with_canvas().origin + return base_position + + +## Changes the property of mouse filter of the bubble and its children (text and label). +func change_mouse_filter(mouse_filter: Control.MouseFilter) -> void: + mouse_filter = mouse_filter + text.mouse_filter = mouse_filter + name_label_box.mouse_filter = mouse_filter + name_label_holder.mouse_filter = mouse_filter diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/text_bubble.gd.uid b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/text_bubble.gd.uid new file mode 100644 index 0000000..354cf8b --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/text_bubble.gd.uid @@ -0,0 +1 @@ +uid://bminl7x3r40vc diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/text_bubble.gdshader b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/text_bubble.gdshader new file mode 100644 index 0000000..60ebcee --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/text_bubble.gdshader @@ -0,0 +1,17 @@ +shader_type canvas_item; + +uniform sampler2D deformation_sampler : filter_linear, repeat_enable; +uniform float radius : hint_range(1.0, 200, 0.01) = 25; +uniform vec2 box_size = vec2(100, 100); +uniform float box_padding = 15; +uniform float wobble_amount : hint_range(0.0, 1.0, 0.01) = 0.2; +uniform float wobble_speed : hint_range(0.0, 10.0, 0.01) = 1; +uniform float wobble_detail : hint_range(0.01, 1, 0.01) = 0.5; + +void fragment() { + float adjusted_radius = min(min(radius, box_size.x/2.0), box_size.y/2.0); + vec2 deformation_sample = texture(deformation_sampler, UV*wobble_detail+TIME*wobble_speed*0.05).xy*(vec2(box_padding)/box_size)*0.9; + vec2 deformed_UV = UV+((deformation_sample)-vec2(0.5)*vec2(box_padding)/box_size)*wobble_amount; + float rounded_box = length(max(abs(deformed_UV*(box_size+vec2(box_padding))-vec2(0.5)*(box_size+vec2(box_padding)))+adjusted_radius-vec2(0.5)*box_size,0))-adjusted_radius; + COLOR.a = min(smoothstep(0.0, -1, rounded_box), COLOR.a); +} diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/text_bubble.gdshader.uid b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/text_bubble.gdshader.uid new file mode 100644 index 0000000..1a32b4d --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/text_bubble.gdshader.uid @@ -0,0 +1 @@ +uid://byskpb7ypvuab diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/text_bubble.tscn b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/text_bubble.tscn new file mode 100644 index 0000000..010ec4b --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/text_bubble.tscn @@ -0,0 +1,112 @@ +[gd_scene load_steps=11 format=3 uid="uid://dlx7jcvm52tyw"] + +[ext_resource type="Script" uid="uid://bminl7x3r40vc" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/text_bubble.gd" id="1_jdhpk"] +[ext_resource type="Shader" uid="uid://byskpb7ypvuab" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/text_bubble.gdshader" id="2_1mhvf"] +[ext_resource type="Script" uid="uid://drhfq6rmdeuri" path="res://addons/dialogic/Modules/Text/node_dialog_text.gd" id="3_syv35"] +[ext_resource type="Script" uid="uid://dpv2dfiv5dhmr" path="res://addons/dialogic/Modules/Text/node_type_sound.gd" id="4_7bm4b"] +[ext_resource type="Script" uid="uid://bak74s0kcr0ao" path="res://addons/dialogic/Modules/Text/node_name_label.gd" id="6_5gd03"] + +[sub_resource type="Curve" id="Curve_0j8nu"] +_data = [Vector2(0, 1), 0.0, -1.0, 0, 1, Vector2(1, 0), -1.0, 0.0, 1, 0] +point_count = 2 + +[sub_resource type="FastNoiseLite" id="FastNoiseLite_lsfnp"] +noise_type = 0 +fractal_type = 0 +cellular_jitter = 0.15 + +[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_kr7hw"] +seamless = true +noise = SubResource("FastNoiseLite_lsfnp") + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_60xbe"] +resource_local_to_scene = true +shader = ExtResource("2_1mhvf") +shader_parameter/deformation_sampler = SubResource("NoiseTexture2D_kr7hw") +shader_parameter/radius = 200.0 +shader_parameter/box_size = Vector2(100, 100) +shader_parameter/box_padding = 10.0 +shader_parameter/wobble_amount = 0.75 +shader_parameter/wobble_speed = 10.0 +shader_parameter/wobble_detail = 0.51 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_h6ls0"] +content_margin_left = 5.0 +content_margin_right = 5.0 +bg_color = Color(1, 1, 1, 1) +corner_radius_top_left = 10 +corner_radius_top_right = 10 +corner_radius_bottom_right = 10 +corner_radius_bottom_left = 10 +shadow_color = Color(0.152941, 0.152941, 0.152941, 0.12549) +shadow_size = 5 + +[node name="TextBubble" type="Control"] +layout_mode = 3 +anchors_preset = 0 +script = ExtResource("1_jdhpk") + +[node name="Group" type="CanvasGroup" parent="."] + +[node name="Tail" type="Line2D" parent="Group"] +unique_name_in_owner = true +points = PackedVector2Array(-9, 7, -29, 118, -95, 174, -193, 195) +width = 96.0 +width_curve = SubResource("Curve_0j8nu") + +[node name="Background" type="ColorRect" parent="Group"] +unique_name_in_owner = true +material = SubResource("ShaderMaterial_60xbe") +offset_left = -115.0 +offset_top = -69.0 +offset_right = 108.0 +offset_bottom = 83.0 +mouse_filter = 2 + +[node name="DialogText" type="RichTextLabel" parent="." node_paths=PackedStringArray("textbox_root")] +unique_name_in_owner = true +clip_contents = false +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 = -13.0 +offset_right = 53.0 +offset_bottom = 12.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_colors/default_color = Color(0, 0, 0, 1) +fit_content = true +scroll_active = false +visible_characters_behavior = 1 +script = ExtResource("3_syv35") +textbox_root = NodePath("..") + +[node name="DialogicNode_TypeSounds" type="AudioStreamPlayer" parent="DialogText"] +script = ExtResource("4_7bm4b") + +[node name="NameLabelPositioner" type="HBoxContainer" parent="DialogText"] +layout_mode = 1 +anchors_preset = 10 +anchor_right = 1.0 +offset_bottom = 23.0 +grow_horizontal = 2 +alignment = 1 + +[node name="NameLabelPanel" type="PanelContainer" parent="DialogText/NameLabelPositioner"] +unique_name_in_owner = true +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_h6ls0") + +[node name="NameLabel" type="Label" parent="DialogText/NameLabelPositioner/NameLabelPanel" node_paths=PackedStringArray("name_label_root")] +unique_name_in_owner = true +layout_mode = 2 +horizontal_alignment = 1 +script = ExtResource("6_5gd03") +name_label_root = NodePath("..") +use_character_color = false + +[connection signal="started_revealing_text" from="DialogText" to="." method="_on_dialog_text_started_revealing_text"] diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/text_bubble_layer.gd b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/text_bubble_layer.gd new file mode 100644 index 0000000..394095d --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/text_bubble_layer.gd @@ -0,0 +1,191 @@ +@tool +extends DialogicLayoutLayer + +## This layout won't do anything on its own + +@export_group("Main") +@export_subgroup("Text") +@export var text_size: int = 15 +@export var text_color: Color = Color.BLACK +@export_file('*.ttf') var normal_font: String = "" +@export_file('*.ttf') var bold_font: String = "" +@export_file('*.ttf') var italic_font: String = "" +@export_file('*.ttf') var bold_italic_font: String = "" +@export var text_max_width: int = 300 + +@export_subgroup('Box') +@export var box_modulate: Color = Color.WHITE +@export var box_modulate_by_character_color: bool = false +@export var box_padding: Vector2 = Vector2(10,10) +@export_range(1, 999) var box_corner_radius: int = 25 +@export_range(0.1, 5) var box_wobble_speed: float = 1 +@export_range(0, 1) var box_wobble_amount: float = 0.5 +@export_range(0, 1) var box_wobble_detail: float = 0.2 + +@export_subgroup('Behaviour') +@export var behaviour_distance: int = 50 +@export var behaviour_direction: Vector2 = Vector2(1, -1) +@export var behaviour_mouse_filter: Control.MouseFilter + +@export_group('Name Label') +@export_subgroup("Name Label") +@export var name_label_enabled: bool = true +@export var name_label_font_size: int = 15 +@export_file('*.ttf') var name_label_font: String = "" +@export var name_label_use_character_color: bool = true +@export var name_label_color: Color = Color.BLACK +@export_subgroup("Name Label Box") +@export var name_label_box_modulate: Color = Color.WHITE +@export var name_label_box_modulate_use_character_color: bool = false +@export var name_label_padding: Vector2 = Vector2(5,0) +@export var name_label_offset: Vector2 = Vector2(0,0) +@export var name_label_alignment := HBoxContainer.ALIGNMENT_BEGIN + + +@export_group('Choices') +@export_subgroup('Choices Text') +@export var choices_text_size: int = 15 +@export_file('*.ttf') var choices_text_font: String = "" +@export var choices_text_color: Color = Color.DARK_SLATE_GRAY +@export var choices_text_color_hover: Color = Color.DARK_MAGENTA +@export var choices_text_color_focus: Color = Color.DARK_MAGENTA +@export var choices_text_color_disabled: Color = Color.DARK_GRAY + +@export_subgroup('Choices Layout') +@export var choices_layout_alignment := FlowContainer.ALIGNMENT_END +@export var choices_layout_force_lines: bool = false +@export_file('*.tres', "*.res") var choices_base_theme: String = "" + +@export_subgroup('Behavior') +@export var maximum_choices: int = 5 +@export_file('*.tscn') var choices_custom_button: String = "" + +const TextBubble := preload("res://addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/text_bubble.gd") + +var bubbles: Array[TextBubble] = [] +var fallback_bubble: TextBubble = null + +const textbubble_scene: PackedScene = preload("res://addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/text_bubble.tscn") + + +func add_bubble() -> TextBubble: + var new_bubble: TextBubble = textbubble_scene.instantiate() + add_child(new_bubble) + bubbles.append(new_bubble) + return new_bubble + + +## Called by dialogic whenever export overrides might change +func _apply_export_overrides() -> void: + pass + + + +## Called by the base layer before opening the bubble +func bubble_apply_overrides(bubble:TextBubble) -> void: + ## TEXT FONT AND COLOR + var rtl: RichTextLabel = bubble.text + rtl.add_theme_font_size_override(&'normal_font', text_size) + rtl.add_theme_font_size_override(&"normal_font_size", text_size) + rtl.add_theme_font_size_override(&"bold_font_size", text_size) + rtl.add_theme_font_size_override(&"italics_font_size", text_size) + rtl.add_theme_font_size_override(&"bold_italics_font_size", text_size) + + rtl.add_theme_color_override(&"default_color", text_color) + + if !normal_font.is_empty(): + rtl.add_theme_font_override(&"normal_font", load(normal_font) as Font) + if !bold_font.is_empty(): + rtl.add_theme_font_override(&"bold_font", load(bold_font) as Font) + if !italic_font.is_empty(): + rtl.add_theme_font_override(&"italics_font", load(italic_font) as Font) + if !bold_italic_font.is_empty(): + rtl.add_theme_font_override(&"bold_italics_font", load(bold_italic_font) as Font) + bubble.set(&'max_width', text_max_width) + + + ## BOX & TAIL COLOR + var tail_and_bg_group := (bubble.get_node("Group") as CanvasGroup) + tail_and_bg_group.self_modulate = box_modulate + if box_modulate_by_character_color and bubble.current_character != null: + tail_and_bg_group.self_modulate = bubble.current_character.color + + var background := (bubble.get_node('%Background') as ColorRect) + var bg_material: ShaderMaterial = (background.material as ShaderMaterial) + bg_material.set_shader_parameter(&'radius', box_corner_radius) + bg_material.set_shader_parameter(&'wobble_amount', box_wobble_amount) + bg_material.set_shader_parameter(&'wobble_speed', box_wobble_speed) + bg_material.set_shader_parameter(&'wobble_detail', box_wobble_detail) + + bubble.padding = box_padding + + + ## BEHAVIOUR + bubble.safe_zone = behaviour_distance + bubble.base_direction = behaviour_direction + bubble.change_mouse_filter(behaviour_mouse_filter) + + + ## NAME LABEL SETTINGS + var nl: DialogicNode_NameLabel = bubble.name_label + nl.add_theme_font_size_override(&"font_size", name_label_font_size) + + if !name_label_font.is_empty(): + nl.add_theme_font_override(&'font', load(name_label_font) as Font) + + + if name_label_use_character_color and bubble.current_character: + nl.add_theme_color_override(&"font_color", bubble.current_character.color) + else: + nl.add_theme_color_override(&"font_color", name_label_color) + + var nlp: PanelContainer = bubble.name_label_box + nlp.self_modulate = name_label_box_modulate + if name_label_box_modulate_use_character_color and bubble.current_character: + nlp.self_modulate = bubble.current_character.color + nlp.get_theme_stylebox(&'panel').content_margin_left = name_label_padding.x + nlp.get_theme_stylebox(&'panel').content_margin_right = name_label_padding.x + nlp.get_theme_stylebox(&'panel').content_margin_top = name_label_padding.y + nlp.get_theme_stylebox(&'panel').content_margin_bottom = name_label_padding.y + bubble.name_label_offset = name_label_offset + bubble.name_label_alignment = name_label_alignment + + nlp.get_parent().visible = name_label_enabled + + ## CHOICE SETTINGS + if choices_layout_force_lines: + bubble.add_choice_container(VBoxContainer.new(), choices_layout_alignment, choices_custom_button, maximum_choices) + else: + bubble.add_choice_container(HFlowContainer.new(), choices_layout_alignment, choices_custom_button, maximum_choices) + + var choice_theme: Theme = null + if choices_base_theme.is_empty() or not ResourceLoader.exists(choices_base_theme): + choice_theme = Theme.new() + var base_style := StyleBoxFlat.new() + base_style.draw_center = false + base_style.border_width_bottom = 2 + base_style.border_color = choices_text_color + choice_theme.set_stylebox(&'normal', &'Button', base_style) + var focus_style := (base_style.duplicate() as StyleBoxFlat) + focus_style.border_color = choices_text_color_focus + choice_theme.set_stylebox(&'focus', &'Button', focus_style) + var hover_style := (base_style.duplicate() as StyleBoxFlat) + hover_style.border_color = choices_text_color_hover + choice_theme.set_stylebox(&'hover', &'Button', hover_style) + var disabled_style := (base_style.duplicate() as StyleBoxFlat) + disabled_style.border_color = choices_text_color_disabled + choice_theme.set_stylebox(&'disabled', &'Button', disabled_style) + choice_theme.set_stylebox(&'pressed', &'Button', base_style) + else: + choice_theme = (load(choices_base_theme) as Theme) + + if !choices_text_font.is_empty(): + choice_theme.default_font = (load(choices_text_font) as Font) + + choice_theme.set_font_size(&'font_size', &'Button', choices_text_size) + choice_theme.set_color(&'font_color', &'Button', choices_text_color) + choice_theme.set_color(&'font_pressed_color', &'Button', choices_text_color) + choice_theme.set_color(&'font_hover_color', &'Button', choices_text_color_hover) + choice_theme.set_color(&'font_focus_color', &'Button', choices_text_color_focus) + choice_theme.set_color(&'font_disabled_color', &'Button', choices_text_color_disabled) + bubble.choice_container.theme = choice_theme diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/text_bubble_layer.gd.uid b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/text_bubble_layer.gd.uid new file mode 100644 index 0000000..51bd1b9 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/text_bubble_layer.gd.uid @@ -0,0 +1 @@ +uid://dcae6nsh8fgtp diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/text_bubble_layer.tscn b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/text_bubble_layer.tscn new file mode 100644 index 0000000..141e298 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/text_bubble_layer.tscn @@ -0,0 +1,9 @@ +[gd_scene load_steps=2 format=3 uid="uid://d2it0xiap3gnt"] + +[ext_resource type="Script" uid="uid://dcae6nsh8fgtp" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/text_bubble_layer.gd" id="1_b37je"] + +[node name="TextBubbleLayer" type="Control"] +layout_mode = 3 +anchors_preset = 0 +mouse_filter = 2 +script = ExtResource("1_b37je") diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/text_bubble_layer_icon.svg b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/text_bubble_layer_icon.svg new file mode 100644 index 0000000..da53086 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/text_bubble_layer_icon.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/text_bubble_layer_icon.svg.import b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/text_bubble_layer_icon.svg.import new file mode 100644 index 0000000..d98f682 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/text_bubble_layer_icon.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dgpyaea4qw8a5" +path="res://.godot/imported/text_bubble_layer_icon.svg-d46d5806bbf83c1dc50f8d7fc8dac67d.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_Textbubble/text_bubble_layer_icon.svg" +dest_files=["res://.godot/imported/text_bubble_layer_icon.svg-d46d5806bbf83c1dc50f8d7fc8dac67d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=0.3 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/choice_panel_focus.tres b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/choice_panel_focus.tres new file mode 100644 index 0000000..8293f0c --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/choice_panel_focus.tres @@ -0,0 +1,15 @@ +[gd_resource type="StyleBoxFlat" format=3 uid="uid://bu0tsjabpj4rd"] + +[resource] +content_margin_left = 10.0 +content_margin_top = 5.0 +content_margin_right = 10.0 +content_margin_bottom = 5.0 +bg_color = Color(0, 0, 0, 0.956863) +draw_center = false +border_width_left = 5 +corner_radius_top_left = 5 +corner_radius_top_right = 5 +corner_radius_bottom_right = 5 +corner_radius_bottom_left = 5 +expand_margin_left = 5.0 diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/choice_panel_hover.tres b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/choice_panel_hover.tres new file mode 100644 index 0000000..b67de21 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/choice_panel_hover.tres @@ -0,0 +1,18 @@ +[gd_resource type="StyleBoxFlat" format=3 uid="uid://xs2s6euq5stw"] + +[resource] +content_margin_top = 5.0 +content_margin_bottom = 5.0 +bg_color = Color(0, 0, 0, 0.956863) +border_width_left = 1 +border_width_top = 1 +border_width_right = 1 +border_width_bottom = 1 +corner_radius_top_left = 5 +corner_radius_top_right = 5 +corner_radius_bottom_right = 5 +corner_radius_bottom_left = 5 +expand_margin_left = 1.0 +expand_margin_top = 1.0 +expand_margin_right = 1.0 +expand_margin_bottom = 1.0 diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/choice_panel_normal.tres b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/choice_panel_normal.tres new file mode 100644 index 0000000..1fe561b --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/choice_panel_normal.tres @@ -0,0 +1,12 @@ +[gd_resource type="StyleBoxFlat" format=3 uid="uid://wrp8f7ard3uu"] + +[resource] +content_margin_left = 10.0 +content_margin_top = 5.0 +content_margin_right = 10.0 +content_margin_bottom = 5.0 +bg_color = Color(0, 0, 0, 0.941176) +corner_radius_top_left = 5 +corner_radius_top_right = 5 +corner_radius_bottom_right = 5 +corner_radius_bottom_left = 5 diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/choices_layer_icon.svg b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/choices_layer_icon.svg new file mode 100644 index 0000000..bc00f8f --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/choices_layer_icon.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/choices_layer_icon.svg.import b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/choices_layer_icon.svg.import new file mode 100644 index 0000000..f382b1e --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/choices_layer_icon.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://xcxex6r1v6xk" +path="res://.godot/imported/choices_layer_icon.svg-2f676308da08dddba733cb2bfba8fc69.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/choices_layer_icon.svg" +dest_files=["res://.godot/imported/choices_layer_icon.svg-2f676308da08dddba733cb2bfba8fc69.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=0.3 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/part_config.cfg b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/part_config.cfg new file mode 100644 index 0000000..8dbc1cd --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/part_config.cfg @@ -0,0 +1,7 @@ +[style] +type = "Layer" +name = "Centered Choices" +author = "Dialogic" +description = "A layer containing simple centered choices." +scene = "vn_choice_layer.tscn" +icon = "choices_layer_icon.svg" diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/preview.png b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/preview.png new file mode 100644 index 0000000000000000000000000000000000000000..20879dbbe40c30d0ec08fa37d2c7e9961f7b9923 GIT binary patch literal 8238 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 literal 0 HcmV?d00001 diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/preview.png.import b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/preview.png.import new file mode 100644 index 0000000..7242d06 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/preview.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://h1qtatxnadhj" +path="res://.godot/imported/preview.png-ae89c99370d002f2ecf00af8e270d88c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/preview.png" +dest_files=["res://.godot/imported/preview.png-ae89c99370d002f2ecf00af8e270d88c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/vn_choice_layer.gd b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/vn_choice_layer.gd new file mode 100644 index 0000000..2eb30f2 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/vn_choice_layer.gd @@ -0,0 +1,143 @@ +@tool +extends DialogicLayoutLayer + +## A layer that allows showing up to 10 choices. +## Choices are positioned in the center of the screen. + +@export_group("Text") +@export_subgroup('Font') +@export var font_use_global: bool = true +@export_file('*.ttf', '*.tres') var font_custom: String = "" +@export_subgroup('Size') +@export var font_size_use_global: bool = true +@export var font_size_custom: int = 16 +@export_subgroup('Color') +@export var text_color_use_global: bool = true +@export var text_color_custom: Color = Color.WHITE +@export var text_color_pressed: Color = Color.WHITE +@export var text_color_hovered: Color = Color.GRAY +@export var text_color_disabled: Color = Color.DARK_GRAY +@export var text_color_focused: Color = Color.WHITE + +@export_group('Boxes') +@export_subgroup('Panels') +@export_file('*.tres') var boxes_stylebox_normal: String = "res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/choice_panel_normal.tres" +@export_file('*.tres') var boxes_stylebox_hovered: String = "res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/choice_panel_hover.tres" +@export_file('*.tres') var boxes_stylebox_pressed: String = "" +@export_file('*.tres') var boxes_stylebox_disabled: String = "" +@export_file('*.tres') var boxes_stylebox_focused: String = "res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/choice_panel_focus.tres" +@export_subgroup('Modulate') +@export_subgroup('Size & Position') +@export var boxes_v_separation: int = 10 +@export var boxes_fill_width: bool = true +@export var boxes_min_size: Vector2 = Vector2() +@export var boxes_offset: Vector2 = Vector2() + +@export_group('Sounds') +@export_range(-80, 24, 0.01) var sounds_volume: float = -10 +@export_file("*.wav", "*.ogg", "*.mp3") var sounds_pressed: String = "res://addons/dialogic/Example Assets/sound-effects/typing1.wav" +@export_file("*.wav", "*.ogg", "*.mp3") var sounds_hover: String = "res://addons/dialogic/Example Assets/sound-effects/typing2.wav" +@export_file("*.wav", "*.ogg", "*.mp3") var sounds_focus: String = "res://addons/dialogic/Example Assets/sound-effects/typing4.wav" + +@export_group('Choices') +@export_subgroup('Behavior') +@export var maximum_choices: int = 10 +@export_file('*.tscn') var choices_custom_button: String = "" + +func get_choices() -> VBoxContainer: + return $Choices + + +func get_button_sound() -> DialogicNode_ButtonSound: + return %DialogicNode_ButtonSound + + +## Method that applies all exported settings +func _apply_export_overrides() -> void: + # apply text settings + var layer_theme: Theme = Theme.new() + + # font + if font_use_global and get_global_setting(&'font', false): + layer_theme.set_font(&'font', &'Button', load(get_global_setting(&'font', '') as String) as Font) + elif ResourceLoader.exists(font_custom): + layer_theme.set_font(&'font', &'Button', load(font_custom) as Font) + + # font size + if font_size_use_global: + layer_theme.set_font_size(&'font_size', &'Button', get_global_setting(&'font_size', font_size_custom) as int) + else: + layer_theme.set_font_size(&'font_size', &'Button', font_size_custom) + + # font color + if text_color_use_global: + layer_theme.set_color(&'font_color', &'Button', get_global_setting(&'font_color', text_color_custom) as Color) + else: + layer_theme.set_color(&'font_color', &'Button', text_color_custom) + + layer_theme.set_color(&'font_pressed_color', &'Button', text_color_pressed) + layer_theme.set_color(&'font_hover_color', &'Button', text_color_hovered) + layer_theme.set_color(&'font_disabled_color', &'Button', text_color_disabled) + layer_theme.set_color(&'font_pressed_color', &'Button', text_color_pressed) + layer_theme.set_color(&'font_focus_color', &'Button', text_color_focused) + + + # apply box settings + if ResourceLoader.exists(boxes_stylebox_normal): + var style_box: StyleBox = load(boxes_stylebox_normal) + layer_theme.set_stylebox(&'normal', &'Button', style_box) + layer_theme.set_stylebox(&'hover', &'Button', style_box) + layer_theme.set_stylebox(&'pressed', &'Button', style_box) + layer_theme.set_stylebox(&'disabled', &'Button', style_box) + layer_theme.set_stylebox(&'focus', &'Button', style_box) + + if ResourceLoader.exists(boxes_stylebox_hovered): + layer_theme.set_stylebox(&'hover', &'Button', load(boxes_stylebox_hovered) as StyleBox) + + if ResourceLoader.exists(boxes_stylebox_pressed): + layer_theme.set_stylebox(&'pressed', &'Button', load(boxes_stylebox_pressed) as StyleBox) + if ResourceLoader.exists(boxes_stylebox_disabled): + layer_theme.set_stylebox(&'disabled', &'Button', load(boxes_stylebox_disabled) as StyleBox) + if ResourceLoader.exists(boxes_stylebox_focused): + layer_theme.set_stylebox(&'focus', &'Button', load(boxes_stylebox_focused) as StyleBox) + + var choices : Control = get_choices() + choices.add_theme_constant_override(&"separation", boxes_v_separation) + self.position = boxes_offset + + # replace choice buttons and apply settings + for child: Node in choices.get_children(): + if child is DialogicNode_ChoiceButton: + child.queue_free() + + var choices_button: PackedScene = null + if not choices_custom_button.is_empty(): + if ResourceLoader.exists(choices_custom_button): + choices_button = (load(choices_custom_button) as PackedScene) + else: + printerr("[Dialogic] Unable to load custom choice button from ", choices_custom_button) + + for i in range(0, maximum_choices): + var new_choice : DialogicNode_ChoiceButton + if choices_button != null: + new_choice = (choices_button.instantiate() as DialogicNode_ChoiceButton) + else: + new_choice = DialogicNode_ChoiceButton.new() + choices.add_child(new_choice) + + if boxes_fill_width: + new_choice.size_flags_horizontal = Control.SIZE_FILL + else: + new_choice.size_flags_horizontal = Control.SIZE_SHRINK_CENTER + + new_choice.custom_minimum_size = boxes_min_size + + + set(&'theme', layer_theme) + + # apply sound settings + var button_sound: DialogicNode_ButtonSound = get_button_sound() + button_sound.volume_db = sounds_volume + button_sound.sound_pressed = load(sounds_pressed) + button_sound.sound_hover = load(sounds_hover) + button_sound.sound_focus = load(sounds_focus) diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/vn_choice_layer.gd.uid b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/vn_choice_layer.gd.uid new file mode 100644 index 0000000..8207b1a --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/vn_choice_layer.gd.uid @@ -0,0 +1 @@ +uid://ij0qm2ew6plv diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/vn_choice_layer.tscn b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/vn_choice_layer.tscn new file mode 100644 index 0000000..926d6ec --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/vn_choice_layer.tscn @@ -0,0 +1,43 @@ +[gd_scene load_steps=7 format=3 uid="uid://dhk6j6eb6e3q"] + +[ext_resource type="Script" uid="uid://ij0qm2ew6plv" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/vn_choice_layer.gd" id="1_kurgw"] +[ext_resource type="Script" uid="uid://bldt7xlfum7ov" path="res://addons/dialogic/Modules/Choice/node_choice_button.gd" id="1_w632k"] +[ext_resource type="Script" uid="uid://b1stj4ljd2vo7" path="res://addons/dialogic/Modules/Choice/node_button_sound.gd" id="2_mgko6"] +[ext_resource type="AudioStream" uid="uid://b6c1p14bc20p1" path="res://addons/dialogic/Example Assets/sound-effects/typing1.wav" id="3_mql8i"] +[ext_resource type="AudioStream" uid="uid://c2viukvbub6v6" path="res://addons/dialogic/Example Assets/sound-effects/typing4.wav" id="4_420fr"] + +[sub_resource type="AudioStream" id="AudioStream_pe27w"] + +[node name="VN_ChoiceLayer" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +script = ExtResource("1_kurgw") + +[node name="Choices" type="VBoxContainer" parent="."] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -41.0 +offset_top = -47.0 +offset_right = 42.0 +offset_bottom = 47.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +alignment = 1 +metadata/_edit_layout_mode = 1 + +[node name="DialogicNode_ButtonSound" type="AudioStreamPlayer" parent="Choices"] +unique_name_in_owner = true +script = ExtResource("2_mgko6") +sound_pressed = ExtResource("3_mql8i") +sound_hover = ExtResource("4_420fr") +sound_focus = SubResource("AudioStream_pe27w") diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Portraits/part_config.cfg b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Portraits/part_config.cfg new file mode 100644 index 0000000..fb709b5 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Portraits/part_config.cfg @@ -0,0 +1,7 @@ +[style] +type = "Layer" +name = "5 Portraits" +author = "Dialogic" +description = "A layer with 5 portrait position containers." +scene = "vn_portrait_layer.tscn" +icon = "portrait_layer_icon.svg" diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Portraits/portrait_layer_icon.svg b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Portraits/portrait_layer_icon.svg new file mode 100644 index 0000000..9e00fc6 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Portraits/portrait_layer_icon.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Portraits/portrait_layer_icon.svg.import b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Portraits/portrait_layer_icon.svg.import new file mode 100644 index 0000000..11a0b4f --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Portraits/portrait_layer_icon.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://fwi64s4gbob2" +path="res://.godot/imported/portrait_layer_icon.svg-4bc8b0ebd4dd0977a12c09f30758d7e1.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Portraits/portrait_layer_icon.svg" +dest_files=["res://.godot/imported/portrait_layer_icon.svg-4bc8b0ebd4dd0977a12c09f30758d7e1.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=0.3 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Portraits/preview.png b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Portraits/preview.png new file mode 100644 index 0000000000000000000000000000000000000000..3c75bd8ad32b141654627a7b6b7587105ed67448 GIT binary patch literal 49117 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

    tcXhJyWpXFyy9@so6nr=i2;1PLC6I@+hTu6)ZD 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�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≶WP5y*9ZRjnw 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

    (Rffr(# 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 #oZOt8M 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

    KHw4Nz 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

    FLhlire!rUrN0?xaFwW??x9>eIdDvJ~5J1L|nYX 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

    em&Vbm7F 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

    ~VD?o9Z*v(<9n0`qQ%6 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 z zrj}P+v?~KL(;uZ9k+$gy%YOqh(}pqv@ zvOuB_+LX_UJ{jgs@4#!CO@TCCfG|(-TKHiuA7T^Fva32;aXE_oSAA28!Y*I;T)Zn( zQu$&JHQ~!-8rujcNEe4a&8HDbdX0O$eLa9DWYzgdIj8*JPgP$cl<_YHVs-lKv62z4 zbOC0V&sW{=MVD*P3{Kd7q{c|Ev1X9igvGB%{Pdrl)MOhaK;OO-qWxk-DO5exU`51l z@jZK#T~aA{4*^BzCwz>>uoBE%V#@3%Vp(8RO%d16j`J)ikI6nC9uFfyQl6dm{}&io zM2(qw0}09_Xdzh@y)f@warRW~Z4LJIyd%bv;CPS%;;#^;dxr$SQ!ElRqc*m#F}Cfg44;54;Xol7Rxvhbgf4mq&~itnWIe7B+pO)*J+4I?Q$d0r+e)Rg?@Z7lN+C*{Mz)OjTh$feq@>{ zBR{5MnSo`X5Xpt42MSe!2wa>MqaHr$W zHC)K?y!UP+F9>;l2 z4_&S2*EqLGUsW2v^@QgRotEEy{jCZ^S?!EvZLEt#n6mzo5<3oXU#fCU#2zR5f1=*_ zRyNq+PYA^n$zA&7>Qx-M6Gh6kAzj)P}`2Mo8k68VR-tH+Z4lK3Gi_lFDK$ z%+n|AivwicUk!#=HaW;@&l21kPSg*}(9rGdlAcbfJuJV7 z5qh(QziWNWnfu&jUH|=CwgJqwhS**=wG;OeyrU^DfAhw7OvGv|wl?k0=8GI9+SePp z-GGKl%;l|!2!~0mqt;q=G+{%%W8o^mdT6?;CTd;U?~aSy5pVnaxW=Wjzi?2^=dgk% zInLprt-MPIbh{t21b^lxb_MQ## ziQvX~=F6-A(}eL>sa|dg+Wp@D#`(Fa6U3|CqTru zr8plCIqxqp=sol*0(nHcGf$n_14laxj>-Z4f`TdJ1F#Xd=Iy=jM4&}Ye5}+SwO~<` z+)(lY;F@qG+Po*iR&w3mlVHaTKf$e(tN}!_xqCp`c3l$Wz}7ZiQ9CYP@{^C)lXRMR z4WWq71XzQkZUDecsXQzWWmt06)0jk@I=iFjz94=u_j(hVulN>Hsj}Q`Hub9XgY6 z<>U7gMVK=&_O)swpjFoFE7@qBH70|<$;vo0wkVfv8j1jFX=qN5zrVY5e3JB`u zAQnRqZtdtql``n5VP(y!I_LSkmBG(}dsO*eg*86N5ofPOXB^dr`w$OhW!}Vl+{<1C zE+L)f^IY5PqE}(lww(HozYV=F?!9fw9IOiy&0qWi-d5{tpp+^k*fq?`O80%)S_mdG z`obbsdRx%%)OP0YPjW1MiP{>`Q7OsD6vVK>F~1B0++uz)t%8jBNJez`5s1xL9G6+X zFl7YZJr~Wbc`gRCt+mr!QLIe`x2Dkt3#G%r-8RE?daPi#+!qbfYcrrDOBW0Ij7e7b z#+mZ^h~^Wb-7wfdi)OtPB&SkF_eaF)5}$bgEh)nN=2#Q)`QvkPWYNIt+4sA&ew&se zD}N8?DV7g6BLEyw-<%Z#$TcI*A43?$3^kPJLy2$2GQdYqcOMw;iz-ANxw&h-6K0%( zHbb(EZsG@PHG2RodV6jh3C3wk4BkLftsIxkZe8vqo??lj-3lx5K+C_@c0A`t0*}m3 zcY8UumuoW6JNZnmP3LCe2Nfk@rQCOD(l1H^ZMIPd_5~`@?mgeiX{y;H1YHb&Ns;L_ z-G;#fzS4&brg!^fQTO4Y#S?EI2|u9Jc>I%&sWL)_8o;rqzSL+ZP;q2LzQibASmL4*)dCHb+ao5+8pn3q7&Oq22T0&pfQ31BvX#LYuwyonG5 zemdB#3Chl0`>?=SQFQDIoHh4d0GG{7M&Q={d#S6?Pk^T*iz0S1fCO>DmXvX>4t6uQ zxAUxS&m2s1Z73v>X1meua;oCv6%jBOvgn=+->p5XvOG#H z9p|ujOxEW4(r0?ns#_)8K6TQp_a&2M_{JDk1U+G-Ff+KJmC^_-&+-<3(Uk8wBL~JAoQXWEeN3-My$(HU1~L{N?4~mW*B$CQlo!C1 zGCt(t5F+BiQ4Z5TC7$i=AtwJ&`*DOdr^aTD0$-xyoE^6!Hx4=qI8NeWJiIII=ED$e zY%%?)vbC{b2pYZ0sT5@ik8pk^TGy}@kz$wNu(wTq66OYeFVN+FrU}+%AzAxtR2REN zj4SGGG;3sCl|*aj3GIDi!l+%hNs&$m3o}>~|92?=p3Nk9ftFO?%@&v9En7E~=M*n7 z5VNmX*4#p^^-{`adP_3xzdC}Xv5J0G9tF>H4?emCl>=BP6;hPhMMVNBEPx+tD5Czw zp6H3}Z1>Mv)*A)T%Ekuia<$58>l4PDSOG4F0X{NbWI;rN>hBt6qqhyLY6l`~$0$c& zM?)4aoxtV3C#ae*tkx591U|b1jkZ7Tzce(|2i(Hc8v;u-3$8@i0*xV#y0A1OqP9Sl;8 zHA#*i&oiH8pbt@zp=O$xq~z7;Ln9NJ!Txp(qwG21!`DSCzt5_h+N5w(Q^*GUeQ}`) zp`j9MHqfUMpuzuI){Oq6N*KIYRdw}dqudLzxsw8KSS2Kx#py5f1HZXl-p_u;hl$#K-G9A(mjPc ztpCY@ew6)P=xc%L)s-#J*+4IHDYsm6s1Lo}hMq=Q67Jc0d|!L-lYM2h%2z@0>f4Z7VeWlSR^o#yxtz_4`h^duRCZz6GHliB&}y+(2!`6bE3WJ0<5hO^N zDiQ(Ynp1h=&Oz`5GaFuvBck#}BBWE?pX)7+Bnc8F2t1YS@0oPtgfyjjkaBNv%}iZ1 za9VI!?nQ#{l6Me>dQd}S$&q_n!_; z$94HOdb#r& zHz@F))%a%o0YSWpCSvFBOrPlTjWXi?1sSlL`W)l$oCWxt?#TdVop$*(Js^%M*&-j` zO(hWfxIk7RYkc@h7+~h?FB)ehRfLZ&beh~vhg6ml2i~Pz|7(n2uRFh5=yXP9^3-WD zu7CE>S2N@_!}nl@c{FUFjN8%!102{;dJeO0ifJoZLiNWF=$(K@?Iq4P& z(g2wGJf!cdC%}x^5_wFWk)}i1hDds1fuQI6I$6Oq`&g=tu!f=9Cn2UQ z@~v|EK%;4W+ry9{ZkQt3_ZxGF#!agN&jjZW!c{9{E)xoE$? zL0-#PMK>}}M|$)mGBKLcLQ*$#OJR3P|Fp7bS6_bHZjP!6X$4_Ff!clChyYx4CK2kj zIG$e^2n!rAS^;6inyzLN%!n3`>5GGH=gYLmVQm1lx9PkBAInk9#P}GtlmV#(7Vo&A zc5~JQCBSyH&j`XS?o#uYZh|mzK&J%QoJoScfis^kePmo^gfTHP+#+r{Z2z7xK4GOB zsj^@mBBLVSeF<1Jw0UU94)l8zqst$(T)m_d*M4?g`A9w9o%t@Hk0%|t3swU_TOXT- zgG@=j$2v!Q*!LmBqg6krq|%=armbF??z;;BGIP+T)=|f2V*U20cScE>;ZHeT#HC4_ z%n%<>qFoxKiO$Drf-UTYYJ=0qP$x(Fb&bat5_W5gd+&T+%QC~?3ar@uXYcgMCG@hv zS-dn;=0EoG6+{UFMT^;L4QYb-`g}glvmL*QoZJanCp%#Gfd^7WK@tPu)!^19nKRLbZC+-sj=&4S$HvHsXpa z9F5cRl9Ta0oTJ?cSwV{g&d$4*fAiQ=*1ZP%`&E1Kq~kC)p-MYP4}MM&=*VUqUCZVD zh$pWzWy{;yCsP<>L6BxOo*fYELF{MGC{;$jzj=acr#QF^jD!cZ4@SaW-3o35?L>B!Qh2ytuN#jX3<%33=pQ)EyDMUBz!w#GCYSa6 zl`pGS*6|w{eOmGSiLTg1qoLxq?IlD)IXQd_V>XNj%eNaOUY#8w0is$^%{Qazq@ooo zBtaYW`o5dzmHtqM$BrpB&sRT>2xZ0o0?LxkNw1#CF~T4qasF=|=m5@=S4Ugif=UKxV(8t)!C=$v zks|Ew!KP59aRW5OB?jLI^q^oe1pKO3%_SuByRmcyDBNe=<--)4%^>BBcM&4hZlQOnwWuZ*fNsGKMBTd9;Vi2dRaUAU^j#NVmL6|Ue#0JdHx5ZEPm>lvjIa3Y6}RNyAeWun7q3CTq^ zz&jsdq-Mg<@j1|DnuOUOXh|t?ObgR$T)DXVR-Hy;Av^T}OYrqI<67^!fsa`O!S%vl{(Q_4%lASw}SqX@&4+M?KvdSd%5d_wiF1 z2Nr`Cq5=_mo@*b)Po#z1qt!xZn?Ke@Va?hcE^J1@JCTg5tIT)8B2?>)47A&%N7@bH zK7kcfgN*hzib{?ot1j@A>58h1b8CLfe0dp)w2>08=~g&NdfbrGx!cYR;#NbHyl@3UFH8 zzXuU`Faygk1jpt&uEb)4gD%mQ(Gkfud?zaPG#1)?baS5ZevW?)w(Gn|~1<(>F|7gGaqcPrUQR6_J`15mgF5c6U86IPhd0R*0 z;6TC0bG(st$e4}_YxH#CtazPVf^GOPNed;cLwt@?RH|?Yh}Z!1xQRh@XcL8>70s1r z0~)eSW=^ny*Mc)YGXv?=edtpoMVm{puK6uUUXhwpPa7>2)Iow7BgWRW;XR2Z4WSk< zdlv~%j_X;N^7#|*Q0L_O=QDl|C{xl==Xvg-S*F$Lji~C{=OMJ`o+geyEa^R_!w-aa z8dP6{I-%^s&u-h9*-RX5PPr^h`Cke$s;+K*^=UIo51ZK`SUqKdRs_&I^z(>te@%|L zU!sc-DvnjUyJZ!>BMlVz|5BtAs)c#x@asA-6)2CW)&eo^)HjY##xznlzX#!OPNf*@DqqmGXqmm9vkUfcoj#X3Ph$2xx&sXigWJk-p?6~i5l|NleI>(XK>m_{g4wo2j_?Q1u_<;QQmNch z)6?4WwW6dj2MV+!YI@_qaC{G43OalS04Cl>v*UfMTq;DzlTl}PF0>03kfi>YzwwD-Tgl@Nazl{Ghen*S>eLBXRZ@OaoX2Mo7TdXu|mN7|YntWvzrC-Eu z8toxUfxVs2;HqkW93q#&(>F_(_t1_=LQ;cLf)vZMbWK!6T6W?y38#Yd{4S84`!!tJ z@6nJPec%-OE2m)=HA8KyviK@-J5+9#1#u4BT@fFscmo46$ObUFXhU7$4^PP~^CxjS z-oB06{Rliq4744+Rm&oAt@eX`9(E7IY`D-1nP34V|0wYXVvl`)^qbV~UEHtC)fqmY zq9g{vZGXtDRqwy_DHe5J6ah`-PCa#y8TLhAv!Hn3C|=9gM}?f%HKL`M#1ibOSH+y& zy`kK1B{4v`yNi-%6Q4%WM549b9C7XoiyjI=I_u-UnE!So`|M6#TP4fs=p004WVjhY z)O`p4dzJA(Vf9Ymh4x_mgc$4VV<1beC&jlquIayf`Y{p|nUJ<`9ZpB61^&e5fEs8b zz&IyA5;GiR0_>8-CEhM7#XF6WMbY@^)*8yj+T^va2cc3?bx!c0dZ%TIAgK>ADb8g4 zNKb9;yg#_nZ~bYXZ7MhM%Mp;fYejn`GW7Y9YBlgIFeH1DgMeQx$!P3bHa5&G^>&yy zD=qDN%EO-SIaNQaM_#%|koRKxmF3~;er(8^g2WlkgK2!@xQf>Q)EHy?e?8t`V4n9n z53}ujKsL-8i>|4?xJU%wA5t7BwRI0mk5z3VIaINFkjg$~x9urXid!B_IvO%|QBiP= zW1$`^@j=@vCX1G^SMd(H5_~!KP#Bp4;T-C|F=Z4TaX;=Wb8#7BN{-vz)A|DaD6GzA z5t69EV6{7!Z1mYtfFZ?Md9_|AEy$Vo(^zHSdr-hpczoLDuYmsu{wwvZwUa)#x^sGX zl>X1d1Wt-gY8lK^MbgWiw+IbQP7f(h2&1EYn9o(7Yo(@#PD~hTLHj~9H#+Ae`sA@M zldRRliJ48C$v?PFXLlqbw2Or1j5f#VoUmgggrJBspKA6ED(N{;uTXPjJ4J(`(kTL3r>Ry0`AR+vfLx z6kahvyO-RkK?%R?q*C(o9Q}j zawbl9O`C3~P0x%?9X2-I-5k@0>1H_HUBB<|AAj;V_r3dk-tX7z^?XIir{;Lg*~g8s3|E4 zx_>^%a^$2X&=LAJHM~~*!G*~ofpfB^B7F2^d)@K&V|HgdMX{?}SLzx5TyQX|zGqds za#!+Zi1@~aDqd?7PK2ty71J@Tm$wjxxp9;YL0z1Kaxv8CT3^@_DftjGjDXjb9;Us#kRGH2$RCb!blyfs48t$Q1l%NU>X55 zBPO>cQ%NGXK4uS;Ex<$zfLeFmY|!A!8}*TQDs2nWDCxs7Yjc?)e{2S%f4aSFQ|F$j z_zjQ(y>!EPi<*Xq%e)~OzneykjGKJ;AMp?c0l-E~4>+$8uSyg*q~%-6e%uoyI{2qP zXaNVas~~FThkE6zbg2L%ZzV=9bVS<2p@*j?UWq!0RFEof+YjpjexOiyFv7LrklfR7VRb{bxBXKa1V2J?^X zLC?#KH=Dk4zl4FZDf|obtaD%2PpepGtFfM}8a8N4o%c$*+o65qt4~-?1@4AM=8`L{ zC5UE{9+W=SbYtBCY`v9`WWS2lER3ixREVeU$CjkwK}ya!bQPKGsS4KCBlJ z8_;jX_8R8@n&S^&6?|*;Pz;UL{E%uOfV!_=T+qcZ9?fGLJ6)jfj#nttgb$oK1p}a0vWQr2v0SFgVBE@ zH2d4p4qz=(?HufjOSHT7Y7#^q)`b=dV&L}t+J*>Gcw%LW<2t&Z?ETh~{{`H5+9gW= z(pbJVKi`D=D4CHa|H(}we|)FzuV4gf-s;Z?>ZQbyH9M=M3VI%kpY}M9N{9dId_2DQ zFv`p-Qx-NDh`yu(Y>jL4XJ~Ck%ZzR!czvy-5vQ(duUA}E`}gbRtA!U(tAona)LiE3 zoY5l!5+~MTWKL+WQ^l9YvmWQMj4uCzD%GGO%(=9rQ#f#$%4{wJ@R=Aq{V&RG=%K<=(U zYjIHgX(CjfL!4opM(#CT;IZL>dJ~K)#;=9#39?k;7;_u#=F%1d+<(lEhdh8x_q!ne zd?Nk#5!W*{wzoHWyYQqQe`UY_;s0C}HC+&xkE9XnI%#xZ#*q5JdOq~;2hK{F++CL# z(huED*@K%7KETWmf?}@qBS0o}#9=R%R&&08U>RB>qa_JCvG5UPAV#DM`g0TRM(U~s z+bq<}cXXm_;zG5U;l%@jaj&&XAh}`6B-=P+jGA!+<#E`V6x+PTO|71w+=W51S!`un zNRtr=y!?cRFkdstP1a12$|j3@$XzCKvJEHd^+7CmurT-i)^w48X1quyjK)B$G~mnO zUlQBEX^>qm))tK@S6W(5NG7IYid|{__NY#LjQtv22^k-gPFOHdVuJ(_$s$K#>l8{< z%kyMubRz=8FckFMuLei6*iI47*uZ>@T|eN{@!T39Y8iT5Av!ZlUc4dcE<8cXN;hmy zeURuRALQ=&i*HEh;h*FFwG!IKlL}$0FF#E=hZg6x2V2{>Ysf ziygX^w|ZFT2-SOVjB3R8GBn*;H2~l;LSu>*_~-q(Dwy2owO!Hgoao{YKkWy(Y`k_l z0}KTZxkxQ|0zh3N&ek+F%X?acl`&M3&UYXL`2r$KWnGXwimWM0zZC-@gR1`w6YJ2U z!6Qzc3%dM$H(D{xG}o>akWat2k$hXi)cV*;y0#>v05k1+5QKV$re+wDf{x=2hLaq4 zDB|vO9^cc`zj20BXzbB;85Fa$VP9Yg!I$Y?!Z$Phdi1k9m-B+vLa%tiaO>cV;=Xs?st3JdvS7C6%R|M?=?JwW9;~XF*qnwf}lNlV3Y~ys1O|+Vb5(wNaDG z5#TlQmTX-~KB;Cm3P#CGco>`NQI-p&y7moF5579ixs>Rd?ZJ@`mP}om#-5nTSsNa2 zFP1faP+P2Hp{aw1H7yx&5df(UZ}kyipADLQ)5zRY4*$$S`N0zQRYG2k!P&@wWVf$5 z8V5l$Ljiv|SugGzO~AOhFiq#Fe7Am3up%lvK#fXSU2Ux6q;WlaVre<6r-8o))?S^$ZEBf(_pBdv)IT?bw zPDM^|p1I<%91kMIm&>qx>rPLOSsMv*2%I0>uby?Qh?3bCl9TXpMWs979~i~;A2ZAR zpPt$LA+yR!tUuQ<`J#YaMXZMCgW|A&DL0m{trSk&#a5$_#a-02fsa3F!^&J#)Wd>8 zxc$bK5LKwsPqw`?FBrYxlWt^9AwgEOJth#ETMi-SW)D z`k4_`-u_sFd5I^dIw^1b+1`W42a5LZwXfE3#yZ90w|uXe{ioC;le84a7SK5YJ|gd! zoA*Rzpot>~e@&5o{4UB~r`6sZiLXq+QtXEDF|f#L>+{y!$8#nElI=j5FIGDPrLP0O zMMU0Q`GTt;hWA&TGi~kB({5_jyYzrvGXz}%`#d=EwmSo?{ZNAk8?PinfZaE@giJyK z!<~6<|6ln~gr8|ue)7l-49f`x#)?hvz0pO?SGq=L8{OOXB(IhvBg-=g ztd=RB%+hK-*jUi_+a3jmmMASRo8!Q=%gjldzo83tE?dJ0txBNrE%{mSuJM=4GjWagwEW` z1`=w#|7=-s<`6Lk`G{G?XRw?ds9x}zL8R^VnH~;s6g*ZFJ8NiAD=NA{c7O{=rKN@L zk&jPq@3&kBqo+XE0y^fl-I_2Y1b`{)(hc?oGq>0LLed%|+Om)RxNTVddB+~7I`D|& zpAv>8io~_lpzNFgNEhB-Wrh?CrF7k5U%w=PoW4Qdy4Mx8Ux_6;!hxr^>FfPvg@f^6 zan;&?&UQcje!L@D*B1gcR;S_iDT<2cC$}TD2#wU^uPgn%s>HuAQhCONPwT8cqXL+S z|9vlT>-ILwl4Xj~eMePjmXq&GIQ>gFkaSH2<&jt<8+%%lLo0Q{%!ECezFu5r=qx#* zN@ZgK-9z{M?cW$8{jo3&NPuvEs4|dxW$OfjYfSrb(?8+>)0&Ye@RzW+$5Sglm1T#< zIit@x{!nu+UF194y2gg$ra0B>E;#;=ZP2^uPppsiy4;!#=}(rKN!yv32GV^%yMjO9 zhKp=c5YyJD-R*py!;=Z-D{6V>99OP<9zH&)L4=Xs_P(pPPpARW$#Qvcj|tkN{en5} zYc(XveF))ZaAD9KiT~7$vs2uE=CN@_MLwx~-e3R;e#1MS*xS&ZD=H;KqU9UECoaI7 z2S&=V$S4<2yAfociL?M0^oys4yw{!dJPiot^+}GG%g({Rj%diF-hgP*eevE5Y?EA} zO`d(p1(Ffh*HffCqzanLgE*nTjoo#|4kaK6S|ma6EEJeN>c>_KC{FjQKX@x31xs3L zW|Ja9={Lt$(&8G??#?e?aqR4T98NK-a$pOqz#hG8fjiDcgWMuyLLIOo*cK2nceX)|w+Xt#4nH6X%# zf0NxmuD&I*7D;?UT@Q5Y_~jmK{Usbg5`ro#ihO&aYrHD) zh;VY!9*@U0GVBWxN9d}qB8sWE^qqZt|8K~cu9hb_hCf4RCB2OkSl6O_B-t4v^ZogW zm$w@Dw=$VN$onmS(RP^9B`v@8)$*$Anvo4@N}-PBqDB*6bTUNdV1c`lAi$Fk0`t8X z73D^~%9T8JQ9ixx^N;`DTn|x8Rln?`Vc}k68ty>FLE%o9%}s%Cp)!O?=F680mQ>ooLK^57l|QaHk5CXK+X|T^NjjPAX?G{ykrsjB zjKWH{7M^dCGqgMAmS$;bS){6^d+42*O{xnTalc-9DOqNcZexmBBy~y^-OpKm&fw{9 z_US?J&Zsmt_MMDTs5I~^hLT$Moi$C)R!Q|3(-tIa(q7EWC|Bx>BYscgwATqu7#EY@ zAwImCn3jvo6~5csWh$vB*ucN!hZaglf2Xndp=fO5?U-EcL(e}kNHx{+-KwD!eLK)7 zA6`uQ^=8pRF-2-7Qp`%8&)yl^w_6h>)I32VsV{JiEH(7&AHEl7YH<&*nV;EG`FM+c z*oDI2*UC|nJ4;$cAHP(7ep5Yq5?roMxs#2#h72(uyl#KZm102Hm7bqFM{F7M6Y_PA z$S!fygO`JLY+w+5Ljmm%ITTEUV1Djv#@VuZAv$g4UhfI^?##Rkkth`Tgn`B~P{%V6 zGA6p53_3ncggqRLx!3hw>Y@aPclmReY2sNoX;cjp9aJi?UG)r~u8Yzie>#6?T^hz> z-BA2#%FU?^^}H8^Chx~nUH<=uc-K!@Rsfb9dS_Wp_@isbO5&8u!^;Z_&={s9$FF*gr-EjcrW4X_nGT`NTf@qBynK- zqK!ulf%@QA(kn(iL6Gx3Ea%eqv}?~{Vmh>2)8#Zb=x71R_a*awRoRaU-+45zh5J@qA11C_ z!jYdR1w_KxB)%(^*TLmF@x2l>@}2B>Q&-*t3sN@}d{TjSQwzY2)7P9{@0{)^p33VE zfa}zpr27|WjD&OY7gJHSHdyl*E0(8FtDG7L?UK&I8e6Ho#BLm1U8D6)>9D<&5l!N< z$(Us`K{^+=(R=saii=Dlh;yI3gcozZPiQNleriDCsk6_xz;Sjx2P-x?I`lnBS?@ha zhKY)&#XtXNt%Ug9O?RZlo`u^dANq@lB>ML;UwJHkEaNSY;HONE64y$$2`s{J)37dH zrPcEL&%RgZUI`O`l?rU!SpCQ~_~fwzw$j{HD&t&@sNZT8`0e-VYkI{%gG8XMZSWFI z?~imRjx`_ez)A1O-5!Z+n<-^ySc+M8^p-r4?!pGdaZ8i!X*WGAww z49o(sHfJikfBn`;l@K83+9BwPODxp(_r^ApoR5fkpg-yq)yU3c9!cJu$SV956dY+G z6MoM~uzosFDC+C^YQ~K|UQAHQa_>iVrnuYd?ed&>MG2g$jjoSnQXR-q1G83FPqqdD zL9{c@MoBJH{cB5^>vR7oBfXrI{}F3Y&cy{AP$YKh*G3HQCuJEfdx$n;_D2Tf`%ld{ zOxDmB@t7w#B?IDLCH4i_@9~K>w>>c0$?e!`cegwf)mppHZ}#{ntXi>%%6s(uwCGnwJ9D8Q>RJ zXCM1a3=;B{artZAg)zQKtaTk|b7YWTH2b-WCVz`pWnK)Zxk3h26f#*fdL2(;6UFfv0in+C#S+j;+&3>X3^{@|CKU=l?0#2>3? zexVjVV4l4it?NW;VSyZ>X_0aP+={MI6@0IPdtB)3m_6Wg255C)Fx*-S9gYtm%@9ID zVNqx;ECIxbRJ4H4F6`>~UR~vFH;(_)K`Te;!eGQ9Xe|azn&@8SW1VOL4$A0=?uUS` zSs+dtsxMoa?g%9vn~v{(`z16tl-U^F9dh=JD@3M{nxwZXkZ7@$lg5RT=21Td0+dFWAK3 zdpJ0zFWkeLH5x{Cb*;FGeQXlMJh{p+Cd=w!R&V`sg`pJrj{X0*;j;oXlw@kjw&ryG zpF`Wc2!`@Nq$Rk7k#`%mPQT7o+#EmTPYf}8W7uPobNx)b%ZxL*O1f($+l-ktm72E} zPZfWKn9b**!?w%#+QNa@hujZipeSQ`S=}EOq5-r!ISJb1>z{>hWRL}NMzFlBZ`{Ky zmM4i0X&qnmkCADK*b^f*ZKfa60PM)^K1b-0D>{Nt7_XQ9%2q<>9;y?s58rqyGc?Cs zNL+yGp$7lG&1VQ7NfeMC!N08rHrcdc^Ak^*6ua>rQtbjuR5uB`}120JQH3lQ0%?4?s%-LngKl=x%{HKsW&XTYAJ^87YRGTZ-sirqr(IljN zJvk9x6hb=Z@JY3WLXs+PX5qw5KCJNrevEz#{Pz?|XULQRv#Cjlh6z{ukyfHb-xJ55 z35IslR$UgU&!UvtEbWY#B_zAd=1fwWQq!hF{7K;QJ+ph7-DwadIo~`dh>?i9s9{z? z-J4Q{5n55CR@G|pE|%rv#!|JvJ{34R-w|gmh#Yy(Lo2cFUia`mUPs@57{X26j_4sVr?{onw+X@ampW5RWpbcZI(J9Js+t zAmTmyag!es3KofIAVCaLC~?p$LbWKE2=6iBPAsNn|9Ia4_?D@`Hn;b_{-gUbn}MX3 z!S4jVTHZ6oGjZhQOfzm3qPRPKk@mah<}or}S(QlJUXObb6&otoc3<7r@*5^rC~!-$DQpSCHfzn$m8BLY{7E0B^6f zI{N=lB055~^L2C9No=umAP#_6ug85z(;!bYo|^i{FJwTPN&a|5VQT$ zde71n5Z_Dq&f1ez(w5TPT2SPxnH!^zoeljdWBTrsLJy3<<2>eqj<7lvWl1uYU`jD# zAV(yo=9;GVS<6?YVh6=ugzg$rcc(yIi;824#DS@BmH2L(LZJoS$oq|Ae1j5j&l55- z2*L&e7>&B!CWUEp4GNxIfVqoDV-#K#jCpfL`G@`>e#ypuWbCSc?WUs2S3q7ZjR3xl zJ9(rEB^_yTO>!8eFTr1ZM{IgzAigwjLeeAPy=k=+=tG!nzB2GwEaH*>@W!tEJLZ6y zl*JSaolASf#Ly6J;>7{HPEVPNmZm!*N7-#(Sf$D(qTA<=Y8#rY+c@(F`*p7Z1EPo& zG1cmCm7PV)rlsB+NgtJI(#Al_S2o~)!q)Ea>f;!%{8PQloZmH*{^~*^HY{G?dC0M> zqZZY(!VPo~1cJs!6KMY`ev+zFJGAe9X{Y@5?$DWKS40Am zZ!mX;*!4O_QafL7$VSlOBCWyomG}(Fw#14lETrd=Xgws-LFQpw{EFm=ebua&x`DM) z%_HaVvN1#Z;R%mGN-RE(7R>y?gsopotsjNq@3EDiUIWJ@(Z;SryAcP zK7?4^f0zVd?Lyz3Xsj0sU>xm%_*!|Zu&H8^le#^elHBax-r@m|JA~u`^|)qmCiM|} zoh&Sjph;qmt}(4#TY7|I%P^N?^i+OAREBP7Kjv|9z7T|AT z!7f3@j=5&zNVT0rAJ(nb&l2Rz5G0}*H5Kk9nh+c5rpow|;s;Co{rkT^SrNU+Z|83P zu|$Q@Au()BXG?Sng6*G*3q?*DJUkcz^0MO1DD7CPn~0>gHNuU@4HRyotoO4G4ZeSk zwQa=}DD@JAbRhp$KdVoS9d^ms49^0b$2~RWquVwjnEL^>`Ku6attiIWTD{K$;qUMVyv?Q6iIuuzj?W@x^!IK zz6&SNcZv{~11&rlcl{0`&RS=3g9#2)Hp)Mdke)BzD#+@#Eoo*Szhxhqiv7rnGt*p- z(Gq#ffnqwShJ9g)7Jygd$DaZc(Lr8@qRP2AV|xWEs6r*q&fT!n^zYn7gaN9Xd3UpT z9@@2x0af;kNivhX@KIL|bw@hG8VCWk)^l*b0ijV;mRgjTA;^ibOQ zmoSNy4kv2mF)!G<(1%zOG>CXv!d!LnFDwd^ux?QhozFMLk&R(ZVg9swjx6oM{~xj> zJN1w!!m#H`NJW>4Lhis5P+ku*l?}ipfWn53Ha0X(j@4iNv&C_yuewhmR7HM`1jHGEoPyIP(@L;*bA#>fxn~&Zsr|W$$0Vxn8;1FP> zq^H#vGMQ#K^6G!4oOSGMb0@O9@``d(!*6mzbp8CsYv=3RJsPg?5S$5;QHPT50_!y= zvF}m7fyx_a4^({ywB6%XEJ31JRWtmcdnKdTdJ!;kPUlYb0%&KP9JD$%KGRROWd4Te zeu~ASI3NGe5lRax&6nQuFdsgv?S0FfAEa+?l1CjiJXPr7^InE-8w9l0l>K(CsG526 zLgo2i;H{u@!h)5D&l_pFoH)Xbwrfwp^z&81_*b{{H=rM#JN6IDW5j;#FQ~!x3Rc>Y zxOa8akc=dZ7KesN+gb{E`4mwo(a!4gY;urRX#epuQp@LY$dk~Q*|8nb|Fu>{Mbo89 zX+G0$XS^vZXc{4oSiRAs7R5i&Dd_?H@l5JY{yi;cEM22-JrVO7?%&zmKJ~bq~11y0? z|3@{@?u5{RNc1zd*H$(FuKW1C6$kJfJjsOz6AuxN!g{h_z}^1Rt)$Vq0i4yh^; zBR-%7D7irIHv^(&8kAaDnp`9dgq)*feP)_o=QA>lVza{oEj@nWzb{{8jt7}j{e6pK zTDAc+APnP(12LXHBNu4AWF|>W>E=cXEgXOO0-qI*`Q5uKT^r(OhVKPzGK65JOS#-~ zP|{820xMn*%`Y;nV|f}ly@CaYuLkJ#HgyNL4m~VOA~^@k2Ww422+vKT8{@inBG=Bb z+cX}e7{@CGwO|(?PJ_gxz9=r#^qg>{4PwdL25@kSO1Fq`qWLPJt?R2Yxf0-m3~OX6 z2+m-v47KCz0fii6r~`gW(p0S7x%kTaU%WS zk_-?gKO6xKU$2gYK$O$x3rLjDWb474KjL-&-1pjY&W-EYDX*CsF_N*9ASmdoBUE^f zfELZbx6tw3N$S~~+Pp0c(j{gfBSZ-~qYTorx#?)98op*1q*Ggxuymp_KX!-sqnKv5 z@@^!WXd*pc$zADq zdK5EJB*!dnFhe@Vzz>^)pFoW-;rJGApdehRTEeWtZz$K)^5Md#^S=O7Q{CGw*`mXj zn$A9H<5;39UP?|~eO>Fvb14tu(&1q_)Xg${JD??jVSxw{u>BP-P#@OB77*{#|9{L( zVANFIt+5QweZ!B44WRo~Zx{1n5k_}(v>m&*^9hLo2~Q$R zZgC7leC!JD?Gct+ifZIJ;JA5+7R(pE9C6($(G`ZtRJkr-5ah=rOzGBLAg`8MWAUa9 z<0`5;gYf&e1^L=E+`0sliK^k8S}65p;KK=lL7-Spa@twzR{iPc(K zEk9>b7I~d_QDs#88KsVnlfdCWJit)ztRqh2tAN!_US@vu=fSCTgYBJ3y&iURh7B1T zSO1$)`j_F>*S2WPe|@E|&Se<4O9{5T{pm7iB1e|D8YeX}y054b7Y~V#!q1lQmaj5r z#5dJ5JS^ zA1B(dH#h5Q&al$ER1=l|l^4Lu`%URbXIsK0CV_>W3ETESV$Xt*nzp+KW0igNG6d?*Fm6GN@!D3nzL40YxL$wTq79!yj1i~Uw0VRDHG!~uDQ8aOWI`OkD~K+T-JHpLfw#`E?)FcX-gwRDA;9S(X&>&UWlHMkZf%| zUs7^G1Y7GWL3VltPxnx(w>FrL>SM}Pz%W)D_uBQA!g`1*n(BKN_m@&6t^NI$!+kbo zS=pb`(_X(5$QT$dl{x`K^~YXs;^(3m$CcA=mL&U08sYx& zmyAB_rZ(-PVp{(leEK!4?zFkdF9@H(#4!5a-hSgKj$4<3HryWe+pmrXV~eyUKS;se zWaJ>+QwPd(*;6BOm4^OS@ph^1A z>6Khfx)kq^$bwkR?hnmzSmpxAAv@s0`@%=8z&6TdVU3965%mjWVd}V@j29PYuhG7g zhp}V6=H0 zCT1Y>nqc2&%lc_cgGxEm-efV77~E*F21|?;ZzX6SE0en}AV-8aiUs5vKu!wu+Cq6Y zc+2F2295g6jgmR6Iz%Q`V*D7J+^~yAbAeEV+n)Q&9+Xlix4qe%5;fEby_WZB`QZB?(LLC42&8`$f84P7@GAh3&C_UsQ~ zI3p2aU|@hr2Stj+3@xB_d*R?f{0S9t)K9_B#w(@n81|G0#L2YXDK+s02j#yE?c(0d@Nz6KF7-|5MiJ88kPV6yx)!*&z{`&0?B4G!^m=a& z0w6_2K2Li>F0e>Ru`hDfsYpi#B2SzkO50T=py&Ej6tD2cOUfOwL9sIMgEaZ*C>H^aA7+ZO2K z+vRJM2DoXDbXziwD~E%+VVb|5y%oA7 zySJlOn+ZicB^Sv_kRnOR*Gpx^5EM6`vXG(umjp56s*DfT5_3F2e7=*9!^NPrtMI8&#V;(V|#V0p-GKHC=FtR?&3AdqoW-X0a1q4Ap!0cSDY{f z2Q_6}NptY2yOA3=c0DV6@kJWQoNUR^4D)fNk4o}I7djkfJJYu{4KOo+ee^Gk07=yW zm=*W)5pOxR*Kz}u#Uuk*sRY7Xu=ZdJyt>L@3}E!iz~D}KXJAc%Pjgx&ZnG`8kBdi z&WSXy=RMt@acFD19HEk1S2|BFiX}?7r~7z~rM&~Ox``X-u|H15rf!xB!%rjOp!O=$#(f@%(3HvV~X89<0QUwnT+PoiSVy@#1aZ8pcuiw_ie`)~*pylz=`6^#3 zdB`#K8`E0a6G0eu6CIw}D%VTpnA6Lo7xHi+66Zu{cYWUh zwGY+XcVh5TkFgGGCc#VxhMo{Bs_vZSSyEaypUt>$$e4EuK|fPyKa4&+mBeel$0U$>0#aKX8{`BHMoiw)<*$4b|akxi27^UZnqg zHrhM^twnK(VrmiaGj}}DKvw2)zR`h;Zix`4^h8#U(MT*n({wGXxYsTkOYs<7$TfL; zX~MPM@!K-e?Utnp zuaW0{h)na<-rZWEpt5dII!=Wl}>(g~QH1K?LuZ1Mk;zx8G4N?X3lM zo#d`B>y_u%u9~Dr&}MZs++B1fe1?QGX=li-mn8)Tr{lXkyPL}LGdlub*_q6#L*2Tv zOZTx)$_?BDX(_(C4OkTfy{bJLBPeTbMjuuMTi>Qn8+h8%3lj-v#e+B2VECe;{+O=m zhss+yERlP}ZEb-hA5OL1H=*rW?U>==Ec{F*?9mt4@^}zpDQV18Ckp0(TQcXC23qzb zhF+Mxef9A=u?^jK%&fm1240q21TtLxgR?tvr?{ezXUsZ1CZ7-AZah$VMuwSnh7#Jr zY?%3kQPpO-2g-1btG48^lQw8HA2q^4Iay{ZhqG@~!bo=u#6$K*_558ffxPV5PR48S zyR$Ndr`oll&8a3ce;kn`hVIdt-}TRqLNNzMMbR4tP;p+=a^RLn67%1 zA5X9I@q&hq;~NcE{CXpHS|_A$z8pq$etbBcZL)ZP5$sh?Sl(pOBUY)^ji{bzs1vk) zKizaCJt_LQ>1t|%ZnG_$q-F3~)joOz96FboeU1@J^Q>mJ=2z{1X<-hft!W9c@=(RA z;A4n2_UuU+K$Q>Rs0EKw*GcTD;6vQF705soKEPKgsPKk~2;%m#FeQuiO$lSJ# zH*O`BmyE~~3Tb1k&LM^d{vQRtni?ecaAooDOwy=JH{wlIR>)hzG)Fob@vVnMnChK* z-jA0ne0=g#X9U#H2$IyT{dhl5WfPUeE_9!5Pc}Tc&h)f(;~E->)^%@fkl<3om|Sv? z$;*noxXAcYA|G3Hl*-Cz#))H{8axOr3Za}mkY|=~qH~M&$|&qzPrL6fGn(1A+ajg4s7niY;jY^sTC!ufk!}xpkyw~UviQ?AdKggCAq-d`R$K=tk z2Qg!IHrK1=B*m(Uw9qHDD2TRiYXW#n_GpU;dr#i+`G}fUNw6y9Msy?sbhG`W!?;`y znnhf`#<*8UyVIhTNoBdUOso z#{sTL*a{6p(N{^8W<4!8E%IB=F-1rBCmCc@U3ko(-cq|ok#*SD%QyL}Z9I(<%+NHc z0N(~BU3N9Rn#R5h5a!aKO{A)paA}mEf*2Ok*AqYuQX^7}0eM!O1#{fFijK}oF;ct4 zA`#0|NMvA2Y7|<4HHxVTrfJL^IdE^-G%?l40H%15{WI75h;te!Q2kKR<9E3Do%unU zdP6>X5oPsE(#QYNi`9I?M0d&w{FnU4{^0MU(c7o#(!w~#&Pp!6jH}-3P)@Ga=lpym zfPpXGNrEsh2dw^Mz{%T;u%Zd_1n3!7M_JEz#Frs=_;F@F97g+$0>4Nfjt-}`{UqVhDMeo?oYd9JIw&f}hEq}A z?Dp3wiNafGqU6P@NYOgqr9gQM%aGkw*W&bqUppH?<;=yv@HF;Ey{pgI>zS*I$`uUH zQzD^j18$*;@pt$FY`jQr@!K0y=snr*?o~2_xpR3cyPsye>4N5Rq6j5kpV(RBaN>|w z`==117z;sK^>IZ%aDYVI77{>C;d#%G5|Dd|kmrgHw7bxX+-G*^tkSK_x!8!4qNyxc zN;6nG!1TykBjiKamB#m8?Xm++D4^1prn=726loX}?S-5&QB{iEbN6a2Mu8NLu>v&8uXOe2)O7} z(WT6g?+gIeEd!+~YLlnQ;_5G+iUcAMdlhiGYoLbs!~xH@4Eso4b@0$VkVdh}RmWll zh^v9_#&K;Le_v^b@j{=}<#MRGh{j_b%TzQSyi084-U%tCPoQ}T~>8oaX3DjEWnew8)ZCWIL^P$MJoI*C1KlJdAWrQ$9V}8p&d+${9iMM3e zN-wklW$!xnqSczp>S4tI`P5xE*0I@u$d!&|p*ppx^pnA8J2MwuP|aN*IRQ;-|U0jj*7k6;fWsH zGq_qe=VlrQ!16XIh*3%1W2d74BR~_)iW?1{wNA)D`~0gkDgZ5@_s+$lY!-Q??wbKj zs()15`^lg3Wewk3E1B0}C*A@Ry*BYSADp2M}M+= z3TPr@JmTrwuL&|)&WYG6y#K=``4YW~kU01g&i~fT3CdTGsX&mNA8Z6U=YV+j=(MY3 zcLkWQ9C0CyVZ|y3v~s)v-eZ;$H&TQd5dPtco(%GQNYn-b5DYHVVU4V{adv>ePSXRd zH$jcQql*4GOun@Ba~8|fV_xX;=d5F>X&k7T(`sF8;;W!<->&GnyR{~o>&0=xhMC>m znmuID%d3V4VRa`Capih3R;Q!r4D^pway7c#7|_b2qdf5MVY5f-&_&y zamH9>wX_q5Wg^L!SPX}n1HF%QvDx2~($Q>P!({rKJ(!N*_|}sc*065a-1`<{iAuK~ z;(~|2?WUrhZtP<#%W>z8z6C#m*ekvsch?)YdK~s^ep#N2I?HPH*x6=SVl`o`DsKr+ z;gI<>d!4*F`dH}ac}%9ns?gh8!L^j#PE1D@{WtR{lZZU}qG^Tdixgd)+IdQw3$?!a za#Yg9c`gfloEWhad*;az;GavplS8@#Xsv*V8tZP} z?n}wmm(X+bOBd)#=xW>W7QK7o<_+TR-x6WRI+8zI_?I!7{&^Q^+Z zsm+o`HAAa!TG84gSeC+dgdxsYCuXfb62id}?PdpC^TCiPedA*%S+yK@-IEIE&776N z`$mds;rwJlRzVf6>JhSD!0{mT3Mr56W^=O-;G|N8CzHyZysb;?IkA+}3bGhDmu_TV z(TMF@jMMfLe1%b24BOahvsp6EjvFpzUppu=kXGlspdm`~~fc zox(bkMDD~GgMs*KV%vxLYl=tc+MpB^aTs1`a5I4C*baz^Q0BHrFqVs^<|C^(~z#mqRyCM zE_N1F%5dxca|YO}YUqOPZ7o%OFeqLQFfWhOS5x?KXtKcP=f}nmlYg*o68l>US>@3w z96K4W*Lo1hQT$`JJ5c{c7r_cPk*{{sl)lo^97vLPs;=@PWHVci6Zk2SI_87;c^E6z zNxg1AL%ibz&%)+2ir`pDVqdy9p9_1U6k*DJcN`eP!^~U8ikP*U>mbh*wgq4a9`D}d zf>woS2?<8Q?jbhF4D?(~aBNQiIOm}W7*lIJ?%ts+lNPpRSFy9=NnqZQY@5xI>?F}Y zw!1s3Yqh2P4-Aew8F#OUZYI$d3subSTv3F&u>eVl-c*xQUy2wdI;2oR)}##eEbau`OL4!#nmeUxAKc7fcKC==i9ewlVNSwXUB*4V`@)zR{>|rM1_-nRb>=+CX?Bq0pIwSpgew4~S*&0oMqS>`7 z39Kyw)^ww%y}qHU2G2La^tKbCK$pAHw+*vkf&iBvp_LWTS>1`y`|96)aFJ)=SbN5f z*2rQm%-}k5eW8+UN7`+TWs9PX4ls_TmGt2TwqF)&S~P!@g2O1Mj#qPN;zih% z3ay5*xD(G~8XJT$41D_(_?)=+_ruvsqc^9Xyf%V`=c`kO4uI9I$r^$So9}x--q@752Dw1a6WcK~Ap3+2Vuf6&dTt-KdopPEzQUtz0 zJ3B-=3uI0iA+o=b`Q+Cwj69wJTi*jl#7RCROf>U089~%M zUd>*1xueZ;jT@DOV9xKKItk8?I{=o>w>aM{<+YFy<{5UsZu45PY~zM7DeI{=G43p3 zhnbjQ*UD^c3@|0Y)sH}Hlw7`&;N zcf+?_DnrlqGU`@iHcbY(C9X9Dv@O&0C%%cjh`u>p^*-qpVfH>9z8)Gn8l%I!JVivi zi?I9O3SBlMrqjJ3UgUq#CuL+PmlfagKnFaLc=9W9&orT2DgcNz~np(pPKqNZ#$lj z&cqS<^!Qbu;ejSZ5yj^$u?Nxy6x*@HCC#vxuDE}Vf2kBpvUf? zp9w8(j0c@cE20jP)qqSQPPK7%!qnUZ)<8Gy2Ck+;I!ozS-+(e<$>;2EbM$(ou^!A7 zs$C{4b_%S3h!?qtvY8hJ&scBhYN6RvPmiV9v;HDU%|jyhL(ov2EsZ!~fZ93EixuU7 z+3M#dQ}Y6VBdMyuXst1YHMD#llcXQi2L+=|(*E)5g(=1fR=0A!(oIw=oNUBWMT_^>1g^Rk1@B)xT4psXND z>J)h{izqDE`5Ja-X)j}5hB%57;Ju=css6E{SA`1~PeADN&SM6_*0H40 znj~4}$N3~&))Dy=W_BvRezeV3t1+~{^9{D9v3D?UHgD08FU$bIiGP1}HK4<84go)x z3ymwqLY~tHn#7HMEkdPeW}Hw-bCOQ-Va%=KLB_wyDa0+5 zP5Xi;(*Kfm#?KffM@IfaLtu$Q&r7V`w8z9$5j;6NpeQTO!nMVjqU>(GW}>7&aVv`L zCGx{h+`cccs78^)8z*eOM z)hmW3gv(I+a0PU!FCf6c2zAv&Sh^-zSPP;o*ORI*yL=m~I;)EM){b81ANG6k2X&qJ zciDk5QlqmNA&QLu06sy%zC~+i1TCx1M0#f;oH$oSYzvfY662bLxj?*V6|h^%+s%wk zQAb-J^>y{p*swj3ZiMFI5^kpEXl2QtX=4Rl2O^!=)^!%KQNn?R4x{a4jaCkPE<1B* z+E_r#mZ*2Ih8`cI?`{u6LcqY&3GH}bYin;0QxhBXa&krKjzT;-vjUGUEW?A#OK|_{ zBHSxmh^H0Xv2JEMCiDnJuDdsqiRa8=iP(E=DN66`z^(hlcI81lWF8Zi#}F zy?X%92=M3S2l0Y=S$?=WuWlc~%R7hg`rZ+|tvG>q6(_kZpnd|wWBbC*wi~?Nd=MQT zjAi5Fu!SA{sMV|kmOx*>dn-owB9^`SU{&gHY@0O_7dDK?wKbWz zu_y)Qc>{5KS|aXFipBl0eQ__d5ALM)K>6Tc-01I%n~6TSNqFCiWk(q0hO$UkTxMr= zK3x1alLy5C>{y2P#;uVNI33`CZLXG>nHY$XGmSu2Lfk#H1b0rX#kDhA zaN*oG6kpnjbJq^w+>OJya_218Y~6y%Ik_kt9E0oWkvQz_h@39&SduybSC^&W{(?Xp zn-+{c<0G&yI}-Ux-O;m~EA%xwVn|qb%P6kXEGvDJS75o69-_x(g{TGDkREFRenz zm8A&g;3n+)YIqahPKTz$^XO~@ADs{XV|j2tHVeK*a}jxI3Hn}Hfv{5x;W{Y|HeLbz z-Tbj<&Kw+?nStHM)?qPU>tw=wZ0QbU66wP)?LgxBt>{<02@$8)BmDF_M4n!Ym^15< zaBd@#E^H*wHzJ;|E2d-vqAzbm9B&UlxCYav&&B{_d+ZoH3^#WY=)`&D5e4Yt9P}sR zJoFR!L^?yDOQfHikIgfNU?dM>X&hMYP3?(Y1N|h>w@RRU;^b%!VhD6mDX(4_?khl- zQ`>hD=*0Q!T_f;vD}lb8Kqn&7{ai3LN>tE0p*?~3wF1v=e0_U|V=qYNP{{!fTXi=X)Z_$niOJf9f7C`Szpj%0x&mhomJaC3erth0erX2f+UH*&oj@0h##L9*1=4>IkL7dyo6q&%KjYVLe}P>aUF35R_Wa;D zygi;n2&;i!YkIq!;$8#tnr$V@^mjsDo|7)7x{t=Y!`ZmEY6#YGaJVxy5aq=4+vAgz z%DI5K1iFHBrJ6pKC>K#9T}+2p^1eu^rYj5C<>1wkEZk(jmSD^Ms&3Oq6Y+dyJZ{X2#>)6$ zgmkbZqU*`Od*izGkQMDF7w7wQo09}0^`Tq>`&+|2ytD}5f zd7M&7SCHQF_eL-w(w%j+;nPMB0R{r-OgnwJ>FM$Hb07Yp9)95K7eE(_8U8`Ex8c6; zCHgHlXCmF1NLQ-q3eq{aCDNlr*q4e$<6=0dRW7}zq#EhfP*;UGmzDG{fv$=g=o0BN zs;TZOm@9A>RdnJ#xC_R{x?*?!Kn~~^5a{dirZ&*4S9JfflCDbi`RD@b3f8{{bfuCm zrje?Vz6e)$PQ%!^K4{;d2`2J&92)MAb7?*($?(S|v66eHnAYwuuYrD@K)*=57j(CU zt433dbhE^Hft`XVJR{H_Ozn;3-38FwA>Fn;mWJ8l#IO+Doe)i&$1C{<(3Q)p$q?ve zW8;y__rOJm@2i#};@TPFQVM}Sk;gQFaRGE9Tn+OYpeqqLR~Cl*BH}!BK1Y>IZJ;v( z=PIBpQ{P3@IIoGE4ll#U5$po#PsS4EMEa8)ZjTXBK|PzvVg%Be#}ewbBQA+n6Q$Dr zMXD?Asz|UaXct(2Dyr+mx&V6>!K_4VGkhP_NPi+iq$}~oW9E^py8GZEQz_%EO0De_ zRfZGu!+r69&sUM^hx`0__xbZH(t?TeP$o>`{C;Mb1iF~^Ue4Elc1QqDCkNq3{~)Xn z_r*klFqY8mV{VClG|fPV&dBKIh)KMEmVY^|MFbaZ#Ty}c42E7#!DqjmV}@mj)s1=}U~R7IRtEyatn zML4*4B!&e!N}P+RS8o@WSBn?neQ_L*$v#O|(rW>osf}}ibp_}O(mw}!t#~PIUvCBI zsh;*I3^u~q5yq(6Jq+(k^J;+3R0Cb+OQ6@_Tf$tNPp+P}uCA0)d-*)C_oQX0X@Ul6@y*7 zpofJ8g1JBa%ZNLYnWr5?pfm0PP6%e2H*JLG#I%-?CA5t@p?Mo4)YEJY4Py(m5=iev zq<2yQovj4AM7o0WR%8#j9x{C`-x>$s}6wQu?FQS8R<2D`iUocH%$W6U)d3%B0!yzd{s&y2NL zELO}pzFcFB$;PRh>tn2iJ|@sfZoGyrCXQCb%7vx4M9{l?b31O`+}N;t;mKjjLA-yoAMYO?!21UW@%AoZ z{MLR7TOJ~)AHu7)gM@Zk64GDaIml7|j)4C9-eJ7He+2P?J}}gn3QreD%rA|`#ocpo zy=fLMHk6`i%{0tgn1;0JSxC=FN7d3I%$ydE=><{PNKn1{6KW)`^Q-aQxhQ z96wcu6UWx#)S=Zly>BJX?5e`q?Nzw2tr|NQ%|(H+E9Olwz!4*JT%j*Zo0kDv>11@v zQ5ARWlyKKx75ALAaF0$_cRY=7%i9cX{#LjdW{=hcH?*dCqm}S`BR>?^ilcC8b|TI# z%)+_KB3!DQi)#%_aEVgwYl8}NO_ansAbv>%!mDGDw<#CL4zIxd(;M)Vp6}CZjd*fn z7aq0k$HO~E@bKYrJbZE*_aC3Z-N$Efi*obPSzLQ~7FQpfq2)PTdvp;uo?gbaXBTnp z`2}2mbqUvAT}11P>!@#NKygk!mPG~NW~L7gTIr)i-x8}5<8i4njT(85I5^h{O*4GZ zG(7-IW4z#HYK95JCLqVd8S?_&k?Ze`sL%*R(CZypoP&fV*~nN^fQ;>nka%bnqK?-h z=FkcR?^%Y3qic|Gz7YxMw!-gF72?mXL&oKe$h@*1$(QO8ajG7U%jO`zFbj*5f{{l1TxnVB+2;BBpR>1!HDmYQY z#p-l9j1Db;)uAPDI9vv|9XSf^NVb{V1*groL zJCCfxs_V^|d#wq@^m)m<+=TQC+Yx)N0ikEM64Eyj&Nm>CkREo5{c~Y6V$N+w^!d$* zxVRbNSGFST>Q+Qt+KSXe8!>lb8KS1>qM;xOt@PSFBA7oqL`bJFpg%ploRGd;KspCH ztsg7H)&+^k^0cPc!Wg?Vyb0*`9Ow-M^rmPF9Ggy!mPSd{T*SG!E0JBownP@qxZ+} zKlS9`|LH$}BV=}l#guV4xHJyWb`z|R77~U9pz~__2?96=dVvha*}AwbMnF2RqMsn7 zAJ518{RHWXIBbrw#E}_G)qW7ieX!QK859WJLC7}D@ z-Npz?6y9%)A*e^;Rb2#b5w6!qyTe^U1AqS56Tkk@8QuTvf>d`MylP6umzHe&>jpLa z9uUwUG~&w*YE+$=&BvmDW)szI$-p&2eua+#oaIJ9wf6w1^cx5@Lb?jUcOq@~{=FxD z`)6nT^+Qj>@&6sr#eHH#l*>lA?b|??{v7M_E(t?=x1W1rXqP@v88{fGqlDSqSry%d zfX9RnlNP*5G0Xj!I ziv;Mx?Cz3Ex&-JP>0bezBc1Rq?e5Ny&Opv10$tb_=gh{S>S0le1CG^a;^mcEylZ7+ z(OLCe1iBc8^lt%Oz`1lrcUhowq_eK>tU|?rUd56Aj(~n;`yAv1cwkDOftc@Mj6>-T z1avzBx&r~-0atSEaBZ3$NBZdu8>|mEfS>XxILHsd${-UwSssGd<^FhG<}U!(#r(em zI$>N)N2C+7=`o~8=Uv<>9Ovy7bOGoL<1C(h*$#BceZ)vA>CePSkxt2HVNfS5Ql3te zgke3GfSyY*=gV(l-B~8GV3$9%-~K~U#Fcfx~QSKKG0Go0TioHL-av}HJBTc9N> zJuFdVV~$WAeVB|_fg#0)+HVf(dT>xuhnu1@Qq7Do)7b)LUN%_j8^N`<%S(z#%T67 zr{}^ZlJh2AWHxht8_rEDYo#z!})Z$YNX!1G$)X zmNmQ%8;A6TdN>|K9+e755V8 zv*w|y3Mcy9{fCl;4wS8Qp<<;CbqjTbhTCEF!Z>(YYhc*W!5BDd97ayj#PCV#=sIvD zdaXK1v+IY!F(7C{nDWXbe19Pa%__o(PgLv==8zvr=WoT1oT0Q ziWsb-ME4hvK3rFwXQ;Lc?Ni233agqA(NV!r9aWC?5d`&7Mw*Z#sE;-#q!ZTVO$Dfr zHJ=K3eLV~xs{~_hU92oC!ReNIT)(;rt#m@U)>e!Ax3*y8;yldpbVI3;DblB!A~`4& zdz;tb-rfCp@#GNRQrpil4&f!;_MFzA-Q0%=FHab1>L8T>cka|`yneh7uO95et9#pVn}D`=eK8gXcw&a4 zE|#flpvpuaJ9A?2=+su+Yg~!e)w6ML-nQZHJKFd5I&QzbiFKQ|AU`Dw zi-JASmgVztDi-t*cPHs2B_AePP!#3{cj^k?bG>dL)*VrXjj|F8oi{ zBI?#=q@G!ifbC^)ST`F^I~T$KYAu{^tbilMnHnyR=T;ELE8u^+8o_5*BJJv0q|j$1 z>Ou{IF0O_h0p9Oq4IE|{63|`YYHW|43m0L}+;r?XQimD>`uuA<(SxH)!2 zTgm`En^)1>^KGENZA#~Py_JBzihy1aicA9f><|WY4Gwg6nKc(pZFuVnK=+maU3s`X ztd-Ti0rc-7{rf=gFiD&Q=%F2eJ{D6(PK2|jE_^xAH3;Y$Sl~1jtxLo3WNkcNtWUvn z0{SHa`a)-OgeWQ?knkNu2xl-4Q5K`byS)1_pes%mfKJCs26Xjd0?_{=ppP0XM<|ya zgU%}GBM9d#4Cl0@d=KcdIRCHG4s+QE*_86`ANdL7!m2x3OkDg=O-A@WsuIU)qboP_cr99$VneoLx;d_ z_;BRvDdEz*AiUU=jQ88qadlY;Dgz9Vt~&*ObdGjYP=hAB%o=?z;|*2ua$_3)wV$5z z!D4(lG?PL|KgfWd%`da|b~6EebrR0b2!q1}0(#GZ=+|u!eXd7hV0St6_`MGndmGZ{ z*q2})NidJ5WgJ008n4$y;%<2)w#56uM^TUC`S%~Yq0=vaBG_~aZmtNyhvo!)IX55w zy0;Nuo;2a}oqBvew-8?r6VRJ;IMC0|@}uvH7QDvEL9Oo~DE1u)_VxTl2H?L)x~|1SI=7{3zI*?9DBzxRU1 zgvoH4Iu+j3_!lp~#xJ`@=Qk1PyozqakWQh7ZwH`Lqq#jI(5Vs4kWRp6KyQx;@9G}q zA}pm)m!MqsvTLlG9>?(RY>ZS7161U=;o7d5cyqI!kS^)o&aYCaI$T z9q7DzJ|_&1XND2b!%<>qNbjW_Ooz%Nc&t3mB|Gq$*cs4;vFBd_odC{(PD@#!wcLP!_$n6@9&@(~L`p5-AA zL0r0ID5rJGBeu-6$3up5`kfr;4CkzyyR>>vOIp8~?un(YRtTDE1cS*sP#moW)p4o_ zvav>%pEtE%JP>AP0ykA9=SZbt!y@58kn?tuVoR@gw zRk0Udh++SD;s0cD1)H=kKxrI?b?=8i{-9$>=fUXGeH?mslZTR=5&>NsenzZ&JFA`x z-P>ac!wGgmxAs)}&S$uqpeV=^)%l({xrN$UcWUtOrv&upYYF9R@#SePK0d6*n_J89 z&x1KPLTc=!?`pBbdGHi-?HeI#kg!_ z@591y-VXH7w=3xQwiK;R*+|nFjcm2CsIyYS1{)R3BA~|;&<$jOF2y;&q?$} zlPMG6NM6oyq4u)9Ig$wIUaD#YbS3-;!?`lUxveg=t<;d3Xp5V>@^NEp3LFd-F<=0l zq(_W}oQfWXPSQfBUPI7p>R40UM5u8~yomJ8a)M}D2q!Y?V(7xenw64ag?gVUQ zW%L{~2EE6PN54sg^U0IZe~JPIPy=-kHADxiDhf!~Ce#zi2dgU)?3HLgMUBF?Y01Do zjPTAX>#WMo#;(g5>R>cQ&O{q>W;z&UqDPOVgRVUWL03f$vkH@Og22^!uMs!yZp1xW zu3uV!c^+<wwkABgwTt%e zqb1?{_EEgJ(?U5;_iMrP>qqhQ{60KBxf73Cw&T&Ut$4D(9`|>yLa?nZ+~~!xt(k*= zeZGfxZ*SxMhg5JH=qm#z zS^$0VU}H&3JHXlraC8T}{ej?cAUq042*iuf2y7c~jrsvHJo{U1*cwLrd-0QR~OLo{4|cdqP#vy%N87ac?1{V97gNg z7F>UG6c=9~#+jD~aJY3VauYo;-A)@>v5p8Ui-kvR5~4O_VauV_xOMjoo)Neo5~}aN zCS1S0f~)T?q2h7iZ%7a$oG9>yB+R{IFx1AC`xC z!pqPalSZmzp)6)w&XX)QIsvSA&4# zD-dz2623>5AoJWx#GYLNpVL+FKffA27gr(dTrB}TAL?d~u$^jy#w82TydV)xM{BYA zMl%)>(q~=Wi2_1;=A}j?Uf7060(!`qO@#A}2tKuup3f!@^qBKo5qoJHVy`qH_WE|j z+}zHWX~(x>Mp+fY)C{nN1APIWh!`iFKRaB3rv&yVEVTXj$TB=Wx(ttwlwtFN6y*5Y zA&(k>`?7tplLOtFfNsHoew0pFuNv6|aXB*8bB1*~Y3w4De+_g32+Qlu1oUd5f}TzX z`dI{YYZY}&94L%IchRKAJptX916`kYaaSH80^N+`{ChxeM|ww~bEN+lKxY+n<&op~ z81zy73Fspxz*Un@mh@bL=olHNqlpC$`nb6$6pw4;@Vq{mfS!(vb7L^ykxo8z>dh@m+Fl3rQX;YZ;n)*u~_7&ix6t8 zxhrWxd+0b!>N%8vu7Z~vGVrf`^!yLbAe_(QK>zoFVxfY*jlO4_(($}D8RtqP;5dE) zM)eqseqDxOKzDjSy2+s@0lnPc1b3GC;{yTx!-g2V-;_W<7lSwT(RfrDi>Blt1ge@~ z&~L->=TC&`pZu4T52m0RA?`K0_ zicA#|IAJuV4j#&9Z=c+E03m%aCKA>M{KbI&2LZP`ztq{cf!>aE5#_Ssw=tj-%y|gi z--0;4U&sIGl5b;NMkk7Z-gN5OU6D7cNMbwaw) zNICTSwJUxnp#Q@1V`qAuy5NtWI>SIw4Q@sTk}A3(0to4Wg!CX5Dbm@j?h>HWF;I$h zY7~nVbiS0Wpm)Hz4A3P@KC3&W!}ZX4S9h6eI_m;Y5XtnOiWRwzczTWyO)&3(bOO3` zR(FE=JDG?R#=W~Hz+9ZsUF_oiUJ?=LZ!cBi9RdCPmRa1VkHgsnp)!W^0K6;r$J=FrxKHq1<)M!h0(!ax z==%v$cNowa$Y%>ke@YnVIHzrv#~kUjJ}V4uCE=J!ud(SU0{Sp{1j@_fY@$70uvxk# zmsH~w^qJzih;zvVabE$QPZ-Bw&bqjZSTAKjCvbNFI^kLxS)9wl{2TY>m>1V6e5^X9 zfW-|j2#wFhF7F)Zgi021oH_xW%i(pgy7cZPIY%Ho{O^e%-uC7nJ; z1obBrj&aH($x>W@M0kIgVUGtgxu0Rj!z$(C`h9}=10D&^InbT)kUj_Zv)MRwp@M#& zT_%!%elo=au>@K@1szNps{;)c`p!AKpd>mF3uA+@Fwzg%bguUyYoyZmYjwB-niHI{ zEy5nTWQ+-2dt;WlHkzGv(c-FygD!e#cGSXt7ag1pG{)5kD{7z8bIJ9rSfbOR_4nw;2 zN2gAG(232-!g@CKAfS&{g{_7z{EZ3dyn8zVop2sUI2XFL8zFvCI(~^hQ z+1wW#=wfI;>)jK~s^?OmoAB`JIYYXnf-VhVygjDvu`#2i1wt)Nk!PcY&EDg2Jzo)T z4`t)ijdDV>(8c`=ucEJ%LAnU^Z^2vK|8<1hKhfjJhVSR&&*^w{c@ZwxB_Up83^G;6 zV~wRU>TT38bE*pBwA3U(pCrM#a7i^bX&k@2nk0OpI0kij0=m2ibamuXn=;Sd3@PTu z@FqvQunM}0wJxSuX+qOpAC_+Vm^s}8PmdMh$?gOkSQZL56J-qOKM;MWK`5tch(2

    U1X$0*NrAji}u9~`r=Q|^hH!vIsrWmF&p!+`N&$_x_=f=U$x@ii)*;^>I&N4UdDy@ z7jgLY1vEZBgSysZs6Mw3dv2Y@#iy-keR+ph(eDz_@4dN0Kf~5<;r`oOxc9D&exC00 zf`Gn}fF7TQ`QGf>oo+Zn2ZQtFSZ{tj4ZCiw-y_J|rsLemK1yRTA2!L>pPKsg@8^-k2=2%VQ04>dwBNcc?VcQJoysCag$fLu{uz7w8vb=4O>u87rxqjFg z@4$iHC^V8ZJ>8Vx)kUf=Q2Q-LAtb?I|sTA!mX{K!ht>%qxy}3 z(uj#1=)RNybuGkd6VM&m-xr-|{g)rR5Ym6aPyhHCs-uQseNix8?I)xjV?duyP^Kk|6zBPpC5wP_ z*>$1oJK>y1a^GVGc)T$K`=@zeOM*3?Zq3D~7J@eeI*0i@d^$CsFQxlBKwWlhx>!{& z#mANsJlio1>r!12IAsjN6y#CmXNB$Y&bYKN1kKbyPSqHTjr2VW*Vcpk6anbtdJRU9 z?qob&n}UDsrsqf~XE^5-boRG55Ka?fMuzTN#hN86k+$Hp7_C@`Tnt_?_Ofp*?#eVCp0s zo9Tmll|gv7I}2Z~&^hd09oTrme;qBv$EFOtSet<66nkXpOrXDQ3>@W0LxlmoPd_LP z7=%d#^}$_w<98A0^qxwAPVfEKKo{WN5$7Ev0XD0g^Xhp!)WvGLEY3SdyiIa{9`Wb< zqTlbmF}6p4n8=NUEuYn0K)U+`IXDv1wTFzL`}7cyPC#d$%U^%!g8tq6!%#^To+d`{ zH8bE{-23J}0R8>Nl{mAh6k#?dh&9*2o-{XH$@9R4EJvKlbwEqD9hQ3Q(q~-`ioJV5 zcW^%x+G^lLo--aT^2O`r0eHLIp9B3}c_8i*dRKbrAz71vuFZh1i#;)RxKkX6=Y;TQ zgz%@cB|v9g+C`v?A)wzPpwD(Rg88V?FdZTfKe^F39Zx_fOt%Bw9d8KREWCOy!TGl< z=n|mIhJenyyGxKR09(ZP*CEL9eCsyZNFGP5r1NUJB)rQzL69R|f^*qOQ2w`VnM%5} z%X^23=7cfo4C+Fh@l*_9{V75HX@(=7P#zP~A4&2!L&zfvtA;-$bazNrdmelhVV|UW zPS52b@7~U4a(Cymx3gSHb-{A_JXdgs&y2Cc zwq;?sba*D7wN>N8({=d#Vhuh&C)^Uu|NV3&o)XOWl_g+7m_3T=IhRMdpfb`PB_5_o zqT>vk!99|WCy^ZI#zG`O7mqnCted-Vc{M}Hbre-JCchp1oSVrs(CohSqRe|fi9x_>wFvMtYXeC+a?9N zxSs+2HXV~LEWo8zu}D-Ng-n&Ps3oAUvsK3|164x18Vsqe$$D~%K$q>#-X6A186yF@ z`~*0VopTt_9n6tpK|m)%yC|yQKUD4XplquH4FbA%h!tva?oKD2Q4=}Rdrb0{$c@J^Wep6cMkpJT&VbHv&coJOH+R;>T>|tWs)TL= zc7FzQ3C;)bC}1FM^D4Ro;DafHlxds7mV=ZT;91x{26k3eCwvp;8Pr+Tok5*V95=#% zem6mVsG&B7YH4HOut^x(e>5DFG*KKBjPmSwY+Rm?wWaZ>j`hHD4=a?|TVT46I}UAF zf}6)`abtfut~M;fxz)3AY-u45mgZu2b}F{UMPpT`hq6PQvY{J9a>+rCx4i9c`#;d3Makq67ZV>t| zw5`Lzw$<2lwHzBy6yngU>T+Q z*%7RHNl1Tw1htR%W8>39*hcGHULMAVSBJ5VKwkg+05-omgu@@s;>d?H*!TVf_PlDr zZUSI-peIV*O;MO1g4os5;9Zx4=nVzf+_DC3clP7)!~M8*oAp}Qfy>X2;ndr6IP~@+ zcDy)`_4iL=)s4egbL|lJ-@AZI&k5m#^n0)G;Qs5oxclmk1nU$+`mMKZ1oSqnuHS_0 z=v2(}az!pp=I%41YeALxUF zQLdU;?8bH-i0PY z`wpZWtw+F-)d)MY7U|bF6K1!;xw#BU%Q8`#6G^~xf{(Hu_7uh9*xUpxEY3hm?Ls77 z+l0u6TM>9>BZ9Y9BBXjAVzw+r>Xi-fyRizst!v zQGMBU(Ahrt!|5DN4Lb92!*Qn~9-p@7;EPyA zKS)5|SB#Ie@55FG^mGB}r4g_jKOQ5x4@RHPgVDF^aP;d!>C_!t;;aecLHM*O3LgpQ z@3+KL2iDc5km+UCXH*asIzOMbF8!d&c;Y^F+iT5K6aGH;BHHq1nA#D zI=?=;*v-90sG<|n8PHib_l`&xF1PmXk_hw)yuY*(r#6((->-+cJ{CBa?}>Xeyl{?S zS07}GJTpbu%MFF)@F9pIbg%L^z=eEgyjbjwH_Lno=YDu6rXmP!#co(Zm`c_dk5o1W z-9s0$Q2;JOyC7q2!=aF6iPQFGt-!B0E1rI$o3#-ubDlLTroiHe!<^3D^3hqxOX@~k( zNS9(=ggHT+uq=%X)Su9M`8bn+PS$wDLfb;vx{!`QXWK%B{2_<9OtNVoEMY_?>iBbdn#aJx5-fNrGQwn!i7}UOTtU&=}CS*IM{QeW*lFqz(DgacqpXY&XKRW?`kXGx@W9c=96Y$T z9B-f2;nV94`24yKpI_GC%L~Hn!*mgu?LZf*=%!Mjv+!*KI@>3NRnCR# zd7zCs2YR?Awe{@PuqSvt+DcUMz9k=DZdP;v`WFe(+49>!|JL>jLbxo_I|5yLKMwQ? zyg5G~=T<}`L3soLT^=tvlU%W)DoF~?kEa&L9wSLaxAAJT2BX|)Tl2C^}@V(f6NMVLy5NoiX3cE>g<4- z_O>W8HN|uTU6fd8qrgHF1ukYN^tMBhpFN6$9Wf)y4@L1oC{77LX?h?^lY@{Sc`1l=b`@bLX5wA^k+#f4hTxwaCe_p4EKzY>cs&cV*@Yq20G z8Oh#hC|cc!=C}7y_wp)gUYbxs9C>pY`{?gtRrHMyPGi;0gIIs_ zD2_b1gw~gLaqrb#+@~<8^AOPQzP*jMcWiw6E!5O)KvrZD=6O2fR)#x{Iv8T1p#zo& z$6(*wWL&8V#J+i+*k0_9{rO&~igJRNxe3%Ks-hv-3x}heQ5olh`9<4z-;oAQ~ z9o+UVK^Fau^Kzq*?&Jb5HDm0WnTVtF6EVLe9SJoH5P5zbJg(Nlp=mjMmdrxrtU@GL z&PD3pl?Xgp3IB_$5pb~{)?=9p%VqS&7KAD-eFM8cA2{5O-}2QZBED z=e#1Q8dc!q!7@P3Ft{Tnvr>`2{Wr|5T$F3ZH4i;)ijTA&Mu=?AzWJRXeCEFtERIq z?i}bWhuCG-Qjz9ijZ8Z|9LN`dE>051W^q59M-3DL`n#`zF5R|jgq0OEB>yo5EU&#I| zt)#%K=n*PPh^FIY4B?gGkXa4wr~ z;+zAWZYQ9#D*CU4yC44XJAVAnUofU$f8_aFp>^vtd~7M^m2&~;MTBk2S11>{woCFo zptFhNX!~_@4$jRFMzxnVE-VeltG)F2CnYdHJs+PapHCCeS-uAPS4jU%K>vKQlv08> z2a9mNJOO3&ncAQ2gXdc_@MLo$)O=eC#=&dc}zH<_wpD&Gs?YQw6-i-l$5c+f(hQ6JLVnC;^*qLgN zm#c&EX-hOdZjC3{CsGpdVN*O_uc6~zK`4?;%rLpvIQ09q4Inb-574#GJMesGz#Ht8;+$izFvpGJv zO5m#VroUy<2t+B5!(3Y}>`k=6gE?M!yTli7mwMw}8HMBAA8%O~_sSsLD0Ib2HytFa zk3)*aIMlf7Vh8JrTofRTKc6M3pvwSVT0NHl{qBqi%qRF*bD+z?XVfU1h_xXEyZ*0$ z{(YRwgjLenSo97N;r%}e-JkM;g^z2NK%G@^>)KkHj$qc=sxgPAfR_4od4E`1HE(i zF$DCHP#L2n0XnOo6Ql{e@pjbSq3>+nf=E1Jlcv4hjL&Zg=Wo^#(AVJ8^Hq3pb16=) z&qP&<7v=^zV`F{95Dg6XQ|@@`v-b!r3C20Byj@N*^&WW zM0!Vzw@2JBdpldQG3^4-JKQFzpuZ-dpRE#ro<%@kWv+xe8#T-pfj&|II`7&}C>J9j zU4dZELhC$JpfP4L)CuVJrmthl-&Z_8ybg_E=HP9(+ zoH>IwLwSFeDU*1&_km()-yjBc3IjXGJT+ih2J$eZOQ5boc&Eo3s78;;kglQ3$FQ?* z@56M}FoeD+gZK>a4C$&ELXGIb14mbG z)7_>f4>LVEF*$AWi0L*Q&73g||ND3Suj@SUz!NvV_vibL*GE{5{_Z!4%_j(hyXzKB z(nqvpqFtEsjX+Tu=(R#>qHG~8Pc0F!iRc-hllW`uz5x}QWp#2>;c?Xb)_v=n?P&3U z4%(6W+WtSmonFT?vIV`JSof>04X1BekFJTnW81>i`C415STk%D1v(k=+dK>V<_;FU z-pD-ErsC9bYWCC78A)4YCsQomY~eHAPCT$Isp@V%A<%4Za#(Hx@Qhnd2a0lXytfDN z=83-BY8x_bjR_9Q)u?QD`kG!g&>jnt}7DZLyb5|)vOqf5mv{dm!PJVSKy?j86w1H<DKS}CIihw0_iF0==+6Dq(}pD86$h(efdt`eGLRaZ4*NYGFhfA98}6P+Tg2}$WSOD zvD1O=+)%f;%JkD{qQ=tIFWNl%Le+4f$s@A&wm;wdEH>V|G$*n_hyKjiGG4SYU5nhu!xWxZ%vrR;hENY?Or4#iLas zqKrCe(<4s0m#_zAOi9LxeqG5ov1YM-a)u{oW%aj08Q^?k6!;UDziwqjtT{fnT#4ZZ zy}AC3L29+095>08*64@jcw(vUY(;Q$#kH+i92s$>$^9c464Oj0{k3*RnjKFSjA%~O zC+c}i4$?LnI6Qf~v@j7CY|P1=p`T`+mKrs73ts7~KTZr{?7U^yWqOBKJ_! zWEO{H2R2oXYkJTZ{3?^9v;YUZSzgbu#WjUWYE$d#YI4^DQoG}f=b$_4T94J_CQ*6Jp?bqJ)hibC1NIF#kra z7gUZkW81n;xfO)eXT})KL<=C8;am;gZ?N^(dD3la5+l(cm(n4S)C_Y+o>@?=PgQyo zPb?#Fo$~XoAe=xi6N2H8K^KO)QQ;<75S&ZirF#{ogfK3V_04--AkhV|S(jY5sg9t$nl}2Wu2RVtVn>#7o za6|-1O?`&2ztdn(_ymSLbtFomcI4I*YHuB+yEnT^bxuiaKKAxYjJJh7egS_N#-sjT zmnsV?d^$-i4n0x0#pxA7KCC6$-FHF`_?;{^hI}!g*|Ny1?n@#0IE$du#n6A)k?M90 zoQnkY_*36ijg{Ho0gpk=iQmZxc@4IkrkcfJ)gVVXtkw9}D?aPe`I%6st<26p4^>q4 zV`+;h)p<%o-5F>?t}q>?1MP6uRT5JQ<>C4NKd6#>^SCR#L(PTg&L4^5d2Gnr4GP0P zeeU6C(2bm?44hy#|4envXs(JGg#320_?aOy7WaG0x9tFv;;3mUp9_aj0SAo7mI^Qf zH6pl;6~|M|eoI*kdulo<;%6=v<$^DN(31$b8>kp*LN+y$w-?{mQSN@S-vb*rujo4m<%zg4kvsLIn)X;~2m~7XGaQjbKru&~`Rv5M1 z!HYw!lrq9YG&Wk#!l(7qFNDdxIqj;_xd@)(e>YGI;JSv~+qkE0fZ(BjQ48OnB-Ei< z<0GF$W|g6#WG-!fC1#IptE{)=Q@~lE+Dm#=o2N5jWgK;9?A zqp?$pK)TcXew##|} z)>5cX<6GOM<}mpv?srAD|E=4C?uZ$>cs~7cV1}cD5q<5(TM=1xD{6W)vG$-lPEe3t zF6#<5I!rF>Sz%uRpG&^4Tj*ea8ZXM7LJ*#ZN^%Sp%DT@Wm^QU>xS5#>2*0g*1KA-_ z3=7KGM;Vx0PCWc)q4gx^;X6Nnsxp7Ik&tPi3Bi111wUqu0g@aAS8slP{bfQY(GR-C=(Ac-{? z*GqFZeYzBH&>X+WQ&VofreW!DA*>eR|EnW|dpAHj(0QczZIe{C_EaGOlYY)8c*@EO zWp7sf9=I~O@wjhJ-vH0g>yf7L>5(?7x8uhrCjyDeB%|=|av*Mm3q}mbwF)SLZ1~pa zK*!|6TQhhO`^P|*vxW4oNY*mC(}}|NshV^G**tgxkvhqvNQ@0W{0FU~)k&RH-K}-5 z{gK+g5CN{$xK!$?5y&{vB69MKaF)zgk`RQ^Fh^vcFof--<)uJ8N4}9F1Z^M`X&XKE z;si}XpK|A>O?7Jt?L6X?c{#<@UG zJ2Y1E%iMcEI;bzGgSyboVmn9l~kwp^4e0xBT z99gRW^X-=w++&Dml=kHbNC?+xDt&a{+g--`vgCAZYBc0FVkJ}@L+3eV4G~=Am1 zFTE_jg(J7*anDrE4(K$nZ1J7q8zZf6v$d0dhQ!Iva zRFAjM-@4;UiFjd>%wrx_+rsLwF^=ba;EVlUu3ZG|m3TQc1R^4Mrqqc3gtHnozIky6 zEyODcMqvp&A+9l9Ewxo|7ryGVlkltGpd_UCFr%tnrNc7wTMb;}R^EYaF|GEyOa8O> zvhg`j9Vz}#9Z51!g}nD=q%-#w0FhI0HenZ5U5-yOP?eia8b3L{zdf2F((YG+6)a@y z9cS6RYUbL`puwKid4G8_q+Z~$9{;n#nCZ_2allND<4Ze~UyJ*FJdiHC(8(?)RD}p!3x<+?}z}E-fZSZy&1tj+b}cBmT8%mO6j%Coa@5vGTr#Fwm2% z^n8KwbVE|Jvy(p1f8pw$bYmrKM~X&IDODgjo2pHe7#m36^qb9Zu7uZ2Yj4lg-~=G= zh|gr@VsR+))15pb6c~h_PshhB4%>>m^F&W)59PLaOJE-m%W71xR5pR${PFd&{D!u7 zaJ>cJ#Swq}2c(*0Qf0pO+-|?9b(Ko$0Pu5&DT%d^$*}kNVN=YE4`=zE&a7o^L>q2c zh-D&y+;f-Y)x#<0#@PY=5RFXqsM0_`W?rLc+b45RVN!HEhHWq90-SfXScsQq&M6mt zJ(PUhDFpJm0pKLMLYRj=dN3w{I*RFM;-X*JQ}%MHQ{FmM86+O_;kc!sNmu^S-9)nC z>kwxlOK|&|E8W*c=Dg_4$DP-)?ni%97qHJGpnv^4x)zR*cYwCEB=T}VsbTV1C z9ML0MCse((C7B0oiHg%wqF(tB>V6~S-NV^3>LK06A!n*_W+Ts>fZQIja>#t8mY`T< zy2tLO$XR505d31bt_0zW7&F8{aJhX7GR6|+Q6IV9^+iKkm3}>>Q;G zeRe`9Q0n)7$WKC*5e>PHWPfibT@(Es z$l?x!J?!zCB0L`jC}_Ep`(sVrqIqWk#OuRN%sc-y-fv$};V*0{Zah=va_|(to!l)_ zKD}QuMFQd9BAFQ2oTm({#ro58`*xbzI*esbmZl*YQ!Dz z!MuA@^pPZ-`?ZGVnOL^h%72&vs>1iSw~4 z-yJRH-%o;*yEDKH3w?BQGV@dMROpy`?hrr;&;Vkv+wbBTHh3LK28iG&Zio|(5H_~?XSne-r%mLzvch53%kFtaW3&O zQ-w9F@7Ra)GFsFYwV`&?9n$`yQwS(huiUqRI5Am=(qZ)%dl!&=eKBncpbG>((H%(B zRU=4^<$*2nDeCOce-je-rl6hRCO2&x`8L*ceqHS(6g>{cglQ;>=llXjrqf`}<5cHv zmibpp0QddeQ#s--6K}w%wKgIv<}_a=Rcrc?93{j8hDVz@&u{aUy4;n9xo?pUha{qb zoA+6BL^qL!heG5FGhNC$@XzfruiVOLTQ`kb0_gW}@N4eRqRIEU-d+r1_)_ag?|BQ7 zk+q*LRpF6H3+M84)vwGC?xEK@Q!gktlu1}R5O$^%EJ zx=ibyQaXfmZDMD`xN?I=*n2@GDv!2-CbYSkjY?yF#>!LQNr)rrdVY{!~?<<26a?c## zS*i3RFDveqDfUQpApdF$xxvks$eC=1+~8`e`}4w)DyJOpzlRdE0exQu@C9Py+m>PTbs;jbE%Ruk~pF=$(WFuBK>c^DC}%={;D?*`^Y+!D;A9J=us=b z*3;s(X@c6;EpoAL9v;WqoSr3ycZGH8L$F|X_YH5f8*)D2aJPze{Lw_T-%g$=6OX5) zqB6OfN=UcYo|-y!(T)x!ByjZ&xAVFxWHZsd-;bF|CLxVJsEVkMf(Cqu1^}A~6<4uL z^2E13yf_5N?57wtrD81innEwD7a0|%NmrftVSL|(Vy?&)B(}}TfrP_ss_~8h(}O^W z_QJHLN+}Dd6rwK4fvU*UVAxj)C5I3ZfEV)Jd1hq}RuXm38?cyyxkl(R5 z*?*JBub~0DdyaeB*U>(%=o=+iAX3q9poQ84Er_3)`>r6yVs1sP4AEiy?=7;#eFk;^ zjPaI~u9q3ST^k%sJMxV)qva>~$Q8`~^?uG{1N!f()ULcOLvXFiyF|p6_D%@)G{%Xb z<7;MPw5ZHW6!$#edAz~C^B*bE0P?I|a{%H;{=OFjFdouEyB~Ox{3o0*>dyW(xv|W& z-FTHGJffl|=_;Q;M`?4n=h~+Om_M2f8x}>rzE9gv|B{$wf*7at7;gN@w|4~=ep=8b zJ|@?lMS0@?0m59^(4uz@!|nsyUC|ev5ggE6^l~GA4oxDH z1;(d?;wa=4F^nXQKv(fbD@0t@lO1Mozcn{y_-=&>@^G~PEwCbtbjNhlJQBlLe}9%D z+k3-kc%yV~^`vmX@IHFY%0gh$4DZi2#uD+D*e?Pd&T+*Fr|~MLJ7o#(g;;9(RI%b& z0&#lTs=qR4z}ptYOm>kW6-v#UvHXz{QBV z`iv4_vabWF__G%tU_ce25vXmtSDS43(_77uCe;cllq(`fH3IZ}*=(G%DXMCy9P3Zmxb#jK9 zQqGHcJ~l};w?lH_c4Wun?j3GsaB{SH&X2V7s#Ndp3R_z%7LGq3BM9G4hI`RSZ&Ui0#&J}@kN-yP zalzymVZqvziSp2m1IUvPyPO5+x;U zL{E236vZ2!Lzlzc6Uj~TrQh%!(U-UOQ{HubYXBG5lT6j~Rb(1)a&TQn(Kb2w;r^C! zPjhmMd~4zgw0!NXDuu?RC(@mDdQ+bUQd2~tko>{e$3u!E3>eUjA&U%%3wVz>Es;oX z%I1w{jBc<`0{Tz}`?@ja&!P`rFBDM-I5jUWcii87(}Emi`2ZSzcYbgzVMAb!|AK=B z_FJMoE7TA&s{}vfDBwy3+I&heN0f$ya5uo<03!sB0E_b_z5x|n zIa8=IRWGdWpFJXli1VP`5po0zbE?}v$ig7(0WnF(|s1Vg+V3P9a+H7>=YHT?JH3Yc+%2!tU z6eMblJu~*mfkqzeE>>-?00RASC)!bM>6BB%BFtGId>H8qMg$$bGrxQ0!DFh=GAy); zXF%7&Q~?W@FE2;z9VXbs>*Z$B5FForY`@z>kzO#dRnR2;MORp|wGB=-!sxete1yA+o;FO>;$WA zjPmbkE8}Egp??+Qy4M{TEjKg`4|nvmQh>HKKzum98yzJvr>6;@3N(zJ4|Yor zaKhVp;oSz_6r+N>5qgJYJ^!k0nhJZ^#znNb68Ywzt#**VGC68|d%!F_Pi8$n=04A@ zt@tVkoN@SPGFe#hZw7eDlQaBbYVYE?7kO>Hyuu{0_!~>?!hsr?pF0`UkEbtbPO9Pj zOrjvwh!b$B9iRWIlpN;E~A?cHrM?HH?+ zTiUBuN=qLng$fNM(Pl&$`@vBtBhZiK{)87Fsb&F^tcQ`nQ*j`nOel8%a3s1B zk?K;2+AaK1o48!9kr9>?WviNjN^MGU;{{BWtk+JGyF=LkW~ZYa@a_}9$S)xHdHu_> zn=Cxm29=b0Ib8M^cILe{&}RjM;s0fzb5iIrJ4Cma&Gh`p{UiSRb0WB(c;KHc)}pb4 zI6~@w?y*@r-!P>e3*~8FR4Y*UW5IWkBD(tyQ42to6_AaBFnA~8_w1-X9R`r8kJM92 zS~j}52o_X0yD_HsJNn#I*s<2Yg0Efz9bH*lZid(Y*!vFhE!ME+Ls2C?d|(83Qt+X7 zBu5#z49u$SIUhh4qI7y2^o=!lZA6dVUv;QQhD(HCH^)LCi^ro8r_RU1t(%cePDB&r z{3jEg&D8rkc1fZ$Q?ep0>6_iq#~5w7N0sEJM^hmgN&-L9t+`8LEFksE-ry6a(b<)F zY^6FV5j}aNeY++|cYd>HXH`ccs`PRD?;7NtMW3^)t$O-UR5q58I5L@ zf0*EYCn-e3fOX4y8SFV@d1!rm7K$va#?%wOOS zCnk7xtrjGtc2?}#`N*P36{pID_P&S=D|!jh>AQV($!`Zamy9!kFH=G>kW5{Pog|h& zqe(`0FRCQai~T;&WWY9*TqXuzfr9eBpl4zxE7w~EljwIU)CKD};~o*Lm!PIQmqxGX z8VCC}=%a)DqLcg%m?J zoT~Q$ju#q&j`RccpiKqk`&E)*^)#MB#=4N+I3K2r`yY=JVr{J3sqE6(7s1gZB(3+> z))hUuYr%}%s;LnyOzY9UzU*bqXJ>wPdoWQiai(6HV&N2)huGeWdmRh@+C^)H4z@1M z=u03(x+4x))y=I43Hxz63 zmA`*PNWlkLYz57RHbH#8I>0=2mzG48+y*EnF-wz$%!$BYWvQN{Nj{R^6XEq=aqTlF z?U%`l-Mi=WBx!Gm#I1Or!wf9>o@ese@>BHdO>rK)!v)Micc7xu$sHC(AB7W$Z@O2V z4E=Mdrk@{X^v0m^$29387UCr6z&%L<=Xi{l+2UCc2Ymt=6bpU|Mvy}_p>&eCfWNPU z(*r;+Z7KY9y6n{sbSan(#~gI0vYTHmNtWEbPDhtIHeyV+FGf3MhD$}IsydbYVI~JO zVOWwC7f=}TXm0Re!ab%vc=w{eus@wwCG74>+KipjA3X5a|96yfl;oE-REsz;(0$1G zHO7mz$!)t=V3Unn*v}UGY2=;KbQRAy-d<68gNfddl7vGpBA1zGl!5gm0ob(WmG6q3 zl|Dwf{+j-7V1z~9gr-J@$4ht?->LM}i+2rMHFA=Fz!d$OMU~m_cfg4cdqJ=>5xm9g zyAkH`7m;)c7jE)ASKH(YiG8Bhu012zst(an2wBOxCv#U-Vbhu!h1jgA(PldTnG&Uc zzn#Jz35GA|78r7av^aoQYTA3bP0X|1Jpo-ac?O`JDGy;l+4Fwcu(+Tc7LUUGB`F>9 zUCX~^5cl^AFu>+#M{loR@rcjn#(bQ|*Jzm;$WU`KU(r0R*U$hTpk2|B{UgqO>ab)r z$Nup9@+DcF*tCL$p78IrLS4G8_(b)d_WZMOoJQ@+t5$j9haTr(Nk5=}f_BX>g}PlF z1wGkT1121-`On9vKi@Ld>c0ViCj4R*b{{0@^0^TLJb;1_Bkd+qdqtb-_UdJTnO&kz z&c5HXyPQ=tsJhqAEtdOCV~!(&@bRa7jMpR4>AzClw2q3edLaopwvexD}SGCa~ zI_awBHBfe1-yZTlVxC7YGXU?~0<62(Fj=)^>$2oyaX1=!GIY?~r+=GO|W(}}?O zuO9iU@cU0R621Ovq58>G4h-caw<8^CUS4aBd@U!gl{Am08sE{)&B67dvoP(D7%1VO zGZWG;F(D*qThq+V@9cAI;{E+D#QRnOhhExq=(AKX|I-?0K#@7d>Xie(v>fVDuz}46 zDZvd77I-N$I*ty9&@>vRtppMEda6Zw)5;i2waZn^#;gv>)rFH|Iy&vY4_n+Ktn`ih^jn6`Aqu zv1#tw>>r-Y*Co_~_zOc`chRNf9>M@KcsRT$>FTHVk~(`0Kwa{N4KnHV_C0r3A7TH2%wLUoV8r)N(C(f8IxZf!rsJt5P{$~4&uAF`|e#2`0z~) zZ|!AXkj!T~1S=Ypf(9Q7TzLOJ0tg%LSd{hGXdO)$Uw;9%=TThN7g*x$dDxUU;9_(j z_1*f>yxrMutbGhBlc`gg)?=)p41q!PM@VU886=e*mJ>{~YYZ4CqKU!4wMQD0MQN^) zQ~woFBOqeQ=#=alR;OUdTcD<+A)l$EugA(4?v$7Hhi?>X&xbz#rr6HcBEG?cY1D=C zqD%fqecMEntS@S-7h_{r$iPrOnCuU7(HP(hv>7vZw@<18NM;EO)f^{W;684D)!Z>1mCel# z#X##&^IZBcU=?FPCleKe-`@7Xl=-{0^l>Mz&|U$&^CN@jkW?1fxSjK2_`3{ozp561 z;2YlSzb7;+SC2O|a@t6{&*1-=c=p3(Af`=7uxQG3q5`f6@v;#H#=jYg!q9&tES-MQ zKXaMl;Q3JwJuyqP4pFDL`;8q-baG@;B+0rI)rp|pcs1P&)vj67K|vT7HiV$!Gdqe! zFkJWFb*kLuJ%J1uAp?(}{g}p^q)Y+h-MW3v@x+Nc+q8WzwPQZm60jOd;YWu&M=A8p zI=}U?!Y!F@Fnj82U@Mb~H$q+llM79tMAET97=4A*`OZ{l#}oXcY`uj*c28n9wb_M$ z(0&$lVX}Jw5O$29FXmsNeq^$sBpK^pP{caqrbX1=Dch*!OkHSGI;m0AW$~i=VoeQ! zt(`Q4lt@fT3jXj5&7vJpCtd&*ZiZA|ZR(rw6{^z@LydK3%s>-OxgaqMN`%-0Na^W6 z0~-veQd_nc(4ab9X1@|ma1o&c-=1r*uCHPtq|uOK zBOg)n2mFUey7bmKf%zR09~VyNfw^I-8Tzw}=C2XoGRQMywIdX)0!<0?1htU52X@gc zdidgWc8Se13*t0y;uZV$IRy2iQBhJ>*l=!v$c z@4b|BOZ_wDm}}=622u=}5S>#l%qP-TUcCtAm;Sg9VJZO70f}ntX>$86n36QIUVPJ- zyt}{nVM2xXl0>sl)PRYLtJron08@bYTSLS|l+ao_m(aWq&$4s#5lOyR5sfu$^s8f^ z^j;nmp}A>I;CL&ICuqKF|B7p6#&xmB7XFW|@83Q)0E}Jn2SB6Kd;{?!zy{=m-4aZ=tgFvYgn`-ihR`-Jw@tZ>^KPd|h2^e3_Kh^oESTRvSck{r6)bCx#82`*y zD-d+&4C+V_)Ia^gKRJW_1Gx46Zkn^lfHG*HIkxXkpi8F7Zl?GHWX z?>8bgz)>$9C`kNAgvd>n%%?)x_SK$n8HKX^w0UY+UEKDr5!`Lm6iUSp>IR=G8W~E= z#<~$s^kPWn3u{Mj)s_v`ARgE>m3re(A?MQ_of_fVCHEI5`3^@vF7KZ zOL;wBl9`L9Y{I}{wyZclfMqFUXD!8!R_!B0=xt5yxXG!wa;VSU`6@gC$o;g)&_&-n zemY!HnRuNZzSCv6bWHPI;yccpM4ysx(sVCzNMIQx_zq$^m2R*4*Jts58gY3a+tAcW zODB`HMKOMEa$v;p@SzN#DwFXUd}Nsu4;Dt+P5 ziWIw^PdB=hna=JtS4nTzR`C!VNi<|l6hss(q8got$w!T>1K4vmvdps%3u zjDP8OF3N3;o~1@{l2r-}Cay^Q+Rv9>E=AFC;~GT0^`H{gXt4IElGl5tF1K;(m9Lc4 z!G|~W=2$;1#s%v9Fi157x2@U;{WPwKRD0ddZYMdqJBV&g#2C+4j05;M!-;EPTrMy_ zZ7fkk^3u!aDBT_eoSvscJFTc_NYv5xZzj*~S_;AJNkClnC=mHsWsqn|0$vZ~r=P<{ zT27UuQDk=Qg|NqsiQrldpPu9U`%keK_tJJd_Y83=7z1ko!0xs*DfmvX^rL)5 zT$-f-$nuaOW576|4)p7CiJfIOAQ2w!??EvTUZe$~aP)H8od$fd9XynWpDGy0=d_vV z9T8w;Jb*CTgR~g~4__zh3oiV#_!BQ6j^ylg(IKkn!ro{>+Emi2unbjG2Da)H1v<`6 z5vg-g&D21kh@__)4JzXcsKA~=u*KmWER=^A0IKhVa-xMIj9z)9MqJXE)urmvhQ$R9 zNlK@sR8{jbtnL|uLf13EKG`_uQ>a2iD4+vz4B&0`M2u*nJh=4?d*n&;2d|%p0%&eo z`10OD0L6{m-37MffM`uvv)bjuCa9b4fEGcDf!sV4SgJjfd$=O_hfKACch41%{%-4A z7MTx_Fz#>UF`iY1wW)&s07nxLn?<_(T@%DB#^2xlSNhC7iGR2?fU9fGC@giviKK_> zzn}QOy(rDD9brg5T!a%P(0C1Hf;HcVN((WZr%nz<|MohWY8}FI4cj!!iu2JRZsZ;$ zF(x6Mxmi5ZJ=r9v@cDP)Y(r^TuhADvH^;I3cPUc~qQefW*zyR;;7^n~-jQ_`j`6h< zYA1nr62Uuh<$E_ftnI#%(VJjy+u7mDin0^KUy&7t^$4LC=fCx;6sCQoK7xNfABd}a znAxk4gZCP+Qzju&4RMqWF%h;tWwLoY<+lDAOxK?&OC)}P$JY$gtAy|y6Mn}5Si;H? z!l_T?NeZL(5=$xcDFW-utP34LN4EtYyweuyw`(`^bl1qvRES~`<|S4AlsLL$PK+{d zg<=sT_4Sfha$Urt0?tdWGrxO`~$msrIG^Cm>B55HZtU7mLT+T zkS&>|Or!3@MvH+C2i$+d_%+ZS8|mo4e1)Bb^n+=zC4FGFaHlme6-hjBD;tOU1ME)u zyTzYS{6F6zm(NTp-Q&!4IP(`r>H*Bz+WvRG+|B)6=?W%}GGWp-ZK1 zt6JLfh;zIBZ&H>y2P4^qT-4J+-I-yQ#4*t+7(iUw*7)u-zsBl?UbYF+hhen9ApwHLMy775Th3qiZN=#Lv% zTkbD*3eG<)Xa5iabqdoS;U1!SdD}`@YCT~ih|5Ar4w}+|wAv^9TYPv${4F*j>NN)P zetAkf>nQHf&%j2|1)D9o0F4J-YYCCpZ*D|j_Vz=GYyh{WN=k*#7i>pjMwqQ`^~8d4}dTO0!6<2Q`{P(b^;r2^=evEc_h+k9z}#P%gk|15%@|B&R}8~5xr zWctN8O535o)l08Im!N|2A1UpVj@1CDd_h!iCwB_4QEop065)Sc2O!p_9~ zp5OVvZqlEHaG->6058jw`3)>#5rwiW{>b2t*cY5QU5(9> zigivS5oa<|U|^Qg1?|Wbh*r-vvSxVE%a4@sCwv_T5NcRf7$orMhBv3U2aezhrP=9W zVx)mPRM)yb{-r06JHFvidVt89rF}BNe`|=$R5*Y~9(C%8(yjRSJ>W0;kiUXyc=IY@ zLp!ENR%@V#L@sjRR!su2GMg^cKQTsUfNx-N0Tc+T;~wgbtAj9IMz;`rsAmn^-m;;p?e zF?sYdi>8C1Al}zBTR}3Rxd`1BL5iBz?9#8&BrEe^hEHnG=xgH6B2{-&dm?9?CIWB` zj1G3;f#UG!A3K!rKtPpA+WAwF^OIvsgkcE%=9-N%_YdU(Ye*3$=@|pgWq3x$Ns@zWsrq zLTQpZ0|aW`TPHlh=~|WjS(j1uRZxyVuzyS;6}dEOw6I;$r2wT_MxZ8&czS@f5tp zluxHaJZr(ev9U&To+PucCE%+KzW1V}L&`QOU+`CK-MvRmG578qP3cMFPOtR6^QbFV z9q(+8fjt=$&*ld^m`A@q8{Rc+*c`*J8TgcLpr7#fXiv?&lhiLU5hlt<@RBTQ#}`My z;lZ}DJ{PNkY@D#ek#%2m@zdid#{9WOa?2!_?rJ+JO)ClfCdX#KYUn~rf~N6xV&hj% zJg$VD^mDoxFlwkU-^-B&Rur`{zu2K#HPbV0`O#4Q8*eRSkE^MD%^H)O)4cMijAc2D- zQ=XOf-bYMO=S1PhtWn&&(D3z+DdG9Z1gi-}2ij(+9feI8z`qq87{QJ92Oumw(!ofkqD>9ZV9jVB z^AsHZ2H=){_-tO>m@6qyqFvoVi+IoJs>TR20l=KVVzAnj;SVjuu<3+hb4jA1N=~M{ z6q8G8PJm;J8YD?qp%2&u`flM+&8s{?br7(Ry@R@VsJkAFWZIzwu4Gv2Pp@HZIw1B) zFK_ix$MmxtccHMWhCk=OLUEv%9f{VIhojxic>aNY9KIn6l6iZ zdwNef_Nwd{K*V16dw%`5H&XZaKSFlw(-jFD0Zmksp^o&j1^2{}Hkjf!575Q~!n+Gk z7)W!bk@9T^14(=>|2}3K^a2agh@AU`+oV&_*o&w$zS%eD{q}FAfl0?9opd_~+!TvHFwZh{~so>sIPH~s71N&?hJj&70z1A1j5 z!?eXK&KEkh)B_BPArPHkPvT7(G?7FyF@#eu)?-Vo7MTzaZcc`nc{>|#L*FftN2f}W zT)6lPMo;4EjGrzq0hSyuNu{1(5G@;$D#EhYSLJ{qv@e(5f~Z<3{JkZ?YrEu`0{57Z z!+laA;XzI1_#bE>l9G4WD24pwHR5?;vI(f`ZvVi}_>9k<);^j{NxQXGt_FewGm1t{V!HYwU)I-M<#m@;b{KZN%#N;ypRvvm;7Rz%Y27@rCgCn7Me zT5uok|A}cno)HmYFmEaGK}|fh`Jh3T#x7DwZ()hXKII*#W85?_llsMOS`HgEtw>sh zD3Kn?h;?H$##vLS831PzUPnpwalhnPB`5GXxnx`{;$vup-|f0&N~>Z`(Xp2Jf~4+) zSHgL_*!-_Tti>GBdV|IpLXkrZ?iua8ieQ8yOw#gMP#PE-@g}97$$p;uK=%EJLUj?r)92oElloW1h2P!fQa;Ay-y_lGs=ma4s7nrMVY+KXiY z)8rrBjKb&}(fPrtsq2s_8t29@hLp<$h_etYU251@DX&PBnm#= zGLmT}JWqFz0^P zTWuz1AK08Mz90UjQPkUIcn`iVMZdt5x8*?Sz8i3Qg#Lom4<&xU@wN@;YZAsnjQuvX zuMNY-QO-Q#VtnZW(o{)eh5<=Pk}0e$ZU8y!aXj0^0%yPa5&i01gNxMxV5Rs}dE_|* z#SE;c61t0AC*29+%-*r~J$9Dc3GZ~IZ!Y3H2M85n|B$(oZ*PBt26#5431Rp zStH6>Bk_s*WQNqoU3Tm5gYlH3o!>MRk_}v*ui_rquGCinQxtGxF#>gTU<0cRWOFBv z>ORNFub@HccyLQGx_pz^BPwTX0TM6(QTX8+L#a|pw@n7Rh4GKx{#DrcLGs~L24;O2 z^`jM^KLt-=1&FYJb3-Z38TrmXg@H|EteZy_$At4RBe958_~8`JK0@_jAM?B0D{Mh* zK^r@J{8b1+zqR0eH8IS*5dZUXJbytk`i*k5mxfMkOb^$XiTlvus)zX9wd|3l#YjH| zMZ?LJ@BD*Y8~mdFwevqH30`J*@f*9vPUBz2>-hCriRnx2#9Ct0yK1WrB@y(QN$x`a zzkb=5e*H`?^u|-!Z#AfF%~a!6r0`2}pyjjfbyyd8^3|* z^T%L1UW?MYSh17i0>^)iPdY-0oi@#fK8oddC-k!=to}jJwr`x~9EGJ8E2hS~HG9QdaC0g)@OxkSj@W%eApm7)C8If=S?E*3GyznnZ z(M#`LaZp0!s^6UMLijpD2&=vX6OD%h3jqiCNZ>DKqOQbW{&P@Ae;CGp-YUw}n%uhT z$8?N*lgVwB%ny{#NQbwlQoaSKLqdP*$D2fXqaglA(pg7E)wW%n6o&3@M3nB10i>iA zq+7ZM8Kk7UL8WUbK|w;0lAIARa2P_m5oTzCq3b=*_pxB{4=ffi=bZc6*WSNPe{BT_ zC$=37mlKGbTES$E`W)P+zXQi4WEp-x5}5%ip)%P%O(i@_5IkJ zPv|In{GQ~`%BfMMKZeVI;+KW|lrU*sIb#+>aJzb28E0BGxD1Dp85TAUO0{)02*47| zd~hfJPggA)M;S#+rmxbcV^ zX0ElamQIX?77L~Wb}syHS-pB~hj2HOW%8!rxH-f>{}EODS(x^peh= zyMoQ*FHz!{8zS!GX#nKnMA*|41}KL>y&6D`)p~pes0IwpFPCsJ-nO6ZNuUgKcRs~; zM%e&r84pER1g@Hbd4PHnG5iJIc`dLsjX?N2S1ytOd41l8md1ru?t#sLV zUXZmfZbp8U`)xg3?~%%(fWl6fosQ$%A^Hfn7&#Eik{AO#y}q`$>(fRpsmm88e)V#0 z=KD#|B0O}g*Vv<~kQ(Id_RlrvSd?tjZSz;05A94y4iMvZELqHK8~u&oPryzbAG(K$ zWIT=S=KjrMo>v7^;mcP^^d$JXAGgsvQ?`~+Bzb)Zb&*)|;e*Lmts_oN@f3Xgo^Zj2 z*DVbI4UnX5{ego%r##uNILVD=7lr1ieV0@7S8-pOEEVtM{+g2J^HzT9va|audI2QL zh6=AX&*34vk3I9#67TJ79BRu#FNcko#y$zgw9*-GRmT1n9|Cwr@r%sQXBdVbBt8S@ z%IwUku#6F4Yk#~{QSC-!0)gs=SmdCf*`LbI`_#Z=E`8YlQSeu;*VWZ+ft2H^-te3O9SIQ0-;pO}V%u z&ud}*6+dpC#iYb^Z8x2~y(8q%d!ktuWA_pmQX}0}CWN-gQ9h1kOlU11h|vJ<4*EdQ zxC_D<+11k`@-O=xF`j~6)mw38QG;)ab(Q`eWThqc$w8m~!-2AGuLX_)5Gyu}^f?%O z2L_|F(}1)W`t3K{diWCk>?Djmq0m?m7n7<9BU%v_UZ$R07GW>})>2|MdM)}5na^2IG_+D?Sv3uXUl^Xp5a_NTYVPjvQUeB_@j~;55-80Vh3S> zU7Q=+OSg(yv*WFD0sP)wkN7xR{eumTB@InKcJo*+P@zx z%cghSzeQ$Vtm_Zoy02Yq@SX}aIy4_pRhIr`V{yC)UpULF7I!*%U3}Pv{R)rFxK^2B zbzR%B@bbP?*w#7-aY5#$RBA|7rUlO9x-n@ZKtHWgMD4}B{HftV03(gGRz%J2Kom!b zrYaKyV0RbVs@I1=txgLL;MMvGnerhDEshmu;GbP_aFLUFcgZswE)c_>w&GV2J9N<; z+|h1|hZTqkA$O6!HPGX(BgVu{7nuPXQFNwk?%KeB6I&^L#_!F|nF_zy4d)XRNj35s z?=Oc6qcmqN>?S_W2^SPo7LS9=&@P#Tw-gUwwtyMfy`I(zGx>?rkLBJYcC)Bi&$2M1 z~=g=T|VL|shl5*=Sb4Li8 zIvcqn%v0hQl!oJ<0PxV*50M{tcu?l+gUJ_ihRZ!{2J$Zis8Q*3#)e=~ZkV9gBY(%8@3z^~82ILuU0VZyb(8}B0 zw1B*+)%E$F;Jep?DoPd_MpeY^L7Qt9E+m_Ya=d9Qneti+-=$F6ZF#&THJXl=dr&Dh ztE5dts&R7zQ-d0k$)K;6Uz$nrgehvd>qN~y^s|PknYih*^ejWJnqg|7gbD0MJ4|kF zhM=N%Y4Y8@A;#PcQBQ)l@ac$`$ySs;gYy=R9D%Y-dRshb&Le>3?kaZUO9Az~{w#1w zWy@}%8Op=;hja>g4=|G&NRqWc;5tF7X~(2P1fr4p{wMtTVU98Jf4O-yDUr`{&_R<2 zo6D!+ti`7POJcP>L}tA3S9Xgl$UBC&sjHKDm}7b1ww5edGMinA*ZE$eao2*hg>G#y(?ZFDGfv3b!#m)e$Ae`SB_j0ZhK= zkypFnukWFkZTYI~A5_^7uA&+JSAK*@DJvy@X*Vk0J`yjETu8ANB}O+AZ@;sCSJcRi zvL5U3Qgprl&8dwZzl#so7GLmvp|d80_!V;Wnc@D8u9L+V}yUXPdPw}=JvS2v-m9>wK`4%7@yV0yX1A|<%kLt8F;(=Ij&hY zxn7Ju{ab34`4IkjwvZWRXN|MCSZzFO9v2lDVquXRofH3q04o;98tlj~{ci_-0nF8u zzSX+_X5=Wh_;<2<677aBQmG282^!aE@}G;u3~chDd~Apt!|SM;Bc+Smg`?F&xa(zq zCk)Iv4N)^QN8Srd92hS)zo9H9C{9!U!QRGEycyL8n9vf39xZfi{F*LkPdFt zQTcdB`;cMg(KNtfNU}Hp28hCz8R9TewDZ``6DJVnQb%%nAUVW;rsN4YlRDZrWAm}K zl1*N`tN|HNjtN`D;KLcnjw7j^XEUW*;Y(9vz5kN_6GxDQwONbmFAB>?` zYjBC^eS$xV!RmODqk7@PKx{Vls*V7rYAKAXAYHs}nnP7r5%*X@t6HLX;_%Tkds4u| zVSyK#m4XB1+<5e_{7M{FN1mhIXsC?Z%2O4OVM(rh0mRd)0*Wb_$8dpW-2-B10aa}^ zRbFS>-1LR0Af`2vnDo=#C~T=YM#T5HV1X!2>wtp*yL?53?D9_oDopnt`eh~^Hck)v z#Bc~}Vw(l{cD8Q;Lv{?%w!t;_hd78el^CUY{!L(O7}&tkW1qcoA%e9h2Bia-LSZ0y zf0?%~fBrg6&@lK0A94L+ke^w4H0ZP5L;8O+#`!4I1VG7R`@k+yFLzWG3V@8*I?>7BM?d^^Kb z;?}W1=(Ep!GJ}>*g#{$LfA0-=f1{d7&yJn`)=X^1mI(n?(A9g%%9rJ&YF}u}uY=St z4phhAd@PZw z7<^z@HXYq}7WZU1y6FuoF518HJQ&)3$h)eZ9v&bsufMHPc2R~2_|esQ*Fwq}bjKfV zM+DuWd?rmE+*GhAoKE!+H zFGcXNI&;JDgJF^O7nSKT4wAd|NyA=K)jc`snvB^1BWz^*HaaMP5x_C!KohW(=6s6_ zAk0?*iE^3OT+e~IP!fAY(j~fTgL7$Zr|Z`UYY*~qldJj9xr;TYkCw~xG2oh36TvO9 z{n!O@=Ws41CK!uLS+KIVzLz;SsIzx1cc8DnC&k;G%o|3 zw_*cyv)Ry4K-KpJe|o83vZ`af;4+Bwq7ao}#j?-+MQfTncEPfvw0@8LHd|0Pn`6%7 zGDJ#O^6Hmf@Zd1wy|@VR`a-0n9?h%Y0A-_SwaBrgytuL?OY{e+jHIeH+JO-zLf+Wa z4ipU1{^|kThY$btr*5?h)7qIa4u5!7`csP}h}$TbpjNV2_5Gf9E1kLynycpTM3+7j zlGD&lC+KZ`OE@x4o4+_M=y7d=gp_t#d0Vv16#wNaB!%Cws$!O2~M|?D^K%^< z1)l!I!foE47UZNcHEWY3_T8#R=$f60e;)#6xC^3|o+pg9YZkYVC@8BgeY#-<*M#qZ zYhDupjZE#9#OT()SF=yYeeCKhTJ##iyKGa@!pD#o?-f5wZ)BHC-8&}dcPyBtdxtU9 zdN+PQKjU3qnpz%Ci6}oX^j7jF6GJzs*Bw+WLAq@WY#5O1y?<+9b9kgaR4h&}joh%b zGWKuLV({H(TuzQph+h+uV^dP(+CQI(i+(38-~RYr;sMO)&!7~g_TL)q@)sr)xt~Ob zqG{=80^ON^nlp0CJ-~VU=gXKIM(%p4Q}lLQIVmUztuxJ4Mf)FP6{w_g;H;>RQ+r!O zY`X;74(A6rxVi*>9@DQtdR^UmT^)e*N(6iY2*IH&Odo6TTXcegt3&$Xzo{yR zKdRd;vmol(#O4->Xu~zc#srz(E^3GkASu^Bg>(7s#hc{%GI?y{gy?yt9lnb3wPMl_ zaE2Ao;nY$7*fLj0noIHZpXbnN+0QP{gc3$tqLZLskVlnu23r}uVbGA zzZ$$1&Biy^D~wr*z7 zpC^GjU+s*H8~I_48b@Cg@Ge=t(TvkJQ2+H%EXYj;F5IC{w5XQRMos;jr|0MmZb5EP zDn>7l6&)3o;%%{KLGdiG5bYFQy}QH=Tw z{RSfZ`6Hz#FUw2HNY>-yi7ors99eVwzeF$yP0_1=eZVU4rvOza3jWuS)3n@8_so2B z;5_9unMDC^XM)GS+L8od^rVk}^!*H^jWP|A5>D;kCcM=t;{fe+(_usf)y|vAb>^BG z99tL%cw=$wOz~p3t5I`J#D(*W2+tsSA(lM#4_(BuZtuYXi$ePKj|RR~cS3AbIjemX zO;B@5Z+6m&?JP(F@kyCz2-=1CVADuVM8Td#&=t-{Ce#5()!7YKPf!@O<_g8vUi<;` zEi^G^l>nPmH%}ezL*(=bn6>L;40n8l!m|8b8J|2ie7VauzztdO~#cjC8G8agls}i(nYiE4)CbNK^0MCxYL&#dMtEfP_c) zzKs&uTPlrjC&0F|VLSkk&;50~Ks<`vxWfia!P1i0Q{#biTm->?2zxw~GBb)Egn7BX z`aR0mM+EAJ1~Up^fOOj+06Rk4<142}ad`Ubg3FSk$uK=yYC**cyYIfNsvV??;wqbz zMeQ4b8OaisOiySPzh{Zrve*RT z`cKu&*?BTc*?_jSR$$L}AIv%UwLLY@l2tw*7jQqZ14XSbX9LCA!M7(e8(vwdJM3V? zD@E@+^3Bg4iJerAcV|(zXUub&uYd6X#Yy3;Jqg`)UkSEUp@T+u=OtoT!O3AVZA$^^ z2FiD9h-~%Op4p~jMk(BB0adi$To3|iGK`Rf8CJAD23d#c4DOMn<^Ry!{Y{hk>ygqw zcWaKtG6>)!9##{1jv@q#gC(TF0wC*yjGyuq>Hiye(jp8wi;}9eum%H3xjQn>0<=!1v?D#33z4hWwHnq zPEzF01P}w=@Px->u}zb<rDK1kI9W9zLyA$eNI5HWG`dgrvnC6|iOfM

    z`f}Z$=+RrHTMAF@s-f-cRn2kkVXfrMm_8w=}zcGZ|8uH!jFfZM4 zP|vUrSL*RT|LzintUIz_G^(9!8Fqd<4O%tBmR(i|-UusWj%8z5<_q!fAq*q#7jGR8 z32g1tx`%hOrD^|E>m4?}zR(D|?Yz#pom$2OVvbmQ3?~~t8&5~&ec;BE8wah{mkX}h zkU$dvL|zvV{BkZ48y$}Q3G|SR0S)UgLmf(bpvsLhK;l6aE9rS|4A8H@V2Sbh;SEn(x&J3;u#(y*fl9aqB_XKyF%cJ4}bR<0v}ZhdFS!2cnQ z)C~IEfYCQnxBXZw{}^@bunMVxeAC-U@E%JFT{p*_n6sU|**~gheJ!rs&O_P#*SKa6 z53gH_<9gi3iJ<8#Evhdg>XiSDSTU)iF+Z#YwKHOZ%q2KFrTRO9UF(SFoQF z()P?z`jt{W{dB;c7& z3eXJ-X9z{sUyj}yQeZuN-G6bzGGWe#W#Om-+#5=~%d*(9mU$|7qo>hzx26QvOuPfL zYynQY{`EX0d0y+y5ncQ=i{w-o7^S_Jfs{xJq7uIai09KdI(4+MTo)Pt3`qPmt<#m( z2%kR|ggAKIdt$>*rDDk_eza}jR+s)PSxc_aDdm#O`CS;R;}sTMylfi7?^bIY{GM!D zhS6cUJ6Pzj8O*KL^BqatvQRG``xN8!qr4P6TuWT{fw&H~1?#bsdx3W!PnK+YL$ zWd44A9VmIb6oOyyPyqdHKS4O#MbI%XdHt%SNllOQ|*vl-l+Jx-^aR=@Yj|XY^+#n%?_!oPIHNyleKXuP=#BI)7MeD6M^< z=8XEFXAj+1WC|Z9$$`o+6mtVVJO=6!6l6wEX7)gTf|eC5=4O1L>d14isd>vuy2R`! z2z_&>2QwM~yS!3{%G?&OjH>tL;f9Mf!n~YndnwX*7FTljL3%;YzGqGhxzjSHH3dX> z7g0V4rXEp_6-WN&bS}OT8(N~g6ZMH?x6{mRz+FZc7i?{nK8LY-*u;FJRZsf*|8Ln; z_qp-7b<|NS`_U^L>NE?B)nWSwmS$nvQKbP(XFa{D`*ogPZIcaFeM(-RXj=Zo<$oZ( zpH|H6xSLeaW@wyB7O!h11qDF<@zh!AhlB6rMAJsATyi<9Viw9>_KBtWlrf2+{Y{TJ zetybES(Bocn8R!lM$cePL0&jR$N0>Z~!rA?%5qw(7%&H}1rG;FM%ZC)%~FFjy(9joD** znz{|N3b=rvuOg2BdI7S#kkU9U@kX<`HTC?Tn5qV8oh?rd8e7A?>MI*RjaSQ|RmH%5 zEl@8@rjaf+oGpuSCn>6WR&0I(r)Q6Jb=)d-h5Z*5&}DgQ{jvOW2*-<8f7CM_tiw)l z6iRJ}H1RG6&28oGjsy(HHk{*55t$+m=*44;#V{5kUt9Pe{%|&=A4&9W1!cHVSaWQY z9S38)0IkacnKYa`oUmR@;<26u4u#Ojx6UaxZ|jxJPsd6SPc^QoK}B92J;L`BgAfZN zPU$5TVtw627k}}Qlq1L767rJ2?%!R8)N2$tMFhPZdS7yz7Nv;SJYrls*`lg57+Oex z=8Fg?&K{9qq~595E8tf$3_5Ft$$00wIokPdXbWp1Z=n>8 z<*AUkV+9gKh;qDe9t|q*rCcPus~srk2nu?xmMJ!^R*}qND4K%kl``K=YJ;~yB=NdH zuYksxRtlUF#03@L9O%OdJ>r59@%~t%^Wfl6LJb?mCgk5Qo}BTRx`zv(GTn4(QGbYl zGRE6T+%76~BnYZUf#G)DG%n@FxvXVIQJE*4*cfyO)Kb^xP-}zj_ub-((pT9~oaDG& zB2GEMFn%i3>|cmFtY)nDv@uGhD#nnw^yH2SW3PR&f^{zbMA@rAsdqaW!}IKyZdhDqWw|_?G|`PQ5kVdm@6V8Y}Ad%VN>b(s3PFx7t0CYlMwh;ng^1KR9tjn(eJ#*vZlNg6YA*RCrd^_ftOcWp9%hYX`f z^2cWAJYzG0wTplMQw#FAzyIgK8u{K=J3syYUneHPy$|rt^5QGsvRKPZ)~-YwlB?rg zb~y4d9gZ$j)zrjQPDZ_M62hS@jP>{Pc<4KsutqXa&HEew3-SRZCp)&Fl|;XGtX5Q< z@yXjkZh23ocSAQBH1nNuW*hN|JD?M<^)WNrxJBj$9VxT5p&xfgnfCu^qp{NmLk z&SIB|Cg<_Jm7JKX+ru*K&0Xw(4HH1KD>{5FcdILRcj^~s;k(vh!t~!+1@A_(iW0{* z$zye6U>fAFA_t#;sF7tjdc_%~5*0vlvuEGu2)-*(869J~X*8i?7iZ{t_P*clwE`R8 z;}sroS4q`FsOC4Z3pA*;rzMi(=BI)C_uCKH7@$ajq^0~yP2MMZdLp-qcy){gdKy{qV3r9 z!Lo66wQ}AbeLD&s60#voh)M`gM>&9MdJ2~(C4%Cn%!Vc_njbE1*Cp~j|5z*YT{mjUNODD`eb4af$OP5s~U-MWKEvdC6*HRsu|5+$Ca2 zxW;0-u}B)#Hh^)OR^zTB)gX?v06QFH{_83a0k=T&S7`=g+qLQEof0S(X$F%N ziCS@U#M5UkQUwp4YHCzC7{dZ=Z)Ue9EM#9bSOJ3ilx3Wp8|@wML+Q%xu?I)3wfKlm+^HuS~Hve zBouX$6q4YfTI!e%8YgK{MThA0KT0EhjcXb^-o>Z$sp%c4!c0$9?KpuC+;+CC$HFH~ z=^5rlF(=I<^Ei52l8d&~Nms*lhx^Y3RTe83cxLRZ6WnS%{p)2wzj#Ybo?N|sJ$Lp_ z-nwF8kVSLy)z6Ak>+UbOaAp*_^lGEt9v^wgi!O}A=o+}YM}pE%1ih-^$F~|nU7g#c z-&la(1tGhfh9Hf5-|T-)feWnTGvjpOY+|jh)Q}(d;U~A~_2cN#i|Pb^dxcpfi2HxJ4Wj;1MR}`nJis zhzey8411f{sk=6^Mx4r!;J$2@K5PU+H@;d~1P){V9^4InzYqhO&9wmDJ*z@#96Om^ zQJJ8BnUyM0Y4WrvbAhk(d!4~>!VS4xuoFE6hmYE?Ifcjf`KiW#i+RGyuEo5`xWj3N z^nN&{e3po|1Wi2TiTUR|?olEP+M1xF7Yh_wwJJ?iAc9){^o|&pHPY)_#z6oe2X^ z&c;Ia@#P~`zbA&NasT9eQ)-v*vQGdCSNu+csy0~Q@;v~_bJ{;lyigN|vp$X9&v$T3 z9lOn7DqBt6A{?M1J&Q}}C7;YmcVOEiMNGYT=$#g=r6JY&GKRXXhwaa_dBuex>69@= zw?fjl_Y%Qqm-5;#^xCBhe8s8*Ta=Wb4N6FMR>UEGd@dvA$P({zE9eZew&w%wegIS5 z;em02Z7q0cwgR=Zhk5+$mDN76Z^=#t$YplU#pE~qN!sz`dq>+5W)WN~*~Ab1q=_9g z)9Ic`!3uh1kM&SkhO=fzgbRQ6{iJdF>EwI&WI|dXd2Kob(QQikScb9xwLNd^t0OSw z;#gY0a(dHZ8;(HHN3Nbg5O!KvYvKz+?xcb=&(5|Qx{8N;Gjc2_cd<*OP-X`oNX%>6 znhNp$8o`iPilss}u5U_4yzGd89V{h;h*MiQ)PKjl;ll4~=C(rMLjaH!vYp=HDh9{9 z4l>M)cX=u2M&K!c@P1Ely2S+hG0$n@QP3ptD8a-;WL2K|Csr}*cS_=TH=FyPT#fhd z=_H8<*8&Nt8h^x(#0b@jjKnxakkoq}!%Rw3EJMWeZ8XypPnDQtfr1);yh74-WBqx< ztdG<(ChIK`5pp~&@NyPbydOt&=eC||N2k@qLJe_VPjJ0|K5^*iy|=Bn1M6z12)$x; zYz|@`nPX6^eu&>CSO@ERB~G`k=P=QQ6Ca0(S=xKJw}iL+^YuedW<(a(Om7F3SK*W9 z(`%XfjsODkAWG*SC6x~=PtJ?fVFy~^Gef*f!+_rBN1CMp!OQ6rP1Rupb4{FtvlCL3gB9CYiYmZL$Sy2+yU8dq$S{4FDHQJ z6iDPt6%%z8=FO?TEWPth-%{6brgQHNFLCT*F#GdgkRv@De4cmR)_v@+*!%-zvz*i>d#Ca?+sPGiq#ZNIWmJ0vw>`ieozhy}+J-EA zpd4J)_p=!H(@F{S=hPsFFF*cwCCbBO$VKtTxWDv8820y>maH^JbR%p{|2GhPzzYr|K@s(36`gbFHsd78?ant#5U3ML#$fCDQy@=FAtw+O$-0qGKc>f8@a+FZ% zT_k5MsWRARmE&+0i~5VOrK(^fV#g_=xbXNqqQ%6kL>$&UWbO^PMhrG_s(3vw&ZIWK zJaeF}w%y(=RwiAd(e)PgW?x8|w2j8exIm6}J+kU-bV;=CJ?+#iDveq-BY{U6%LZ*- zMGRF2EG}HU&VW*E#KIxSje!566+jIJkMcVRlBXUfnWe43`t00=fU&C-?u!;P$|Qa8 zLQA36*|JpdlEQr5OxDqc7|K1)jBErA0a&x;Kp-Fq!Yrl-`!{eDeRSqN-4O#Kt+yakl(`agq%sUp1kC9~#aj;xgy(Hcw^z&kO4N{3$sNq3(fGVDk)F z4xkLa$?HnPDzcvk=MwQ0FO(X$q<>W%++N5-Qj`3wX>>Ub|Bo^3Sd7tC3{?iow%b-C zJ_e^UhDUe?tUi21=w+ho`$j9(vI0^SNGY!SZ6sH#^U_905(R!6tx$+HZ8FtnCZBs! zJ7MzpQwAQxhes8L&j^2=NH-;9^c2-&AGWrR4Lv7f-+eiSPzlmtJC)|c&>r#5+;`8A zD_e<6)g`M&vYCFBv_-w$OXy__TKInWE&a9Vf&do2=p?H2@UUXEKUIa_NXeCUa4alT z{a}kZ%-#jBDz9Tzp1Y*P{>HLg3^=0Rlq=B9r8@*} z0Flmr{O`S_KzoNnh&SM5xC%uWLzGJyJbjQKc2*rSkcNB1h<7=Zi;Y@x#9p6m^M+3J1hF9v4VOMO|dZ;W{nuWl~* z7j^ikpi~fU!HWArk5Za2j_Hx3S}VOstJ~W3oO`Hn{5h%zr>tR`>SG?&M-T?cWxpzv z#yjO~FMLGcVHMG(iGx;W>eB?f-Fb7>9y{(REhVZK3lpME?nsc9Uv3eA} zR+>0&iHaZ5)Sz-xsLJ1WUz)sKK>G{xDQAAK)^A!)f&&AoFWWZO`(xzZg<0_$>vDYP z@+5%Ld#)66DHc%Nl72R^$V(h4lzJz%;XHBc%BI-KK}6X&)b;xpRY7)weBtH!$=Rdx z+q`Th8DE|UNbX?T@fwNzI+~xBrZc(AFfX1TKJK5m@*z#f16-m>_kLs35Vpsty%gC4!0KZtl%} z;%W!}eERc&8flW!oj0(;y;RFrGFhlrxDBoONZYGH8+-et%Pz;zD8aupGxY~*`G2>Q zemMGO)g{IG2C$e4R+Rf~kSI$_=4)N5`?)B+n2OivQMq^7>6kRDKv}o%3(sy3YrdO( zz8m6C<<+p8U~lqZmv((@(w_>wq&(P3ndyIvk9&g%x2f20`AG=B2vNUehKHiB=H;-P z3KU9xDHNglfeum?C-u~p;;k~8bCm;R>E$TX1ZcvE z7c15Bp9BnPUDj(4^3RRFU=iEA>93&Ko*fW+Co9B{{b|^IR(A_^V6%ut{(gqe$$U<>YP8l=O+-SFS}Yi6v5mxawfZDVN~%;{?SY1f{?3R+Gp`qK65?A;l|L`Tg2O$9~}WM=FO&xfvb+8VEXaG|+X zJbsQsxr~Fb$wgA`pIYwLba90j+{B~giLVTm=3Urh=r)P0eLOCbklni%L zVQzN*14D|rG2>j~jKn+AV~t5AYk$8RdV$yVy|%!Z8&)(r6@_36?D*{nHXr}%K48e)px^|2mJVroiDHN`ybWE zh~(eTh*F8g4Hv)--|m;g-jXP!;$ZM|jvF(T?_NJRYcxalkwAaah1NF#QLfhzOz)jh z)NRNE11i?1YIg+=$Ej36()x}JnyV&vXT>x_xcX1~*TJng-tzSx(d)Cb12M;QNc|(S zfu6poxA?52qoIGjK8Y{YVBjT_;q;X zhu&@~OJ(j9yv5VFQF^Ul8=VNfUdq}}zmISB zH{adKt6uqIy+QNTD0|H_I7DfVlHUp6-`Rw0Us`i@f1DU=n&@O+L8R~YJKE9*3w1!M)^f034*~NG;XBw0w5gU>JtoVF(@gk)Q_6FJ2C0RvFb))a*?BzqSUtBxL zig!70cQ4S95P(P|L2*%y(*EGch+YoX&0%$?Z;*PD&)pugS~azKlnnA*a;RaZo^svWh32=%+U92Z_ z8RhWApZ|>f`b=I<+(?`0*;a?mBW9&&hNyp_=SPH>CV)X4F%f9hF%0i9M_SS za>dW=sGyv5!R0?D(sm+*N0g-LB8HrK)bwAR6MVmw0X-*ZF|D4psAxD3H{7FtQxz8^ANy$tFM0y3y`I9{uL%nKkSvK_`3-X^7J^SAWmSf!at6*$;lK=Xe$v@w$_1S3>Pn zyu66Cyf9vIxD99CX67>M7q)}P&DR|#&xs*4&EbYx7`VK^ql4Va)6{35-6QE;(w|Cy6}Tz!))rFYDo`GWl?D2^iJ^Jeo{i#` zyxB`zGBwIiNph&C!l-7fN2w&VQI>T6gh)$)o2sdg!aeR5-o=sXAs`<`2tE}w=y02U z9ry1qJY6>Qe3?{rW`glb)6CAbVDZazX?|{z?T~)LoH1j)7E7B7_jgpIqj-@B8(QRG z*1FWGJT30)=6Qqt()4JWGKeB~JyTKme4Tss`iJZ5*CScI8Bx9W?s~O#`m}?4zmh~Q z_zqUCOV22Z;yrrcnN)FV{HB@XWv%e@zfa0Ow9pSsvQcX({QF~^kQzg#WXAU){e6r+ zsXSX5XA)!LlYd(R?8ldw{GiyZh#uTBU!jeEBW44Zz7xxpue%JsKhTftGN9@+5aX{6 z*lMf-A{a+Gblf9^dQ)G@G!){a%dGif%N2criBS=)WM3tOsYUsLjKkxC2C|P>m+TsG zR!6|Z>;I@X^@#k9B~5lLE(a_b%0A)$_;7SqpepTML?`iT|gA`#36@E!+j)fJMx(5 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

    i;Bnkg0IIPCbDmwrgA27Q&81 z=7Y}^5?Pt;Y z2Cad$d`}#fQk{8W+PijUw#HiaRlwKluM83T^Lx$Q1uh&y6P=x33Jj$%IzR*%^HI|= zp(kB8X6Xec3TVtZf7}(KwsWR6h7mRG&4~xTMBrn;fNO7T)%r@3zTywL@GD}^@Drjp zA*WPqG696#p4Q3B>q2Rna#Z;ECD^B7p!u1L9MExR+Xr2JO*D zF@SjUe+0&GPe|PlT#*bw#cDb0wkuk#CwxczVI|T05?? zM4D#>B*VwXLjQ{C3?N3b)3L-Hs%izga^^ml(ZO^-Q-*lHO@|XVDQHaytRdnns&Ikz z!1@U(Wsrh2`)F*j+GgA%Utq`P2^=}K(CM137&XA?;UCJ{qjj@=sC)?cA?3(yzU)8W zAX0ek0b8HS8YW3>mWs$QYd=it-D&7HWKNGwPkogUT~@4v%T(T6_aCf-kD02Q zi%?8P3qHoUAimLyEqwzGHV`(GR`) zt}{LRjv*+cHHrm+CK)#Cr+)G`b?ANsiNi>Z_8iwdtir%BK0o zp%QX@a}g_#b#=|s{NnvHo>5Jwc^5&VX^x^R@JRg9y!T(d8$0hd4u9js!6iIv+A|sn z9VQz#@)#`)iZ+NB$fg+_Q}eXzFPp=Sb(4(mg)y~18T|EgfCBoH+i)&OhPZFIxA6Lh z^a7FM&13JSvIqV7oy@R{KI5kc7FKuHeVPU6$ip4-K=)kE1xf!l^3g9ZPX0EQZi!cX z=wwuw>!ws%y>C(tt87cLX=Sy(y~ki>o$#DMpeOijaf92_h02p^HR5W2JgvRit;=0n zZVXqH~9Aro$@R!$uI*l{fA6X6(jCzmcO??^OeWTDU=YjR(GY)_Zhfce5=%xo}Qj!2P+af zQL9)o=BE`7Q=hF%dY%Q1d-9Fse;*kkla!PUI2_>n>a(T=J_^d&$j-`Ien;^1(*?bC z04D;05V=}iT8c{$MZXw%Z>yyxND8^z@1~$)o2TH8PWgVgHk8>j8-91wd^ji*TQ;HD z^;4LM>pU#%*4d78?Q+}GU}N={2Aj!bpJ)4;DGeRXVXlmTOm^eWie<0;OjYf2woO>q z!tJTlzu6XQeT9pRpndU|-=Dz-tGDT8uwVmfM}H}b3FGPI+^X8HzYT7IFt#;s#kUtn z>m`+S#B4}ULIgJ#ckv_pOVYNJDNE@fpds3-o z>~0K#KLvD?Ozr6OOYj+sAJ>zY3%EiCv?HV&6a8LZ+{r7IuqR#A}w+o{B6KcAJ0 zr*v~nt#%_Ke{?(^fH>}9JMw5@&Tf4r#jqVb<7+aAMU zGka||)NbIn_=?v;=-HD!F=ci2EQg@bQ103bi_E)aAX;omL&e(+CBvrP+ zSNo~vN%RFoH$oS;wrWH)kVvbEjuHFYzh7)i(8*&3)-_cV5{CDOw`+<#`wr*gV_M5C zMys1JYZuM>tSg6WLS7dR*(IgTH1h@Xt}sx0LUMd>Pb0MXrg7$gV>D(~zba6t-Vvj` zplGYb1a{Z-;xE(9t2qS5B1aQGj^f$D<9#z`k~66iPaKCAZJ=LioWT)2VQZrKho*D9Mr zSRRU*0U>&SS96%`RYwNv>ST`IT<{j6W}xN&kaX4Ya6kV4vtgPsZJ5rT7}HF5$7vhG zFn#LOobGlePjiN8PEFV3m`$5F-JQSp_wjo??*F^TgZKOOdgklS)<}$YL)6vlINW3W zRW7lmYQU?h7r!Pu3rJdy?K6V9)cqShUp!pTaqXG%QMX1A^xiAXQ01jYh@j-!+OW79 zafG52%G5Yzsj(z^gPtpzzhS5jx_bgBajaf?6PEXTauPmAudo7GRWqv#5L${KRyoui zvSNuXgPtza`x7m9wBY7Rw#LE&@v-jN_AI^V=sW*0saMm-ehb8k#QB+zs9Pw;2iQzv zU}z?kGVUspNzzEAS_BPO>N|qn4;Vs3RJ{TEGLDerR#gu$lC`SXMV@VNLcYwYn(3H^ zS2(D-c{<@%RdMzUt#hf~Oiw*cWiKjoI5@cxHWg*h6%)|Zxje#ClK=FQE9Jysy^Yg2 zCYM;5^Bv{(g2rg?9);(35K+U=Ni+rz4*Ub%zCsHA z@__$Vr)XJzBvV-1W50c?oAzxZ)p`FI1~0|;&dv!%X11E=|yGRrmA*oKv6VF}U?M!0eHrVrym45 ztqP%G?^JIMJgRh0A0I9|E1aUJhHFV{$dWX)w15=y*hF3F3;a8ctJMgG)KBW!B9pcc zZN8_|Z`V(6cB?C_`7SuW&hG!U%hTJhQg~WWX#F1N#`56=yzp*Ps`pkVes_H+#UZHk z?w^{$L_$m)S`1~}+cVQg7)N+t1HbGOUapshw|X7O1~}1~<(TVO7*^41DrbGXj(m9! z?D~ewHhxUcNz**ZsNq~Yy5|zS!U?kX6deycj-LMgjq(@E>*qk;st6=*vbsc1f*#Eh z=H?fk%NY?(4R{_kG|sKPZTQWoyvXx(6Rd5b>rh8T@&>3T8gz>Y4>j3b47}Y(n%|D_ zx)=^{<%|dP>@x4d&jYTDvj?yzwZRILzcJf`!;-z@Uv9QMrr#b>H9E}?Lo8h-g9Z{7 zgok==FAln9z~;dn?N8GXrEGow5E2V(=e}o2*gDEX!kChYu-vaNW6m87k=6?}0kqNh z`180>ywl!A@1-agU*bWfDH^owLCib_FHHPUt`5<8wBX_MzUNt*_lC*H_3gv$VU5dj zpqbzP`F_E=2WR|p0Q;7Rd+ zclOA5tsHM`)cIiHBk(vVaFFWIGIqkJbOK+0v*wfV(ihu%p@zWTep{lnHYi!Ea-RQy zc#Xd0ded||1aa7LtGR*EQo3#ybd2V89hef=&%>#u59<7n$D*Feq=7NN^OS)C} zGD9st?(#P%MM3+4smE3Qwf!eAhrPcpX->2x2rL?v001ppYZv-4*QT|!OQW3`keZmb zn1+CQ;P`*~Wah=Cz|C)jIN&U-L#Po}jww#$01$a^mKtmE$8)#S2`b_Ip^C~xaoK%l zxC{H%T~(!;G=-=)I=Tk*A`{^)jEg#(tHwvY7fp{B<(6TmCp*jiDW^JUAT?dHFspmY zkui&8$Q~o!6uJn{N|C*-FSy7d7It7j6rMyEPK9B_$+b#MLoeh)*!XX`)3#WtE^jA}*0rH^D} zasBI2dPhT9TK{;l^ZJCVoqm*REyZ8XE=PJBE{9@xe}YNXIX`!2!hcSk8uETz@TzrJ zvc**Sy>YBufx^t1$ZLuY=SiHRg^P=5T~hiDS_Q@gLw9;De#%tD2=@#}XK-!+=g$4a z058p|>J;Zzu#R$kq>^>ulZ`e!J(>~zh8nUI8dd%hB<2S7-^eXGeBht+Xr=aGiG*w$ zCp4@#pG}ey{?^c1GXSfqihDrFv$#3jJ*bj^bN9^%z7B9XI8bJi$4-Uz^b={}YM0yi zClQaWZ!G379$l-N1R1pqTwId54$5^$%`qk6FlU*$RJ|z=`Ds>FO%@YPPRj73+gByD z8Na@;4Y%k!RjZfR4z?hFJL90_2ht+5^0Q4pE<_{os^8Oek%@xKwpt7(;%2{5!@wP30+>QE(T#*;6$XUbN;pdB$OGA-f!xh-`4`+G^o#O@t(YXfo@H6=OdUBe-uCvG3>T%Ir;g(1wXD?zuE!wtKg|p?9t^=v z#6cgiHGBQ4B|=WG3h#P?6VmpO%GcD1f=bIi_?<|v^(jrW6bS3;dT&RQn;9RnDGPHk z&>THH6p~r=2svWD^1ID8OXACDscGuw z=!lX*Qc|--QxGoDl_%5ssm!A3L3m$orDt*<~;%Z~nB!3lttDk7@~tBfZU_AdB%mC5$z9IFk&?5{y1k%IbQu&KP! z(b18%WKm4$&vs9c?PzA$_OH^l+}1-KQYLrCNy|DjZwmX)cCGlN?pKq})==;gy1M-W zrO^11)+Tk0UJ{B7pb_{ONvf6Ly4Qz_?OhY^I&e5&u;8x+u1)g)lh|O z+p&ytrv7mMK{5Oj{F&>P{l@v`4*bdAZ%M!wZpFzWqPz)`H&oEDGuh7Xfm9O`|BXwW z#?Gb7gIrL@Y_Zgm&oHnFKWKcCnICxdVsotc$-w_q=u-4-^FknAM~-HYC@e=YkS#4DOlC_H@p3%Bs67hZIIZ9AGV+~yXO?D3Voz+BIu z1XFTw8NUJy0$<<8NC(B|W6+X(^A=%;Nm;qRSn_dVul}oLROi6z-`>U{LdJ1W$o2-! zEXaWq=h@J_J7%+E^w59jil$TJ|F9rZA4?rq&}PG9h3pk0`Pv zR7EI5KYZY?&T4oE>^|pDs~NZ4<2OFQr$aLYY`9EJ`cE?`%Qmr-(JV|L0j@BcsCOeh zY=0v>9cTG@3FR?neVI=a7n0_7_&e;YvEBD{b?kGM-&tl8NqKk|9J%Fl`tr#fY=EB zGJTODdHb}%8Q2vY{$pXl#(Gv^eRgrukCn}fUK1P36SK)Ab&Nu&<=$LgJ{tNCjr@w4 zJ@Kax3KW$PIN5F;U@aGz139fY&G$teuGS=JZ4%Mzk^8v1c9kVq$4$7Aj$y zEncsp=$N*}5ppt3DUb@xCQ67JyIb}n@Jz;o#l=rwJJ*u# z&F>5h7VfyCGL`bngLNdpI`CLSs$^`t^vTj=yQYWqj*p$A5Yl11-rsr#5?=SW?mBm` z8VG+_o^m|?Lr!V!)x)>4B%f3AYMwPj9#YK@##H%Kk2oT!uI#%e$HMJWwL&z7F5j_tC*jp{BDW|LN@8)D!_T zQ%l7UynV6JO#1A_4aCYO+v z?^t}2pAh12Lg1rtTKF;u*6TO-6j?V3sT<1l4CX61M|B(8lTQ{cCY(01BmH;fXjMu> z;TegCvf=1Y7_i7m8bTz-C&u~sCUH4p7w;UG{OACP1={odv)qNq?*(YQe>M9I%f z$x)iA%w8yq_+bKkRMrKVRx|=;u()S< zC{duA2!(@U+s;H#o)I-A9llvrUsZYkWLB|TD*{7?l3(ou<1CK@-RjN`Y%7zo%>0P7 zsIo;rpt{5rykOgQ=+BLWf7WrT9QQcs9*n8#OVjF%0aXR7cM{6|-UnCPzUgg~G@UHA zbLj;qbj^&n$GnJG?zwbnFZQ0>G=hnTkkC<*P!jM9ubYJjg(7H`T@D>7K|jjo8RXYs zXzibCdz*Xta~`?qe`upN@sUU6iIf+l`sX!cisNB#aBq|t0z&Qbd})ZKufB}2Nz`vY zk+}MyIMZQVU~vJ!+Vv$2#=s7a!7)XMk4T%DxvvXE=}R?3-?pdKc5t^My^`RHb29(0G3 z)q;u6+&4S?y?6THAO~weZD%b}6w-SQ3cWn2ys*S{yS)GmV8z3Y#FyX;G_s;fcYrZz zaC6f(>+Ke4oZsfQU1CZO27?QO0i6YMWtjVqd}DERpnRvY|Q+8suo3P7}n3Ncdv!*PS1#P+-!tz~SW^(lDcX6=ui+PvAAnQl3Q^3g`Ka?>G$U=@x8VoD~T*MTi z|NfD-9d+aHNI3g>ax?Wn%Q;YtTPI0nSE(wMkpytx+{lFOh_F-i4%00O2=%@s6Es3d zHyx@aeQmUn@3?6e|0i-ub)p!0>j^fm3cX!RkkU7pY0WD=|L05r+{E_9S}0rXnQnaT zG~rtfnO0e_%L|Cka%q;iPw>&X>FMs~w;MCyS_YWu^<*_)x?=5$$t1*h5h6%IMp~r? zKKp%RbG_W5SXW$5-o59ZRv&U(QQe`dW0RyqVo0LVVmp3sWQh51eV=1!sb1H>aR2PiyVSC$nO5rMD!pd)Z~E-im!MtFuR^&kTgg6pWp#7N zdivna5H{1?g;mus9&{;Dxh~c_t%EURsTo@yGFtFC@;pdw0_#*@^AJ|AL|OAfR2UyB zTm|08=SQ}TNNm5?OmXxBUJLj)g3NKCwfOIpkf=o9fyN+#_$t5W-kS59uz4`Xg)03i z_T*TLU#Vrc+qaMtZR}2J6i#xk;8{5Z$aG8tL~1sv#_ zKxmp5Udy0w0chJTSSPZmUXAx4@E~AiZ7v24id`;DMO+pl*w5mW^aA&MY5`4O2=+O#FL7rbP_d-U&g?d%wS7#$Mgq3px3!mMFa^fUWBc zJIU4NPwei*2+V(S^*~ptQt=7Gw^adFry2ZP29B+6-do}yyc5J&G2V#4E?bC) zO)#?*1BmCNDA{4%N{~*UBtPgkz_h*E%C^OU+DQS_f%lY&MMMAov)dacaY;I%H1aJ= z%Y-KyqejqMU2^^uStnW90#Xa03)!!mn~SSHU`l1JW~Aq764`dnf`nEgN1bwZq>YUY z>(1_u@h2CZB%5nx$Y|7MiE+pN?1x;tS6Kd0{UaT!XHsHfCQfRhGRVGRDPFVh+A4AK z?#xU~Gk#aa_mw~4pK|rRh4E4P-su-7$S>cRNz{|7;~wDLp?k&?gxP7--}3Aa<9LUyqvDqG9`5G3?;ow@t9m31VH z`QeicCF2X~H^SIk^TGr%6t8thR6NnsMLsi=S;iByRTfbT-}KG9g-SG?4Gfk#A8xo8 zpr?d45Mueu-7v7lZwFzC^ImHX?w>mQ zr{>6sT!jd&IRRvtglbjW4waMvX45@G=tnXS)!^_2^k^vzLlFz|y|xLAvx z&k4~PUwp<~)MewZ>}jLlH~EC_HA<*Sc(!TtbD2f48nBYXdU8DP8qL>0s3C$w{0l2ETKiCAmEi&yZiv4qU3V0*jisFh5 zv=Ay;IlqEciDhgwxYpvJ7PylsH#+6zh8gWU+WB~RXzHxj+|2zYC=?W|G<2W7{b;kY z@kHp4xDzH35LXJQ3_1Fp`0z(_)julvrhCQVGqpj&Z2!!^%5;;LpPahu)*}A>OL|?F z=}(fr7$p5$`a;A|`VKQ)`hcH?l_ejhXC&yx4(~rwc@Rkm*UYZLXx9q@X zkP>7#ta>5SX@Psg47Uiy=iIV6>rVadFOO}*#Po{%!^6!zo+`wxTYElkOy^U1X=hqH&*w9T0cX8M6qnFsod%xag0= zzR4hT>ZcLE@wi4b1%y!;bCC&cVsLq({Zm87lXZK@L>y9q03)K^Ei^={RjOs3ph7#G zXju#Oj%Y-}Po5vcldp|LT{-6dy_vZk8R6VY3(&(2gHM^LM9qZvi{$?>(eBm&C_RAI zlsC`Q;@QnVqM>54=)y-bt}S$EVzK^Fw+UripCPd?i&9r|O8qKGM=_=1`H=?6^fh;6 zu$JlCrYLouU*1e%wnYnBClWkAJ@v^R%lAD(gHlDSpy*A?ZCLq6@h=facDGFb3hzR_ zVS|JN+jWD_TyZ$QZPA%(^QVf#Es4|%^B2U21kJ6@Mwlatz2i@fFTP>6NAN1#7{nU4 zsCho0Z7-#LD!JIQ93=bB;sp{d9WrNAT^JGbhKsTTiS(Rx^_ls_@S{PCsWZ#6%XVai z+~xh%%{}t8KJW2{F@Dc4>%@N||LETrosIkFnl*?*u^4e5ssZA|p2?61*MCRzcbdoP zf_L#Der}(avyeBp{2=a`1+BebPz&Mp#YwN9gBO_FMMQq08lKMvJQ>7bmdm0)50ylM zc>h*gbb1XR2ss6z+y0Kz%SevPXgzEv%=`S;VS#=Coh@^1kqR}M%>#}U!CoEuAQu_w z!PT1v$M1U=tP}^$PPopNZB&45p0DHj#xVl02J%-Ir;fK@v(3=^jBJknX|cw(2-+7S z_e}qk>R)tPf3S#}hmbbe|6+@F4sFyD!zDAcf4n=@lCHSk^wpi97lV`~&kS6nTWv-t zX8O(N8dSxNt_R;P?$1?uhXOo6|Hg-4`4f3frTCZSP^M0FuAhFrCbE>+s>^Ks9dgyq z#ujM#xdqG#I^+v39oM!#ets3R{nRi}(#iC+Uez809}3zohEF$s1iFDc z2b2AacIt5Q81dpoOl5?}cViKU=tDWV5S;S!m#RXxqFN_OyLp+}n9{uVAr>|yXIU<7 z@t3O2aR@bRHwOQs4u`@H*M~|98OoN1^3_f)3MfO!U~)ieOlO( zvW#%AF{T;jeM*9~PR_;G;<;aodgo`n490ef&~Vgav2R$>G zeNfBtWaMSn653DP4LEGSEWn;ck9gF5T4hRmI31S)`)Uc1uXwFn2&{vPW|A2qbtZij3M4#e>>Sgv~^&bZcS5?>iZ{77eNo z9?b#FK%YMMS~o?3ehV_7u+3=%&PmW{Xfe{ujGupFUBmN+gu71n`&)7HOWR^AIWL;G zo2AxrA1HpKZLBmbD1MV~{0km_Dq)clXXjXVBr8Ys+l}sxyN5PuPIy;XF_pPRg4+xR ze}@~3NqBuhjh9&TiAhq!Cg(cNne0$qG-BXU_3!fu6+b~(mW z^@hjTS{dFy7qbc5$@=!H1g9mbWsqQ89=Z%Ex=>MaKNReZD0-z@lqpM3M->tJJ{?=` zMG{5km-VQoc(P=XsbI=6N!9e7RzZbMqe zq`C})cHCe2sGD~J2wDD?{FnFmC(mifG`}A72q;tO7V7fXpq_z=%laD3F2n$3n(Q3U zY_XFRJPo$emyy!lQjuEXCp+_LZXIy_%W+1y(V=L^D4maEFY(*r0Wbv@`T6vB_i*Pv zrX3H)4=MV}f{@Cr+gA3DnxYKJax&~8?)6;znc1^?W4qcpCNaoV6FgM?`EQGI+o;?M z92D-bFaL&_3@2suS^jyz7MXjnm4!o>;l$|7Ja;lTCz{1z4goF@i_@NPk^-l7a3QK#^uJfJ}uJA;0n{QD*#IMp%E69*F}T@1N#)rt0nMbDaA zyvx5#?p|K7gSfdqQ*C}rWJ_n+dMo7E%j~-|J`ybzBQ}gqz4c~p^m?XBY2xQl-5x;s z@0mK--6h?f7GxGWjFmO{-G^JVJ>WlfDG?aM#X(Jy83tf@!8v)5M9!YQAlqc4@zkH?0pDn|*xpy(UM1>_vP(YwODP_JKBPJlul> zGU6$%CX)~q%Qxg}ht=*U4g_DjOBuH+z?GppEb&3#fKauG);D^dchd&*UZi$7sCwz@ zif_H#WGb9IL5hrN^cAy}#v$Y*aPDBKa4)Qk>Fqd(f`czyMEZbKh$MuE6y=G7)1JLEFi0ik*;y$d_`S1`W}3!(OZ> zfByU_E7)a9Bjt2)ax%brAC!Vn)A-N0KT#FKz7(i3sb5RCXL`-_hv{y|O!tUB;EaDJ zrcsdm`4eFlc5dbv-B}=6gT5gXaDJ#_o|S35rK(P=4}LH%XgFPI+|3Q9f2vKK-?qscGlaZOc3{gvJDfn_3Sbi#6t76U_+Z1g#I~7;EmYsSH zI_po;2LtR?zV4W5A;;B1_foW^3@+pDN*02a?~y^c_HTIU2!;b*=LoT7U`q16QudVR z98nHTkAHa^rnK_o0Ru_#MX+IOva%F}rV0O|{6H2=@qt{1l7JJATv_xKO&1K8z!z|) z_;|gPgrK#5eeyX~<>#-+8hT^H#W(5qbp&ppfg+2-p~vTiDIyqa8O0@E z2J;}Ko7#;4)|NpxigRx@0?{^UrY-f`2z->UB-?tM2nEE-gNN>yuZ*|u22KTH#3gH8 zrX@&WqQMW55J78^vkfE2v82W`J)h`ijjP3Q}Nt9N(* zriguAS;$Snfla1Ut@c_jK$Vjw88@P#DEri-dn$2~9m_aCFNroc-d{{zYLO*jDOv4u z_#kWW8drInJfc^dfo z432FKtZ1=GmUdkOPX=>?$ieS8S3Yi%QmcbeS_41Bp=LeSy0EH(t+eKFSRi=>{I`MC zs}1S+z%7OC3s*H*mLpk#55Z{PdB&UwLCWqkYh@j}S}V>+rtMrZpK2papswc4+pMLm zi0EFkR6xi&Gh^BeVX?|xWEeG;Wxh#)QrzuM6_r^_mTI-1|nra&_W>!4nBJ{76J9SHRC!ic`^F|9%FMpOKv! z0*!)RlH^lFy$zjH_Y-Z36fSNOFzc_JbhAdK$9MDc)fs)9f4cG2%B+u|n6Jo;q560E z>LpD{MbdGk{;)6C4%4sHMB!vM)fTMimI-xHm-H+~P3w35G|$*dK4_ChsFX)<_Ua4v z7Z-XtBn7IgirQ}z6!?m1+2tM%~5Uva9@Q~K_eRtu%$ z(Q%I)Qyfy;wchGgO$L#GhRAQnd-B87rIzhlXYF}=Tlx+H}wwXXHOcZc?W}tI$^xbu) zJkx&+SUr|+&$bIK)>yF~z)c-UF_RS7|BPXjW4jf|$>EAA`L}lCxs{Ct)~!7}`BCz%UY)L*pSQpg^PqW+sG$<*n!&8C zm7VK09nS~4=R3B${EbZwK9HP=g3Vx&-zPNjP~uQ5sP)?Y~3f1TA} z_v=9J?5=B$daY}N!eb?vFp$c z^4;!~2f9=x`Xp;y{|iv&2w zR@5By>K3aY3)--Hjf`vAOTj@!BX(^!v;8+o0Td?~-6Z&x9v+G6*;Z>zOTIu&_i{ zx2!fbYOt{JF5z%vU+t& z*mLyPbA2xV>THhj>JG(tb?Pa1+;`q{G!w^sv_EQnG;6B3#w#4xZCS+-AzHKc{0rtTV461zC;yp1&um#Y|09OsN_GEsX-kBsHfImkgWWIKeFp^sEqa~VBDsXC0b%5PdSfHl$EMi)CrJOp~fLfYXvere3ezy zYh1gN*_L5@84~glC5#dr)HMMkRNn;iG<oOI!*60)uxYOj*9)w?uIm%Fa3mYUC_NA#!fukt0YR(pE34ptL3J>5ZG1?>3K z@kO_vzvDqkt1ByGOXq{w0q1e~)@)OP%Gf^3VsJKoJl5h}CNL&MDiA4eaG}n&&-yk< zSfMWaOL6a(Ug*B_NWRt_%aC@-E#BX5!MphpjFA?pBBZy?X|`nUY|JKQQJgmZ7Y8Lt z$`8NTW7o>n-_K=N|75W1f3sb>y1}|{JKjSMHY>LXW=j(B#Y&UUWZhvuw3`KvaX!2M z47ABdX3_sC8ruNifPRGgPQZp)sd7l0iE6>(2|uPe{rAZFA-mo5N)Ap?4cQi5x95;H z=BK_BatG6?5({YS+tQS=q4oSw|3G4y&fA058DHpWoUjfUTpB-{!QRc$9y5YghdE0{ zT);s4k*r$qG%{1Hdw27R8NVqZlYUR0trLfa@)WisQ~*LO)->=^U~i#A19xwMwpuPS z;np6ropvERo6l-X+tZ?$vv=@=-1w`l)8~8MM6j_n@;$7@=j>n6+Xo+*x4uF#+wrAe zn9lnwI~+RX30bq5^vBC-7zlOWh8xd*mjrFtuCFapnf4L9@0Ewu-TC9N$5EQNGz z&lGk|L&<^>DJlYLK`OtE^DMGW(~R+Ala89li}_l(r~MkJ;pzG)(c{hRCGvN4+x07U zaq!~6%~d z_vaA8T>lUZ87{4q>v`@iN>p(-+)OSvg;h5QXw3U&#MTKgA0br-484 zc(-~G2}G`&kkLDI0Y7=XU4C7j=vvxc6T-1&cwJAa<0sS9W*c`3MA=~~z2XJ!ZJDfh zkUL8fNECv$z4@^Ts2=iRwF%7(mAaZeF}(Y3%M@rNMDl376dtrJ^kjMYFYFMGyLNm} zw{~1TKcpLIDHiYQ6Y=(N*<1ZbCtUMKPr5;@>$Gt*p8^!Y?bP9K!+_9mBwfXbbe`asW=w}I7QqLTl;~g_A+{kV2yZarcZO|2w zElpZ@BRs|&%GG_bjBBpfk^IdFUmUhs!Tbg!iS;n;M59E~_u5`{(b>W}W3-%TQXv<1G#3;^*P}C$;xwOE@pdcK0RX5D0Hf$Y%MT(N9bkY9!T#p|eV*`HbNL^h(!p zS_5A~2?(rgU&@j&q;rwx#_1UUrP8>j&yqXgSe1RE(8fo*HiS84k{Z%zrJEcVMN!LF zlRBs!Fuv+8N|l)urRc0S_Z{r|STxrfer%p{hDR?Kc*p|u?J~zCgL0P6(E=K&zU5=i zQMtRiQrbyBk3Uu*xJk*9mICcqw}Jy7RKLAcZF#a$k(0ekH5Kp{cCbnLEz|_ra(Nb` z@EA6)qhwso#ESp6(0280>SzFN%5SMKwcOvtUt%dPW3#v{)CNJL1)P;R+^ZQQd40t%+d>&Wa$; z9y<)q>$oBv5Pj?oW>&v!bchMOTcLj`?T=H+@p(?{VvPgqzB^)BQ8b~>{n${%_tK4H z(XJ=Ra^lzX-xctj>^zwX(M27gd1mX@Q^rz7CIQ&&CB@0kvd9f@P{D|Qx$0}Q8dLHVW8PjK_>t6;iLkt;#gvrfd{+HAP=)SM=3y-0;cuyr-(?n+ zB;?iIVh#X8K$6h++8!y$;NyMa<&_gPP;f#k?IHG(mPIZaKrdZ}um@p0vBQx5aK)JK zKp_x}S%y+2CO%U4Fdcs1mU_#%ZT5A*JUe^l5XLOpXhrUtUmjHFK*MzT6A1Ac_<5mo zK|2BWOj{NQze|{SB_5xic%07Mo=b8xl6<(=ufy9W(>m!2O+R*cB>2WuO{eAhp05CK z4ZK}{lJ+wt^6v8{cR3c~~>F1D=L$P~BGBS4%JV56k7@LLWR^mb>xhO`X9Ta_ih8N8T-%zwku7+DVdVj@LrA zW~`rb2dy%VUsU6OQ4>$a0rf#j>GB{LgKO3Whhh1=-+L9Q7P9NhVvkCAfM z2LuGwAah1mac6~^F;rx z-sQ>szdBc!D3vSwHL|<<4|suQTEEr16DrtO1`O7Y*HnqX_5YMq+ic4E=LHYGMlu|3 zo_K5ZYhAk1jg-2J8H)l_AU-ct=-2USrhT+!Xu~g|kNz|IcWqX9ffiE6YxGr0zddI^ z-r4dI$emmItn*@+2J5@VJ1aUZ7G2_Z=3LAysQa@<=l7M)A_Dug&kJVD`ip=mKh>Zkdzn`YV6@D38>2P%~2|rN? zAWa)zpM0WLAi(#kmC9OmgfAaSnzCELU)fnNT?(xGeF_-6u9FB8Jm_l>qD-sQhnNQ> z`|%SQDYG75Q5y}Ih#}JPnXv8@7RkAZnTASU&j#L>IhGh%ssSH`Y)fzZTben1-*mnMe-bk-zNA{BU*emj!`nKTeuDwMm=z&-x_V zNi?XZ^!%70>Q4+=7iO5 z!pF3letcnN;rK4NvhLkvqtaZg>0G>{!8EPN=c3rl1Qn&nKLmn({2?s1R@wqK5<)L} zu1ck{v1XIVjweM$$&Ss2As`curPpLGA7Jl>a^L;U)#mzWul>VRRPdK!NzZZAOU>V3 z^%cLO#S}l<<#RI1dCG%lcweO53vg^wzbr`+EWm||4x9o?5dEv9vrpvrhgvf5ode{) zsDhb+BPD;r6hAIBWw3?bp15!?Ck_#T`OE}!5g`Y-@DSDyf z-MOQU5+_tJsq%|}f&OT`!8EUGxkfd;I3r?}By5+1X;?Y4Z(Sr;Y1NTHrjigNyE+6a z(kY06&{`jAptZ~ zTugKCF)mrk)O7-wP~?B}wjIf`)=X_0T9}r6G+Q~Yc>4W4nU#u@k>)f z!?&pIWG*X?S{_nf_lI+^B{%=uf?u5m6LNCU)o{SOIuCd$PEfCtgh=@9#kon0*UV^O zp!qB@8zi(ZeGo3cvO%{swd+UEs=Ud47Vst!Y!)>U`G?kE0l&F&2T8+Y*&*AmIb3#q zHsdSi{Ri8YTK)Y=Tt9NK-7%9N1R#=g^Iy3>?wjHEWd*(yav*)w}g^9Ny6`5ZHO zG3!;Lul7ez%Ia$QN$j`h17G_4y$)r7iRw-V9GRwgQ-`>ejzh%oP@lGOELm&7a?^6V zuFaEvoSqK?krxl%YQmJU=^}4;-=;t(jmqeEm-sO&E}{BLP2}!avmag=Oy~Jsh^9$z zn5Zau*3xg&Esf7>NnW)a!SK`eRC81O=YG$HPm*o4rY}bEc3$Z&5<41JZ$5sgo$HLJ z>hjyC$GiVb?-Af68I2z^F?jc|Qi45Gqr4B3`B@irMXtVC+MtD&uI3s+ObR3#N8;TLM|g6QZ)H5be<~ftOu$7XV1P` z8uBPJ^`;F6<@y!|I<%2?1lptk=bF;VoJBufzRJO)`h+jhgE;JREYZ??fBOCS92mnFn_BPa|OeSDN+_ z%O(?c|DyP=H0>AX`5QsQ@uIEq?gU3W54w-{Ja_7W#?mQ+6I6Log}b&Z9AV}njb1eI zItvNaUx!!8UYbf`DSk{P}~}d;CY|VP;eiPgYbX zPfjo|g;vk42fOvM=UUBuGKr7v$$y`z3}QAghQF7+We}e5263wo{LB`tFJ`y?>`ofq z$Nu5{XS~d{UwmHI|J&6goj$P-zjq(9=#w9XD$UW4If4c&b{d{W;m}4USC8@w4FCd5$fo{^Dq8N<9hKspl6z z2S1&hu6#e|KT`72$b_-NSiRl>ia|bFYy3L?Dh|^W_vkAhh4^mZ?8%r=|C<-_yraFC zMC_>^neT9g!z*n>$pC8#^evl5W-^3mUe$wNOqg;M_iI_ypu7-kyDBa!5=Ejh3k?S+ zomoUFpAjmVyvH236rd3?7mM4~qIQXX&S+QC1o*9)(6VJ&r90#eb+9FFkzU2I*Dz4+ z3@!oxFU)q2Ls?3h>a@tF$n)-;qhtKyL>HOuf0ZKR?ZRB?ZB>|3d9q83zi2h^EfgU= zn5jAoBUNT`!(sc&As~YlM|5W>D#oRo_?ENLt35A|aDZ65ad|0b?e_BDpWJrUse9il z&4a}Vy@-pItNbR8^{JKxi|mhcb%5~0?#50u^sv7Qz4W*aSbr6-!#BG9ESQRZ1Cn5K0dR;rs#*Vy~xO4V?}CPOg7Gj}rVBF7h~Ib(%<9Dg)MiG?kLqVv5 z=(A+NIAFpY0;#r`6vxL-Gv`J+;oR{84fQsm-unW7xJTAv7VA>ma025HSw!RA{oU!= zdEe_D*Uj~aJL(4(`{tsI22Bd^y9VhR9suH(=+Z=R{!zKI3Yesd<$9kpO3Fx=UnWUI zwx?WMw;Y>RYRHd=g_) zf^R|O`R6$!0jFKzlvUE2E-UY#>B8oclShdM)WiSKnzL?R65$8CE7}vkpSTMa;1@3| z*&X0>qsyE}2N+vPne;&-Eb&q~x*1h4bP)?iAu+KiS4!6u_P@~$Z;&!$>RmPttV?-l zl%GJaHo~I^NFb&ASqCWAXJx|m16sBN>X`#1n9cs2b|3!t*KgE`wB3zVw8R0Zc{6+#?DQS| z?2lf}vG`--^J_@H@^RZMG4z{3CtiOl8OB2ysky;lS6ohCvIhidv%CFM{unbHidF3- zJkTyaTW-?~-O-R5iemStH892vJ0W*eWkqZRuxjfsHvXe)X8OoN%HbihoX4xA|u$IS+S zi=;9g)5)n6XKAFR@-NCZ57g5EodiBpMfT#tbX2CGO7p1FMNKat<2v)!uzUyT09AlJ zBH=p8e-k_luOoZw_Mbof6U28tA6DBUipu{gn{uNZavjCfX4|sDY2e16=OlmG${X}S zd7m+Jion1^pQM13$EXL=HMv|jPEgZG>tvI%|hdCG}?f0+!A32}zvv1B0jN7|@1o(xE22$N_!|nCm zC5FbO$Bq)89=Ee4oLqp~gD93?@ar>lbbFbbqpn}nGEPPfmHhI74Z1*C|FPVW!=!hS z0P5KOL>oiGweZW=Bk1yfxIEy+w>h^BUP3jn8b9SnEWpP>ll`|2O0Rx<&=r(YCzk4- z=?Y-B&eRgMp}Q0nREVO`P`ntKUjeJ4Kx1H3UecgZG!Yh{qB5KOAdyMlxgz4DnW2PN zdA}g2RqBh#3)c+P6EsL>fWb7m(^&P3?UT)R4>s-o(NleZsIyW}vj5oll0&af*H)yE z>9lt%*Q2x&n%%p~;T5~MGn%PorNPEl$@HP!B#=%X@~G~%%s^^w9jaZ+kA9B%IZ`hG zz?YO+Stp|XXtu>mDVktav-@`)p7IGu;%tq4W3RGELbS86Kj7lwEjf@xgITrhO}77& zgu!Ago4>Ra7HW#T^2|)4>t~phjX~>SoPA8YxC7Xc955FP|n%6Rua5j=y>^B z*35!!dm!2%Q#MvoRBXPy;Fc28pcV2ENuQ&trl|wwyTbJOC$raPL{46(A8xb;W^2DS zqm7Lhx#k}l9%7vy?I$H5s9dO5Xz|mnaz7#{FSSrp`(>N^+_R}tI?(8BU)j8GOZ$|` zD^l9C=rS6SWwnP;9;^M*VBCSqV`wWc{BT&i|KDVaoIUCZt{F8#0)=lgb(DRxV%gDb zEHzy)0^S1Q&F9MrIJTj+TC8{I>g*#%^0p3DXVlC@HtgwPLEzBF$HsJ4@GTcY5GSWM z)+C{iLEpL7q@86|l)L*LPIMkTdW+I2C+77l6tdZO6#fMWfNTHBHY?t{H@)hr!UbgabTgMc=B|uvuc84Vz@i|Pd z+nxVNw<`S-@m!-c@?DoQ@aj#Ch>zTUVG1Z{ti&|UiQjN*->4a8d{HU8zBpGEKOcBQ z!e_R1if!v7UEx9vcU z`m8bJ?EIr*;qwOv4czzCpq%jsQSqm~FN^hL(_qdmn^*rJHZ&F6qFbWFjXxJ#+qm*`AFf^4{-QNg&Mq$Bb*zm&bj5DdV7t-tWP7Rg zsBSGJoG6xZvyfse}4fGPHn|6*E2E!o=B?lecbWa~nO( z?Bw_6>0VIet^1zl<7Up@ZI1Z!i53?_Bi9)h?Tr;tWlm%+!=4z!XGYz5$X?0~kDiuC zuU>5K{AlNR%9-)Nqz@xvix6<9q+I!wX#6eNOm~}BRGo4&6)TgOkFUsyF;BVPOmXim zljDa%b&}d^@aeUk8$aVHS7rxk9F%O}&HL<&WcN^v&^I7$rR5GhO#ifXJsk!oi{OfdZkFrjl&fl+Zz)|%~9z~xyxhv z(f>`xd0}v)-ut4Mcow@Jh7UpNqCer766XgT+#QL3=q|^L-~pbi(xji7$QRR>g8M6V zBP=y4dwQSfO{_mtmu(KKlIw>>^)S)yr(GlDv=~%UWCe=^BF}$%TQs0G>khCc!mipr zrNazI2x)^D>6RmO_y0lD*wL3}}D(!G%UovVn z+3G1^b7^{G-uGMO(J@IRUq-wiYU0(LUHS8!3Mc}~$i-j1lh8Av8M>!apYZZ8+~kK! z8V(8~XMfr@5R6jzT9vFI^iGWI>HhlY(*%ZOtKi4NLqPQc`KpC(RA}u8y)u)(e`Mva z@<6Mp@*~G@aOk`27lY1s9^| z@Ob8m3yahv6aI?(u+n$-^sqKUvBngY+)A=cw|qj0K(j&bc(H%%c9SK!4LI~er(an? z0X++})^74-BAWXAg`0h8(TYaf{SPf0gexGmaa#`~g-^UtD`KUItAnZp%kS)$+*UZ3 zuP7YR8g(axu-p<|{gx8p`e;5Q<5M=#t@FSy(Vl;)?cW1F&&UMA0byMo&_9CtDtxS$ zLZIi{R{TN`b455ib5vehKG3)!JbU*|a&!y&wXS6jZB9>6cc+1Bv9@1Lka^Be2>nt# zmgy6E*0m4Sfd}`KLH(xn%WrdziLJhv#2tfb<6Q64o=27shX;F6lmYAj*g0g0TpwD+ z#M*h#;$A9yTC)hI<}71>E$oe>G*NV4DeI;~ULqSAGaPK_=6Kr9k>FFv1$ei@!Xm!^ z0#m)ogpEXho~#SKiHU37cL2N%WkXHECTIsFn0s4_g4D3}7r125_VW69;tu9>dx{a- z_dqJ^uvQ}VQd>B7B6sLxCF;G0dAlx+Jx7H`@b27y(vBN(Y4aRAB!9;}LfT`LQKeqa z71*_c*g&j>6sXi7J1>>!y3Ah#O`Wc618!;^zmBSx`6MDn=Vv3}B=$2Hq*dbta@01g zH*`0;eU{68^@14V@fF`l>c-<;j<*6jgJ00eKhQu1DqRAwY#PHbcN}LjsKSt1SIXke8K*F#LTk4K_jeunWP%+f}sYvqeXISl)w| zvXj^<$%EfIQGn;#yDyh= z4LoUYRmawC@Q3#^?)5i4zLRg4oYk^;TCurJ4SHrqChLB))kV}P!F6^ZQS0O~%|g1! zfh$&-8yDa#wCdc^-fV{>s=p9*1OC0XR$*TK(5&Wpb-wO-97N@5G4ydss9o%sNG-Z| z6u+^(88w|?*VJ2?j;{KUKdO?Gn+D3g)XbgB?@O^y(DwN1tcQ*(-p)5j*#8ED*V zks3>d3#GY6!*T8KJ))Y(p$*uVm&7S0I{6Jc6k9zsn`LSRXSX~$W_P#R?<3`8Djkh2 zZZDSLQ zSrwT}x(iD0Sej@W(S-`*nxoZd;$NlZf5FEG?>Vp*u_W{6jmVb=iUtJ1w-(8j`es{Q ziq!`A^9e9<+8*g{|sia1+gja+`Q|(BmABnz0uKnftLGV;lrdoqj z^nP_EY=s#yWViRJb3B9%(aP452|pOlm7DNu6J}h_#)9F-c{}rgf#Pg-03cgYSRY7m zku#4`p!x|6RDm({D2@ZRb5vqc=Z`9#E-@edvEcIZ%&1DaS)Is_(O(B@>c#EJPgrVV zM94P>D{tUgz zgQK{sPXyy1Bghc3$gYlk4XeJfKrqx*(S{_Pk{z53=W@(-#DQVHkOUp0x;b*3eET&T z@Ifirg?ZU&8{hR5U^h}<(ueT zlAaP+CeR1=Z1p#5FIn&gA@Y9U6{ewNG1p+-#h;-{!!d0;XnkQew*%Q9ZQkKI>$qQd zbGUW$%_{i{Dq=5I6>Kc;`-)Z+HS)i%fqnd_sR*ab_~^cf6r?)K5)*ATf=W2w(ozRj z1BkhI-rzwQ~u2}{6^V{|3mLlw{g(2a2k)VarRX9{dRm`_tvIjQrb^2 zPQ5t3GBd<@PN`=+s4l$Z%ZuXOvy_}?W~h0&UgUcLLku1Pu$~|ely-Velyky0>%KjQ0GPM{pR40E6>IX;+xotp0f4rMmr}W0>0F> zoeXgU?S$YTHbmBPvRx4f$@g)xos`W}@Cdy3Sn>PWAqx{UDd9Bvlr-cvf#*Br79l=# z@ZtG*;ixJKe@VIfT&bBsE0AbV{BZ!P&xujIRaFbdjbc_XGsz-HyAxK%l&u=Jv9uaH zlrbEFNG+4zX_UU^(v>I=?!cYY!{aa;<# zeE==?BQ)1KC8S?nbyE#DJLLWrk6UdFrO0;j9Q)sQ!ta?ykpe}&F+YwPaa>v1P-kTGlL!v zy0rxzu3SSDU?Y-NIZid@e8fF*@anEw%MENx$&8GQfwAn0TLB(|-E2IVE*+yNIkiIo zacXp3{nqwWz3&d>y-^Lxe_d^=)oTKZ3#V_(2;_NgS(#!rciD_jAxq}N6HYP@sNO&c zp0NHJOS$HwE&FdWX9Gdsq_Hhb^3Gpk0i$AB+ALS<`Q&+W#O|;{g$hzT0?EY zZ?5aP=6~?ZRl6=Uek1TT+5X8n3-Lk0U7}#MG@(!qv1&Kjlf}*yq(4`)l=DuK zi6r!t!wa_k9Y+?ETB$q6t*8-Qipfb>v2{Jx2L5Nrw_C~aT9>!&ZgvUj-+_9SLkdPT zoGakD0qIE*;vkhFiYR?Bkl8Yz=-2|lu)p0C9rs9;^LNzSTItVp>-?pVbCm%l;n(iz|A7t0QlSJ|C_^w&D(QAp* zMbV`lL+&Pz^d85tNpu7ytTdX%`@#s{%Z+9?hz@a{JEb+)K!*T;B4_}VkhbGHvSIyM z0HEtIb~#+Ak1?mJG44SA-*Hj|U?Khwh*&I;ebOa78UKLQdohtd&xkd)dzZiKwZalS zOyVu8V?5d(?foWHhSSiXX+B!_{FlRrlDy4=!Kl#|$$f?Utq-_jPr^FjWg~9_$MT_N3QZYbX$>xpqx$KEB*D@^%iy; zHCy`NBB+O!G5PUFWehVES*ke*hgH_i!$zp`H+?$!G6v&(hyk`EF+G8t%0%H(4A3Yq zJJN>gd|C+xK-i_yUbe{U4@FcXVx;)r?>=$6qGA5jk73XK6xh-BNcepJXnuRRj=|r! zL;j`3Pn5jPAM-ee2ZOI6rb{X~V^Uo$tawCmhNd`QP!xlwkT;N~xImN_2VvnAz_;l%Uj0;_qXHrYOp?8$LibBpf8@9W(nzx;*4J0N(q zMa?EyoDIvxfGk^Sv>CF>L>>?mR+Kf60BW2?ZHxFuEFJ~pz+@}bK6X#iS@ay8D#dcW z!r#9g8tsMXe)^(IXtyghHTcXDBl}%GovhC^WaGkSx$e6}05fa?(_>?!kLgqyxaoP6 z-~F*Ms#!K%7|4S6{75dr>&W3Bq}XON^j#K7nRx;JAId9BB1>yW8)3Qr&)6O05AS3G zL_&$C>HqxugPc>DqJ778bKX7ZcSMaS!8`;GnPSb2As3H>zwClmVgt6~kRKHz;CA`h zKP%1Ykqpx>fYAEA4Uz~CBQ|*@+hej|FuYdP{JHX7Gg}{v0YF5sCoiI$(}nWU7!EcL z2%vui-s@mA2m=0b#g?-D``pH-+~zQzZ2Q2!Oy69x&Y7xmM6w$FE85&2V1128HAkFj zLi&pRe@=o5uJoo62nd{vYkDsfuwPxc*V!zg_>t^*0kUgO$y*q|-f?_itNozD`QmaO zTqxmkpjwqwz!$aSG2cz}mN}r~y7f1S1PU+Y@BGna(AbepQ01=Q3TT%Jk@gTYzjG<> zkmQW=Y0E$+I>BSxQ3(xr()F5E%Y@B?`Snuy>S>EgCI0;r@FR zNs=uzN&G@yF541D*B(T*$0QOzjO9S$%$uiFiwhfuVILj~W_-y!bNPU9=+c*Ys2okN zt6`VMTUJ9dJauyKDgqn-B$prfHQbcgz(117m)k+Bx9gx3DCR+QvE`#`}KUMS!GN0fTK`_GJd z9gsdDlIY2R?e4*y_b=LKrT$NT7_ zLK0Vr6_~3ikSora8>Vr^zJHMME~8Hm-hh)87!c`d z6YPHmQP_JU!`Zujg|iiUYV=WjlVUgkjle_3x46$yy;4>wir``&Li3f$GbAH(WxqR8 z;|_TG?>cEP_qJou^CiY+dAvxH8ngd?rFVKEQgAk%O?|dGg?)Q=ZF=i`hV^K*^6~K^ zjLui61UuJohT>%8Fus9~XKgl35Z2_;$K$!TWBJ#0yv_4uCH!>oZPfi+`THl(M)U(Y zB?*3R^7!#`2x#7+d$FPFPhYe{SCJcQX*84cXH};2hi#4a;S^0~xf0*#EU;Y5g{Kcq zRHe+6)Za*;mpKT)+5nwc5mTGigx1w{9nd|}BGO_|X4G;apBEyJz1wcw>?ZPboF=<< zxM;hzd12;nc4Uq_%G)~hde?u`7K0mJzt)p@#D6x1iRrP12t2x7A7#Bg?=3m)yZ`Np zNXx9Y9>N=OuTip1scL2*CGu~) zHGb!g9sc=@nb7rtIO~K!{LWWGD>$7SU%?2v*L@UGK^C1vJLTHKyNq?YZil&UO<&fi z(Bg0?*7?{30-!3VPMe^ta-k_4b1X743>9Etr)&gR5c~UO{5^e2-T3u7sN*OEBaA^E z=p}51r@0+Z8pg?2=E7K?I{e%A+ZO+2@i zCbSA}HSTI1Jl0*_1}8ZhAj=-kI+3G<*td>Dsk!yDq^ z`am_67$xYKDwOQ`2T(Kzr(gm6}6!(9y~Ae%cu1$4{20V@QT+>%obGIQn=lQ5sL zl)ly+E&!lbw;JZ0wIIM*s3C;XAvY1bO=^NSXJ0?~q`s@)pRh7*s{GQ?QzIsfIcR=P zV$Y0t8;9IxylT?gZdXz^_6YEV&Hl6am`OM;a`B!GkPuD!J=7#DPD3_vEP0IzXk|@TOQjEGJ1cOMzx83cXI?@U@la|_ z7B@G4ZbERZq7`eW-mLUQL)Hhk3kTy!tIEh(JDdd}GSWWR4lX$nt|0o^yMoIk_O|8W zgIDxQSx71%_Lj%b_!sVo-IbUvkWZvTydRR`ORV+*U=Ajk9+A}>_8V)Z-IUKFD?Gvy z0X+c|{Dcb@kW;Hvx0fNXgZ_*zZ8;;AE!2NkE;shuXvqz_`z-tW7Px3a2EDYQe72Ud z^v;0r*8U&nU&VzLv+UT;Q# zlg2UiV5WqI3x`kzVMXE(LPFx$p-z8>cbGC#RZf~$$Kf>-PFuG(dE+5)9X?}EjZ#C# znX%ob&O6_!*v(~;wW&YJH&tuMVELxZ2rm`mq2_qHQ*jmcv|#?+JsPx=snO_zwS@d* zmh*rd66etAJISyB7d3uYAIN#T;_Cb;`0T&`20$PwKXI{`v6w$2N!$iH8Zj+zwKmt! zo_;-bQ+d9GIo}Q+X`G$-6ymo0nE*YWZ?Ysu*y@;zFXuP3Imh&QdWs6Vo@up3bmA$`u8AVpzJRl56G^65pJ2IKxT z@WXJX@tfhkU>cvE{Ciw-yyCPcjA@?l9X&;c>>e2E*gJ?aAYBu<;lJt`<&7R!MQzu& zzE!5i-{ca~hZe_95v<|Su(lvo0)2+#9o2S*b-l1+iPSse;n|LFCW(Sf0B0Y4J0&Zan z-8Qa73jIP!fVCI-E7I(;12!S3Rk?@i3G{new3D{?~2*a=11bC1wjlj zFXkV_l8dHH2}B4^p)TxAP0#QiANvCs?)C&B-~FVFM(l!wiDjg@|n^jrz&7R zoYTU;q1g%x(Jfpe2f~nO0b{btvR~+zv%6T9tw^9MC2*gnhrG-Bd6po<4in}whsBsk z*At1&AS>1SEz7I2-#LM2*54b*QybJKzzY4&>;)wrl;JI^1vh36sP_|EDAiUM!vx=t zP-o8;d`_rD1aXcl$(>wXp-T1`S=meL$Ln#p^l@Fw%Z6HxVqWKkNmduTGe2-|uMp$^ zGnNan?oBx_i>>;TJo)-MpZ`_!^tpo@clf8-6H@$3lN1#OzFhk|{~3!p9#_dW*XK}R zb_Bm80YUr*xHT_s%fanY8~V9L)z8%c(?*whw5qhHk^N>?f@rDI(U%NQqTw?NP z!_n1mv32=@?(A1iz(UAKS|(;G@sTti3?VZ~O&voUJ_&qsS7|un8g1xT^ES`$Uy?`q z8A^2VSSz09_H`R*9KI{}B?)Cb;C`rkNv}Snj+Z;nx+WQYZB36X@@+b41Csb1C;qaK zut(}r`s5?~tmzVPH77Y?yvw;6|2NcRg4%rLoq5r>#|b%<@0<1ex$F}bBh)N|9G|0% zdVL0!JXwj@KC$t&K#CW7J!xu+ijFD$wS<1@Hq%tL5gWT9;`clA3}lfC`6~8;sSL>_ z$g=w_ntZzyDbkOOpMUm(M!2v{Pd7f08k`7YqIJCj*yo8);-Zf}ll2_qIShB(9+QTTeT)}#I^DjuarVYh9lfe8a4 ztL+2Vd%?o1q70|el8MIe!_@}PF=dkU*+YboA*Gpot(uxyuh}IclQc?27!Gq%TvX7S zOKSOqBg)9xr+qyCG_-(xn_cejL=DEmYmSw4!OrtoULFD}ryk?=clxXm5oH;vR_e~b7zSym zs81O;qV*d$Hh>N9I*}*oXB`r)wr}w{s@>{n@wg)(82aL}F*CUZ296 ztHtP?9)A%DLeBJ>lR+w`dgp6+qyb;Q6e3o|i26@52kh(C|2Aur>MJlBbN$ypa5hV9 z_!%7AJ<^T+O^S_;Bv#-zuG4g@B`3akG_)S`s zTC3~0?V)k=YaxdHctdY=0*u_)U%F3;)68Tmt^#P%*$qbAZ|D~*OgM8dTL^d1Bt}(TQGZ$ZZO5FH>M2e zxaU`Ji<7~xWYsy)9w`uKp_g%YDwUd6Y5j9@^5LkZY8|kLZ1y}jIz3`M`rh*Rc6bOq z-`{`secrG2JPGZuJ~>0FcHPu#Z8ReyH{?j)5JhRIQ|`H3c>7*aS;mX7mxqb`&j(kI z_D}hHkUhyr?(M887DDlg$Y!b;od4!0iHoQME`=PSMG1B^Xhqj)ObLiqvVf@10petnb<7|XgSM@VBGIEn<};j$>CHCY)nx+z zim+cIqy1D-S&OWrS`b!mgt0RH0{M?m`PTuwY;1H;8gfEhORq>r>5iCpen?xByY zU*f<1d1k~9Qwz)@y}XgGT5FAR&%PLRpe_7g)hP@2(lb*TdmFlztFiQ*nVmjtueZ(S zillKbX;|yZ)vLczH^H9Y6N|q6Da`D+Skgf7Q?gEnm#60^3xoWB=k4y1g@Ak4H~A(% z*ZW4c1ljN)7Qj{}kuSxyw9xHLjTv4`lv!tp0Vbu&1wKA`ZzF>koJZVn%(V#;#{%~i zbn9ks)}bvPnDF(&oeDLR;9Q`u$6JXBz)ebp_)O#>3FPcqee|Fz8a+}{X8=+u$N?+@ zmYirgTUrDn$nSt#bSN+5-{#s*xLk9zIiTY0cs4}4?-PDF0jgV%oDF{%KJI_oQa9CK zds=lW_7hn2J7TD)CwC*ibS)VBF8Wl*QPKUl%)RR3e|4ode?s^Gvywttyr=$k$k)K^ zH3k$F9o&Of5(^ivHyk7YOw7%=4FqwG<1aYIf|#>CIA6vRlb9)#kajaBe)z}&*j3Xa z8vZNE4VR6p)g9R8Q!*s!ex!6^-W^UbbQ4t)uaK)35F6w{tThZJtwdRh7*zQoJ$c~5 zHa%e@LH>e37VCNUdAKpj3dKgKM;d6BWIOu2XPi&CvYwWlqRn9QQYdT6lv)nI>yMt- z5KPv%V5~hqhOs~A%H^cF(zw{*!^#WwY32jr`eltTz_EAI$bc-`Qzl|d4|y4|wwo+a z{A;M~YW*Tq_jIT_;bpWyq2mKw1o<0w0RiF|17ak6Y}wmnGQ#vP$LIHRDO#ppwrt16 zh3rc3fj+f4^I9h*MY_s}!A@FdqDD%pH_4kd6FA@FO#PB432~yCUi=xZ4-`yKf(<%2 zEbf3$iwggS@I5?N0ZZKHzPqCZe33$51yqCL0Sowpi#KJj=*O*`q~p0*z!8#u7xo7r zkjuB1M^ztm`{(dwJ#R(l1f0_uMUjhx<2=^u*xIvBs;2m}cYCkoGCeC-d%xG`C?W5(x=zMk+J2A)vl2IuBv1)HlF1meaU0}*J$2wall^{u{0{wq}yWf4(q zdJ4xsgZ&E(`?!NNS)MU9PyD?P&X~FILNPh0j_QHom3Q6?07Dk7sbOTB#p90?p;2{ccqJ*6vE77+bLe{` zCS2ihz0=W-T@CCj;kh^MG3MdG+T5YcUuZ!gRu?@zVCoXGijQ~h0ZYj`Xazps8*ZdN zxd+&yloV}|xVeYgq%RS#RerrJlCZC5Tk&md<46DU9+PTx7(rDm|Irok)8M_Ld{^}) zEQWokzc9*-b`RGr(LF}C8K1hWQcjRoA7GPmzH9o(INy_{305DG8k38~?3Y@=(7QA2 zX-z$6iz)dT&piI8G)VZp+^~fCPsu6QI$3XvVjNgrN>a`iMG-*Lg349l$kD5BwtB?o%zz6J5f1oLFICN&--f`S74n*#S{`V6 zmb=`?eeL@MLfgmA^0gB)^4s7nKIF8*#`_GkFrH zmo7S0bQkC6>f%7QsZ_qDFwsLZlh&~Bxn|d%b~JA81a;Q@aV41F?a<28$6I&KBPj_; zR)F3dia}1u*(wqHGZ^%7tpzkMLpB|SrTg`bC{7M<6VPXw_}#>AmI`J;BX z#(0;A2!A{WV68%k12ssX&<#gH=U1iXKyBhWg= zRYCcY??z>ncGxb*TsLZkOH5lCmp=|Dcf+m4D@|Q<2?y?Ge~l`Heaj3efB#eb7|UTk z#yQ|c3_7t01WUtGGW&lYY#_AU7cMUtMW%)Yd%w?5W4W%Z--ckX#8`hJ$R;&Z-^aEi3^9g8%5lnAlbhG47>(4iuyIw5R zr4LW>1TaX@@xMU0f+*}{FGfp4@AU5_?~=Y&Z0exyr^JLvpA9*2-s8NVtJzuME$Zja zGJ2u}MZ23jGr|U$DWSu-Q_iNo#GiYMOr*t`iZ34U*yf2d1Jx242`A{WXS>uGu0b;O zD#krNSJDys2{@mz-6(KALP2?1DDGE5e9pU#b{-VR?8w>TCv&6O9jQhmGVPKFx+`~& zuOJdpk6!)=Id2A=U5_!>Jp%DA(C6oCTG7_N72?O0C*c5|!yh5Wb{Z${IV4Ntu7OrM zI=9zO64mA4?p9yy1B!^51l6sOD=8aA{`-<%6Brb&SjW;F6BtuR=&@u^L}*QC{95mZ zdOn_;dY)yN{&k<`XypmuU(pqOom)W|*-=Rr8?elWDW<*<;N^rCCzp9CQ@qwgoy>Tm z;hbdVfBs{S{|vA9@y9=6m3?8TK!92O24WLzE$mL^?{)e5QPJyVdy>e4*x%oRxLJ{z zIP6Dg%Ejv;ua%E=+nAl6AJ}{-`z&3)O~ypx-9$6@nXM%J`^33tD=e!U;4tRS)lzlIm zLj6emy{*vOm!A2J4E;zPaz)>PXXZ@JOyBkGg3Z48lj{vfO=#!Iv@lM7z%%urIg;;8 zmDR{9=a!?WDl5-K?bSJ#t&plFs zrnZcVSR&U>pHr@9YRIsiT=ABSMve-$KQrniItTVc@>!GYvA+oYOj6!zQJkkWD0flr zszz;W9g^p0&r}t!9BhC!mWZ5IL#7`E#^Y^#zZoqg*&PjR-$=$8CJVWZc{z+k4CsYq z-N8kK(~D2$9?jd>zw{b_9ns^8zpq`hp0+qY`6t6K_!r+bx0Amq=$rnYP*>CH>^SuQ zr$n;6XOc#CtKcn-CgpknnAC)CpCLIdHAAZcbP_0bq<$P9@6t%@s2Hv--%-$c8I2`! zw;+DP6-XRw;SVlGYXWG^CaH7Rul?yHoyPShgfey*lu#c1fm-ZRG2q&n@OA-1t^Nf9 z!zx5On}g@t#-Qi=l#M66lAt{4!!IV$H^ZABocO{$l8W%IX(PXXQe*_Dsctwb40j*t z>VC>dj|N&cpY$|idcA1BrE7#_)|@->>>Br3e(oVC*9QO;GzD>VcWw^$WCU)) z#NOpcgu^aEU+zSif{x{&9w*1>^W@JgLU*SgM)_;cP6xz=lS(CauP(|JL4_75-P^ta z&tvyp1y)$X**?yML#?|Y`Y2x&+WnLZF=W-PU;);IyMH8+?a%=bs&t?+rHk)lqBNt* z`6)E3g)e`p73+8-bVb<+b#E{7>oJR?hg z4sJ9f{*T5Q0Tgr@d=oeQcjOsru~uvj-8;-Erv1NzPj{3gssoO(T3b8`MVnk{+VwaI zRx7f<2CVQQzpU_Mh>6PX`Fj$_skg_A@{;wF)2pCz4YH6HRll6mgacRn+`__SHUN{k z8!Ex^%LHrT{4JcPfe4oY!TK-df(0{l7=7VQGw@}^6lunMS-9da@f472}^=LvOmF;r1u1&k& zFSc_Da^E}=;@vEgiguRT{5T`sYwo0ssmHKakt&Ilt*D9jBhR-XHbkQgAF>A-Co{!4 zwPp3Le8(?kP^iDNSC{TmTrq2{B}>ev^F92XB{E@-l$^?lxKa!-n*}u2iYXyQ<+9%F zyRR(5d&G^p=-OIjd{Er=#zJ3FtPnPH=VDw>`Dp{J+TDyEucnp)ugTg{efYcjKJEX3 zQ*)@~ZtptDvxHBTh5m_nt#Moo%MkwZq_)*$KUrkB)>l)S^l)|Wu0m146)9OuxBOgo zy{!J*P*h-qVh7O_ab6HFYMW^O;~rQMrC&y&paUy$Z%eW3a{H8(1gFTg5_O9sv6>?| zobpz_1ZL20Eb1%MM&jR-PhV$lREKP6==;Bw5F5&u!T87v<-1vPNOOH7qjq^J+9s6Z zZ1sF*D?TPJR+XsTIfdp{hQ%y#H?~)X#c+W?CtkP}kod~WFQer#50{bjH!dtcr0~tN z81#kJdRJ~Noh};)H7HSjL5FI`++}|~crbLTI~IFYn>GAvh@-jJQ(5qNonyxe3C1)ZJtY3L~S*O!0ZNbK|e zsW8^JaLe+O(u3Z@lqkHxxsibrC0gA@j$o(cvzfo3sQ}Dhn~q@1!rWAwjlgP0ZGrJn zpsA6S4<))5z4~j7s2CRtpB0cymnNUmoda}G7y%`eNSE(FQc5j#w1{ml<#xor-fq%o zxG;9~ynaswJ>6*Zm={ek!xR|LwDE1Z`?396fc&pW#KF4iLRZUMs)5*por!UQh>qI8 zkp_P}PqCe&S37Qz?GO3s$@G;2%6)x9Uxd}u0w0E^oIOmL(zfU}cSev5zT-rHcUB{$ zzz&4A{ZYjyj55fjr180>T9_qSH)z*U0U_Nu?ba`^%lNjmxV{KCzHIq=c;@V4R$VNu z`QzHTk|pnvlLqvCeFIP&%^kMVXd@yG4=^JlK!C-9VI6sk8ia$7=>5eJt2 zT?#DfK7=&NTN$^{N@J{+yH8_5|JKj<`eWT^P+wiE={Jq#pj1|!wIXH$v(=z&&ztL6 zPpdPuR=*4NC7$!wcz`;=zy#t_fSwuw?j!h7k0^4c&ej!;hN`3O!#JKgnpuSzN*mXLrt`nO_GAwIm#!U8b*Hr@; zLL>3fh0!SoL6x^3J%i7$iX)f#pSv>op>Y9?nIE3%l%1P244!GGb01H6#5rFQx}Osz z=b9)^?E6(7jCx7zbWA@R;+pxr=425|Ki9XQ-zBzpXOQCy$=sCh!N0T4^VDZljVbwp zp42`YgxXMVfWFJfu-@&N=$r^6+7GJiyOM2=no0+kjcsOln$Jt_!UdT~w5E8ogV?aI zx~uVMkR&1SaK0LGGgSrX$?l#CXPzd*7r+$Gf`C5%hY19V{wm!3LvN;YkwOkdY|Lc_ z+50W)U3DLowq6Nv>&&jrwEHzL*|vQ%e}O(W8~6R*3nb6kUq(EETj7PjozJvAeICj# z|L%U8il-3lq#%19Xlc?2;L$xE6C3Us;a=OS;&(qs5)Tq*7|BuGL{I5_>d4X57j=8YGY}EclyS>pV?*@4E`8d~DBoFY$7jac z+WI-?>h$0~GrAfYHON=s-$js9MRsbMHwjdGUk}ydz$9vfky4(V=?ZjlD5(cLgXBuB$WjqZB)e|L8FWoPkW z&%NJ$rSiTF^+n<`+uJ_HzT*3`_ULliECSzeTBYr1{E&WlQSpId{{5jCqR|>{bt<>( zi+97wVBM=BeP!4sL}Bvyh|~V{&}G?qu;ZQcy%TAP(9T=DnS&bTU{=b1J#qZ)BrZ}1 zNC&9k+GnYtCkL3>i>Yl~bxh9US0F6VW+H^=W4E8tuV(v?yR^@5=9Qt!KTPyDD6O*v z#xpL{6CKbdi{@C?RZ?=N*=L=c=y6*1t7_PrFv@)K%{2SU>wh~&Z?o2!EFIryJ7f6q zH*po_4>#jB^K6=G;tH&K0ZY`x0sCsDW{f&g0NcTg=L^ENoA}~;Vm9N z86Z49rq9I>pDRJ=J`c5+C(hNQnZeTDKq?mGQm!E0O@^qNAv*EFE*PDdEJ?o*aA+`e za9s&;>Nvz44qNMZ@IKznnDd$WASu*LbZLXIQgD0eq&CtG>2p|0jF)qBwU?#aX2COT z7Gl9@vbJ7J9dlSx-Tq{w+n138=}?x>UZJqDO>`Jza|fKvPGhm!QZR6eljJ*D;G(Fa z| zei5jt=f_yg6g=AP0y}ISrEG)S{$_-j%x<5UBXZ7^ozpXXYFB&e6 zi7tYcvSv~4rFWjvkWmL*N;r-L0I} z8Y231g`BiQF^FD__H3y?ll|2EPRq&{7eLQE-jQ3(JTY-nZo2?i3m~b}FO@zx+C`;o zPt*u{9}}Q|F^D7bav%*~sbI9Ipj&kUy(q{}r4$i%d4IE%{uWK4t*`B2@rHH#MbFs! zT61F~R{4Nww0>1qTyIqB2JB9vcH@^qI!K%}g8>j;j7AYt^O+kl`)m8ziGXp_TT8^i z*)0=!kiz6B_y4V+4Q-Dmad~O3lH4350r$Py=|+*-GaB9(D3+_my~+2XW&?lZBz|9P zL$l~VZX|EXExMlZA)YG@Nl3VyfnKhVS*(N<9`3YF9@4vrG0LemcoqC=a$h(m1YFQ} zNFtln#xKenwhpRz?psWz zX6sB2Eai*J+l$smLaOjvh#k?vpBhvD)l|eAeAA8j>L8Y|QP4st(v9aR42_cIg<)fh zksb+J@WMNV{%bv`;$a7w2f%-{sX87dvL!21yZPN6z(u>){&>msm0e1&zD+p0zq(E$ zbU9DDegFHj$QN=I-lNvlebj^v;N+(6B5Tu)9<_o`sO5}~G8KoMy14cXld!EOk>e1u z>4PublzL*OuQ#^wY{~ytwH~vk=mp5byxP}X?n}|jYVRyX=MaZxmaG4j_}A3x_L?Cp?6Z5OIFNu{6E-|W5Xemux_aWS;fOYMCIRO#u#K#c1ITqZ#)~SS8*v*L!392fZ-?E2cG8B0})H*5AIq zERv~6QGWcEwE9?KtzR|e>^@ot&6Vwy_HG=AzoOLxEe(pJ2Zs#z9WGxTrTIs{`G_C3 zYFcSH%TID^gFPN!?^t(MfK6dSzgNJHR0nf5Qs_v2V+4BV-u3_KUT~i}^w$0LXwc9O z-+h>9ft(mcv%kdHsfP0WXvAO%b9*_tb{dWr;{xMJA{%pV_~!*Z_a;knu+Pkon7q@6 zt9DFyS3>k+kcgHDx@V3D={9L}IC(J&#=V5EoxQv=dk#&;s<_MzU79=wcF+0VbG7l? zGUm`NfA=BXceRN4yqofMA>QC`NME5Ca|B~nq+P;JvyOO-+Qy7Qc*gZ|HBG~88dv_DTZPM)Ytznzymo*Oi zbQ8x!E#B_(FPAA*6t~u5{$P1KT0ixS<>dx%=FG_%4LWGt?P=`-k>?y{^`g;nZm;zYf(9vF$cij6k z_m>5*TZW=cLP)C*Lvw5CFVpJ2>?yi~ohZz*NcvadOY!E(7X%6*YqJ-c(Op;3lwc}e z0UjMqG3W8wgkS#&&cmVd(=q6W$q?4x) zJvrP_t~C~7fy6}4dH%Y8HIlOqO@Mm8uH{!t84)V6peG)2x?7bzyC9wBqL z%@O%emBz{7TkoQ&h`~3xMT3b8Ay$iXY!k4Sx<{ z*wM+s;@+9~43%FSB(PTXIEJ^YoA5EFki5HzF~PxMF?yuO zKWl`ZBH^t5D&Bdeks!1xBQ8FMcl~YkOXS}Ml7dDq`J=|PKlK_ECf>`}p#s#8p1#8E z&UiwRw-X@JN6*i>l;6_1tMhdiFGMTlY_p~c@r~-;*sG7+9=%*HhzE_g_<11p>nB)Xz;{I-G&b15&v?iGvIq zq(>7uXV%b7{>-XTd)R_b;%5CY;-lNo91YD)pZwMPKi+~D1IKOBu`JvFz^&(1&EYL% zr#ZsghGJA@AEiTvPPIQg9(AYlP;T=k@AMsxPLG3`nz%%(us-VI{S;(e)Op? z#V4u&C-cH>*FULVWku60B?48nCi^t3J)sq&T`B7HO2EkoEu|;46=`o>W$GyuS}3sE z*@_L-d`kt3Tl@&YV&hS6D4avRr$_emU*oH~m0yI*DOd_mXsPz}`b2oM$~@KD>fbod z@|H{|i#sJ*e@{;qwjM4@`hDPy1Rt>>YVdEqxwKh6W8#Q_QQUM`z z^1|wX9_VntflwJ`wHDVvqHBM;$S>SU0^UB7;M3#DhnD72Y3e3D8*@EF?5YIqjngTY zKs~&YVm1qZooAu-IrF@X*dH0R+3|4Y8nyUz{IK3smGkyU`0CF2=`6K&mwM=5)dkYS zs_-?b67+%-b{Z&CfIAa;{LZ&{z5?v9fo%t9iWk&^3$Ue50N}k zuBY7~UkjHU-0F|8trYv5^ulI|n_TMua*Pw)%k!cf;_|&)Ref`0ReZ5nK&x%!V7V!7 zw<;`<(t0u1%vrYGuMA0+08Ey48J2co4lJ^@VRn4Af+Ds8=C@D99*)BcikigQQ+%(Y ziZW$rc9kH6-V)FJ1Ee-vS<cbl~{LItl+p_&H zp1*XSQ@2}D=yqC#W+UO{IDu>673y*r;O+Qv>>2-~Ni5r8d+?%Rqn8}>Jz`t{@0N$= z`dq)y#)iSgJ4oKaN6E zmiW_POu_7E@N5NC{pQo6f1hI@0mC9i0Z3Iq+{5jqBHR5ES*ut1Ybfv2y*mv~KNhue$^jtTaN%jxhul5%jS4sTGFt1^_jB)a_JAaU~DwuBcF`IE9` z-DuuJ0g*700hw()C9{XR6>}J*+M8@Hk~($kO=v`)|7+ucXjVXOZZ`}woasDm3~Lt$ zA`!wb#hOwuV&p{0E_^g8#jsm9_@=d3QMaNhbLi-t%lPdn6lA$v46@w74|GrF~TCCnI%xgIZVf>`Lq$QS;DB1+Y)ZF z)RgaVse|asBLW;+D7U;g`&ZjQx2eIn#aQZ=Lo@ki?=<}K`_Rvl3`-{y3=K1q*XTujj2|EK?4k_dOE=W2}c0?!|vVbkURj{)uLrdMHA8fLv5d1Th$;G~o1Jmg6$% zBMiPGGgf)YjVbZB&XU)ochOTPEJ<{OwiT3mT~?(j`U zhx{VvoSxrh3aV2pue3{Rsx5B5)Foc0)-M&4;MIoPaMP#_kXfu<5pz-MN9qrxu7&)u z@%Hrw&{2JezP%w`Yy9zStUwo}5YZ_rLLkVDmrEL#@E_7Z6>$UO`+$j6I46T!`a-R& zuO^w}g<7TFXN%H`sBmf`@Jt_ii&vN+08*48?vx{2`Bat52IaRqt3JIY2Z3oDK|!3$ zSw1*9nf_F>AG^y_csq;G`f&0$GA3v|6*<5;`vR!%rWuJo+}0{idzR<1r4~r4sQJ>J z%3lo}mz>BN8E~a8dl7bc2hd$Om_P!I&3YdyM_pX-Z30e-Y36=o;$T%tG`sQ#Chmmx zi(U;d(imKFysTjO58<78#V!QKvcXt6GPhsa+)xAt;57%X)_wAdwhPaS)?=QE zmK~lkDj}?6DU1Z-R}c#4-8brX7Q1D>A2F51NPgzKOjQu>;)oyC3dRY>yOb63&*(< z#)U91M~uLwIKqc}X@5QKk)}4tiAT`jHvK1yQNlFFF9&Mj3w5|4v`1t*PFiQZ;$b-a zF!teiTu#w7O@=GWX9S=O|BV|_y$m_;ln$xsf0W(-7c#WoK}aiZz5i}hEKvMc?DUOz zQ*UnIcU{fB@JKPv_iodBpJzIVHIK>XV};_cOZZse zMOLjBZJHi7vm|Q$5wq2+I#gEBD$2c)Orf~d!0i8Q-Dt&+C#8=g7Ko!mvH1K_>B4c# zU=Qv(>1>%c`}2iJXz}_=x-!zIUSI<{t}=+C)WSyDv>skETS$4iby%BKL6(;p5PCEa zRQwq$COjUTpyh=Q@@;y6=P9RO;&Z|WnUFfEFG$%S|JJy;H+Af03mlb0AfquVEwvMJ zBPk|+1qG{m&%HJgwhbfRB(hb-St)L*Gby*IKGinm7Jr;i^Z|t4j|MhN5%xa@?``}K zFJ`}Xm{l|@|L$@3%U1y+0>>p|1(?Ultz>qu^AaY@v8G8ix$8WUwhgC}_h<*)l~j$w zKjV}1PPV~!7i_t}@5Y;L8yU7bc@ckZ-zwK*1yvma|y!mlvo@3f2aO(?Kc0{)fxT1h@kp8`xGGg|n-{ zvyUN!|Hc%0%O87AaBSC(M@u(Cp!%-)4w( zjFKNiU;UQa3A$^v7F4ONk z3SC(Jv%&;EdxkhSiY^=56UnUN;hS9VeC$;W6Pdznw zx={cd`I2IjZSj$F@{wD`k#j}W3q`z3*2wE^KtHwu`sAv~-HlzBv)BRr=L&!A)ak23 zq^HT%;}-d7pZrj4J&!rAQ)lg;|H*`bJW0U{|Cqz@U4j{3$&*t>iuDvUB;jLCWJ+WD z9T7^pR`yN7`?uLsx{A?3fLszM!;Ac%gesLfFEq*qTm)nlhWC>FM^{}6XWHI6mS(wg z5LXjf%=$1-1v+)Vy9<~jt?0aAefxe&1SE#zexo7pJ^1R(;UIV{PZH0!HW4iNA3=>i zo09eyG5+x6Hh({4%_!Tx7DFjaMq_5HRnT))^@^%D$*( zHn7aXYcW|sal8ScINBJUTnj_wc6+(!_K3tuhgLrvzk2YSy}#Nl@jL3CY1$a?gohK@ znuV}f@$@YLb&ub{MVEB=X=YPj46NYctS{X?r2kkXByqpB^w*Rc0Ep(oDM&-# zhUTvWT%GQ9JyKyN}@MR-_ zvOXY#z2)I@ulmcYmcn0#e!({zefc8i4}rdia#?Pl`~oM0lqvmVE5S{e5Hv1?h?lRU<|L9oRJrwtvz7rgo@TT4CY2TZt*w&1Bzwd>j(WI}SgE#Web z4LJ^sJ?uNGsG$BC+5VBygnw2C_70WI&*^-rzp_iSnQ;HkQs#_cR3xL;pqp6A)HU6g` z--LLHA`U0+BV3e!n<<*=-w$s2ALS&vuS1H6{P?~4UCpRg>J?FBd+i$!_x4!=%Zaz4 zlTSkK#pCw$Ql;YkHOFkD{4X|$zzN4IS}>N%=Uj}-q`wZuMoETKov0X*U-D#wt4M{V zMDt0gFg3A*_xf(%VTbO$TOgroX{SAWE@krr&4{n@tH_+!dw2fai^^~bD=I*NWxo+l0M@CVQZjfs_PjGf=sCT|? z#l=WMubwx1Jnb}1lTa#N^nNH@Y5MJ8Pv2r@UBAY1n9~4yq|kOVQg3jyKArw}r|$udxXX?#COu0G_qN9B zhtXT5>Gj*}LqzK)% zS*=l2B*ETopA`NBA)Z>MOp@6QpHUOJbkH$aJCH@5T4!$4D z9$z3}|MRIHTpsS%bu#XwJC*WNcT5Suz6Vi;F61iv@(kdsXLfD8*M7Kjc%fBVG+2_) zC`qtoA@IxZEvMdzsjAg0ZXcNYGGHfXotTLD3+M89e=>9%59(mWhN$C-wE^#VlPkh6 zUO=wy9~V|{9^5TfG9`|iRFaNI8@Z7)l~J#cG^T0;BsvzMWZ&j7*sn&3bVM<69!}|1 zq4sCwd{ z9YO8z|m!?(--(X4W34hEu6#bW!Iu=U{*t8%gW^{GX{ir{<9ia&XxzIyIP(5zJjp*HRCtaCdM)H2=HhR zRyj_72w2_v_?eOFu{2PO=k+FwJ;S=f;4m6O$#6LE3p+ z3t{U$61;qfXD=<+98(s$^Ri+`a|{t?Ld{J9uIDKjb-{&d=Uk6D;SDn_isfjx$yhHh zEt74u>h8Tj7sayHwc8j9d9g9>sA2-_O0xF6vQB?&d%%O;K3jG?fA?IXns<1`@cRM; z*S}P7vmL1^zl}xYOB;d+kYn!QnJrXjN#xP_wd~R*U@iH*Dp`Z2itz_FO4d&&-mQ{P z15^K=KWcCu4M4{Yiytc6%Oa&#>*H?^h7M(a%#OBh#+kud2;v4c$277aRV$aM8|t4} z?b6aj_SIt4d$u{j3B&wD_$R$H8}@%{u2}Edyr^U89x#<+{fkBYH#^Z%J-@5t`Vl7OwpiE_E2d0NjLmug8Kn=UNL#l{zJ7l5!?dmfq9MQN=&=XJ>SMQKo|ApLB2Y=1Imy#sQa`#AVKX;$M;(p}4ZoqbrZtq?NekTJWZ$UP;$bTG4$uLl zayE~ZMQAdSgb?@JZvgf;*!QgPQ;K-0QsVlVhQs|Med#o*EOBq%6P;Rn$xoH@M=f~sax|O;nKyAStr1s8bh-3BD|4~RQ(bw@$TG6lxP7OJthK&MCI8J=u8M@Aw2(G zW=J5ob)3Tf+yzAcxr0+li4=qIp{aqYP(~#+@i=>kvM-R_`M3I6ev!Ts>nUrbd9miQ zf*47PuFN%3B%5>DO=T1s&Krxqj*%Rd1SV{E}UiT<@|sqtO2$&>xcff6UZfe zrR5+k5yvL^p3B4Km|n9Ziza(EC+LGJ+AcG6v2^?JErGD&-Ef5hvd?X^ePga;G(ibX zRy8?ymBvYZqtEfd_RGnMI?TdFzrZ{_9 zx94pw0+#faIuTYxv_uhlwplycwG!n2R5M`?K#^kO=gmbe%lP7PSi|<4X(yXua}{sI zLoO#nX<7#wEHyu1nPPT->=Qz*o15!v>ZUJdeWn_$hew!8nR@M?;CuR1HgDD9{m62^ zj*T^jwKk~36rTKkn@s~u8*!jeb!m!S!r|;qWZeRzOa9VQ@>QhUm$X7@lXiG5`}(FBGdY8w=t=>byM&}|GCzWKM?i;wJukcdbH4`0lz`c{vyOnl z@h%XoQWg~pzsQlD@aIX-P0Gzh>`XEtQ{QGdzZCXqDB5F1s!mOks!&{SH|)Oxn@+od zM$4}&DC6RJfW#xutEH&XV!S7IlSHG`K{l##jcq%U6jx@3Pt* zLxj9W0Ed5NZ#F*B9a_}ZBO4HyoqrBpvTcMoIasMhVS#S)9y=gB)t}K?-WDEvOOl%1 z1^gqV_l=@At|}vj%U}q`alf(F+R@~p?pP=D%Ic8z$>^-;3Flrl&O8w`=O`|&Zcy^6M5LOlL`%a@QvI!u=AU(*CNgfgj_&Ur#oao0 z|4KPMUb|g9o~RNsXkE9dFnYi`*PNYBWUMrcPlS*cGM_mkbJ z98l-S3I@_uuc~9Xy9DrVrvCUCr~=Jofo76Rug>xTDMm05bM`ZipUUEEcQw`tXJ1N- z%1cnbHKIvG0(Gr#JtmP+oFkzd{q?-P1LaPAspZZ+^+~)yqe+9S-vsi}`W$s~ED%jb zG?Ub?DHg}0_#E&NVru;k7{{BRwTJ7g=uJ+Hk(5B57y&`*kbd8`GD5vEF%~9w=U`iJ z0qqx__$)He!X`_o*Qf#gY>}4$(s+@{iv?SYv;$)nU_cQ{Z6VxpUjj_^s zCU7Bh`{F|TuZ-`};ZSAdpfL_=@PgjCJJi`(0il`w&FrPc3J!f4aEIB*nY+69uFhSs z=79Uk>)`ujpiwL+m#dpPvr)F4>i)=L9}Xp3k-Co-?{LnUo~F&(%F*>RKrlO*#IB{g#aAjO4r}BEFLpLb|c6ySvT3J;7evUqJO?sg2 zq#-<8%~nmzJe@)-wXT&e)IafB0XTY86#qXvA}+V%+_=WYV#zmaBY(VEL2H!Z$!J8r zogdvlu{@v)BPi2`OzbJ37<7NdX~DGgF*winm&m2W8x)kvhN$-xri$xOpL?7XM~lm# z3T+xKsh15BCqB4s=E7F9xoXeFPF4DiIaW`ovbEjr4ac`HOFp-%HPe1F4bT$nY#Qk3 zv~uSH%1H0`nYgqsU#ZumfYqdNCJ^CON}nqxttHL`jiTz>^CYkq{YykbeJ2E~#Sfq5 zY711y4PNih8eraI@-rc~+vKMd;w7}FK9XjKe~to6D4IJ%a_H<(Q&lTlDB3uIP_upyR7ry>tjF84OTD zms1)rU8cX@jLjXDgMAd!P;O4POr5tKGK<^Yam(tD|;D z?{W(v;ffz&LZb+aEdkY=#I)mug0vcNH~z1dTS?U$wd6BIt{?GZ+vU?}cG{@h5w#-| zJ8Uc|tV!LeTpslv0@5>S(lZ@hSg>V6C8pF52wi2L2_v%Xi>cCI8(4EV9Rm{nk6P+s zf$IDL*c=yF=cG>MsoS<9ZLD@U$U&;~pbo-~;0h_Lp~JEIZhw9!YC<=-kD!vc18dni|vyV#EZTcBRA2K8E#_LGCN`QWWJ`{2;CgOnlAn>sqPE0*)wf* zZL}&#UiDIR+T_^-lQc2IDGH>n z+}laTVyy~O*=|*tjhtd$6mC9S8CJ_h{9pjs+A~6`R z)i5U(Y7f-cKEvCQ(ekb!QFG@LkRX}wwy5|{2|+RLOhl&Dmr2mCS1z*id#0gM-_&`? zLY#`qH)@LT9gE|xV?m-{h+JkWvfKjAXPru%(PFBD56SQ!2tJmD@={*b&NlqYi7y2E z-bxCyA4%M)p61x>``y^l_$S%i-Eh8qaC@~P{n$)wL8hI1`$9U-SGpz(Yb+ZwASbW`R=8oeV0D{J&yhMWbdR|PzZgFuMusO zgv`lYN1!K<>djewg6lnKE~1&X&Q#^fnQO!IJ64z|hdXz-k)1A?2#`a2pspgx|6=`s zN~oz9eU1LN^8O(EMM15_Iwy#L>$MM`UaGl)fXs7*m z$Gv8qdae|l+YkD;DIu9Oo1eF<7h`>-7&nJvakX67}I0-z(?!gW{ApBRu*kvXDCaViGedDS7~Lh4yHcQYcQ z2xiqS5Xve6=UUxp2-I)lLg7kcPuJ~gcHCNf+woe7<2*-TnKX9qR`mE4Sj-87Wlv9x zf@=?y;4xtvMZR8w3D2m?{nJ^QH!5Ub^iMeD0hni5u& za?n&oLzeN#`?+FTnUg^*Eg+(ndT@p22PYC94nVqT?5wEj0}1z+FbW0h6MDsM)#Gv~ z-&4l51m%9i@H42EI1^&I_rtsK5_S8YScQ47rYY0+P0Ose%GPPXN>|DJlLyPEwAt0& zCD}0^_HMXMN^_V_VAFe3m0x`I&De!Hc(15wV$m(5kIk2#Doh`UrLQi@_m^w&GWB@7 z7G}3CX3&#r%EzGgii|7hoP{gDi1$OHbXwxWTe^oqxpbHpHj1mdYnmm)yH@n$^BY~# zGsBEBBsEcKW^*Qljybr$|4q_=nFaTgEN(fh7=u{vr!sgF>HbMk!i_J#Pa1;w_?TZ@ zzMs;M=IM?Fuy`jWcKBhJT2rvJTli9WjKkSZ2909jJB_jE%&R16a&D4D?*&^$Kks|pQHHX^g=OtuvF>cN@=Z^ak{ z%@cTgZ(=F$)8QWqcZVOV=2xWtWcSTi!)(W8Np=s(%uDM}`RN}K7(sgWVN-$ZKeZth zTI^~_irf#R%$*@5akGBY6qug8NRf1M!_JC0@3$_|u=&9kGFtML6X1pJhG#^Yh(xHb zo*0ZYMHWy)s+hB*-``K~0glemBVQFZSQd!9=WqD@=7x=;P*ea*Xt<2@_?dd+nG6LW z&1c75I$vFI`4yODd*Cm_T4?g#Wio!K^61}4;xDBJ=ej$bSTHIE^@#}g?Aa?BZ z_|l;6D%(((E90)}lzRdNQEdI@H@gI|9m?sUc{r}%&U=^rW(O(%v~lF(_)Q&)+bj)G zfAKvdts9Td@LMt|#D`*CVKT)W7T%60`+=hj^;422rn$l`Rpd%7{;Q5Bxj}+xU`nD< zcoo^G@p*Bc-Vy52eK~4|<9Q&!-2P3rjbLRWJ1SsOCW_WQw{HT6t`Ci1;~ig4N=BGH z-b=p>JO;Uu80EdM@U&|2v5|oimO#EV(_Q|B;%d zzwMFs_B!i?%Q+`c0w-#3X8b?y7^GIK3sb0gO$Me5Zv8G2vPl6v98;|!2NT)pc><_Y zaF_SJrrB;-XI!|8cB4m!1^6+{UZ$P4@*mR99;!?WJe48ema^(^S#Ar`*grMiTB6M! zBn3~X{lMVfLJeKVpKg(&1AH<^C*I!s|4Zar6q~4YUA8eTIaw0UMZ_@pSW9^94;+vB z7ebu&FRfSIxa!p9mA4w~1%9nHJuK?B!TQr&OIU&YQ+C3hWd%t7TpN zRYdS(eqKdUi8ybzog! z>7!vtCptq1Yhp#$FqnFD(_@kJERSyqKy=n>t2&d6fO-G1!dRN#-ZV3AW^~(X zCQ+Y#hu4aVCE)lD@sT;;L2Yt%IE;S4$BMU`oAiuLRp3Zg<=1ZTgSP=45_Ru5L(7R%B7N?E>}*He$uR zL!^0JeB{nZwH1=cli&d?*q_qBCs4f+xA+41r^!9A08mKw;NDUFn^KYV+@vuNJA(RC zM1egx7wjcJV$&`MoB8|7YXtg3#B{c#U|*#nJzX!%_$IoyT#%=KV6?h-kHRzxdgOoA zgb!4nHLwmLFL?Ldm!ZEE-Qnx;pC|$&Bh5deBSM)#RhOwVZIG-m@;cP^pM|=fS#)7u zTQbeQX{U4rXuf90=*0k(_=iJL`e)@@~;Qgg!A@#)W993tB z-1U|?(OF^Zav!gAXT)J{z{^{Nbh+qN(OVx8>-3X{UcpI=!*%`R(My?Ui%n(v9p7%n za~=?L53G}7aWkK?hqb=Ez2W8xq7K|TKJd|_k5g{>2)mpN!dh{jx1>^mQxQ-+d}dsx z{1*5SJ7S{7&#C^Yc&q|>zd{7|8XKu6D-)GSt4#5d7>jJpFdO;ZYxK#zhO-x|Or4r+ zcjZ~D)y=epzla_%X|kkRKPvAsFB)GM;-vT|lMVTr1zFLihGkq3Yy>-RTf*Ru$-(!{ z>?|PR?EZw_qu#tZ;nqf7B-@=2K4G+a|J&Ikb$4SvyMSkWt=O<_LGfl(BGx#KNr#8* ziR(*Zmhw>7fvbWWXSeA8!ax534~fHGElx1wWXR}`&g?RyVHjJ3VKga zV@+DDwb}Ar9xJ(?w+QmLRuIRLm)HY&OY$gK*Ge4ld`YpS7=a1&q#;YIpU#q`iK4gLFRg{2l6pvvW!y^tKV{t!G!M@jk`A~7O(y!(^bq2S%2Xla(4rix4x zDLRL-t}VN+BgR3h>6!7+Cp_pt^7$7B(I&jTmbRR0;Vk0_0)gtH?DumlBM$@fTdz?F zg2>h%nko7XWaat|mDwM@H;}qxu>>3xJ(Cie(xgf?()@$wdXI(k9ZJ7E_ZpLc5g!^T ziFqmh(XgA{VM_eMCtOTUu|?R25zJ;aqo8jAU#aT#@xdU13*kxA_QY?dg+PuhNfpV( z(Hngm$bt>YPkQ$A8S_;iCos*cBr0#VFU{OrksGU>aKL7i6Nanc^DLoc2lC>ARbys6 za7$bqEht~0J>_|i#5c*1-=WjbWAVov7193VUXlTk{^2t~dLoKuVP)5zd{DH_XP10h z7#Ru21Tir|qwX!Rer%2LgFPeWS=E5#n0KpHH669s83iQKJi zK{IKV981l=<+GUE?g~m<<3QwDm#gH3>b0EQ%PCn5*bhQg?j3)ZNRwASptudCSQ#gs zgoG`pY^XP`mm1MLad)cr5}E;^9d?dvdQCZztf~f;U__N>-%$ATLe#ZAl`FZNm%ruT z+yAN6pnhO)a3eBZgQaR*owr}EPM1@Q=Xj7Gm9UKPOlL0wcF?7k<1 zI%v*iE>+@l!u~5YZaLGUJHB%M$4Km$K4(HLi+s4yzZa=5J7Bw6Cffbc z*b2Tf{B06v@oa#hpNergzX5`hQ3juwfVxqGp@!2gf4 zxjG4N^uu764`DP|s^@kmRv8MIYSeME9BFwzjUGcVD8uA)jIbJf#+sK)=w_bGOAwoC zv%9%?VVR_Mf)`1ko{(tvo4xQ|#h$}%1|*#}n6t!sv693@p^ZN|@3fvBh;T0i07b-z zfQRNpVBIl|2UXyqw|H))ZG%$Kzi&zR@-V^L{S-sdyVJp|Ycz2f1jf73=0@Jim_!q9 z!((jpbK_b8$fgf}f8yS#Tl9RksUM1*T;)5jlcn~@7SOATeNf4V8 zdu5*-){b`$p0OlWPcF;rD zOUm0M(TusEO_m5YPv5?HA?wnbGqkf4rcFfD%pgLhbv8a&$8R$y8X_zGUr{XDz8i7l zvo+^g^ge)t03$+^gRDx{DHyP(Iz~-$#u1%Y6jzX^rCL2Gv?a&ybth(U+GKxp z`BXOnkrr+0ct`X{Facr;frQIOHYvbjSWy#!$PnL=Em=I@HfNeC$n@XOhm1&%=f#v6 zhGDhyjK~0XWI%Ej`V7cEhV~hu|2-5-TkxQ%XJw@BNyGA{`NFJCafxV*933Q~@COU; z<}=<+bI$|m%>#R!vXZN}Bx`aC0GL~(=!(WIV)G;l5uxAlNlm*ICR$>`&kdXk`;E6X z03v*|i@*e7ga)ulAob^v*le7ht}P~rA$Ulo6WruBpiex(hI!2a^iqWiB~}G}7^4?2 zs{tQQ&B!$yM-HU|7Er|7vGZ+khXtNRTn_kD1)KwcrY7X0T0Qnc^XTBN-lODlpR(7Z zvs;hhinht{h(LX@#)C~;8G^$~GlW5@S!bh~!us)r@zq^M%T-|2_E4kamsK%%6TE$F z1A~~V=`6_^?|S3gncAb@a)|hoCy!?;^1u%vgBN=|c8R=+yw$dXu{%kGQWFQc1oXVl z9}^_#OgL=NahC9(qAGOd4)nbLqv$Lgn*Q1-{!FO>F#bR1(EKSfpm8> z8U;a+93?p1PJ>F7nyC9}@5xot?mT_a3y?R0X-L77sOa$aR#%R!3uek_hF*6rTK ziC$ozc==*aD#T2l5~tmJ?De=(se`DiIf|+;Nbw%v#@^wIB(FX+!`3(AWuir%bBR~D zoW4I2v8)3?LrBIcL!zwnbf4l{ZrTK)^>*AA%j!Dm7~e z#eCxGlA+FM+9Isucaxlo8~v9)7_Wd3WsFo81pA@m--*U^nfrwg>me6`wgTtetQb00 znR|yGNx$2xI5(~CfF)CdxIOTQnsel+e=0s}U_eH^P!yA0%v6IB5gZ=+YY2!?R+h(D9qMG$;WJ3B= z=*k^^E!XEk>67VWYS1kO5w-+~_GTr@OuDCga_)c_CdFX1@-mfW?~(;#5eHGVDd#1X zxDI7jhy@&}S@DO~%W{OMNxHlJ4x(T6!Y7>%d6{1klQF-1qbWm4`*ot{rudUFuO>5s z+H9iuTal8rbX{tLChPj5{M1BU&sz|BqI$}$pf|cP?{-dD=R$Za`R*?a>&!i{?N~l9 z@D+!OZI_C51AI2_ZKO#d!$6l~`XqYnW*BkuHiLZK$=Q zi<~ocJUBu7P{tRGfNdpk{SB`l70>lo>(kRArj1h}*@Acg*TB>%ZwjA8m`61Zkbo_t zfpJBbjqut3{=u*X{0=<9jZaDIGlNV=o3KgM5Sgrs{fc;CgP!6ghoVUxm+1A|PT5HM zckY9S=qz(uNTyTqM`1Cu77CX8{q1ehA83Heky7**|Mmp2=+^i~*Bthz6r>+nv>)$99X@j1z1wA%by?%t8H(Cf63>mcIfOiER=Iz~z=T@$ zzdfTx|C@;PO)C7t=qoWK_~C21<7ZR`yU9!czY*=_01nPYUt-x>Va8y%Kz8HdsVc>N zQpK@IcRyDVNxSpkZ;Q>)DvwvIl~HhCQ5~5|);t)Omlqg8%(Wu-k`ZHArk---LgUr# zUJW0CyG%)2{M+()Mpd+!k0_+$^wON16)CGD8V#ED-0R3P|8!;d=Ym>D#585z`m)An z@osx4gsKnF7tm%cx(%ub3D*J}my)8%tF|CMoaLJD7~3iIupBC3^*_#y1LHZmM`}4f z$c+a;OapoR8z`KV8!YfRfShFl2v7$hg}CMnbS&oy1wfx~72hlvLZ_YgsLfdPFH;AN zr`s*wHsS@cwRpUeY2ltzQ3G{KjsRVJdlsvep*o=g>F+EeL%ElxYD z$j#H@?72sIac%>JW$rc4;hC7FSa+mzSMo%+vv?2ht|eeWRohYrN$y6K@noXY;mS! z^$%4E1ifNdMcsE+=>Z^Xc@cX_ z=!5U9d*=r4);>SD^t1PSK$^s_~@n=17gkT#@<43Cc%Tl}`~4w{t+hl)@2Q5;az6D&+kgXjV`D^N zfjP2eOAs#`ynvEWV!l2;hB~Y2GWfYh3H;rxO${Y$t>qJh%lZKe#@|~k0GMDhg5qk# zA4dRl>x;O24)C?Ls&%OPA2dauhdu<@k|?G5>Y<)C!sGh0A}iqnjHGECBfOJ@*ce7M z?u+y?v&|(^z45OpE|u}(*YVHdsf1M4CbB#LSc&Y|4|fnTBgbu z$_|HxTrijQ-%A#E#6xrvcd!5bo$Q+wkmSu=uR*OZo7*k6zQscfYyE6ioHz@dpo%Np zlOUEfy3AIxgub2n>}*Dz{9v`&wN&4AAdI`~$M2->o*kONbsp&TO?@frK_<)oB9&X2 zbvs}QJTu(6{r-_=(f_Y&iF4j8E&6;yal&QUoZXAFr-nQygH=f(fds0OCE?S%tSf=D zTs4|Ya-X?Y6Oq@d9|4Ms&cjrAHH_y>)YjZ1i)iMYwi@-cei7LL+l6cZ6)rdBeSccG ztT0}FFM5g?0*YBH@&U(KsYoCgf!)t=SJf0}0G@8eYW&`vRxyA-<^T|AM`P>t-L`~> zZf>rAHy1vV!%!;R6Ul8L#wDUWCLH{Iy6emb5dN*Ml_MT)($6Gt%>Nv>jta+|Nsv2c z@-3auc`&cL3^+@kZ~Rc^PwKmQlvr6MEQhjJ4GENKv7xTpN3ie=H;U7mwI;mZ9ot*A zoN9ufYr7SYY&(I)e@c)d+bzCp6W4ueb#mft@6O79s__I7+*aGDj9N4S-PR>uzb>@e zpAe%7Ucce-wd10tN{^XTNr^r?>x1V8z4AXGr7nikUFEfAy_K#Ri((q z8efp2jFse`&64ytf`h8+zM6*j=4R$GdGaWQ(Z|@nzHr=it4ELjj9-OhXPU*9!Hwf- z1#tMeyYZh|`hnY<>w3%}*spt})nV&GH9;AvnlhomU9`V~KmT7b%VNEH3Ru0r`(Y2Y z{&e)3E)`_Opogb;vtW1Rpxbd6KE8EuyZKeIk`78v0f-_p5nG=?-HS@RBW=TDqA@$^rEo#h*yS#feX zSw`Lj?|Tl9RNl&0kIv_||J2`s{H%?ikjAqi*N;j3oNd|y?%O(CoM{%^gi>}IJwBw* zHU0eInSQd5&ajSptzx8s$>|Cfn+zMaXWNT;66kkT82Z&P%CF&8GZzg{`tz@Jnr&<+ealPL)yK-*h!^s7q7&?kEsAJ> z<9msJ7nW^D(p#O$ak~?FL3buiQ3}AK)YIgu`sLM2CXQEB_U?esT^C=O4Oulx89!Fr zCn7gKCWU#yy7hu}BrV$I_rXHC1^2muo~PxAzqH(NQ}#%MJgO3cMauKB)YZwMqViI? z$Wx_a?Gt_;Mp;YLPDKmo%Ma+GMp!pLW$PPO$uAoKi&Rsk2ItKs5D>VIh?C!YyK?~O zfL@jH?HiUATy^f$4L}^b1SCoKK(ZaEv38rKFr5Mnm2y*^ogHUyY*nX131rBQXD2-= z=GCW`2h2y>zB{&4=MA;VPXG}GuY(!TW8qq(Iyf3Lok>qCYu1R%o-GlAsceQbYA z&=9+G3{Y@3(pd_!*an;@G`A>|3d)}aCk#mXu_cAka%ul4!*^~pp=t567P~9!Qd{N@ z$5Wva&3*2*A9(6~+4}ss+lCw81$erx8kQdDJc{ybuWSoNHXGlg++O7`<`m5#T=(wG za7HFiT^bIQeQj>dPn4L0JF`n_i!xY%=U1YE#YTRX^QfaIv+>CdaDeJ1E*}d-iV;X~ z`5PhR^Jr4{laCc~EO<_Z!U{gzt@h~+E%RQ(NBo;#Us)YWQ1{UvnJRuYR8wo?e%YG zL4L1sI=e`P4QBp`0Y+hxUl&OD13w4tPzgReLRuEze|t&aPe)QHsV9O_`&?I4mj2sM z1U{G~wD{Ka{5wkLm9CqC;2uTqVZxRZsw%r7L~r-@@;#n}W^mWm<%3n%7a-DKSL zF3T+8>a~>95uTiKiEWRq)k7(P&87L8X0zY-&^ZCFH2Yaw8%4VOG=ro{7R!%FWMNc2 z8wqB4n84EcQSu8@pdAoe0na1y%ApMJCy^(mkAW3x$kau1%XkOz;+7k{(f9cZkiA$A zyt9>Mij>)a9JalekDzS3T)(K`R84gD2;7Zp(i4j2(>9lmM>n5zc@mvkFW`!LgC)NN z79^JFtv@a|(nC$_kmN=>qYL%#VyY^bp**Brk?D+Iw zuU203!*-uHeGQ-*>gL|Cf@dNpXD#yxpJyQ%z>e&GQPJ=IgYx&=!@JW&WE*e{xDvXN z9d4Jf%i#jQ8Pp`T_<|JeE7*9$7`Vh_&1axW01YTzRK3-Hu%1tsD%I*xOgm&eQR3Cvm79OL*hZ^rRVv1a~Q5g zESVLk#9p-B>16}_Z&V?-US2j(W6N-sI@i>m6+3ymooTiVOQJKOllJ}_kJT>@jqV{5 z6Wymv#&hBabT+=BqR>V5<*^=5s=Y3p^TQd5u1sr^qiq!SU*bl}2EUv1L0Xu>3}}yc zNYHK|M~UuxS&p86WFBmhJQZnxI=ikM+ov(^{~cpK;j@Dr{A=sttDeBHsKRWqsl)v3 zvAyn-W@2|efIna{+w!09@lE%q%H(!Nm@_^x((}XI|4ntmydVqH69Frf_wqsqvdj{7 zSHsW4z(hXrOaqzrhz%1n8GZWn$B$i!SGj@wiL_S{Hg}zwo*tV+1R??Y7n)D6ltzwr zVD0r+SEolm{)>Un*=X9+)N+3LF?ymZ@me(0fd>@K3JRWovn2WEzj3yj*Q(kQ!wqU~ z3!>=tPnEPi%^HAbwR-ZK`{&)Lt`t~T433>`({1EPGeIW0gH zu;$ev&m&Cu{ByFEhlzG>6S~&iARu9!m7pgZIKY@MAE+l5ly=#}uT5DPcV(=~ZEtav z8ux)iwDLnzDqj10go~=!oEj~ON?nf|UpW$D2qp586CiGAy!D@0>+4)P)lly=#C)?=EoKEFY{qs zOsy{=wr+|b#dmXWK4@|R#EBC6JoOTgufLOf#>f- z6RA7?i6Nh^*Or{U?u{O7<#FlB6jBPW~ILKYrZ%S)Ph|;=m!o6ht(ugY6Z!(lWHUn06+l8TKmto*FdM42Q?!)RZFEk zA=~W9zq5h5dw&8YAy;_3>%gSNGt95W#|7=)gOeJ0Gl2v95$9USW@lC|F04pPsG?Z2 z(;?$Br;I_wt16jweT5o-;B(PmEEkUaJ5l2x)^FzaxiR*G*}#vOwsB~;PGtJ!{e@NO z*6syQi!b*y4O)oShD#aoBx@^RdX5fMpu6~$X)BL-C7hV6j%iQkL6&bchuAkhHe>co z$+o4my$|*UBV$BZp__tlFODh*MTHNkV#?I|%{R@j+I`=GOiQ!u3-mppzq!7GHYIY- zBhP|F-B*OSgE!M1Io{^#)tbd_NRiAOx0cw?><5awVF&_G{P^xx+f~3K&N*pT?6~uEV)ys7wq4sNsGIvOwq#q6Tb<(WlWVMEtUsHx7!Kcx{meWYB>y@KJ6qQUt zfZoY1>qUt2!A{cX$^%Bsu{JhdP9z4v6Gp74+_-%ndiqn=QNA{|<~)X@=Qa2mWhY6P zztC@i6Pyn4G&E)C^34;jE_7pkNTn&y6cH)mr^YM-wM-Bv|8@n$1=m|JlB zT0^0jGIl8fsLp3hUakrQw=PVo5XR+Ei&NlH4O)JzO~W6T=%=vNJa*R+wq3 zaZ<_p%(i_%^5wJBk#i^58w8=W8x(Ux@8wo&uDOovxJ8cgipl6}_PVrX;~4 z+s?2YmMs-~Z6nLCz5DFAwR_BUFTSVl#@2fMwpES!SwFkD<@n@ak*>Pq1t6;p7-~xJ zOicg$Q5&R{o__TEIN8k!0pg^o`E!bxCi-wY%;&#l>}yEb{=FCTdTPl{`D1y*XZvMX z$4R^+U}9>zXZhnAjo0Q9>$=3BS?SFT9YatFh+DgOLMA4NnP=TJ6QX$+5*E ze+02o)EjX|^t~1;FLL5LpoL?VS^~#%V>|;B$^V9jz0}pU6l+}n+pYHCIcyVsE+g%M38a#_hr#YBLASIuh&$OETW#qj1)1(ngl59J zR2uB=2mHYW832jCStF8jJNzTl3NHh*^~5NHwfaD5m9__^1lAkB2mG9n?3|cAQtQ+A zs)*PU?jHfAIoG*!mV?9g+-ql0?l(IyG|&AG+Rf(|&yuBS8K^TGW|AIlXdeezoa+eNFMj~nJx)<8E>k-_XD(u8cB4F`8thoBijD1w-h{+! zY78WA+RY5I&`S$E{|NxVuquiolA?{i)UZyry_NJc%eA9@BCspC-KdftyG#D#Z~`DC zT*3ABRyxi*E~tK`ofpUZ&LnheNs1gQbO=`d8_cP^`cu=5-R>wmD}e_>=|}VY2AJYK zXlMCTN(x`w5Ur6!Wv`?YTY&@LP!e!O^%iPbbIS&sKe<9?S!>(0rT$|mqXTtGd`YI` z%IKwgewY{%eHx=ExD}AT8>eYf0oSUSSrv67z7yOH%Fh!2&+^^Xk7^5g-G|?G{>&0s zoJ(d&VLq|yz$`!hjs8%ETgfQR_c#NB1y1H~uZRG_un7z>kVU1XCX&74s+<^Fl2<1j z4r+63==r#Hxx+^_=xy1ynV>d>3Qs1gdj6<`MWGhtsRmI!3+f}E2MPIJwHQ9RQqHuZ z&iFZz9vf!T_W$@G*qdU@6sN$Z8mEBRITn!%#Ai(hRY=evTNAYV@TH%i*0C@;11=7= zQ23o8Pesnu+5Qy4FMB`%^$lChJ8dW+4YlyO@6c~t3m?`T+9y;=!h5QxF{C9wHRhbh zgi%o)mE1Bf*-2FbWW;-ssC>2Qe}j1~W<)8%DiCH$EjurR4$l+7K{0AB(%~%r{O|8i zeeFIQn8boz0|)k`jn18MY4FhAWXSU5$0FZ@nMEPY=e9dzj8W&lyhCy~(*Ks9n2Kb~ zsVO6KbK^C;%yUsPV+N0el0{eF4rPB`3VjlJrGZ~vC12PFzd591tWwRgleHX4(*5u2gzQU0dGR!^ z8u{UmPK7q(!z}e+1dU{C!l3TuW``V#jo4##NHleWQ2&Lm+z*S%6!)m)ryfaeRBUq2 z6Q1<;s&?jy^-Ash8S$8~hH)>s*`ji0i{X^(A@)&IxK?et_<_+QX!-2nAwi7)SK)*+ zQ?EB6io#11;V*q)2b!KIZlMy-FRA%5oaBR9+TO;a_v({78unwJAiOW1GQ-qq7--rTdJFVV(O4Ah$U%e_D8|DO!RSXScCDR;o1 z7mGL2p|>)f!{wktpv0#FFH;Kq#PltYFi7m0u`!R%<53^aD_){^?^xFI^O@C0)PGc! ziOigcG(1WpI?RetmcDABTV9ZUUK~=7cbuS@ti=rLU?g1Pe;6j&yEey(BV{3rs+QwH zG(LGPe&w>q-*J)mD^BV)g>-^$$QSPMn>gul5oq%C>wJcM%8z=z9VQ|mNptySj+9hQ zk%Xh|M1x%U`L+$(NxTEvaMVG%PaQM!b@?%~eKC)Ok&3_n2O_?{hHPnEOPWW&tOz^A zKG7#XHj*!<&C#jE2@YZ}7j2`Q)5q_VV;b+_3}#{YZ1xIKu#+INDzK>lDHchEX{vA= zq#m$iK0&afN3Y6GU_(ix2C$WvpK+Mo}Ih#?PW@$3V$(8Qlwf5gVUQHE$8pZD&Dd|VnIgH!C$kj#Z(slMCcEZ{A z!yBqqNEA9v1wH9{ZsY$*dC2Kr`0Mh%(qcq^O1A|!#=@Og^vTI>YOAK=g|oHCKEEm3 zlUQ0|-1PbX00MKS!O^r$C=t)AT`WCyaGV=aMLiq6+o^!h9hWq}I39FZ+$(-YbGy<9^xU^8D%W!Y50Nd0H&oJ{ z_fpS0PHWeXqUhcn$4$V?S|R6SISMIRA;)7u+*dxTw=JuF`P0%II%`A@P*>77&}~2M z47x{^a4I5-M{{7k5tO~!)A_XZq}g zHT`_c{hG5N&rShJK)}0Jph-IRx3k1q{9t0Up6uTCaCkYS^N z=3C2`ByZWw?8XgxLmx5t21Sh@UQUGhkNMk#u<+a5wxeLdJJ$-US{}>Q8<|d#bE(&- zbIYa-k;^1QUZBkG`{In0N_>>Koa;xf>B)!>kdw zUmOYlgWc^Ji5&d|pXD|Q&RIo7MPiYX!Mpm9U_&-gX9w~5vzf6)Ix1eABwf@Y9Ul%^ z)-Og5iDxPdCL)1Yd5M5~3*#0W+Lial36Y$2*421drW9k#Q)IydK{bIEPp^jOEc;J@ z>Eovw_Z!9T}Q!0VkQ)-a=VMswhUrVX5EaH-BMI3+OfzJETTiX&I7G7LEJsWqI z_tfJmF-X?gt<&(G$06>~aCp??ex}q^+5@t1o^FSTOL>MGU*=^o;^Gw|yz-kUZ0zgT z=Xid;V1=ya2M$_jXHP}$JE619bM(M!-b#nkts9HzhJNTu^_>XRd^10_wvutn6xGMJ zE2i;6(S*R>)NO(}f-uMEvQ@+G&<@8d?oZNJZtk-GE_Ama1rGL9s)+>nf?r!2vnbll zRO_rGD^fR21&x;q9x=y;JWxa$l_GOGiIxN-Uvg!^EK9V33}0Te+6!MOMh7&6HzFJ0 zfD111&?(T4=!%3V4S&&(rx8U?Faj8WKGU<*K7QsOw zq46X8YB`7DybEVbU7Eandhql#qI|l+9m3d)KUhk9_3FVNUSX#|e*um~%2%ibj>T08 zLFu2Q%@DqetqjGNw))mYgBiLuF|lx}RH>eHFV!Z4@lP=ge={qfh5mpnNvzSrxHHO~ z5)ddeXT!-#K{hGmhL8X551|+TSU$QwDPw#8hWZ5DIy~cNM&ug*-1)b5tt~aoiDO4T z;tQ`zmN(}MuN03;_}(36TdGOFT4v2p!iSFw`Ppu1o{MYHVDM{yYSj_BdeJ$T*m3dg zo(d+43n&QPI=ER|76@i<)-3qgQc)BRny!3A7lL<#eL?p_Daxblf9I!tz z%qQW@@m)7R%!J4#$2V zGZgclcIO1X-Qc!I6)OFoA8}-#u*kee#+ePtg#x}f5tRv%le7+MRYKLqUu5aYRXxd%7q+vpGAy~}TX zLW^2}2s zS|_R%GSw;n!#3p>yb_Y8mHt$%we(-o{1vRi2?pb5{3Go1z^I6{dU{1+3Rp@GOfz5Q zWse}Cm`W#^EF+y*Aj(01xRV!47K#4zlR>og8_#3+mAk4}T1XD=3829P;0qMMLS`5+ zt7}7bR<`$*jF?d5?>+ARzCPSPmf)-9CJ43xJX%xL-^qwcKSe60>HwK^xucd?(@lkP zMovbuw8+E(=|jXbr_6~y7x0xP6r)BB>#{zpHg?4-Se;)I7D_~h zUl3u|R#Z6xj4#Cum^KKu6-QsK=xE3<{S#6QPk-l$B&YLmT&+jgsKant!@ zd<0Uo2x1lTlkopThhJFUu@c0{i$bN4;t-YP@RWHD^3Po|tj`n5s*t)f8$6_kKq zKi%puLchVmu8#+fAaGOz1Ukg7j{D24jVT9&n@CIb@Ib*26>hI~buQ*Gr@YlR61|I2 zeU;9H#6eTq5S=f8wuNJnwC(~9V3?9?NG~H(L>G(Itg zW7=Y~^#(Jtjch;mvSFUH?mYU=4Cqysaxz&u%h$(h@$2uDd*`QYQY)cAvUcU2rdN?? zLKNI=+oB#Xpj0`{S68K#0J{BZm3@o$$S)tF{R0%2-u|YBAIG9OB^dHjaWU4<*6aQ1 zI74qDtH9R0+>}A6TV;m{(L$^+a~qqC(Iw~q_l^gy2axxUzqyd~4{IlpOgio+?}l4@ z=M}BXRQwtDJ=A+Kk28zcGq*&VN(p>iEuxAvji*|wWiW^$cS<3xoOn*XN|E`XfBGM+ ze{X+I`{sYe{5M;KXt6R`WuxAEO8-Ny5a^j+h4t2jgUHE~L9s0RbAcA`w_Dm3nrpWk>lf;w z;6|_cx@*qK>tCy%U!ae(k0^=#B=cV}gFRU|f@yv?6=(Zu+W;IwQzL`#)fhok@0qo4Yn>sxcU~nOcPBA^ zxR`%$WlL+ef!w?^q3(6M>_Cdq8UAIyZW)w#drKi9opx2@aZ6!*NW{@Fet8MtY185W zYOz0+x0dg2-dpo!c3)>82hC`08mmz0xqN>r*)iwt%59M z?WS&38)dYGrb_e)m{mpTL=LyYqO~PT>0(O&Q zgZSiO0D*}D=+3B<>6_h}ZvbMG6k`@EF)ke*8YO?7tU?u35W8_*M^JNtx9r>cMjI+n zOpG71bPB96);$uQ^^~X{vWI7<-8#*-u%p`0l)WclTezdT6vMU&&LLAFD<+7MDX}7- zx(Vl@XGoRG4O`sfcQZ3!e@g=0NF9||2PoN3lU^&lAs>Dyr$a*=`yj=doQ5teMrD$m ziY`1Xg_retyljUNd2e9kbeh5_G*;72RmRA%6JLI+lkJ!}y@7U#Bej9{`D(2-c1zpx zQCJ7*O?o5n2*hg(Ux9eV`p6&pDTtu^ST`9UC-B1KqeG&{MF*3ZNhqXX@w%9-Qf9>+ z?_5K+RjcH^5ZzyrxI&ts6v}Lv44WW%jx2EQ#FZr#!>!CE$j|W$V;@K5C&hj=zi58) z+V5Nh05}&jm*A97jamQ>u0z?EC$UYvRg57|a)!VYiq`5(!_!PtDa4tP{V0L{s4@m2W*YY%3iEOK0KezZE<$e=5=@cov1X~U9s;WBqA;~I zu=JpODOL_uo)nN6zs+?!b^ZAP-tc-V>jrR3NT?$45SgAkPo*s3^Iz^TESVJJp(bYC8IYQyvaFxew~b}>Zd&5D%@egLv% zgwe>b?FG=$0A?CvM<-SZXEoW0m$&nd235p!#5aKIESGhHuANxh>`7Ezt&*C*2Cn}g zE856<8(S~Anyli=;P$_Q~% z>qC2?s4NVEZLh}Rz4e^Vzi|kNB3lFJ+UxX`UDMz^Te(%PD@NdD2H3rwAHafGsbDSK z5>ew5y|H!g-)k+ny%7-K*IZJtD3fO&B_2zi`}*^onbGlO0Za4LPg|kM)#6ixJAhaY zba~8%72AEh@%h;b{lv|30kOw%=d)ypKXgqSsAMHc{s0ra(esKkCbgz-XQ?QzA7V z=vLfFM*8Ye;>{H&D3}CvYgv=yPXrAjJlI!~sjKVz8>y1WchM89-QQ5=j=81R+&MCwW84aG37J_jTgn2U0NVYDWh zzt%}s2!???ojPF=*KT9$_%d6Xi|SO-{!h8}j$gnVvAYFfniivqbzGuPd>x@y}P8h(nec|4c(iB>}80#&jGY49dlXPKez7QH1MVzxHxK_tBlw zAq?F=x3P{myx%;!mj48-?33-$@B-5yfzT6?o zQRXk%ep0-nI&KU5q~4GFj)9k%%72pa9DYNR{0C*ZAzjX>8vVBH?I98Fa@`Tfj2qfFW*lp0Uoy7>J|e?^$pW*&~l~rQtrX zrzHsM3ekvdH7N%0jOmn4<+IJY?*J#CO^x*PM2no8uWknuIy$#~9yU`O>3wP8-#>`f z4iZrqEE?B-UwyRDBJem%3T+{-4Ob|Eo^TSm#YFh>=G8x~Xf%W7&#NFvlq@U1Rc{|f zejBMeswh)~&WZh(|0*upS0wIaZ1}VOTW_qz`Ps~^WP)m4JCAk;kTOwn$Z|dtGM)Jq zP)hwPD;-I%v9V>E6*$ITNPF_r6Wt-a8Q2)I8j5S4wAwNE%Ttj@s`6UY4Y`$%H~6pC zp6-zg+V5@d=}W52efOF%nPyLK@REg5Nt3VSimUX+0s;(y z{|=*~*f2@p(nxZcW!!oMK7={b=FQgYC8=x0nvmcyQtW=6?TF%V8&_`Uihs*IxAk4*kWk9|&3|^%v5iKAC$Ml{PHtL)q){a7Nt>}4167^IXupR7 zX{OfjngE>|lI#!3wtq(`*Fo)2|CxVGs{sE4borpQsmCi8=zxuv`Kzl)rII0GYPL>B z!ex%s73u`cN56ht7DgfZC-rwR(f>4Fmx(m(tYGaJM%8dEwKDqC^z7(G^u}pYYZ=in zAcO>wj95QV8#$a}z;ibB*Fgm`WsBoi<||#`rF+te{znuL8>AH4?{WQmo-bbcb7k4w zmx=@1sa+naPSQ}0tt`nqzNN)`#?9-pz7}VC#=!n!o{kwpFB-`?jb#m)iPxI)z_hk* z%#d{2Hk34841dQ2xFaV|VSW)*J(LKQMt2!43&XZ zMD1oi#uu(vLt|rEmEG?zv$-Vyq?KVu<7X=ka2zpU3dfelSauOPh=Pw#OF84$&^*&k z`Be7bIyOih|@{QuOBy&M@wArUIh!=FC9=AfCs#UcueJkCKLz5!QIe*cq zK27>RWA_Xx-;xoFCHG>w*NZL zD<3z%@bG0$?Fu;YdX;w%MtvhuqNH?vA6jNj_T1GtsWk8(g4);fTL||{s`gtN?vRzv zgxEM2At%GKQPoV79PiKS2sm`sWXBnNsndk6d&r?#`6SV6f^YOzFl%FR<-qff0@P3I z8*}#+bv^yiMd4?wd$1_Sfrjn2G%4q@W|t8Kq?U)$G=v&h&X*8 z$AQ53^IWzSO`SOarI>jN_%*f9*NYxi^Rz%b1FPY_jYM8fmPW5&T%jWAr%ohZYuSML zr4{MtJ>Y2@d;IrELPC_8%xH>}xZ_saqA(J4>e{XoAz-o{3Xm zsN(?BL9YJ;S}IBM^RvV7c2~-X`p7LMbtQw=T?y91@ zYFD=7qb9~04_4V=UA7=l@RR16Ie@zp{0tPFfp_%~*!7vJUhU3V^$Y_b{cZa!Tc7(7 zzi$F$T9EQJ8GsfB!8)q2RVBqJiGn&~OA0x{JKBcYSopJbxd0adZ@LGU-Z1oi;kdKz zBm4e;+RRtDOg%60k1fMkpFHo0Xe3|KPJu-MWeaU7ZN@xObR#TeZ?+mAcJP)GQoV(+ z3Ki%@kD(#9r}4TqMW!%&Tk!Gdj}J>$1(6F1Dy(O2WHqRV-0M(%)4DGR#P;C`^&}j#NadUV4rqg(7t#ij46^)_@k6>@G!ks9j4PNl;zNugh*kYR z|G2c#)C-@=fRpt@SXH=7;AGmU(|Ejq=RaddWfkRxbp2#)!u8m;88JCP7ZuWtk}Nl7 zW{4VsBrBFGj|Jv1R}wa|%URh2h$qKjz#|eFqsdct{Lu>d$lh$jZcZI(+es8GSwz3W z{*Al|(LgidhAP_}#N5+OBqmp@hqtK62d%7B)zB*Mt0 zdNLp}8=H*`NW$8}`I6$)53L#eU1`|N2xQ^BwP z$~T(0QK3&~V1i?#p7~W1EJGcf6<++^zboBC{0LeLUnX4p)WT{<9EG;uLF_^kuP5|+ zsWvXGzR!xBd>~XgbYs~TM>DBLbd8?GG;%H5`0yC>N2=iv{DWaRpA9p z;8pm3HKJ^-lGj>X!+QHh$jCq6#PQlO{cObQe8^;d{rZKs_lBhAi;&bUd z2pFXmAv`BTuOF9qNhD`Qi1SaoY3hny4KNqOJS=I_J_f1!;({a+7`dYJ#q*j*qW4W_ zzsrg~OOjzfeR=V?`tIUq=cBe@W-!zGOruti1k1MFA6V}P^USQUJutsppn(uAWjfN+ zB*Ok3neB2LbUw)X2_+ZTz(L%|kx=EKxqfU*_P=eAf`drXx@MS_C@%pw{&2q}D5h0} z7gtV}NgE}OKe;SR_*)X+{Xxu7{OIctftZp$#fr~FNBo#F#~u^q=cBSER$}Y7dPE#j z8r;G-%k0}?SDctCe+d9PSe$mOY%1V1QrT^kQXt)h<(7%F8MyAqo>R`=P1GpMWPm(obk^q>GI)kHF z0IjMF!I&&HR5I>z_=W1E(i5>y;$tv{S%sl%idJQy`53^}#jjh&F)RcFXdQj4!aS}! z<&)>@?_!iz8$ZOSPcEqeJy!$i$BaBxRDMDBscXn#p{e+F!sU$+(zsvJUaI!ht;Gq+X?&6*4QPYNZ7PZ#ZT|TFHqEe z3F5KGr@}jB|4j(G5(ziUYmYNm%WV&8{~=M)A^vG81E+`4Q?sUFPC^zIt{sdf#vz;e zT}vjjdOdE&4)eU|J3rd1Ef8tY$jw|F`A+j#`kI=zKFo1?ZEk2p8OE=_VMhUL{XY=rlo4h}7vkUTt0s*W&IFz-2BwMf0k6RFd9soRq_ zXP!H@SU^0kT0GJq$v6#;`qpj>?g(Qz?nEFM9Aldy-YMATL(dOykA>>D^~e{^M)ZNGu#3fa zR49)F~?MB+qPHBVsXj(_dwb)(MGNnZ9t*IWDpw6Se$hXH1JiW*s2uedbkq|>vf z^8`UsQN(I`=N;+=&E!fQzgFo9)W{sWu2X6KO5$>_G{8PQR$lKc30ijO>GPfqHf?F* z5@yGciuw{^frZPVR0}x3FqzDfoSO)1F2PIx)QAL4U*AITo}K^On;uS)O+u_|V;SA; z^KR|&Po>=?*7BGOMhxu1Hu{EMQo$YVnYo zt;vou7_sc>Y*~q2kc<3N*lR9fm>qL{n(F>elbuU-s;{jA&+vhneL?(%u0$KuxWc%t~y&*uXXsTOC?Z_kl$XC>ece-+S5TO;JY ztC9TB(lpwao9%}gncn;aTkkOMrC)38dJ$n1_+GgzK!Fiq1Q`&g-Ld|RomGb@y({5i zB)MGsJoHRUiDg+pkoA#D*p71928;HLmX60kK^e1TD(v8g!xvgjSf}luIevU8Nm;^e zHBsWVXUg`b0%A>P;YGdzvK<>HxLf9mm8Ebs&kMKVfWumbqeIGAeDDcMfCwuVpH8&= zOolGYB+e6jwU*+ZwVqO(Wn*sBNu)sVTGQb{EK@ulVsg|%0riMKnKU=%uQIqT75fm# zf}cH%4G8g)n%iO$l%V330jOjG{o3QUa>~ZI>wb)>y?i=^W*>LUJh0{Y=cVcA{C4JL z=G)ihMwI%+bxa8*T)Mzg>DRgWne-g~@Ko?blrHM}-7lt!Kyto75ImPm)$0Du%tch` zk~D;*!*6$;n1`8(#y0kZr#`j8(g60;U?AJvS+}e>UA#(AyX4@fd=KOH3%1kufHpKp z?~xI(yE0=D=U2;XpNrS}hge5g`%*&`h^5OK4eOur{Hp2$-S6+Qr_r|#&L@I`^s+_}|{WM#8cmrPV;Kn6kO!JWbknX)+&EfV3G*8QVZ&HSCt#QYiy`MN<8 zlP?vNK8CDDGg$`Tjy=guUoiv-dmZH)vFf~zTn>#E?zBpuVuYx>P)TO#;jJdU=U*vb zv6Onj?d8k6x17&l;&>XmGgudJgy<-+5EX9=U(DTY%POuzvk5+w-oN^ZVPdh!j$ZF^ z@o)MXv~JkdtMB10O<1GLDQq!|;e3Ia1=35?BK<&KD1IFdIS`d=-&r-NH(U{A12*F8 z?L~!AB@OF7_Hsl8B*3rd#A;5MD(U6nsQS2tD-Fg2FRj!)#@@YyGO5|0+Zni9L|6~J zc@emXshX z{?L?wmk^^RtD(*m$VoIv3Qu^+3;QXnqe2i@^fyZ9>wq}EvYHA@agK+0J6M!!r^GeL zo}jLj!p!`8{6WW0%EE$(8BSHo!OpYxOMUf;$=|*h;_dBX6xo@3+f{Lrrtf9G8*6+$ z7pQ*2(Cl#Wx{{B=djYx?`WWfsh&6TfgK3<>BBERmxAAUO&atNf>+PdK*a=0J)zvPs zq_7yEL26ulaBoWLspjYYPHhgz zbklE=;lrI7S+M$~XJT+QWhG;A)fH0=X*+)r%E1eWNI|iAN3f0$wE+w0il^MsLap0y%Oa=1(DjK}dmx1b0@MA-f&0uMyzF1>FYYSU`%_WC zHbi%Gw?^n{02UHp8hs-FISv&|7S>e)m`4VjV zXinJtO5fX{?si#(_ubKb->8qh0voDitTr8wR}YiEK3HuO;+6rPoHy)_c+m<^3r2gZ zKk|$t&y0+?697_8aHQ|!YGa+ph7tmrg&1-b$LzPSEDp>yAO#&bXg0nPU|B(Pphsg} zG4)ngZ5sgMc}IdLlRHFzvK)+(z#@uZscfJSt?-z`$*hBW5)*T8Tt(R7yJ2){Q6WO{ zPqSYjFo5}YN%jnVf*lPdf5)n}(IIWI3)V%}Ko6JF#;+uuEJVud_mhmjh zZkNdYk&Y|r#%>GA2FX%J>Z`{4C5bM>Ymju0fF;3&7PyhgT7cLM)?Df7>81Y*h8rfoJ#=vMaKZ=J zoy`s$F!>kTeZ}Et|FJ$~$)dSA8}okM_Rz^Ui0mq}UIjhyIR5)ZjsJGz_gfbyNRktG zgVUU#V|kfNtHR78jSh$xc9B^mb1^c|ZuOS~aI*z{X9~0kqCPEBx5&>-YEL;wa##haig~Cem*o_b|Q=d2Yh(C zty#=FeO~Vuyu~8aI!N{(Uf60a&diywBwf@e+rsgi{KVSP{)+`OJH49Y+Atf}w@T}2 z&(vEy89rJPU^><%#Et74gyZJF@%%o}QktGNFFsm%cMCD2=;Np$a9TcMVUQOtU~dnj z$&M>Yu`Rm>NCkScXe22#sY)&rMKyLzGE8V4mvcOwUzJ=t{ZQW+Vbp+cK^#t&SYQ@D zUHbmNdw+yNL>W^kOI#Udd6jp*_Yvi&B;&{Fz-=PVfzh#yF#0|2`cLuU-j(kZbS_bP zlhG9mmPQ|Wqx7alS}4!<$2kx zq@`@-w18D;vy9=>YC?$vRU6>NJ;=D|$pBzj)j`lI`?nZUV=)DKlbCi_Rv)FRI+D)_ z*4uknXmF!5t>({&YiK_teJZU+Y;S(OZ?3=--GgqW?UJfjXeTh+aNw7cq`#JsqAT@i zdd|5tO?-}7LXam#?Evo0mnS4I0>2;{CcU=MEZ@oHS@O6yJ_ zpZAvy@(mYL%%zcEnWdzcrEk5q7E6`qt5^P>*S(-!ZY0C>?v5?=K7sI?y!lyip-j^% z@^M|~R49qbg?*eI7woaAQ0Q`mWH;)y8*Z_@cdKYbPOa?ljEyfgnqeAfm!-{0s>imP zu;(1*ChPw?o~?bITwZef)L^Nvog8Ug>}hF8&fROk+2+h2D01RDWn=cpyzNHM0i$D) zSootcof|9PKr^5@%FB_Ojq`)&eGri+{rk3SCnM~6Kqwy4^?4%Wf*`60_atXwC?;(T zDxj$MK4EWt_imqQ1z7uXne<|Q{4z0B+&Gf=uGk~)#y-n8F+PPv?-V$;1=sn|+gvnk z80sx$dvuANI$V78-n@2fvGks5-|5kKuYJx(Is9X)@yNF!Xv(WUC{7&yWos+L%QK-X zN=l)Nb64_AY&p)d$-IKa?EBaEW7GhWI1^B@Pf-aGyYOBFNBn;u{6J;9?wKM6by%R@ zD5M{mZR`d#_r_nCp-snJuz)w;!zS%~0!?3;=NZLy$a`?WeA`Q2Ga$@+ev}pUHk}#V z2c%q$4ip-rKbQb@9(fAcCj$S>qK(LTp{e0g<`-PDz3E}nfLit2yhwW?P|Mj2ZTB8| zwfZ;s)#r@AC2s@>uPzIYBbdfJ_mv#~wUdLX-)zdjod+lBs(~==(a@)*CM&8p-Hqrp z3w#wt{QWf56uQ$CmJ@LpMlAvK<^?FyI(jMc=6IYlp0!wk!TYCp0xz zhhF0G1HG_+o~-S~os^4N6kAnIa;BPmyu6T&xC=KoD?YxFss7tYW3l?zm{9V)ZAVS^ zJwUH3C?F|9g0?-ULzNnK9D>e*f@niXQt49TR!2a)k#?{6dD07c<+1%fYEx?xQ5m{B z6J5Fz!^q<604_v%IRAb3uRQiNmQi2bn3M`Y$oWs4*6c0DDFn3n;@|@IJtj$^{ja7L!UP9vJ2QxSvk#=*uew6Q z>XbqJ@thF~v$&pty$|_Aiu`qEO7>|gKFzxTsxuz1 zoo^b|nSt}S(m;Ef`&Ue^82VZm<33wO(c3*!lM)2F>1YYP3coX`_nPLHPsL;mrI z!7PT8FTo}EL|#*Z(_7asNatUVNA_6AD-5sR(vpK-VcJr-53Wu)U`~+ncslW+1p*y{ zt`Fl27eApB@Y(yi35UMrMA?=!S0cB!&nWWtgrl#WmK${k91xvfLyE*J*3^?seSqFpc-6_?g=o0GN82)2viPS4U15U*N`vy*cr) zt};)jm5+)8nO_ihK+}dwbZ|9Jc#3Q$MV3~p<<&~ZYW(;dtu1&%8Q>4=qTEP?=@E^m5L!gc&}acczEQmNkW*)@B+n zb>LhxAew(50ygDU#V+w5PKiyl8r!u;tLOJG#3FBRUXL|UfUI`~E{u`(8i3%!8wfVy zd)X6#d{N^eW!jQ5#iUyJlYQxE7jE`e&#b!xv~?7LVF?!_5G@J7_^Dyv@y|jYMvxho za1Pjp<&@nRB2;18t{{3?35Io-f92U;-bya2Z?MxD$F=&_=f6`rvH!dYsY7T`SHt4v zEkCrl6be@*Y#|go-?=|q4bTA777b!OxOHp7%%Q>N=xC|cUVQLD#L>JLk7m(cHP{A7 z*0z0RTu8~xxQyhNjvgDA@_UlrD*8ENSg^-(TAN~y@^5|@k#Bh6q&@@8Bqr&nZ8S~kF!lRF^BmODF$0+a% z@}1V8$o6s$c4gaY`4IfgI@(_2b2)Pl%M7u z216%fJ2=`zQ}zKw(D&NpCShqg)}%U{7tFXRG~cRI*x-uedRayZaS_(~tXV~DKS^6M zF78OvxH246wVKsBtMiZou-sENXp+u~$Z43gSQ~$p9@k4K$sb%+wA`$oFtn!!ER@Ux zC8jir67va#O%Qa&Nf30w8FZ()c`gc=jVJ(~{xEzqdd=i)?~v68-Z9*8RUmE@gy`_G zb`2h%{L_CK<9dm_R`hkT&_|CfDoA5|SQ^eG*PZ5e^$NtOSj^rz?i5t7oolK?UxQ86 zF&&bEM6k?QKjo*@nZuPh4bvuniZn_0lxQcPIb*eRo*1~bsofQI@tDihW~P8g+i!Pv z9>W8#KzxTk)iVaGCFHsWlbF1W$d6ew5C4=V3bK+Y$^4;oQ?O8Wz1ru@J?YbK|4Wi+3@{WEB3Nayr?2@Y_{wU z0C;jEsjRUdKhJBAYoog!zQ&B$h$cG{S*7$^^tUmBCzFIPrl5hZhWk6ax$kcIgJax- zf)iE2nRB6ES z3;mqvFF1amJm2i|eh)7sr~yi;2hpehXBA9abfZWa*VVey7mePPx_G^stqSIahgSLB0`9 zNCY0$UtY2Y>-1C->g0^yUm&-N(We}VA0Io>^G=&wpN%B=gJTOS*% z0M8{W0bdWbjLt}~IhQVp+wD02P3Pt@; zFw{KMo1yciiF0nkVm)cJpPdSXXGkbK1xgQ`7)}++n+z;8gGUOB=Qxk#Uy9@ z_o}WBwls;m22c_q(PT#7yT~sngq{&5-O$j}_;EUqFhnmA2*75lL`(bz zt2z7>)v>v@ecBXkurOA-#sGZ4BWwd!2*nRpLcj1&svN4sW$Y-*D&MT>gV zsGR@Tzw3-jp-eCcfRasV0^I>Un&IDJFHc zh7`Mb@V+@1c0tS)xSTaNAZciqQM?3y?g=fnE9+(Y9;em^3XmHRq>J+)1`S^(9Lwn zvs*S-7lFggT&y?jo)k@_r)8FV=z4YkD%O4Ib!+RIkX1bPK7HPEyI{~sGjJ-@ZWGsT zcL8elj2LPB_Br`OnHIqU2bhhEiMV!BY_62)(!Yqy3nW#6CNpTzzeezmY>E) z2+J_cnZ!A=uf*TSEcuLB$G;9jB{Zqi>N<~n*kP)hqb1&Nt)ccBc13oz(ZQO6Ro+x!oSa9wWNnR0e%oDw!o?cAIuW_&vo$(Y3 zl6XA$0%KTz-JINp85}dza#(`pTl< zBxbc~&;LJbqUeEecGAm8Z%ZIK^Wzy%x?i2Ce9^YB2uQ0$>Po~mW_lS;%ZjGzj>3-) zQQIZo{qV+lii;MRr0OUs%v?pX_$}hvHkLz@W!6KzH+<3F(im8S6=paOaz(qM5|6Th zQRn^HQ0Jggn-@`J5Rrk-Z1#9Ckv;`_5*njeD#%3}4^fLQ5M zSy6BomLKgb2Mk+ndVmAUh=st>O)DTGi%)~F=nt`Ox;(r;J0+p8;@=B+D&cmuM0^ly z*yW-v%XwnqN&kt3650KDuP$q-XBGRZ3Gh>CFa43_gIj>;f^xKsgKxP45chjGmk009 z`bsHw)-b1rC&86AbH}kpo_i`hot7^P3U!l}l?^u^`vxVmZ`*%LP%P@M^7Bs&4JuNJ zvCGhqh%;|dMQ%@rSoX0fgDp@MZ(4`k& z%RC6ynf)LNT@I{a|N2LM_WYw1$IDEo9aGzziAxlakB#p4y` zNZI4TdqbH~7#Zqo3@c0zl{P;3F{YyE`BjiBjaY}cFyy(K5dkYZuY!^eo)X9<$RfY< z!U|rKkwX}K5e-3<+UiGrY$PV15Ik0xBJs9*lxldJlr@u6_LrxHb|peod%_y7f*lbIkB!nPIGDj zEuSU(YNFNJXS0yK#y%7bFjRWYlWP$0WM&;w&h}SSX%(>Se z!X*c6tRq*r_Sm9wssk3fAWP=il`>EUMaW6R$^t?5NdnxY0qm?r8#MeRbeyDoHtxU< zEAYuGpUijT%ZDztfA+!8=Sp*qJh=Nfzw(~6TLjMDQ3;AClfo(`_8hGghMvl)k}53h zonW(h&7Sf#U(c=)8zqHZ(C>*d90|0NuBrXz8RLQldlFrqh7r5{@dj|s00QX6^e>#d zn{l6UI(gvC6|Rihw|4(5!NdW3xZB^kBJ*O=kqJK%hKfbnlw!$1U zAB798d!7{rE`%W0H)2FLOf_UH^IS@DT#UjzU3i9;J>wg)<~)zGEl=*sjk=ww$oT`P zyv<~AMG0wQF-POh-o3$)62(}AR&J)PvWx?BPW!kmUV@gKvn!t9^U{=EhM(wC5N>qf zIP?<75A=>BEu1-pjyksQpXwK%o9D;AS8B9IAaP*I2}=uP#mJ8VIJ%D{7!T}mH?ncJ zTJObrjW)X)Vh-}?H}BBi*RhL!$(n$KE`Hwn?S8(TxYP?GzvkGlriBHi={gYVXqj%ig!6(E-O|_M(f{(3iZOO46;7j6z@v1ADK@M;S zzk`~eolK)ipMVD{%?K~QtQkukn+4k@GSExkuc6+xh*y(YmzFqTOw+%OedKL?8>rh9>GV6+rNPZH9+1C6^bH&j{qsW1^&J*uZ+ZEMDL#lLFD_Z-Ut1_u47d zYTY>rcKNMof7s(dN4-1m0ABz7=37$__@Nem>3TuQalM6T%-kYu_zCgSIbV`abRW9Y zQ$xC1kREn)p5|t64ir;VA!P{)cu86c1bdR{ESL&Rv+O`M8%U$1tcS*&Vas)CVY$nN zH{LIBlJ386@P1?!Yd90cX}gr~C6)nl5wQjQsh{B=M+kMt33)m{UT{Il7OiC}QJjY; z3bW*g3|C$NZI-^bdu1%vey&7oDnf&~xEc}efG-vdfdMaVT-Dh6|9%nz@ zxSkF!J)Ctc`5^Uq+CP(iCgAxUg<`Xr;N5XES0vZOzKk=lUT?%_tyZQi3D<4O8w2-q zZnCLO^J=UrPLt&DukvG@nE01^w`oWC4eLykWab_1pD@AxR55f~v|(MIl7=joQRAsq zE$D#4t>kpcqV#6#f9A$S51WM!E1AY&9#xbEYtujfh$=Ot31+!tDHW_B{os~y;WOI7 z31fn)W`3=*T}>#9&v=WTFUQ9r0Bw?=<_4hytUL^0Kl}ebn~Ato7RBe;El~YG**ntt zb=|!3dz+o|XU65Xq~RWFXOo>1H`hBZh=E|F&NR|$$`IA?l-n(KwnmS0mz?1q&JYZl z$^cPh?Yy_T`RVOTwuG=o0>gXf(OUp@9GGTReZY9 zz0PE{l`YV{ujM&nVbme8Q`wj!qW*yHzXRr0`aY}Wt7`tE<@qoDtVf%`?|`c|(#1?# zpwsg>VLGw?l_M%3;xs2ZC+d?}c_8NfC4!xgIEd#Rqaj>27%p?zB0np9x&1TU4K_fC z5Q=;lxjx~VnyJmW$_L->EKFYe)Z_#{Vdy#6mej5b1&;^q7?>({l>f3{d=V^lq7OP* zp7-h|K?aH^_nA#%P@#Ui)jpmYap@A&9M$;N!n)L?@o3X(XOknzU$#iKdGLZc6CS>2 zN?>~3=H2Fon<=i89drdmVI3N8_nc0}qM#48uBNz>E_BNcO$R;`-vJ8u_gd3JJZd6P zvBO*76Z;E9BNCOSzj>L4X_{iJeRwT3;|nB*68!Y)G-`BD>B-uxvo8E&+AY`T*u%^^ z4!cw`k}vizhEG3UMr?#*3S)F#W814kz^{y5@^&ScwJe1!<^bvrUkLNF2l$noQ?TuKAbh9m>yE zlNF~qN6$NQd0|`@W9Z%8#2{b7PQX=;$|;~pW>+TNL_9OTu`?q$EG;40+KWfna5sE9 zdJwzuKqH{L|Mv4p$}@Ci55eP;Tfh1^e9U9)I%|zvgQvMvj$NAP(6c-RvWW4!WowjKrWlx84{Y=>}DxqEU#nXAm?VG9Lg@! z?ZzCmE=CjmW+P(21iE>4ZQ|xLoG;dXMSqXH%56j@8v8u`yby5sLKRrl(pBF{^1Q3$ zC3k6Ie2N|V95vXv3lKRQ%8!=5|G_&UX%2A{qI44tGv6puu2GGG75{>9?Y8Q@J+ zoKzfIV}d>3>td@_O7voYGQ{FyCidC6bSE=NZ^+ATz)3Ib6{nH9(?|~SC*vD8ehgEE zJPu5sV2bGL6QK&*`Z9Z+r*9=eDhh#5NYX2~tL=v9E;sEOk~Qex zSZ=E5U~0104r=~=<5isr;&%~a4(YcL>rwB3Bj=b`Gjv@qSLO*3YiOxULX@iA{V6ay zO{UacvSO8M9OXDe%F1FD1c4%#ONwyX`r8cajRD2q$%>U;Cr+$0^wnZd^h+lz-@WdC zX~ik-E=0!s>-=wq#c@~;{nU?a4eYlS?S$Vcj=J8*d%^At5<*(EIuB{BvMo#zo=AAV zLwV6nr;@E{)`S>RkQJLCPw9uZ_;xh0+i=Ze?|H|DlziOR8l{wHG_-BxThTV z?pU@MVM76nUQW~B<@km8|^s0jyb)u2^0vcpZb4XcApRKU=uMrc0~ zq&Iqk^w>7~v>bOq=%jgk-eJ>5C|fI9#}7W5q%S~{Z>=t@X2%{OayIg>x;pt+cFgNY z0t1&AvPpyrxhGGg+%}Sx9<_J<9QQr9?`hp9YoW7`#twrI;-zy_!YQ9mYklgmY8A)V zUPqeURf|TARK2QCX;JHn>yPg;DLFkoUr)Ru(~FTRYd3DHi(HBg?5vD%I9@a!^HxmS zP@KN~24VoPB}amJ0AkFnVtg(@)}=8>3F^8^Em)3v##ldsQ&!cEFiK#f(_4W~7rogWQ66=HR)50EEF&=P7Z=pB4U@Zi~yKr-$UZ#J@o2DUP zo_h7B%|U?W4V@ud#pdX)f@xM}LOkaI6v|@5Ro?wZGAWEcX*EQp45j=Ezz1~8bL@Yd z4hNnw*0{;NGx}#7*o4DnVYcJc`U%l&SA8B7czxRr%G-%1!^K68-jOw;-|YSPA;XgiZKPX`TxT`g6rBzI zUPVE7@&f}XShJk4Gg#1?6VYcb0Q)z?@F&zBMq&}ms45awH1-R?-Ad+-?Qr%8q15}i zq3aRDm=+=aTx=y4+S1QWFn@y+2?d`E>d-67CZ}Ub?5)gnnc;TGW&K}v<9sbI$_xPI zPBTDcvRV{8VVVK}kF-MQ{~dKSkFPT_U_$rO^OpxCiT4qXlCFCiH+S;pKP*m}NkL7> zqd>7U{5?~}Y3xB1dx?VSA2Fy##xMAe{_BNYl{@p$3%-&b%xL7jO3?2u0F4s}Zxic8 zI?(QEcwC~UTw!B`jZdX*2#o>qfOa2&H|t13NvVhDrXRFpL%VL8B`)Pa)pb~v4a%)M z0qhJAPZBG_5AFqrbh3T(ZO-;sqvEi{EDZP|E&^ve${y%ABU+(VRpHa>4h; zVI?Ul=I!1BsZ*-6oxbVRiinP=8`pe+0^G`1v2GtDf@(vaPUL<{K@elGIztY(HzESg1V&Q%HR2=KtM;#ZuY$wvm zhYkaB{BgUmm8K66CoA*5#%{~3zK6$usUCKkT5M`KK6SfqU8Zm<$U%nUPqi3k53;|x zV1iNvvJ}r!uF@8%WV5I2*kOr%4s-7&6F*GX%Gt*KvaD+x%y5a1c)KW`tVegGI&^LB zNPd5u_kHSlB#((J=f;RlciS4=4eUw%Z}LT!!(bLm|zg$(YT_q>-)LSwWxEN`zfaDV0OxCjWtB0~{hKfcSmPW3aUDF~i{`4M*R0$Oa~C*nfleZ)^s|J`sO!Flaa|S+JLbRaM2(Dp zIL52`cU28HZw<4yPLkJ$7yWzt+fY42i!wox{G8CIhf|M$>yyfx-CV6R#3I9vjb>Z$ z%^L%!)tKD6?}^`Gj+cZ9gE=wi<0`8C7{;+;GH)?RW@l3l$fD9xI7l&-Ud{3230x*k z1LmoE%lUDsj0oKBFrr!B|1z;TL6c(Yqng7lSDC;|s(*#-;gG?ALfJO^@6k;SzK79# zZFYqgF-ZznP)}(xgeYbwLY9rw8+InCZjds35andRdMxcr)f2Su9`JPk=>}0g)&Sib z<2<(QBU`#S{IJv<^Sn1lus5Q=Cxht;a5`NbHM$Jqi!~@Q!AP&Knh|qRG@P*JKZze_ zz1PA9z%G4L@YT3NKr^|o)Df|o=l)7`+U$Oan@OBjE=|ym(+uV=rW^$2ZCu= zqiy996jB$uF$d4&sv;!-4=o>3J2V5K7A5+iIs;Cr4J(-HUmDfn+UMjqMx z(^EZ&$B})Ed}Zy=Y{M}h&wFogu97e;@-@nkh={mY4t(P0B@ATGu)&$9r+Zhyy;I+W zyidEE$HHJpqy@d!=Y943KmG+5(jH36>F(h$y zd@%2H9J&-E2R5U0@t3t9|K+Y5#R@4;Zmz1PU65qEg?46ZrWX}{mhI($tg20teYS_- z?=-vw9e({0bEgq?=VJa!huyeWaW*Jk;bCF0x!p6=_MzW?oAi%_+ck?by-dPb?|saU zMNlZ*puX?g&|+|fxv>B5!im6ZMttAXN0qAGs2nc(n7aLNO7=9*ws$PP7|ipc3M7}W zZEqusTP?)y^H*zd#|DdVmgwu8y`DQH>Eu0ekDnu^erA~vhDN_x!uC7QJ|b$i!#|{3 z#!$9XUX{Mg{~5A@kLbRX#|(i7D||cur0s!JV+rUc|HNfL9OlHjh2-5)E8%T&Ome&P zFMa-iWrjNBejow0T_4N(yvz??_7OVhp$G{43X9B7+muT(_H#4Rs>e|lTaYe3)IxUSD0xDqb)y*{D5C=f6|c9HdT!=cl+y8wUe&?-v&+S-bj!*AwJD1?vVdL zp!^sQ)%$g|eu<4I=~k3BeR41^xe;dz5A5`XY__g*RL7Sm5_OFHP2_Z9*d#QvqiAd) z{kHw$SLdbfQ#ZDRJha&;sk?}~%#udiUP*oE&n-h<%8L1l(xrd+x$S~~fDv5mDX9b#*LeAN80*ed?cy#WkmOmH-u5apB{ zE9Vp+#84XO6tt0!Bs`5%+EAf24!QNSLU`7h_RTKQU^5y1A)jyZOwCwQt9ogpkv1>M zQ(8467L{GCZC$_q!7ldGGicY3Lquznv#RKbl-bUmd_>$iV;Jjm{yj6rO{YCGYtpYf zUQ~1QV$JsB6)oBlvd}v0j17Ns&@zRRtar688S^2#wJNI9$TTN$=BjDSVhx|yz4MY+evKi(UoNqWW=EFN7-Mc>6vHu;q- z;l<@Jgc0qvSS3-^LVaSkU+eH{(20P{JIuq@!By#6fl52>uG!j`{GMFDYu;!Glr{)d zw0z;n(H#Hs5370Q%}^en2I3=p-^W3PJ3zRKu2mft_0+vYh)Iq&kUXZeiELBah9i}B zmPQ4{u4at#j77-p43qo*wb-~huL+5@Z5iinT=MWa29Z;=NyU#9N-Ar6V|vQaL~~nc z{GJbFLHM(!jcfg;;3piCZ)CKO*;yD$)bR)}ia$K1{=@W@PZis)3E~gy3sQBh*=Ams zCxlMbP+>@=U`SyQWth)N;jPav2EujUp@6{B}Ed#f(p23|6Hu51kwBwLRC_~+9+ zMv}Aqi%=p$R8A%H-HraWqL(Y(?vSu-^G(GUK6EK93ebZTh(=u0nim#PTT~sjU4w2G zglVSlwg_y(NZHZz?^bNdnF{w~FB6q0vHjo%`EHiOhGO3Ll9PpL?m>vZtfp)Nz3y4n zZRtf9;Jr>)k43?8!613XN&8iNV)sbODYF9Q1ZF;SCUH^sR7l<{<6h5L#r*bnO+leF zS##9cZ-cWG3Yd?_jaT;#wv!(tJy;ZaYs?Z)_`73R?MGIp(=RGa16uuVU)efGV9N?uOO$E=_P zn2;aGI#N~A4w7Vo3D~p0wkzn4&e)h>^W)P-%DBQ_Zugoe|EM=C{ny7^9+xtl*7Xsx zjOUR0DEh;qUOH|vuj$`4ntqJ$l71^3lR-<~A3K8UKWy0QFY4CFVG5zd@*;iWYdIrg zB{!1u&pdzE&_3Vt;xkPxi;TJUY3Uf3#wmTE(U)MZr&W>+f7>|f5QfDmWN4n>lzltS(Q%lRDRi#>8Mj<_Hl3+AM8y-kzsj%J4eL1 z?|a{FLs`-6v$Pac#9#tc6sMJr6}vMFleu-ngBh7Cgwb5%}oRI2k_D>}De3h>V0d_L?-9j_r?i(HJ1vGnH3@`hEDb6 z!qAqP^h!u+68qM(hi9Fi37CF}*TVCUGwNp5j#*Fth5#C7w{VLWTQ8%i|3C_T>v{eco&LiM7Uun|51ZP+?^G*StZ zZhlQDgmW&CsSw~Eq}O*z9{GhPJ?ivli$JR}y*Z0);lG~$(oLW?y49a^mIN7ga6J%s z6BjBwlAt=hm^U4P)7^_k3Dlwt7aOY~yoJHxF2PS^!TEQ&EDx`f3Yb)7Zr}FETr+zG zf@y^8x+C@vG*SIa|HA@XU8hi< zlsB60R-KOJpiV+u4Rqe>2_R=qjb3-*_V@%c^#nX%1Tv^k zJRa3na=W~_Mnu=}S>4c)3i!EFfgD)mC+zRLP2P-FOy0_7Wj-6G(b|N!6+%*x1rP+8 z)@F|No(iqW1F2>WLn6shK|kU{scQ`6iIEXn{8Ocj54TfiHqpHR0tYT^6z&C_DtKdZ z`n7mshF6ho4zJ|`cXpu*5ko_8}H^dsJ_#dLBcOeuoVoq3Y>y2K@7 zV*I4rm;I-HJx`cCh?~%w8mf}rX(+mK#nW<%mMGwK<%dRoDHIb<_!1I8eEAvBCq(8| zcbHJeF#8&QSiyG(9;d|AFg}*GS1`Z$Q$O_lX^ifUqLvi5_&i*dC6iCT6ui{m^gAdp z@x6MH3_3~f?RlVrYMK9zoXd7iZ3o>k@!^X1MpQ$Mrm;1eSXp2ndsCdlGgkWMSLQ*q z0*iz9g3jg@r)1lLf5fkjN;K!zOFSEX9L;aGENm)z-i$%W(r&6LTyr}`rwV=#7WNL- z(=1v(Wc=~@sqBJRze0I3U_CQE!0>0j>*cW6;=2;Cj4rJI?8o63CaX=(5Sn&E#$twaN?U*_)f2Ar7eb7kr%}MZR?> zYw^)^RZP}!KZR4&OE*+&QCM5{OIHtpwjuSr3E#8X$&Ihw&G7%?e!;{&P`{t)&GcB@ zY^9h}mUuLZ?RI=MXt3G!`S4DVJi~D?voX_<8-}?~kY-#F_l&V!ftC5vrj~j3_yR(C z@!{j8XLf0qb^)z$l@4Qr1Q}`j^xlsx+c29*ch@reZ-+Pq7A6EPZ*jqHG)_7zj^o+? zuK$%JY5knW0WaLsq-jDk$;u0d)SuVr%vy32qdS%I@{|zh!#tQdTjL7AUnu9$_e%nM zSHVRqYInUXuwQuG2juY7Y@U;+&lz2|M7=b>%%1)OUu0gV23eF@g;KMP*U3jB?pl<4 zkmLC2Yxp83Yp-(`@oXO9xGfCmpu!^mOaj8AB~5=9Blvq?8C!u}R8vdJ`)8Lw40Lcr zu-gpXCD##*(d9=`Fs0 z6vyp!@l;Ouk)Du^+l+7ww}o`x^;cGru*s}Y6gvB2TLdFsVBf*N7csDk%Y>OIekAiI zzj~|ecDadj>>J3lka!x8L1$vAgiCxLCaJy!^ED??|1;HBL(Z#B`7Pl(mdb~VpMu}h zIg&zk+OFl#;Bl+Q&)jhP+V7USRwP~8DdCO0=K^J%s)6~fU-IVhZzl>MrOc{-v+D=4 z_`TA9JSn(8vd7*P-rPd?Z#KOB5!>%Qv~%*4ZM})z3SB|iiE?dAKEi~_idBYKhc}AF z_V3WCQ*-Q4QLiFdq>?&mMW8TWEOC__!HB`bNbpj^ueNo+09_=U9R`;%Bt&IOiqt~lii`_Xg?yJZ=%C8!LCMBUA^p*Eb zN_6^5UFIl0V#2ZoHRT`>!SWEaRGujnG6Oo@pK+y^APR3XvAPWrSh|L&cdeb+tK0u& zSYyV~Ztjxls=8s~7NhZXV}Y4YNPV+?`^`2_b(^m|7S<74RH^fw4TiBT1(F+)Q0=__ z(;}DVj-fnlQZC9aYxre;m5c@I^mXiqpVeo^l7~{FEt=Sx5xj(B8Cv!y2|4#5dWtDi zNVyP&$|V10+!xBzvGOapmyxhWd#&g`}OKit ze1m(OSE22rz?bdq=!B{Ql^@4ZFs?dRE{oWpzdyC#0Y38RE|#x%e_xXs`)9nO`DA?c zWMMsS^CzQTn_PbKKJEv;3*+^X2%EJtzVa+hT@InLx1s4eQlyTK3Gqh7$1MaxzHvNo zLNcs8$UXG9ve#fY2i} zwfF!c=+nVP7zO;K=8F(QUP#Zn@)#Ou=l@Vbk`0AUGnh_4L}6^Gu;%tVx{+Fpys7v{ z+GL-vjyQM9nmlXwk2rtz8n0QQs_u{<|EnMFUgU^Dd4IKoCl@-7JsURAml_M^ff2C4 zcw+A9`PybJxMUY^D#IqzoY=NnIT(Ydb)CuR?0o!>i|(^xPJaDzr0dAXLHQo!alY_$ zqO50*w{<|ub|O{VtpxtfGe~?js%RXZefjMLKpVDdkBi!qHWmDgbj8g=g}Q;&;@b^Z zalguB#cUOG_sLBn!BrrJT`XVEN2g7c;D)#ArBPPoJ8r~hTKorA?UEEAcbL~~JNl)g zYScM4$)wD5R8V<_?B2=q*@Pa?&;j0AIMx--@R*$d1yXF;B>=zLzhHSI^QNoB-e^^v z;eP+MtcM2ztriL3d+8r+vcFbN;lN z5Olf+1v)!pc%3ASZ<>Z4@!@bQUmYTJ67(Dr^v0N)-vqM@nxh~*0WD&Z@mNk1yxgTVUZH7U zX`72z+U4M-wmF#DItNo)=8&K_!86Ts@O1NBjBMV5M7<4KXSGA^*bd03JpjFiPQ{{k z*I@S#hw$ggKkyr|kNW4oG9Rt$OXdPRh@4|wfiujNeDd|Gc zNy=H!MU{7ppz9HIA?1p6A?v9Tb>ZU@3U^0;1b9Y}jB~_XR&kdtxhE0H;yrYisx=T< zBMwcX8lg=Bi#azKmnXU`>tZ+|4?R4xAo>fC}dIa5A&0UL>GeXXVj7uq(f}STNT}9CC1YJbXH9;pSXF=z**3?zB z%q&1bMhgVE2O^dvy>Vh)JUw^>&K^643un&Z(%JJ;&d*)IRg&+k=Sk8@u&;@Txz;i} zN5r+LxRiD|EX4cbWieg}xoX8-Mcl=_B;z-)Uc;@cR}GMy3rN&CqR!HNndDn>Nt1CQ z>(r%u$tXJwa~cc1h{lub({gUmGWgSPSB{^++3$YBk1N;V{l}icm^%4r>l22o%I>K4 zaCww_=wT{k@aI(sx`}YXKzs(taN|@2)T~LeRFdf0%CK>`xU_$cudffPIeVj`Zv^T; z^(v0u1g>5_kDq`21=FWbN2^w?P@Zr24i0dp8)TI#RZy*3HTe1Z!pp-Go*o|X^YcUX z>eb=m;({?_pT=zfzOLSgKCpoV-CD+rBXRdyboy;KDpjkBE8qTLC*#F(;2<*N;t{=P z1H$)N9tI?QwO+jcUhl2haB!w;iR9J7gNTIx^JSE!0?4g>mTf88zYiDp>_vQhyt#ZA zht+vxBwpa=>_R_uR5&w*eh8^+TR@ZrO*-y`5ML@BuxJXAr5{fvtM2rJD?YQL;mOdC z^8F%PgVmsA$sc!G7gt?mDw8ZTnm9|TE~lY}i^r9_JfAkdLKkmZ2X7OvS8S73IJ3u) z&%2_{Lj@cOEuYuH>*96tzT|v}{Lyysg9;(2;~R9_JS^lrJ(b+kXY092wA4C+QxfDEQi)$Vs=q{N zyGp<)-exjxi`g<5K4;bW%n!UOGqg|5Y6Cea=sM&Flj7kd!w=XD_epEy!$(!aMm@|_ z^Q)RV#`VZ`YY*nA-}qp_0^PrL4A-@`9mea_3Yvzon&&=I%PJPJPV0M+xDRP48RzZi z-x=}XlW%oLf&<*@9y+7^hLo(ALS)$zsV8%|dRhsxGcm5>=y+ z8|B)Wq519$-VY4@F31PU@*cqQ&F8xD+Tv@)_93a*$F%?XH=XYr9A#HkR5#91`>bv>-vx2~Wh3Mvd`uw{|4xg_uXe`D(kSm_xisvOcX%9wxNN!?Vrv z@pQ91JVlHoxgSx`8vS$Iqp(hU)J<-Sx>;S&smCZRUbzN)e)}HZ{qilA&Yg!=S&b3r z5{UXfp=iMETzS?)49R&|b&~Ju{)lk(N4!@pB+>Zz8li|GSr7LPK&W>h$$21x+yf9! zvfd~;8sB{K27ddL%I|v?pyN)#P`A4SLBlN=!q6Mw%;yo1|+y^ULc5`Vmf zo4>t-n?Jve8$T?^^+T`Y>fYCIan~H2-aG|IS3ie8-x-CUmpqC?a|ht->AkUwB!1h( zUf4XYH#U-RuOHhTYesd)yN`Cpg5Iq#rBx0_*U!e##8mW(h)4H`SoBGZ$MAY-7}u&H zUg}wZ#e-Vo%}3g@pr_agI=AL-Ap?md<_rsZk`VJuUD8t`GLaIQjX<9mxK^u)8m_@4 z=Shh2lP$SRL6?#qPH7%aLGW`8LA|iLXq7-x7vEGw%{!1}vz)glIqyJpCi z#r9FNv8vw-nBJr>ddC*PuVPIEI0hp#s5Y9#<)Jx$YK`WX@1L`rOGKk_Lc*1xvy7`W z1BUADdR6yy#vfi2xp*&~8~6+juVHz$B&!0W5G4XqY#MU!be(PTPxr+*@7K4l}W-U03u-NYT-LJX3Kj_`)Tdlj2ul&S;6cJHWSo9{8Lm2LgHiq%#A{B?Eeo0y&4sIIiJM~x|DQ&FI5+G zDws<_m)mzg7#oN)lX9{A`@ksV<@5&I%+8DA&J+7-ZDspj;Q5t=tMi+GyDb84c^Ju5 zGf6%w!FNI##sxb<^7^ZO? zbrz9lfhPWhh}dh}TN1_x0LJ?PV|FjF#$LkJD?55bobn-G8KP~X?PVF|h_tPc7c1p9 z*pJtw`)*iCIo%ToUMCAH=f#QgWQ>rPDCD#a3OmuhPlS-u`gy%oXkT$_^v2puy#GZD z_3HOqF%b#%QXLFe_F3c3+Gjz&3Wtg5&>k&H8@ zf?gR8w0y4KUV+xd_eCb&(;b6SBG5Ln76KjINYE?e#TWYH^G)M%;H#JL%a0%8)@>>1 z@*C(zLH~=&v47wg3;NPASU0LS=67t4Da{*WYC%&H^c+mgrT*L|nBBZNT1O?JVMsjs z*K3GZy0yhzlKEFVG{gM%xtK@HX`hc5+cn4ZRs|SW*aBlo>PORjqYIkhsTR#i)LUU_ zUK@0+*A97U?U9|{8BJOY!ie#+@ZrZ>@aijb(LAF8qFe)z;2wk|{(6*qEyTNV1U&>H z)q)UM&7T~wCW2i25K1y0K~m12R15PUL8svW7ji@wU&I8|#G0j3@Ws31@$2^4GJ1ae zL&5E1D@e{s(vK2Hh`&D|sC(E3PWy}G{V$UDKS(&IvCV2%OdC;N#~Z_S;`X(C^@$XdZvyp=n+{6 z4@iP*^_p~I1;~ct7$N8hnxH3&#^Y*wM9>BAhxA$*Xc3=_HVI9&=sA&;hmKkVy%UY= zN=(l0h0Tvo#rDUiV`tT17$G^YRM`RbCU28+ZX@W8r|(4L8C#L_>?+*2QzYg5&Mi|(FX?a5!g(k- z@|CGL7YA2~kNtW*938w6%31_=FXqv^7kxZUd!xNkik zYMG64bhGE00F@k^QH3P0a^;6mzM=!lR&v5am7P&3FcxvmdLpCEP^7dNfNHf;@lX|C zlrQfW&)mMOME<% z4Y*dTPCwZ4-8L1CGe*Qkp;IepnhCfRWGeh9tO`W`1+;!f6LlrB99dTn4U7V=OD-b{ z8xkSITy;N%t8w}V_Q!;A(MkyB$N2tsF zR)WpH;hZ1BY*`GCv#la;i@Lvv2M#f_wM`+$w`z&!3JdW}VFAVzHp5tw^f3j6c%pe* z^vmfWqUjl_?a-iUPYiitJO=cC6!qiN5kq1g=Mjtq4{|E6P^5T6hoKS?=L)2Rl0D7~h$2f8(Dgy(wYW6P2!ar5vBP0R@vb0z1L zUi23WIz#=;Uo`Ds@8kBL%zMPU1PQw0uXkt~4IcjEZ4~{w9Jhab9XAdx#?`&^aq-JJ zIJfgfoZ31A$Jb9GFB^})K6nnlzVkGGTs8^^=a0bd*~74X;sC52+Y|4M=z_(A+GBRN z78uti*C^=nQ)@!ZLo`7TW6T6S%OdDP(z6gt^SC?t!;R!SxJIll=u!M0dQbvlgJi>T zAvNOQMmsjnFA2HantMVn+Od=qok-9H+#jEZ&LrqVQVZ~Q-_h7LY6jN#e-^Lg_eYng z9Mp0MLZDM9GHYdt*4*>8Pp+v}+@+u!AQ@L;ZdJWq43m(n_sJ|D5CshkQ$bWtgt%h-k=S>cx^E*{`4)bA3Kcer%vGdnbRb*XGyfr z;|7T_e-=$tSLX;d!_jiB|GG*O{kDRxBwbdKzs`bw<`^#jx*JFNBv{%He=hEYKb8%~ z@9#c^!|P__*sgbQ^1wEn{p|oQo%oxUsq&ynItw~2TM9bKH*rhr-n_)`u@n40yY_zj zEq>QslXM~K#LwS5JE-u!xUZJ9>Qp^PgCFvoxf=SF`2>IT!nMD6r zxVZbE>C`PGA1mqE<)+IqREI~x(bWOxfBX?Q_k4vL+V|42Z!d1`KY$B+zefGnW+80fYSU#gVYHl>eH&4+ zs*B7N{ar08Lcxsxq3Ps}sQ2Q>`nEFqw$J!Pz{9e;6*;qZpvja?a7-vbrK(lYqqT14C+<5Ij6NW3MkY%KjyR;7X) z{rK{aD*Xtn>gg)7EDD-jprjvE7U0qpfV@r8tP4;799fXkq+E%)!tle-$aGoo`u{t& z4?=7Ut@^ZvePLajK#S@LdDjZ|R7kc|owuMz=eW>C1#5F;VOtfrb-3_vg{8o!&ze~i-oPccZknW$SRr(x_@!xAa; ze4T3oPpH>@gs9UssaL6|ePfT|H5qlC({(0m-Edcf#)*hL_3IesQ4%gioJCa=alRMv zJ&Etp#{09lkD2^_6bnsnnr?!LlzTF?PNR@>^j8QYj& zxgk2v7r*0PqM(~#CFmw%u5hVZNi-10wTa3R;vQF~4C)2?qE&b;#JPH+Mm0C2h6mvD z4dd|rSL1MS_hkI_$A={3O3=0U&PDW`hKZs(f8xmg75HlLSgd}cCthurk12U1p>t{$Uh3Qi^GW7k>(m^tbuPebU7BN2XOeXqp5L(r zUM5MO*{)EC`oz{GovjM+Ld#}&p|ClgZ&iq=TeZco79G*PaTnChXpii=9g&rmiP zByq6QClskZ;YcUA_4XtZ_87NX2y+fZprb!Yx-Z>3yy+Nt(7thln}a)@%N}$+dC-3K zqQ8ItS6#NX6UGA^U#BNNr==+Rf%x_{+&-`XH}}rP zwJ%@7rB7$z?B>Zhv348|fA}1Je{U>)UOpP%EqM}qUwH&ONZPFgJw8-M(c_hq?y{&`1l=g-DtcbX-$iFZPiv0m zsm)O@x*`22cp@P<2^kS}ksXqaUbL*8&pwZfTh`&`zAtg>y92oW)Aw{Bf5Gizf8o}N zqqs@Ze)H@Zl3*5Pi;xSrN;#wYsVk!EO43QFSkcy-up4m9r+bk&e1#<&yo0B1pSs#&@VDqNy-)1 zgqRDg-goEzYuNMUm+ z(=jL_F&BBd0bHhT%NKW`>D13mx4SrUrf);TnY++<_UG`a<@?ggjOvg`D3h z*C6p`BD}qTgNJlEXQKW6g^bI{x4nF)BuG*j8cx$lXDBU$ggjFtD^Zdb6HOvlS%{m! zSn#AmlMq5KFo^}VSk_A??3`vmpVl&sl2OhV7wBxC!i#7)7xF|w z&#){jjO#Qko3~ZlUNL{MP=QXzkapK~X=zr=x=%Qd#bCWoGvq@JA@C#xe7r?Lo(f;O zup4k=L_wbm{n~kAgy*M%6<52L4+B_QN`j7&j+|Z`KQ7P_vSB?bLZSf4g-$LIQvMY3 zy-Nuf8acu#WS$CaMpX39DvD19I>sXNn%vR2DpdG%p=0UJg+Wc!Ev>qn%k_gmtgARd zudD=J3MmV^qrf8QoMtBI{4P3w=iN-gi-V_U!M3f|ZY$un*bBKumL)3PcD!ZSBHD5} z5;-i_LH&$2otU5U%lk(Oxsq`a5vTJ)KFlDgu!7DVfpxmogGv$*J{QG(h0j~QAL@`y z3uM2SPDKr4nq{1t&u$!Dhm5tXGZx`48Ip4na6PiFUAMLm-ehBw)~H4(8RNq_1=qOY zMk`$zy4Dys+DAtC8ns0{50dra2grQ4jU}W6(Y+6SF(E!Gew?=Uoc0 zw0lb|>t2Xu-Kd{LeF+KsqD}=u)aQ0+ftT8~zzml4wgs5dhO2ZJU}D=sJm01*Mz!vY zF1g*2ozjY2u{ILCBavAnj0i=VPZ(0Y!;sey4txb%Ohge&cb}Pu-$lX}Kin zcYY>0|7kJq{J02reprY*-!H(O@8;vqxATERuL1{Nr84e3+}=9}H@|!l*FK$wOPeR+ z+}aoTGixbOu%Jt%q}w88T~&MMZaR_}ZY(aMHfp+u!?l_pYH&4#02wi7DUS(aq^NUR z4fjy^5oy6`Xi0M3jwD@*If;6LrHXqel5>uz56UROlCHz?)tK2>)$1uNY%vIJLmMN= zAsBv6!KfS20C{mavYLBx9?3aF^38ItMb51Rozl6=yG$b?w~}-z=Tg>L!b!|Y#C3E* z=LmWMEvEo^NzITMUI$L)oRC2KF*BkL3Zm;{TC+|#{o+fwGH)JkET@yJhjI1DcQ~_i0ZyzOfm81f#_1Kr`va*v2&X?7h+`j+sIPni-)@+T<3IclmrwnT z8{%_oDuPa^_s>=Jc9Qd(B*N~Rx4;#?HGDDny@RMfb(^Vt7DvF4dOrBfafMWt7V1+9altnzv$L2w48Qt`+{jYeXESNPu`5@Hh+)Gl`GRRu#S+c zmeeg+e2m0#l8AyX?}HNIV=M8};N#6=F2tJ(S1jl(+q#HQ zSIN7M7{|-g@ zSIOk_MtqZ46o5%=={~_xC@%bRO{Ve$e@2h1b8;ky3yCbsLZB5a)HZ^BS6oamjOXRr z%DEJF2RM?Tb7M&Mf-WQHB}LGMShLKMw3^AdEke#|9jb9SCFf>>ZWL&XY~MSUAphegna!)o^R^9QP+!( zl~|jMXR2$MjWdInBhZ#h*PWfLGjt8=k#&V8=kD6WG$rG*u}Dq8HH2)lI1x&+-RV4M zJowtD?e}D~ec(mckQZO;>U!6qYgS#?wutM#D!dhRZkG=0-x$5$?%raA@}e-_`%3}e zH~E19KSWTCf=cMTVEBAtv|%OEw!(TZsAUM5H!M>j#Fya6JWIK(6;wuaxi%5suXsA! z<%$O(Hfi^YT80^B(;MOKVL|5y2jYP!b#*}(ztg2d3A&1+yV>AM(=h!0KR*cI{ZgLx z58t=TKKwAkNXnxz7qjHa$u*ev0J$IEngE zA?rfUc^H4-$f5V})sit-HG%}a4GDVFhN4>g#HK9hjWD4JNqXZ(7?Ifk4gBNKIw1?w zJG924j_hYG@kY-!Sl+W0(E`hR6yQw~_1C+%z|w9lu()drEb7t%^EyQR4OGs*O?Z{yDI@8AvzHj8!SBRH!=g^D5!P&t6*+xN6wLp@t zut>WUcT3fGNn&`K6!h>c)bfcDpIh^E@+T2b5;88|Kj&^dVnsI*wQ9t|$AxybU!tg< z-iDCxo^vFfWu3&F;D+P4!MN^;`IwN~3u^~GkIx^Uj%BTfV03mTWO^sUr-~oqd=rot zn=2#eqBVC76+ss=E`?l1&sos9tI0Vb`dQ3L%8e29LeYx55_7F;yMX&i(9>F=QCtpU z{gdeC?u}&HM|Hx|Fgm{t_Klx}TT7RqXz5ZEz5Y6i-gq5%-h2ai`z_$TcX4OM3f%dS zWPQzA+}XGhMW1ZLZ4#2(fBcSHB=UnTx-H!Jl3LJJZAGUa(p>DZyQbDY$~0lA$R%?)SLPtUKslf zZV5@35$U`B(PZPEe;$p#`55uLH<*faX^1_r5#e;ht6J3o**o4w%-0*lx6k8t7vB&a ze-}Of#MdO{=1&!F-M)pWfpbZ^H>2sa($y+3Qg^~eWcM3`2KkLi%qujf@+k;zG!6M7&P2MoOZfZYq(Mgw)swS!fXj9j)MF zC?MSpTS>PPdj&1OwAdA(=m%Lng;z3ei*@1gpTN>vT)M(+{5`_kXzYKG7}ulaSw^d* za0oG{!oHAkUAirZ2KLl2?QiRR%42Mb?YW>3<7J`UZl2=M3;b%m8dlp@62{|YvkwGx z-jH;7C`d&3{Yn1h5Ep_)f!t8|)S-eSBi_HH0wYIrgun}lmxyYZw5^O$z;%j|bTN;O zpi4?^F)BG~(WD#Bki#$&wzhiD4IhT=fiy+?{Dnf2S zkA$mb+by3z7bW3s67P!B_8HsCkP%Hy$XQ-Ya8k?t@gn zAk+(uK+DWj4C_>Y7oQ)B)vr&&ms=L%=lvhx)R7&yaphawDf*R)p+Dm|3HqMJqp|AI zPMF&=2a}pKz(f-B@i~n#u1O=j(6}MS6C>+1L{3mV@}g2Ox}u|?2k|=oNODU;*Bhy0Cb@8=BT{-m`nLyF|sGNO&*4?7d(X@ z-+dlOHcZ3W&*tLt-X*yH?HjoHmG9mT^tdp5(lP z21|MeqP^(mq6-Q7@Y-#$u8r&oC`6Ra?Ws7c1weBO43={rJ!d=)<-RmFa){>BQ+!)g)w!oxLbc* zn73Vesd5v zzx@F>zW)Wce*F_S|M;6k{cl|V{ZCx`<#$~B^>*t`-zfbTT>te)68i6O?fWn2 zfOk^8422qFEZ6PN(^&eTw=sx53fL0XK_E7fQcDT)T4z)hky<#MXDkJLYCG zeK(T7T2BRN7t{)^g}CqtIHkoSjF+`{wdwRs%)a%g+Atfpw95I`f10+_c8r+)7Mjd5 z-|oASJ9P&tyYYAK?PXk4S!YPLnG|AR$If=&d4Fd3aHNxjvykf%a$U#?CF3OFj1uuW zEaIt2LdFH@ie%KyNJer@xLyb{!g6ISAXyifRKIaNL4_s-7oaSH&XhvPRpE)?t}Ika zbQw3yV~3D417>NZM#-IR|9xPa&wm?z-LgQc3Z)_7!4{rQ z%|pWiHEe^PXE85bgBr&BsTo4h`QBUIaz7OJ&Js}a9$CW;+n(-(onyOU)018B;qZ=l zYfvE;babMo6CEg_7AYotDqXm|9Z%Lxw67#f(`pYEgb2=1a zc87KtTE8h8)=EICZzK|Z!V&8gifGReM0=2+v!oM3(p>^c&;tkf=(}H%`adPhY{6ujb?0z6H2(U?FZDT8P`9x)mHT=g7GcPGepX+$KS1N+swPNiSK@qk~f6;~EU-D&7dG z87o?C7w@18IoBXT=jb|DhY$3OLV8Fh3P{lTb8GSwYb@#3g3i_7`y>}&eB++@WY}cv z7%~p;bbcHoGTR`-GajCme2^5FhNiKNWi@vebkR7RMb1UFc3sk~1zkqZixYGba)l=8 zI_U*ymeQQ0JQF^Seu(soLt0QWhSzC72)dGUgOJ-YZ_XT35igEfLA8XS+hQl{sZ!RH5)zR>QpeS% zWi|DGF6d<{RwhBWwAB8Onf8fzPw1vF+|r5qEs}Icj~Ynby$Q)*uC@AZd2vJ&JZ;RL z^?0b73;e=^5E>eah=>Sy_kzcPtH6K3|T`wVzl&?E?uHc8$ z7tv_em$ZHNwx9B+ZAPC(TM-i#Z4q)Jh0&y3Ra5u&^2E7s_FKt0Hx^f^Oc`q_FGj}e zScy1ExF+KD6q(i}Mu(afk~q3&T~I0xgNSPw3sH9IRA`bBOfF2Cz(3H`74pd9WLw~R z5b$zKg(|$8jWb|ertP}^E41~ieJh}SDWl>>c)!v%+0HKty4o=kVy$78RxC#8v`J%G zC>ENoIH&+tDnVDMIc@q(aseG|oQSu1ULvBRspvOHti`+bWi@EL4oz>36lH~!XG*uh zR>E!3Wn5do%!8cQPQ;B-@d_2CjB6s!?}3YV!5JmpX3%&c;tcI~)gFRgJER&3u$d^| z4=m!P!E9cJ^TJTRtkBafVs5O;E?aSzVksXs&^bxx6rVfdIua62QtVb8-tGoGj5yj1 z+hClpBzPTWvd-8^I-?1?oun)1w?skr3#;E3zKz4Mdlyly1yiYBH z{vaq(W)1K?LRMjy4b8ETGhBV0uU~$rTmQy8Eyp;o-8vLJ&K62H&TEUBrgX@>*rH21 zV_d!=T~5pMTQC!I1wZ(7<5!dDzUSrSph>!RpS%lMVLmv$Xb{dX9fpg`h6~Ow9*Prl z2jI7v{qW6%Uf40ZGgd#+8n5@r$180cVq){U7@boaBO0b-XuU)XYnX;dn`Gj#Cbcn~ z``bKBvi?@@LX!1DywS6jlynmNdHk8S&V^XeiQiRkg`wFE zkX17Z3EmNi^9)CfM<`-Ag6>IjE+jn|(QdU!(1Q@}97xg~Al^q0bMi%|Uocw5C!kw; zIyq$`vi)gVlJYpuNF>*YMAL|9Jl~-yw$2=k&tDma?K1{p!}EQx^6}1ieL!ox+N~L8 zx8hIA)y2eynHX0u9naOzz=ZsInANEnUK`W_?~m+>P2&gQvloZsn}wtB)ADEW*UIrY zxnT;&b~=Cuaht^a)|vC#``}WXS)hePbJ{rrJghi( zQKp@x?%4~}Pa=NqocIjdjq|D+JB`z-vWx2M0$v9RIin)y7q1!w-6nc&BImcRUB}c( zldax6SMQ-0_bz%!aEQ5}+w==zudP*sPfe4uP8Xmq>ms^-?=;VE2H);8NG9*S3U_g| znY01TW^PB-s+BcKFU23f_f7vE@^(ig33m+1v#n6u!qUy}qi4J`7m@MN@Q(-;g3g4| zes!!=3Ar=JBlP=^N#gD2kNj#aDpDbo*InEnf9qYu*Gbeb)3)T^7xLat=oAmN!Q8rC9S9PyF0tP4kks(x!;Ee~p68pTl- zM2%?sl@POBiOOD+pHzkAK^ z&8ts?v6%C)Y|Y*x(W=2T_30%A3o*lTYy}Cjf~%ABI;EtmWh!B}q?yUNWqQg3AsTHX zIG;+!WmKH^5$zM&H%h{F$u@(gwM`QuuAqIYgj|TOtr(k0G$Y2VD ztNKk*%dmy>q)>S@4zrZ&Vy=lKojWXnMj;p1247b!yDY>?nuUD-oA5fcb(tZgT|xP> zl6A_fshnGWPps}8w)X#L;;J@a>e| z*fy#o-W^bgm)bVQGbHGb)J{U*w0QKS@>cJ}1oTNxME}%e3`|SKK$7+W>1pUklHM+s z%31!gh;<1@q>~@AeM8ZP#JG1>28PtHgU53kU`(?Hc%h&%CKcvjMysZHxosZi@h90x z$`_Kz&)4L9Zb$0x+71i4w!*Yl`RJCEjwF)uc+UvLx`h!Th$ShH@gUh25%ge0xz<7i zIbRqN>PlVyX1YfW3?`X=lO%fUm_GP$cqdG5(*&KUoL?B3fUfBonA)ucetPExoZU7F z7k3alr{KblsW`uNDo$^hguhojhi?}=iCq&0Vb!BuvAA;~CepSHOQY>hNXCGq6g-le ziqUnlFe$GgUTKqy#oY?=&cF^>^JI5y8`l^ABl-X4)kpEe(kJo9J7aM4!{=~%{R=q1 zc|0y{n}{phr{LPBGjM$uN&IKT|A;SU;l@`pN$82MXOhqpduQPxmUAWOEatkLlaO19 zIt@!vXE|4bo?(%6O5+yZYx%^AhT?o^r^$EF6NHp=EAA?a&JD+f)r?0Cw@~=IhoVVb z6SRnJgtjER?X`E$g`ji45Oi)dE+2i93o))iH+=rsOzapu9xJ*&K|87g5?o{9RNf8g z!5PRU(QlzuaTjQUu4G+C(N)!UMKKX{GeOTZRBtCi&x)*rAdfKkRIiEb=-PA=H^Apl zkHz&xui@7GMY#RiV%+BU(3iiCqIZ^~XvI4yB00aadL{0VnBQ5y7TCBE*s=}y{0rRq z{wLf%dP2zg4U+8}nth34a<*Oe45r#dW=(=a&c(=QJVZO3trJE|QQl zBtl5eNwjg=1Amgnqsfk^5HZ^Qmg| z@jE`kuRs4-s=TR*Zr?6K;|V0`Q~zhW&1U4x+zA(FM_tIHBBN31;fF-)@%%2idY`<) zLl4D>??T4Qlr4j(pa5L{_6ITDy~?;5F=2tSkYwPlf=)k}cNKFgJh61kNTc?{ z%|FCkVB&(6v9MJdR8>Y>aW6^awL+XI$QcT7vLJ3f-VUo}$!!wYZtHzR%Qf2`g&{At z4W`*5qeBKbU2G>W%Vxd0INuFJVcBZW3!PHfRg3fGMAwOig}Bpop^H1i^Jw!i{3#>ZXcWmZ$*ziqb1U>#-)_JL-R07ymxN~PMOVqN9`#n@>^7og+3_OF9oL_yLJ=*a#gL zhL4j0Yau1**y#`I2)=$fO0K>n!Tl`k>UzBE^8R%U_lCP-JD=_RrCc8EPa}M<6zL@B zo=%#a3qdzZy23`#iPothI6kirPR#3tlfXg`&(0@=wD-k1L2sN})C*??J#mJ* zr(dIK7n9sC9gH)}hT-JWVK}^CFn*fd4|^x{z^Bi2!=_PPMYZ`i2eiVgU7BHfi^dq+ zs2+x7WTA6>3Ytg6pia$NNOJc@jI%eQoV*d?=!4K|-0zE2uRt^o3`d)268MbTc%*S- zjB3`D1imqzYt{r43Y%kUhxVA%t`#0>(iqKSQjq8!Nm9;&9*P)^Xl{JmEf^7QwGhry z?otb(B54_Y+hN^vgYf%`$++;z zERypnxU_RJF7KLxD}t%G`q@4DLf4o) zxRmigxM!q@qPIvQ*|rjN3$m)awV;cBA?P-u&Vo)@S8>-GjUzd4p4J@kfl2Uj@<*_H zFdBs=;GMn$aAd|z++smrv;?;oEybPJmf+6PWw`U!a@-*~FWRsQx7V-6txfB3YsU`U z-t!HLe)>&_`OQ;japN?}`5BUP;^rBShLb=OH<)u4ZZaZjZh$0Qq-)$bC*_=FTnM=) z@nSkoQ&KJ6?nBexef5AFr_eItJCS+eWbPQ^oIE8wAr%i&=m?&dOX zMpTHO6mbn9=LWH|lW;?tDqL}aN<_uQkF56N%|E(aK;lA`v9KkOg)mVd)0UwxPo?YQ zxT_)3Y%oqw%N89V?-Pu%keOibx|0l zLZ~RbD`Br7zZ0##BVUb%Rlh@d?R(PH&!1J|LcNr3UKU?(7UX%M)-5SXR^+*31Eujh z__EO|en++-+wE)F5-)of5va>G02QpjoB_&Vlmf@D@yR~O=I zCdYR{NVb!P?Qm&O^BAyNhl!LMgxv1Br)$etlgj)WQpflI4fK1g0gIqppTqj^9>HSH z?~v<_zLk*=&$tRZk5kjBdGCgC+5ZmmzI1<-a(>!(>i(zq>(F+paeVJ$33skW=MNzS zU90Y1f~5DT0G~l%z88&C3kMMcaC*T2oOyKs&d#Imy#CZr%%^@DcXko=FCrOV$kNUN z-&>;>&hYR;8b{NdCQcD277f7hMT2o{(NG*+Na9ZXyq zxmr5$*(_qVWYUvE8&9~X|s zm(xaI?Gyd5w0j3k%gx8Av^p3VlY;JHvFH{ajXrU4cr+sw&orrvnQfY2VUGg5HLx{4 ze6&5*J<$mtkLrxAPjw->VH@qs9nbbM3c8eZW3=2_&iVawCFm^W7UIJxjjOpwWFop& z8i{u#U8G(J^^HSx07uZdYP;5oyQuCiKfM;{9U%lg$~PXlBlJwKBwe=(?Z_tR-Dw zco$t@Cg&VIHwwBY=`82`{(0lXCJ6P36z`uW`NgAWY!<#5^Bk_snS;Y!dg5q2f%a@>vcR|UGD+erEiA?hsWHiCYc zC3f<`g$WAU0g~RJh%P3a|iWjer>wVX5`G+f$|QX$V`lf0~K0v@PK%YZTlR7qaNbkP25U<17GH)zmpn!NXdb5^`OD#Im@n`inuI z-UgMmt(Ws(jX+$1TmfqoeGt94~RU;d|E}ujR?7-{YZrtD>z+DBMZ63 zZKv_!iNI`IOp)h+5p`~uVK$9%UMr0GQTsrlj+?-69BtES+l_*3HLY=ZrN$;7jMX|7 zYF!fjI5Fy6H)1$uMnRWY7rKqrU_~p)REX#Ayo(0VcpOis&8wDa5!HJ{&1=Lko|nzy z&vH?n;MS3yDpeBI-PL>JO2%a?>h?0uBCfECd{g1uSY6l}HJt}(=I zZaC4s$GHl(&`wm9t+jK|#!bBb!)Rjm#fdq?aB}W2oSHj?7>v_% z2I2HvVm`_0LgKZ-I4c-L7^Gc;#viW_$MN?^;nd1!ac1o}oZC1a=QmHl zMH24IJEq|>$@i6AGjPR5&aZs-67e$eA};TmMbnYU@0hAF1y{CD#?|c;apjYVxV&`& zE^VgeZWxEttDncw_n*NZZ#+%H{uK7T_yj(kI1KAX_r*KIx?ySG4p`8=73Op%MDphavB+6WnEnu>SN8IGc} zpmP+xb8IsVPj7`4eMaHa$HrsZkZ15l$D!yHUJn6P{So66hsM#gEbVh^#S6MY&h;wp z)`HI8Kv$w}lynyK!t@qM56^<1Yc2RW2cmIAZM>A<3CAW)$L)EqqKMx=Uqpib8VUN6 z*9nsIrOR;ZjW==aqmOX?`)_gM$T8d?F~5F_#GK_^K!Sdn1pO4rHX|gRq?@|7lCC1_ zRuOcgpmX$Gp^G}D+X*^h6-C#&Le8(^21n32lCH_Qd?%d+T|*c28))6KwW)|JjPIZG zaBOU>F4{`OjY6){jcLVEuMT68_3W%HWTj^yBQ;f2gHKLK6s?HM?{UYXs*?k9XYMkU z$_Gh+d6?$sbswLhz4@ql^wlh|t(TF*y zH|t~M%-oD})xD7%=!vMvP*km0MJy|9-+J+F^wixOQMpoOZDsfNcawPG_04Ep>hGj) zM@0u`5hZ_b!K=8lcaIQlmhti&_0C8_239|?& z?@u+o)qb^EhYe!8X_Y;-gh?W=Y2`=`J!RB%zHsQ4{fE~8a{?3&D77=s)&}8gv<6FxCRVK zIiVVS)30Y6>;&BmI$!>|q+9MQ_YCE;M9ii&n^#LyukDD3kpw@`VEBQcf@|)`+B=NA z7jaiTG~};3I0!1D8l_jK`->ypr#ffG;*+O)V$X#B_-@)@{5*3Aew{T0zs(wiKV}TT zpUlhw_-pn69DZp4j=nMw$4RPBEEs^33kTrTq5&l3j3(#Qe~JYCBuPAr_{rBu(wW6W zaGKyQk2|rDma~9(bpVdf?T6!Yn7%k+;P@+jaO|Z%I85^X$IM>%X=)FW_pbPCOb2Wr zaeupC3(V`-6ypl&VQ9TfbWBJ>li+BidWRs|C4i*e7qzPUAi%*3epNhClkg?C^r^_- zHTOl0Dt-ub@<(EgQ1q%_2a`JG;eA@}j`3ab<&56gKf5o!fAtak^4bXevFr&PdHX4x zUh_OIZk~+GpOBpIBr)H`P(R7Ika7}q=91{2O_EOIKIN+K1j+i7*4LC_N;(upjD2PDJA zp(fqP0ub&SgBTKYMi+Fg%6qt9yr|~xR@E1^!?MvVx(Qmx<)R%)c{@$eS=PDnxOODy z?c<2pJamiC$Lv=9@bS=R@x>DpvA*v}%*g4AM7Ib8JBJ{>R=U=jyC&l$3OY%7DFodj z=`woWoCKX)ZTE2uL>O&Dr=*7X-=kx3dB)2qdUZaE7QRM;z7$1^Unent6StSWiCgcy zha0Qb(E;6sYk&NS>&H&v`iZl+eo})({l-b+)CH1rMhUt^ukx-SQP&Z2uEbnH;%$J3 zMYVPVDuRAfM9>))b4!;6T{IM@8jHJPBIq1R*Q&cWY24UO#?`PfO{FKqCz#5%;$8$@ zK$5N^>bk7!Rp2v_o}7x5L@DcDF3xB;!%Qe2EIHG6pwY}-aCUMP@0pi2Y<=VQHPp(_ zNA%wHx}5X- z#GgBZB04u8A3OwZt}eQWb0czgq$i_R4G&S!QYaBrA}$1+eqaL z`NXzr%Pj?BAJaZ4J(O<~Z1;mX+A?hNATS;$J|_fHtR%*C4dXn;VD@=FW4dwJIR2i{ z@?(@}`@+0o9B+@BS39rubJ7I0f8=?g9>!R%Ewx;IUva-c35hZ7AE2Le+BVVp`F!Mp zG>bV$&$(dCpE~2HIagh0DL0C^Rh4vx<~2$dlp<0axY!TovrW^NEx>k@_P~VdzN`!#*IR5jFNMN+;ZOP z7_S8l)AQ|t!TZ}R-5Nb_#&f(R4Cke-OdH|rl*N}NljV{l_e$B=>ACKb) zAN>A4f0B;B70+L!D9^7D&~T!EAci!ohi6(e!gP||S9>+X8v|Qm<)iIL^g3hLm>$^u zd>`x^-xmia^uxE4`r-R2eevV8z9jSgNaXwC&)NO(_sjk9_niJXJa+(&kiZ{#bs&zu zI!HvxIa+>l5zF~t!O6ue?H^JGW7Kdcb1b*_(Pz4GzSfRw*7GABaN>xe>SLaD4SdoZUDX7q?8urB7z!@^)eeBgOp6rzGVDt}#2O z5ZonM-$DHh^cAmaIWfu1d{rukqt@En+iE^M_m;?m%>hvptmDIZy(Ibw$0N^Tbg__-m89#@a}`b3GMcWOShA8TQN7LCnYACi}pW7h&rQ5xq<(-f>^TAhbH>1(it*A436}E5RM1FotGu@K^*yH!^-HT2Kwjue;^(5!35&P9T z#2j3YS~dL;5-OwTOiV&D>QCQ=+({p!F;~~0u?>x8Y)9G3&Ik?;7Snk8xFh%1&k_6O z8g%?&mt4s|_+eK>m#bFj(u9GbLXAKbbTssFDvf1Eh>0d1rACt(B{sJ3a@Dd0X3MZfMvSfH zveb}Zo2C;=NG)k{Jyz>iQm*COPRL6_>`S%1hGpI_B7Y^Jw#nFUjoJ1K%+@EiUCX~f zDy4JLt~0r8UccH`{{^%@Uay8aANhTD{xlpn6eqqzPIB%_{q7{}R@Kmp zg9_=kcrmmOtuUDGaaM@x^OP@^a(-yQLatrsdUbU^H;TdP82&#E9Sd>1iotNMGS(6; zkzy{RzbuR_<=h~nka9}n@n-W`FiN^SKNO~7UL1U`F?UN7%l-E-%DA4J5`yJ7Q)ZrC}h2R<9q z3tv3f8()pl1Ks^8`_i{VK`ywe7@?Nw~g~1f2PlWSo$)K1IqqOFK!pkabEE zVlL#Irq#GX^W5A;Y0OTN_ni}Inh6#@9WU8A&LHTaMr0)2G@5P`J=X<2f+Oit(Br}~ z5a1m{Cz2ZiJi`&ipIZ~}qDwJXUH(RTaE%zaIr<}rrfU#U4=qW|+r;IdtrB&DzmeWX z5tobBvCYvnt_5Zk4y2Q7Ja&(rhHXPfVq&BANcV_D084YN3=|}ibaV9F5J7LLV-WN- zMicZj5_G*4cO~a4iY^7cfW*B{d;|D61;XF47FtHs#_Mf+;@XR^;?~OxaC^Zr+|tDS z=Bkaj@!4+N{NWee{QD@bA3H&EeiGMDoR-mZ7ITf8O3+V|oS!5)XGB$ZS>;{6mrgRS z3px$!(R1!6tRmyn}9(a~V08@1?Vx%i+Vn{e`H=C_6zf z4xT0@CB#nBlNd)A>! zoh(}ReZ7IM|J}TG4LQ?RT5Y2(`O`i|gIPOK-oXnl4i31pp9ESHYW|#Bd430-q*>G~ zpugKUNz-o^;npoWuWsHzd{mUE&i+ujvbbZY&VKXzAMnGTy|{Tm4l|XgP<=-TJ56`y zq%Pv}b8Ob|H`Dz*oV9{jafLA{6rw=?AOuoL5u=tXmaQE=?KC2UAzY&_?2-LpQhIJ7WTFDb1gY_?Njcg(2ZTWYj< z^ke+bu#$6yt&po>L%Kdrq2-H@m0mMM93#pzkEiVx=Yo)K2iX9Yj!GxE-#E;u{Vw*M zlpXbeOPm{OpIBkL-)t#qTI0CVLi6#qYVf(qaxSWwvUpTtfuM9MFzcdyH)tQ4VpxwI zcH3frgxPl3RI2|eCNgeBmvWLHA>=IM^t-}vzj$!L`;>%SG@2$N(o&S~1ts0K!}m&w z5p))Fj*@FaZjo_$Em)!7w=9?*!~bW|jvGVgVM$`nurRBxfTm+1WijL^xkEYGU?bNi zQPbL@&s!?2rQKG9|106X7o?oa_AwYG%@z@tRsF@M6qSVQ;%x@YxIyr(u$Ocp>YAii zC|iysy*w(HiGX9-bU2qwfJ^xZxKs!rJmFH-8IEPDq54A(a4O>nuS)I+_3%S-a3~tY z$D?)K+8EFxAEP_A$HXojF}+&{%(+!`F>xr+X^}zuW=$~F4j6W6)!I9U7;skMW;SijfKZqD0I61$+_zc{sS4qrC zz)#NWj}vqIN@)1FfaIO4%5yZHq+hUTFpe)Cf)h(m)DHNr8Q6EBD4BgTv|O5r`~%3-@iHv+g})r_a5nnSG%{w z(+wJ;bx;&Coqdt);*I+LLFkl{gi&qsu=vS7*f#4)e7j^U{(k!zoc&-7EpIHYZhRKk zH$R6PTb{@DZR2o#`*@P^3AjqqevO1(GL0mhb zs=2Ec-BnBO{JFJwg!#q7*F6j#)oUUnI1|lcnxGZGi!MZ6%6Z%PT=8x?3p!VUZxx%5 z4sit-k<}4zbRU8JQ)c0RBgbMz&td2qQx6f2!H6JH&y8z>!Xy%NCOKC~xkL(jOOkUd zgrE~7=Mt@&JCi|z&XA}#BXLg*Nr$gfFk)RJ@OYCBIQZ%kT-&%6H@5De9ljg4_8i2` zgFoQbPru{lABS<{@NwKYb_zF+pO$c=aK~B9Ny;^(m}?lTxwELNNV=7v6C~v~jIgYm zMA7Xa5!b7|+oa1#x&a~RQphEmu*Pt?I((Ftbx0R!l0zXRL0Gq{b~(ugSbwLLEp~eF%{~&!pGe#-2`5TnUHG{a;~b+ z)z&>FF*w|{$~;^SRm;Vb zpf`b2*+y_KQy;Env*A%L72XvRP_uFr{HoMKjY>7(Ufu&9K>Kd;a$}OzEpk- zaH@eYH$TMr)C7Vi$~h&7LO$JWt(@W1BaQMkOCx@$(`^4h0~XK-olb2zu=Ih_9J8600R21ni- zjo+6)jYCVG#IBbg!H3WH#k`@N@Ir@X7}T&fiFyj!CZ(WDW(Ef5)WZwhsN2x4cw@`} zte)}+cFcVodzX&JPwza9!yi6}Q|rd#!lp^MvV{bF8wvV$Vh6)j-dWVOe(tiI@0x+@ zpUogapFyrjUG68i|0Z{Lk+kn(Sy!J~V=|ap2P0$k}G7%G; z4(F=A@No1)uy>>;=oUHWZgfx_A_C%2%O@Jn4nBzUPeS9!1}G#!=c?{3<1FPOf-Z)e zq7|jJBtdTzTYx?Ztudq70PGqw2|vu3iT{m$1~0eji54NX5nL?4ixYlw#?cejVt$OooH>3Eg3jI3O46mE%g?ZBU0u+*@i-c9h@k5&z8lh%jLXL4jB;+k zR?ro;f-aC%+`ruQKRY>BC?PlY`*`~xGb8ig6?Dc#(!G5=F!;6Y|H|jpilfntPf>ry z|KQ~8p($wT{ZI~ap@ji3pbA}(r(D8R;@nr#)a%?8yM!ZdiRhsIz7w&sO3AvPVz1q4a0DN#$ITmEfyA*b!;eW0S`Le90W+CRFK3)#L`tmRx$8bRmvb4&SUNzfh3$HA$5 zV>p*<3KtS}w=#|3S+*g(%Qu8yrF29)#-X-H80xtNAl=Ciu@2q{t>}S(a&D+u)&)Lg z==v$^44(?F@U7wjf5#fA<>HTU_gaYY2uA|>SxP`G$$LENgt4QgpjlixS|??pb6Oqr zu2UaF8Z^ceIk|YIS#wM*EX2$;5>&D{JhG%eP!?U=u@i|=C^a8GaJkG+F2_)1LaBkx` z99{JsekR%eX7S_L`O*-qpVS}kjOm4!2Y0}eEpyScZf&&B%tZU_I_T1{A^PMt!Qg^i zJkho}p6%WWQ~I~Z%fmWj@u(hnf7}3kJbO5HFCK+o-hUP+*H6TSZPP`Abk}y0n14z# z&g|kS`g9@WEbIar7U`dooQrDklT0G$R)TIltg5-23A&1+3rNu8!?NhdI~XoieGot= zM{$B485k#`=x+Qiaqnnkht)@zeVs;mTis;OeoXxOSZ1G1scH3pv*WUCFsF z>BR{;$+)QAZYJmwD?t~MF6CT`I!U=M=ag1#19HU(`UN9bMGNnum3Lj#Nz#R^Yr{g? zuVeH2kL|?Vh^?Ue`ud`F?b`popffg-?&9KtflId|cdF$b^wPIVet+am+la!cYp`L< z7bKo{O5IqT`n!GmHk_QCbkSDC#Kc$)2L=WTX*Z^EHTQsk0IM{f?$b{{70dl6f9`Z2 zXfoqt!L3PRjHC1Gv1Ox_kGcRm+yRb<6yn{0~0(K+oIa zsZ;b;+(Gm6CyuV}-;bLI_KU{jiq41)$`9{pdTlK(naG|v@X#|7w;Qg#-(UmVJqTXU74YAN_ISH8SVqJy^xgI5Fl$0BwbUvQq9OY}zMLQSnCgffkX5$Eph?fQ>-f~zjL!}v!QZ6F+ zCQ|NckaF8-`2)e`nCkb8V!79O%%+#{G2(}$+?c6~^xDG0$>()(Qm(|8g^|TiNhe&o zM51qG1iDjMuzgT43Il?WTQdL+eEg8MR4;5E(+At1?~BhT^uz9H190G_LHK#WF#NrAI8H2o9B1Bp z66Ze{Nm4#aaPgz3aFL~a)ff_UVlBa9zU~=ZBr(54Vt#oO$@#|Tg`i*gcs$9u#ukmO z<8g(!x@`ikej>TDbpp<;e;z+AABio~24dNW&Y0P^C7$ox93xxjVQ796^lVTMowDkn zb$S*GXd4TX(#RFl(Xnne349}rXxj|qd$q-!N4nwlr~6^$_`%pbb2z@3KN5%D7=zzd zJdb0mC*bUcNx1m&R9xOVjn+L4*EssVU3+(Zr`?`f7sa7iTxN3Sl%eaK)TnKs$4U?o7 z#^%upP=I#Pg&3UN9&=i8i+pqO_ zOS(bSTWNAGFvxjp?vj`@Lezzz7ocTk3*@CWhp&4O{G9yIJ|Z0p+V;j5v*zQ9cXt<2YUY0b94b^q&a|D#E#_PDjb`jbkHx!j^LvhX@7Jri7k&Q|^7Hdd ztG65fc>J-Sei8D`@2%s&K~#9S0Lh*fLC2NLsQ2@RhES!WAR1GQHR1oFDsD_AyYU9LoYF-7e zPoW99j3ybRPN32a@U#LcW-3os>$@8wA3U!%zYYxxxz-TFlup<$-*C({EXy=1mO z(Q)Esve?R+6P9(E=J#K~T2Su|u?)^H<=>s)_s!M!*151RWR<(6fv2^?axCo7&L=73 znk?Jo%?dhatkEP}htdSL={AUUQQla}t5H`W@>_wn!zkt?PqbaUZ^SvOgq)+%LV^vF ztR!5QaaW0#0hOl1(^=%ZG_r0#kD&^@ijwP9*A3^WLCD4Sm>rY*K^#YgJeRD~jOh;o z+hxn^TeaojP6(+alvK(nt`ts|Rx?3XD9Pm-BYX|GRN{6Q%8Pk}V49CwSLGhD^KN;%q|%F!h0_25>X7CKcqO=Lr_{aYE7sn;DXE(WUgwG=B5*B<;@;&*JLl zXEb=;aX7d3c^rQ4X&icO1a{6Ej1QmfiPwg8#FXxZ7}>HZ1~jRMZrPb=lbV9&@rh^> zm4t@j$!HXwg8Y~av`@=M-$sq`WSc@v?$Zei9_x*_#|*^U@k6k6`lHzO^5ghw{*&0Z zcoYsTdkQ};AC2GMHEqRRA*I|F7IZ5~SAuRJF+4*w78f3n0%tmCUe19C_lrX`x8^RQ z=N3U%QS{)NG4Q16BK;E3D5jB!qPL81jFucV7twPP>6oTO4qC>rpf^M7$QI}x(;6eQ zI%7fmf%szTBz!&j1?+fg6kciD0|_pn@T*2ARB&w+#5XladQ+=Nx-RGfi=a!Ik)#tO z=&gjHwE*>?FaXEJDsEfXR`oJ|M z2YJ&sn@Z)sN$#wjaCCIOrvN%flFO7SV<*@w>=6+WR%sk9=jgaGtt2=qe>X`k>F?&v zo9MRUe`qpei|O{}Oy7py%XZ=Hk3Z?3O1tsR9#nbwVex+b-5w6`_*;j*L(yIq`)`5$ z-=RwRhmkYlO|1F&d+}X$2mU7do}WnGzrnbXqwR#;LXsdkI*baxR2VgKKLRBr%qGnW z<8qD5r+(Y@>llU922I3`Vs1o8JI~L{7ZOedR;{pV8WGnDgqA|BEC31t<6&L~S8b(b zDp@weG_PiuZJS7=^;luH9)pxCjQfrDtCB|f={x&EZt5TIWWWHoq z^_LRcJc?stQ@~ZnkoO@Ue_h6ns5IMgQpT-NVov9g5OP|!QOHHUjQdr$l_N>e>%y%93wkcec{6xb$U{ig2I!v9 z9Iv*>!=|p8*wH%`pY%?{Cw1D_74jhzFtv2#!z>>OMVpAtI; z)yF6O8(?$q23XgvK2~!2yrI4C()1h3PPH180rK?qfu}ya>L@$ zJSqV#qLWY4*LEhT`X?!|~T!kK_3J zBXN4=D4Zo>KfihmF0SQhI!U`$&Hd^|5^%2SuE9}t7Wc~^GbG{!OS%;G=W%Vz3j}pH zKPM6LPHZKC-%8?7(_JL_KezsQ9A7z>^6><|m^}pR#`eaNL7gzALrXl-G#9-x>!Dpz z203jSa-!4FFe+WpATkY&Bh%3=J`=6ev(cqqJ@n6OjK^E&;rT9wnANB4T?E}k(v_g= zqOOa1h8{teRoyda{tUP|2Ed(LY4?s4g3b-YSqVDHc@z;55Dy>MU<7-|AS<*En#Yk) z$C9M8pbIgVw2Y?o=v=gj%12>jGqj0pj&8B7@I-buEbR6;);%@`pFH^#miOpS>Gk1V zsRqK`BhetdE(tn`JxO}Yq&yOHhU8p}qPHeFml)-oU^y2wr~U$xbQ1K`7I3NRg&-F{ zbPi9$%Z=M&(_=5-;&;E`>R(52{Rj#A(UZ7&l;r&AY3dS3NYIa-5eP{aa;~IYa!Wu$ zZWBdkLDwbSDCjiIk}g|!r)fygg_xhYOyX?@$+wP{rpx(N34c;e^&8-5y6j4%m}^~4 z)?b?Oq7-lw8Mng2Q&1})&|I>atlIaFaXHzHnY7oz!<8LL(Eqy#x`l11Sg~>`Kei_S zSfHJqo$ch>)z#H5jjOjiIy$08jT#6Ev9$DF94z#6=g!sEbnkz+Z{2|t-E?!N?lRd{ zNw3%UpbSa%^!5Wi!e?RGyam zIT}y@7*Vx?aq#EUxN!IwF8}-|ZMV0Hlw11i5(yE(|DsfouozJiW9&D@Agxvy1e^=f z3XU9cx)VXmW`PnBPQ3slk)kanMF_i^jtX=7bYdDBr^&cjry&pavTPamPq1Gu3%FUj zMBi81_6k(N)KIW3HKxap;B!NrAFBUfJ6}xTyzw@P0wza!D^Q`Dx-`t&T&$40YZ%k+ z1`7|JOI&r`gU$g)o(t-{l<2P#7?9&^@_wHv8MPg@ht@49ew@1Ycstx2D#MxXH%^tP z5KM(|`5k_ejJrYm+O+CA9UDCw&X~!vz$}0Fi`nuCkq3j6bDrs35kgMqi)ZEX@T7vg zkaFH8y3U1=t0=i%ZT%huyfmY?^-`d4E=){HuU!B;!nVI*!hCOj$B5_jZPlE1lO2-ye#B1yxG9 z6ht+@Uc2HSV79)03@=wlZL0eAP-4r~Nk%$qA@fZ*j zi|&!p=nxu#7J(sXS~Cdsy#tZy?vErFUqn0kAgnrxdvz}abC(;gbM{AsYXD+Af{^SL zj0~R;)b5lTS2)`h5ZRGlDEzp`Zqp}Jx+idM%?O;ULs%+iHf)0p!|9-X`!lX_<8Vh# z;Kq?tQp`0uzsX`QK|i#NyTsKUA%Q{Wg8d+=%@~B; zAni_WZpfMZ-?idy9U=D6*Mcn^k#dDX(0)GAdN4U^lKfs#K|R-|wQ| zzI_AL9IB%BOl~Z08*)q<-piiyG3L#ii**||;D4Wgf!lYAaJ!VBn_ISQ8Lsd98l9e- zE28oF(>9>&!xfP;jPv^CG6nkj zE%_-8#`*4tVwWlMCG%;uZC2P8s!PKB*!|xl^T!2IDdJq!)F|WHapHZ#=Yf!NC0GWO za2JPR8d-gv8+oJiNyF|upnmyV$S3Ua4F;RMU>Vn4Z#=lq*SBf*#=P3_pi3xL3@CN5w|)te8VI zMUBe!(K)UeUde5WwItBnx~JijUa8nYg1&@O=R(j)ym$2@5$|6IyBHzrwFRG% zoQr-E_+9;_#P6VKneBbE@kt+AcJDga+JnTsTQ)X!&BnUU*;w7NHa={ZiTB%N;O)Y6 zyipwUE&Tuh|MW>jK~#{ACC$^ZC_kM9J{@zLrsL%%>6qOp4bvN>U}D{5JYPEzqtoN@ zSaKW&CB&e2OfOX#lB%Ovg)9@CWX3O)qBzO*&DD4uBzqIjb67^BUleo1030z+HIIgUH z9GBNTj!UaX;Npjm;oOQxaq8`1IQIHr{Iz%hep%QT-_7fd126Z)?itBO%1_?gc5 z@QHSKeQ;~c>D>b3I_BF8`n^hee5e*Z7Z@cyL%xUZ9Szs&{_u7UB0*0SaxMg&Bk4lc zrKCp@p}ujb=@y1i?-(?UY>4KuB-BJ^cK<0(48cGa`StQwA^euJP} zMb(9zn@Ktgx<%4;l%QXrF3Yxf-&_j15OR`l_04oC=(dpTpQm|Q(rI}khd)j~&;}tF zQf?7)FIP7!!fFMZOZC5rChU!Rjz<2BkI{7UdOMl?FDRI~372n|{=M&VbkjDAhTAp< z$M8Go-rn9q>dnTR!PVqBLSI~iZN>e``1dVb!WE>qA1>bMZ#2`svACwwcjDo)57D&u z{t#gK^5wYp%|WC-@gW+|B0-_mX%d6Rf+~f?f+pm4@Vpk3 zh{-%SSm);+QOnWA?tb9>(Eee}w^KodO4EY3G2MuE?EXcJGNp!Xr?G?b#)VNXEUWJT zi+)kqr0wK=!25*G1sNqbM9Pg)Zi|hG>u6DOSu=t$?0W^TOZ$$wHD>3r3AA0sqo$*N zfjrj5UniF7?BMfPVA-F1Zt#BNhTmAsRiRfGbK18o-ric*RKy7>zkGZw%jW#+>!Lg{ zmi*bEO@DvTx{HI)WsyhDKf&9iNx21?F632jah;C6yZkP>s=h8F##{ z5mo;QzF)f0GPz~}KiFWwl@B+{OBpx7va9X~B_XAqrZqz><6hz8AlGjcawD8q&U-~F z=any8R-6l>%01`17+BCF+}#jREfnsR(n-=Ak)$_;PvxcvbE=JJ8Z^i9g1T7WHWgdD zrC}Qh`u0AVB4eKtkWXHa==w8}GNu z!dr!zSlT=T3v$yiw@C_KYLtvw^^-8YULvN}O~4dla&|l>WX9t8)Mz}F5Q(9Y;pke6 zq}(qEO?*h!J^hgBQ3L6oKFIK?foy+2GzbksUQ8G{Ulh94Nx;CIG(6ri8{@h*#LI*7 z@#ZL!_sQMx#j6AGvZNq+{!ysZ%Q7HCf6Qz9~j zpx2~rY8{-07xOyfv+=WV^}8Q%{qMu#(`sD3odx}tt)L&3a(>HJ(Cr$FGoa*L2)g8k z7}f+`NxBeo?x(KJx6-Ac00cq%zH4aFbJ36-3pk7RMMmpakbGZfNXD;=@sgX2l5>9V zo$`47?^77iwWmeOH6izOQMl@O3EU7F5^65d{{cCZHzQ~IW;7;ow3W&Kgqge0IzhBN(*v+Q1ggoYv{F_R_y<#Uh8bX3Bc##lUNfHY=L-{b3RFQ513An1BY?N{j z9w+42m=9XF-v94owS7iJzAXE`I4KteTm4v>pr$F!wD$^0msOWgLS^i?MNKQw3YFEg zf+-a!g^U}af+inF-Y-_w)@=p+ZWyFoM#&i^<(m93;uvV>q58xc_w)L7_&l~bum6v* zT%&TIs&hlVn=8az$T=5kxj;<&lnUBP0K9FXE`bG70m1dk)4Qt#@(Dm`04;FGp zMah+vbKdzLz{i!hg}0kg`@sqtuXDHI{|=*s+ahW((Q%TEx=9IV31g{bgpg4hpUdK2 zAm*cOQTw4-G%;595n8^GOkNhj{nm0Xr@uS*GOa!KGA_~cp&!e8LrJ-)wocaqi#gXc zU@2$8b*R9v0!TR*LayzPdqD}hh^QN|mvr98#$lDFFs5;SEJALff;jG+f0pxdWy*>! zKcL}sDfJpQg3e!`NbvSTQ1vi)R8E6iB`N3u4vmphs~+YR(O?=ck10S@^zc?2Sagb#SoJ8!9vb2yxSia-tLDBZ}q|X<;0uB>wR!;X-}M9+#L_u zin#@YoR=u*s*1Zo(pk{8w1}WocskdDYc*el_(mbhAn8)jB`oNX0SO55j)tFmIHGFA zp(%+uN6`zY+d@Rqxq&!M&`HcWiq15n{`|;Xf``8R~Pg)B;RdR^jt*HX*fd(dI8#Gwm>e;!}+X62e*b} zO|%I~!@@Rw@a_C%xc1$TxN-OhN%%<_J!e5ba)uFkjMLLdut{)4B-|k1O3ZIuxI|)pk)ST6U!(4&Q)hAh z*h!rG`#8@3aSZ2wJ%Wor{*8P!A}tL z;e7b7Ux1{qK19mCHHhE04&nRPB68naB=25}h&{w^O5eQ>QD3h`*{D!7nYq<;-*W5q zHKH>}(2M`;*RP+}XaCo}YX@A~y$^Tx?#KUjZX=<;CAaVPZS?5a2@jR4fIoiw9S)9; zrb2E@xW5k-wyD6cVJ8JjPD+hYYzQqPZUuiknz}kdnk*4=CDuwlSXiZySn_F^mY{+x z;$oZj-@qbB$CUaNrqgL+ zCdAEZoS{HjO%_x|l$;7#stTp3s><8U`$!47nQ$wVc#C1KrmXrk)OeP1hK{9G?F%90 z^1Ku4)1hHbvx}V5_N!~*-@@)1B5bA+=e@RHd4F-?Tolmhyl0u=LawaFE(^lEUs(X` zMVzr5Pk|Eae~NLLrGoNeizIkQ z8HRb3SnGm)uZU%Glw1>YH!V`m=ON`=+^c9CtllN(YeGj}L)O?%^M8wNbX+0MRYJUK zLC4CuY9&;sV<;q&knfX|5b}M%YP${FD$a$H5z%#82A}szF1dSuQm!!0d%w%Dg_dF5 zHo6Y%;dB#ddMW0#eRN$&Dd$LeIaIAsj-|_*gtml0Gsz79%2K@km4*28G9>Z)gm<1xKTOU=#{`!_mkq z7@2N?NN}o&h-%<l|NmN-l7(;0V|9)!w?Y^bRsS+ z6Ta?YaB=XJ@1X}IYLYGy)!c))p*Z;-dT7m967*2`ItQYDR72#ElsAthA!k_9NyZCf za)qSJNO}%QI!(iobdvPuQF-W+T!RrW z0ttFjE=f99b0-mJgrJjJ@gP) zgE#rR4fO2Whkm@O;-{Z~FvQ{S&?tTyA&1h_(oKcjme87B&_%#Z6s*vMMekR`s$aua z$_?L}Hoo&~k!wq|M98=h5+$+LA}d8)Mqw13#)VuN5v6r8#`UYTyP~$i*w4$f^p_SZ z8COvL#CB-gEDDdRKuX)q(xM7!wlZTWy!|)WuHT5=^ae>2!(5Q0LL`g08xQlXMw**Q&2`q@41~4-G9sPTQa$xw%!BA{YLP9 z4`%SP2_k+Po(v6T*7boZ3Z-hs%iQc_lhmRBZ}VIoIHO9}9Y& zn!X5e45i>1LwAI3?*)%w^+o5-I6i-CYWLVRSzFrMJPW?S^7?pU3fDw_zBc z(-nEawc%ZnTXhddZcG!jO3X*=Bu&uu2)Yt<2}jNaBrzSu$*gH3Au)<;w~cT1Xpnvk##No)Me@t{2u!Gi(0h&l92N27cb$)CF;L;5$BGd zz~MtbJC+_p~-ijqTU-X;~_^k__fGGaKznPb7um> zLr|5DSMuH+B;gwoM?xOKk#mBjJ!0>AgnhG$`d1_R>$Qm6L(}YCh48&A5pr-99Gx7I z|KewM+uLZyc4SUogAd++S46%``s2^G-EA7PKd#bWfqwAJgj_ZjXKC5JmajWWfvq$! z_To??nv{#kq}El{ialw(CkclxO$N*gB8(a@qJ&DuS!_jQoDk9_#Y?VB6EJ}$TtP*+u_nCO#4&5Ln;f%s-Y|;de%~IIA(ktMLt#k14gZbwoB+(LUQMM9rF`Wrk>1sKW(h9mo$SF_S`{bT{ zUMeY9*S-$z10CCO|LDAU5t8LfLiF-iY za|rR-Fd?Rv>p)GTt_9tUc2`MjEhNN5* zb5*t7(m0$^(5+>im&Nx(eh0n2ABm)682#pC2tki?&&8mmM);^L$#KhgtZS7>f}Vnn zBn7kOlJHrzrHD@xGM<2mDe)Me9Eayf$e$r0f0~5+DH8Hg zv9WkEItC+%;ZZRd8Xk>-VNvK88j0S)QRopEfo_4}=o}D^4*p?iLt`H!>jos*ue)uRlE^c*&F_qz2IBPlVsh4e&^lbRMC}= zl{=ju9;i{>i)7s!VQw`L>*a%t0AJ)r1)@tvIELpYVoIkvcw<;Dw!Y97-@eivhnEh( z>E%O6%!dd`zbGQBR|p0;37Kl=Mu5`6tm0yB3_QdLhg& zo+O-PoCRG-y7s9xmUaOcCZhUYbK)^NqXBP67ggbb3KAiaP(Zrc{8*l zId4aD-Zrxkt%&TH22^OEgXZ9gaV=V6_q0hkz50Ee|9ls&{PZ)f|8)d64xg}*bMBf6 zx&bH6sMi@8D*b3J;lKC!0BxR7)WmCpTE@2eC1J~~PHO_K8KB;=RRoW+Sh z{>Fh_d$9ez_1O68n^-?>0alNhjb*)`!W-Ql$J<>;;63Vo&|@T4QQErxW3XxPb67p- zX@q;V}yj?h!XS$J;&Gy zk;$yI)v=qh_dCYARxkAsBMV~ z3r87mPZD!yBz(03ncuC2-+?tK`*1na>1_!K3q??92vS}cg1|#tk#OKsWbfXE23tQx z?GLsiVbK~SzWgDwr>{kmDO*u6brs_St=4 zw#*XYLL+t6{Gy5_6#zwbM=Bt(l)F(ONmN;g(1rZNX-|Cu5xcZu47Ef^M0|f|7DC&KFl*chRb@^SMuX7uWp% z&oK(QI>+>Lm9BM{s+B~vlckE`D(oC3mkqqh^H#_+p9eILF0l8C_)U=aA9xt)yJXTFRA}D=Du+QeLrKS(GnZ2IWc2xh4RM`v1q?e}L;z+-dqS zD5oQxoO8}OD(9o4qnwdYLZCnfk-?Y@LP$h`0TV?OIT*0P7~?SG*`1l4*$F!vzuEuH z&aB5fGdsa!8|>$Mo~o{X>wVuoM@Iq7|GPfvy07Zo)!o&7>VALK)$WytN#ks)^5ee8 z9+UE+1${wD3CgE6AYl7t}RT#v8GxsuAasofQq(T2_zErFGaq))d!b zbzu!w7FJ_R^u6{9EX=LI-0TX>G-6&#F)u;;v|_YOrJR$xDTSz-T!0F>o&=qg zl46Q_0m-JUr%lMkwDEbozIm83j*QL4lrgzT8JkUc&t}~q2Sw9zQI%DImVy#YudKl0 z=32UCBX%ul!?iqL_n$K#uU)kgKRK`&|Krhf@psSc#Xml`2mf?*7yj?FJHL2AR|LJW zq6dZ9b$o#3n&^0Kv4q?Sy6wST<6$%R!e-MfK4VHgda7okziCli6g?*B@tejPu3<0$^=`yb$+|KRuV^Z)YS@r%FwUljD8 z#(!qbi=dmP?Fn*j38Lweawq6!JW_Y`+vaC zfA;tIhrjw?_{%^03;gj9eg{8z{abkN(dTgNmWS}{rFY=z-PhyUU037i&MWcM=1cJG zmdkLIJb(6O6!pvTvSfYxm3U>xm3VB^J`_w#=L2>MnQYUE8XlU~x<*Xz>`tHu)4MD) zMntcLqVF)$Z^S<)|5o@d>n}f$B#>V=g9m#r7or2%^2k)Wr58uTZlP6KW>rq=dvR>U&3NtWpXL3{Z;aG6bC)oDXpP+i_ zUJM-mAg%+xrFVZHbMF5U&Kx%pzxlQLeINRtBH`*Z?sy%?CH_;?y|$(%QpkN2Q7=)C z#v>IARg?ptXgg0>X0OuBW7RgoNvy zDDm5I_leH2%8C(bEfMhDd)8}k#Y)goM3-hI2pIYCW5Yfm?*g~YLf0fLtGu>~>Y7iXQJAI)ij27%!9T)C?2>+HQqInT;9V6x3p3bSxp+r_^ zU(gqomeEI=IBhOUQ|IBV##wlI%`CjLs)2&uN5Z=--y#4m56d^g7A`~2D_ z>?M1u8?if(@N>xaN{TpTd^2TyV@Vy>7uR8JQ5{wl)?!&fEd~l|usFXO3v#P4FQ?MT zxSFxg%qmA;RvEf8%FvNkiq_N;G*Zm#Q;JYKr3lrea&i&MCKpo33s5qtkWyZNB2q{S zNG{2mkk7K2PeCtWIW6S%EadgJOm>Vd;I+-1K?jjt!d>KBzaW($KfejM$&IBP(BxvSNDL0~?Am~=oV}kCQxQE|E z*L&#I(@|c~f>a)K=F~z|7d06XH&Pymxupg5OlwP8QI^+Wgub@06?5w6Vz9-FqAO}1 z2)dJW7fCnos5g-M0c>bkfh+sA-*=DbBVf@Z;KoL2mF#E z{%`;LXZWZ8=Wp;c=JBs7 zO1!Y+YCKQ*KDy%yJbm`%hG)pLl=GwF?EL|kX@R z{xbs3zWD2LV)@%(@a~Us#+dP@`FK-=oQq}(cGoo*o{*qdRX1RKK@%2Ih_`*?-(&9K zPq6x~?_$XVZ=$QM6_qt3YwF&}hu~#z|9)iNhvs7}yyth3lbwaxcYcf|ikb)W79Rc> ziw^z(1uYBl*{}cYxL;d)~2Mo4I}VnXh)f)olWD`KWX z#>z%aE@Kj6VWmp2l4IetP|Abl1L+Ed*$I_LxPPVL^gz(#B;6-i&TTh|;Fu$D$Lb=T z{xPdrXBf#b6*qSdVyFV=r~Y(@KmB<4>&0Lta5(w$myMWawjEp_D~zmwiG+xV5prEG zoe!PQNEsKNT%Q!&hNRqyIrpXO;Lf|b9%la|z+HQlWp`cU&ebrO%C)!Nh>72hm2#cq zpu7iV#z?s;x2%xrlTb#;IXzj(W7jH@@LI?3_ryuuhQDnOf8Q$iCeMUr#tJ!M<=H2X z(?TH^M#{B5_hY1-Wl2(QdR`w%l>Bt#_LqSBaUf30r?EV;Tr%JK=DZcruQ0q$aYQWR zm$O(|wdGXJ)6+>BubZSijFuCLm3gN;*pA&+yeOM85)xZ3HZ2+Vw<3JL254T?_Ju#s z-`0rGwuizk<44JjWV7s^5OzKNc$&@am?rEzr|R5IQm*FflZcUW-ZK*4B=H^zS}%b_ zxjtPuL3h$D$#%zMqvaCw(MHTCj?s?}ijX@AKfZ_$g?r^Em1VHMv;xIbn~^?wI@I zWty!&G`|B6%u>QK8b|%6T!Sh;c=R$sUu&7GWaOiA*PqEyQ>V`*_Ow_%S&cKRTObBNO9BrDDS9sVw)Y zsLsj3y!uLPo7IBrR!%=bK@a3SvXeL?>4Bh2);&RQtC^14(oW>0RWieAD9>*&&D@1V zT{M7Y!zT&kB0bA=~(A zBmcabp{fbFEsL1G`3a^?%|&@_Mf7?JG**?PG_@ee?vz7@Y2CWfv^xcJw9{nud1$o_r* z``?cg@ z94?v~BU#FQIA6;QNpSoDzLbYD&dQXFbh-+osbmHf+Bj($2Dkii(Y75NkJ?tWRJmyZ z5$nbFV=Kby8CWu&F>x%?R5>K+YQD~jmuUr|^CB7d1w1=~B++)Ld9sL_7lFi_*Uh{x z!Q(f$eE8+ybjo-f-ufdYVmsmep!^5-f{8G(QmI!1RB;X?crM?)u9|mIkw$Im4%){k|#^2saqw*Yu=II!94>-|IPasahqsbM# zr}P|?m`~$e-gmyBpKei46mvCCS5NE`a&`EoRO3#{ zPesU+;Pxcw>SS(FX%&j5wsCqpmQ>BaJqu@2%3JZ?iYC0fvW=47fp4wp#Cz+y@!p1B z^9i#L&L$M@Z*QMX0iS~pcg!_>C*a$h_CDvmclIp2yLlGg+B6HVZ3DucAD$iTrI7dFiT)luwy1|P-h~I}cj3Nyoj5e76Zg#S#9b8f+bHBW^|s?{U2V9w zLsH&~OPgD8enT^M)izPa>v2|D9VNV$0$xi2ufyu%daR;^uPmy^vch^SEvTc6*I`j! z9Ywqbvnk}$v#ZgURfXP+3iM=DqMK<~MmajtOVO4t881dN#k^r!3F;{1HKdYKUOKr5 zg_QBUi3NOq7a)tmoyGAi3VHU#VhhDQ%Rw>E49J*Jgj6z(>rADjr%=$1oSU@JFj6Ld#{oL46j2zp#3ozzg$ z4K9*y1>KkQ#;P8a<~Q+%${m!(k19;%~*vE9G*ovUsE#!k8Ik5|M9@X_?ssl$4{Ss9)JJNyZFDK z{s{l_hkuG+{Fna^e)&KD8o#0x|LTAJEq?Vk6m{{p;_nD0{crydKBqi?_EYkAN-63d zzoKB6rFZ_k>RhMu-|N_Ui;`$S85B2f}P9KY?)tPLFeE;iry zD(e66H6!AU|KUA!|M?Fv_sO@=dDBZ+eE0_@3Z61`N~Ay!MO{rDY8P%r|J~n1)0#b4 za#(V0_j%^{G}Kp?N3NGhCAU*qQHsS6*t{-0^nE-0-rA-95RD`TE? zxJq4sktkMLt&j&Yu5qoeNRxzD+l>?B1VX_Y4qv>9B3WG5G%=+pSy@k9j^qA*LU`N( zF(Fr;g9@TKh9G)lDst{TSmLDR1o6*ZB2mj9m!V|J&0}h|uVZ87O`@1S!OFOhoa=`a zC&DIj?V{sRG9HPdpH9Z3;4(gLJr2h@)rxf{Xd=(1g6pnRV#U{+7E0ww61U9}Ai<2- zj*XVvd&Zq-$+&%2pXZmNYNcH0dhpr^cda7fwjJgg$M$!6(Y6B;@?i4I3c26Qx`~c+ zJWj^rq@3_rjg%`&u6r><*PHbp7bQ1D3Gw!-Vcf_tHU=%%hkl& zcA!V$l~9Y6AU(}Q3HFJj*PImDryz4Yl=87w%GKFhDCKIt&iSS(I*F9*Q$gD%85752 zF2%MmtsS{j>ane<3r7cM;QbXXcz;~k%Vyx|RkQHy8p~6wX5#VXGx0!wAMWAucg^p`o%4Ee$J`#=F{cN& z&F;djGdpmzn9+e7``U3sPY15;Y{!-D6!5kdT+q^tJ&g@Gr=bzsY8$bosu7zi8?d3G z5$j4Du!gKEX}};we4wxf{c4s@7UhdtEF|;usxc?G8Z&dM(3f3>ZVGuPMZAqd-kMQ` zmh?)Bcm-P1%F&cwfkviv6!V(YLR3yGL>Yy=Y>JJL7fdeTGrItp6AJiuzks5xD7c_> zk1ydhD@GdSJAFd2A%fN>liM^P7U-Z(QoALGX48WIFOLDD@rZ#K9nx*d*_bQe*ls2gFg6){v$O@m_p%&y)DQXWqeo z`_Av;?|%O;@XvqoSNO$WQqupQ|BcW7>TmJcU;h-J|F56n^S}Ljd`=Pn{AWUvZpHj_ z3is!Vrc1oT$U0HPUGJ~|_0K5(e}|v{_rJkE{ipwlzyG8EiogEdKf!8N9e`{%RxQ$HNJFZdyi!jC*v7WDy^VCXhjM1P}J7ep>^XWSai=vIQQv4#6nM! zH$M6!q~;Yyu9rw%RTZjh8YuOtn0NR`SV-yi^FI{*l=Ob?TP!k>_xSmX?)?$Y7&Qj? z&2ieepTxgNL8p)>($!MWiUiA`pcsWh?h(p(P$3K9cqrt;e1BYG>#b{qSHf&DLTtqO zR0)LJClGG;13utOUgA*9l?dqLvI_WiphhX zwJK*0C&mF$;(aps+w!*`g~{JY#QZo&%GHcLjrW8)d{eYMeD7Lf$$Khn!k!YK;V+0# zvi;!^6G%DBh4QXr(0k>I{)f%iIj%^#BHHFX^57W1FoJ#Lr%c9ldQ$GxM%2?!uIg&R zTPwQp!7>W^U<=+}+KwmYx8mzv4LGl^7H3yc;wi{GE1R&Zsu{bgn{f`=S<{4_6zFs6 z31xa`Lj!iy*JERKEe4CLupqw@bMmV&o9XO4rerS1=ND9AVNn$p7gb{k1$#hE&I@X> zn1a0^PjX#@xq)CS;yo+71~bX5tQySD;fN+B;s35C3fo|!+nh|lR_4MxxlF=3n)@)#2F zfH9V_4o(|8rob|~0B1B)%7u~hYDc`BC*sSw5%d~|C+Km}bUWTy*@NPo1|DDzZ)8Q$ zn}hezDdjFLYev06lHN*@Z$Q@65>#Z@V@~aSEDM^r+jr3|Lkaq7vbJd{wzjUqzK-?S z-?ItV&pHbS`gh>54Hx36v-acO!F{-(Z50boD=H?I@Z#5DX4!O#`eF>!EX3TR4y>=A zjWt!hSX(m#+dKPl@tjq-e(@IEv1~UU*l;l(-*q*fzW8RmboF7pcgJJ+@5_h0b0Kl#u2n;-or z{M9Faiog8mkMUo>{Rj9@@BJSBZM=KrMZ9$P z<9PC>`*Gx|J8>`fdvNy+xNG}WxNY;rxMlr5+_HKP?pVDS2iNXn{w~BfHeZ4#w(ZB0 z5^^pV%6P~XapO;uX96VY&vLz^#HB|$&4@d<Ay=n?Ly_&Jad-kAg%NTuLeA?D zD{t}F!5l-9Jbn=b;vEU+`y{Mue$-KZ&3Ps~w;`;+hH%{P;7vqJIk%fg!al!Hbk2nY ziTSls&XoC2lyM{ETqcC;Sa=+K4ul=N87b#Am-L!Xp+(E_$dHsL;?MJ!9RXgHJW0w; zM{j&i@K}<>+?}V>jlb>Fu&>1O<)-VIE+IFayzv@`oxBBTT<=3$DcAFG=xzEOZ+;>= zKJ&cQK0HD}{sQo~>-H03qWH|4k#fOuY$TgyISDr}8YAW0P6m%hP1s#e?20B&^~Bt? zR7wfZFi8~Z(~Wul3tr=q;+n8KDYwyoiMie{x5N5|x#sCza3|%a)ldYXT%QiOFYT`^ zZ7SM}T9GxW0*gy(acEWxK3LIi1pU3Gt$1usD=w(7#`5BF3Un3Llr~~Zr8-z^!j7sY zY$IDZys4rA>nrN9ro0X-OC{wsSj^>TWS65w5Wr=-u`D@@`~MxYMQ-peVa4Xyz_4m!R8W z$+;8sn&LLz{FQu&l%uh*4FeQ&MbS-%aTIW2MLk*0*BF*yOUrWX>)L?J`!?gU?hUx4 zb2V;Sa5f%Tbv~Y4zaNjRyaZSFZN!574%AF8L(SA`v{Be+6?9-#We*-$M-gAS16R*j zjvY;Nv8A3gEW-BILG0~Yjs1%^QbT1ysj%q4_t1aGcTW0KYD4`~^n4Bl-52pBdewt_Ct7MNSy7T~ zSYk3RV$u{NwrtK+U&xas`P7LLb4S$jG5i(*B9y`Km{j?6*b3u`Rx*c&l{G`uypzO5 zHa$$`GNF5f(J=d3V?l-RKy31>D-c2*oByo(I z7U0XXh+1Y?SkaCYbHVuu+w|`Tb8dM~6%jX;SW1l_DYt^F>k^bJ61!&H-tqAE`^BL1 zYV%|Ar|V$y%)BfAJPregb9s!poEIQF1*L{<5cnw@s5D za$G5oT{nZy)BlT6nU!oyx@{+K636kFDkf6QiKa=~b#J=$Vr4cOf0>aiFZ8?$pS#?j zeFm_M1^7aJy70H{h7GQ1y}KWD&xfMT@;oH|auz4$ncS|T<@(H=gj_N!BzZ(OO(Ql|HDWb|eMxaG=H}O;FQ*nAS*%-TR-%FOT$fI17nJC_ zG>%KsDd-Ip?gomt(t65y1F6@rNORcvjiiY}-^BHrE^hlz|QxW5F#O$m^&!uoNlAzR>Cd$F~(BR#b{0+U2G*i6m*Jt zjA$trR>U5-n8H{pi4=ius@+i+p~ zDqP*S9tW4~!V?=V#nT%v$L;gBVO8l2G^bRfiWh!XUL6ju-GLuocRT**Yj@%&S9~2G z?7j+5t=)@T=WM}+&4bufF$=58d$Fl?9xh$99(Qiui%0fwnM-cObNg?>%a`ARmoB>* z&s}^gj$U{hj$Uv(p1a@XGk5Q7J*vWnEx(ZL9Lpc02W%+5- zWZg=6qMTcTT>P09fgX5N_sxni#vN#b5L{_lEW|}{y z*E8?B2h3|65^_~SSs`@qlDlT>Lkqcs+Z>KCe_tf7{19FXiMK>No5zyPO14ss$7G!O zHh9B2HkL1&XPqo@*=VWDbJ*oXRvHa%H2EVdZq=}EJWwX zohLUu+_bM4E=sN+}}B^kMSG{pkLWJ&WCb ztvnBlmKn)%3HU-Djt63Ho;Pt)E?A~Vgr2b^5c3RfSMQcjq0CBT^=|nTin*G3TPf%9 zrYKE7^Yje&(l3(Z3A!IGSMU7lf51ukxP;E$jFboKL<#svND}T7h567qZs2`hmRZAN zD8ky>7TnO=j=N_x~Cqn?5t9BXH}xVjN;wUPC=)TH#OserY5?J<)Y?B(u9kf zn{i2Ni{awdR$NGd-`muJUG>e_UfYPxRrOd`UWXN>H6|LrkkYT_>$7syQClT?Nf#x) zJ(D7zLHSOvL?fxE(3|GyM(QgJlKOfh;^ii-lZ=yU`d!u35>%4%X(cG7lozFxAYVdG z8P6c5gEk7Y={=p&>muHganp-Br&}oHnl?6wa2v@EM4O_l4%!smo@mgp6KlN>9(yO; z%C+7LSJQN+BEV-ND_1(ig_sM>g7F<^ERcN-&EO)d=@N8dQMsi>dQJ%S7N2y3A!D(oyFCZvwDBo7n7h^^9A}i^Q!jGU+(mB4NpQ)R**Zz^#k+;%oDE;gYVk zxTs?}Zk)3bkFC8BFDRP6&uM!=GNw^h$EoZTO=r z@5Jw4dwx73a=cio17kd)M5Gw{Ex-@7;VizJ1f(`0m&5 z#>Y1@{n`P1M812&UHIs_JMismZpXK-x*cy`b{k%~@MgTU?HMZ~15~kTH znl2%y>`8{zgSQBz`1GLd4MpPors-3tHakGTAOahPkM`+>)h#d4F$@}tzeQ_kawi--?}$uG~Bi;|zTke_a{L-IJD$2{dp z%8igSpJ_qQ>qf}!k1gi9IdpEmk_6Xn2>i0{G=kX~zK56_oRjPO@ykoj zCFXifVDk7erU!P@;TzAlBIV{d4S|Rc1r(iyUsHV>#vc_#P~f2(l-x+^hKKH!E-C36 zF&ag>WAx}!K~iF*z==k!JKJi0NaeoXOuxr zD)lj)-BON7%H0Ns{V%~I*#-zbqsS>%)fGwL^*V2X1J*JT=5wPEHn!vCMQ{?VS|uht zTwoTR8Uq8+WG2Mci2`WS5*~PiG~>tQp8-)9IVz$KIR>Be4~a*(IN_m!IiG%dn28&Q1g0gxsci9L}c9l zqKBJ4{}}gAcn)T93v?r2PsWi)Nl8)EWNH|&U*_=kGLlcAG`%=Qc150A)GX7)I>4x= z5R!?db55)3Kfv5UV)6T2KYB><*KCyp0||Ubc9o)e@>Cbm;#!{1s6K-fvJpOs&K>l_ zo!60oRsml-5JIfg$K6rY}~)`w4>;jx4oNW_0Xj2ak#ztSu*OX5e<#l}0g=Gp7T z6>kgaPy2FZQjlD{?UBln$7>}ydDq|0%DO!YaicNTO7>>j{!-|LoGiZl(W+xQ7ZY|! zEoJmt`*)nNDJO8gV!jGGPbM7In`5Xm(H9FMn_?v^Eb$g27v#Ju-i-t9#MQ>8cE+Y2 z7w;%eh>ok?5xcn17MAk#-Yy?_jJDIYxUFcKiQ4ch1mjm9n#Z+~yTHGyU9U@lhLNr< z)$aKDCe1X`?HdO-CCYFG4}LM>i#EZt#=5(AS-9=$GxCx2h7q z9wf{pgSmV`T}w;%p0mFVX#aSzSaj|y1|3A2o~hY7v&*s(1#(@Q#lz7RY&q(|Vxu9Ux`DoUX^!8M+GEBG@=TSP{>^P3@grsC^X z5nLdJ4j(u3mL$>*9LOfNv^d!vr4Eq@Av5wGECvtivBuZsH7Z1-wM)x2dk5ga-6*L6 z7|#;{`7+60Ir+auTJPN+1U~3Dd)yY~jvLN>DE#*8&E}ZIiw1(AXl&BJP;s{5;x_62 z*tX837`^fhhNpFgc(Vdk=3s%p-^TWxgq8caWPVBf3o3fmn$_; zcqt%DFK>yt!2%I~O~^J+*n*UKI8q>;{Ko@!7NS|n8YTYYxxXy5R=(9I?6SmTX{+uP z%9u=C?>iqEecX3tol^C_q*U9GtcgaQUyJfJFL)_1td9~jNQuaW$2#Ya{kFi8x8#jy zUt{a5anYpFo=sITp1QNG+ult}J*zSEK9FZPW3>Q1(-t!E(UV9uGOap%K9Xuo>nlu>JiIfcPXH&`iBe$tF;iV({F zj%7YN$1gJ8z9Kuq&uc|vNh*ff2=wV=cFEh^IsPvICDp6%A8jS_--D_p_BuVJ`}&8P z5a8!jlSaUK!ngbDA)E@1@m3}iLFUCyA>nUR_@qcpq<&}a^SqHHd4AEJw##l(J=k?? zA?m4{uL=aOvI~dCwX}=H#<5y=jt#$3Nj=%@-pR%+=vwdKVMt9b*8vPykXk>(_IFnk zuP%16ocr@-dGzOk?sT}I-KCMPQ34eei-X#b+;XYQ2aOT={!-2lnq#t;TP`zYTZN)r z4CclPSt*v0*!}vHoR~@e4@H+M*MX);gF{C*c>mA5mLET9<{PiIk%6AU&V<#jM+5q! z<}K}Yy~_9bi{yt@MJ{ReGDD;J2!Avy65hIME&pZNL8Xu!f{LI}^3+&CLaL4qvT5VT*g* zBOA^Hk8F;OTb$MvgMv{8$mXLU39lzXKi9t+ewcNcx3kR~FUky8;@v$Lmoitvg?U;h zRmHF$Q62Le{mb)f5zD0Bs&`&n--s?Ne||e@jRm>!jv_Vmz_G24+s7m%zP+!oB{AX` z^qbnED|2vH%7xU*XEw&&*)r55h+9*4g03?e+~`9IJSl~!jfk5pO-xRa1CuOSGFGl} z?ZnfIgRC`>@FbeJ2s6W!eMxu-q1y3d$W)Us?c)pee7~10k^wZuk@rV?4!y|N?(pB; zNwpWp3@olYwniQ|fs_RX5ux|%S7ha|TZtVglXzjyOp10$LoI}OiyuN9D1 z#Rt{j1KlYK#3QOk_8&hYETE9rs%P5a=MVksN^pGAmzIcNDzLnMD+x!^S#7Eit>=ap zqsLN=-@V{1zF)FPXC|22Q%6Yok`0417v1?q8MAryz>MkX;0183umkIBvUnw~o#Py}w~Y5VlN>qYri}=Uxhv|-_LT;- z5giAa(Hxa{rE)!a848$>1<(G>4rL(OKf*>0!aeCWCcpe ziljOyFR2t9irbraAcaxGBkbSa6H99weAQ3CT+m*QZUCN(@0-?D7UAy*{xI%v=!HS< zz4lFNXCI8To zP2pWNfbGiR>4=e%W*Z6SuU-1)1BBK-m4nBSv2y6~?yrw+X9*Y>{btQV0%pySZ$efZ zMA#oBoKGpj^HG?7PnrXjFw~Qb<3YB_$McJeRH<9`a-Rq|+1p>DrqLSg^d5AR25NK*+9!2iVvj zR5Jn!TZiyXdg>o0Da{1*g+@tWaBbb=xLc2O*RG8$W`0YNMSGXOh?4JBFH>#blNo7% z;Uv*+Z#S>fp9`{NF#De*2R=VmgY^N&3q9RMRGN~K9DBHd{G)R~=~R#cVzjZ2PYTm) ziB0Z6P9K$|e>xMy%>mmym(sbX)yeMygn>{YTeu3) zaO<(XAsx_9nvYEiM4s1nMl0>gFrxF-dI-%sd;0pU0(BKwTxx^57|`(bTd;J>>7Rci zEPa_K1(T@h2{2_Zry#m3=s|3IG2k1rRda=T%?i`vA!gA5Z&7BNfS-_y6%|Ka)oWHODu*yxsI{u?yzKh!`2y04T(3K>@KGh`QT?_L-ensEz4e z#=b&n7ds!T>6jYarx40Wp{F zIEY%Ek*7QNJTa*aQy&X{eL*`fo^Ph3^W@ha>}IJpRCsjwYJN*C-ii`klK`DbLz zWmvY!4XmWHl|F5Ii5uH}Q{ht7Q6=JI`+@zRl${vE=GX|_h;MsDB3_E0qD0BgOXRi9 z*xuPz@TA`#Q#5TZVn_qkH=Gu_;|uTlM&9pHe`Vgmmx?D%yX&wgiNRPUEU z4p}!wR6ewM_JXpi7S4>Z?UCqXWPwRE9|y+UBCle2a`fd}u5v5m!6>ae#w(m=GKOPK zm4hc%SL;jkk_NCtdV=9!$Vk2Ct;_(JvPPjdL8s;-kheECCj*^_QB&yj@Eosve!Vom z@sN=&(&ZQ-b5deCa;9ctusM|>7&&ZWm`c{tZX;T~Yx0Go)o=|_oesH6Zz&ICsXj4} zsJX1}p1+@4&&a0nghLxV=EGcD?4JI#INb$6SF2anGS{G2WeehYOF3Q7<_X<;U7g4K zCGC%TsgcQ94wsg*I}iHf6WjA}PGY zX%9HL2S}i9r&!Ci8pWD`O-ADh!C+}8uUNnuMt+{u*7r&cTd@n5ut3~cp{~99#@*h6>_in{=NIg)82Z(oFU5CvkU!#)BjYd z<*rehH*cH^wi6}7&%$td>65ZVq<5qAaqW1T2_+Rr@b_Pvfj*@Xmc0;uumYS-6Y9Wt zU~?1oVejT_v(BpbWdn4(E%fWxuLdJ8M4M$-68@x~{WpluZw;Y98S_?rR!Oy)qWxe- zT%0uI@rOiV$$mc^>AkzHCdv_1tyfpuQxV(v5ygRL%4>r?l9|OrmrJO}D@Z2HrX}%` zA*K++Qag{qLjKhm->(Myux*84nxwbfT3hQt{h^j{Od zrq8+{Om3t^Gh>oc#gSKG_d>@?Z!;Q1fLh60JT%iT=E{ia}c_4E{p8PtKKv0@=R9=Dusa+9FElc6vFw4P+BQIGPbre%N_@X&kz zdjEYqAG{6Hv=!m42-l*u5454!$I?8>Q!7j>L#8q>R^W}>kPd}$r}mracq!b?dgg7J zL9~YZsON5vjV4^f?@cS)PJimt`GLzE;7c5fXLGRxy}7g@UfBJ4?J^cSH_pRLXFm%2 zy6UU)yw}oEc_K~iuX%V*2I7VT&kjHG&|4tCn%aXmHmVI=T&v-+)OcWH;9YF&M2h9- za@si-ezdlN3QulM+{Tb7APbVv9%DS1pBzzjW;{q+5OZ-xl_ezfB2Cd=yOd=GM(Lv{ zH6~H=c`JoB(cX#_6+o&GNLm&sFg*!n9q_oLOh`hkomE(k?0zT~$eYR=bIjoeUfUwy z!p7IzKL&XV9SjjW;5ON|_r1Dh9%_wQAz?a6b>mocda52nLA}++$WYB1YiQSB1puD{ z-G))ri;))7mCnuM0h^Qd*Gp$mqF`dY07hQkYwYFVST1@tG%<(?6`P6!S~1YzrT9{4 z8l-YkUJ5RHUqMba9jl$CuVLjbnBvX0L+llm(`~pVjFzzoEB;08oj&sWzei%u%8Ei^ z?xxXYIhFbQow&ND>~N5#NT&tS<#tGw`yPBCgGI!&c%=#Ne$h~GYJRO)sQjlj8Mi~q zHxj)22#sM+o#D4Tgd07HWg=aAZ#EthWe#nqZK#aL{5d>ycG%4p8>utFHQoA>2Ohnc z4$kpP(M(!R8n5d2)j))ixg?1id!QdJf9-cK-m6jbxC4X3zHSYQjrF7Zvv9^ORwqqS zu=bcMR$g(Zp7KOZd6p#^iFZewW>qvtW4LU7G~2e6mRNi#39eX5p>+EmBc#+`uP0dM zT7~?gJg3zGvsV%wewGEnY{7|dRvj>%oKt`PF3Gwy%uTAp_jGf!_`0QJPMYpp6#7eB zXgn{8Zi0u>5L#P#x1uz@_b~8M1+x(NN^%uGQ1K-BY586f8vGY$x9j?T`+mRS_@0Q{ z?=0!P<5cP3Q8a3vZXi|egbj7_!PxKbiItP@GpRVytK`3C{Jv$Kko&(GJeG;I^S;w@ zZ6sa{n%96)8*CBXb}cMi@XRmUARt)sr#MwJ-Si*42@hF%OJkdUHDv2Dx`8@>R-b)?5*V1em z3H}|Vh8VryBH`T50~z?S9LnLr-Y>m59@0i!ZjKu&4@Q(CqeanW1S?as-jWgX{4#?+ zQjxMd2c>I*l0Z#wnybaW8hag>KB-wprP{xjnlLQYVgOLMqq?m=_k*VV#-((}&24;K z2F{M8Q(jt>T>#)YFL-{5v&M@Eh!_KWI@Tj>-ODK>3xt_K=Oy@ z&qre7ymFS?Hf!k?68JRGY)N!+d9Jg5UYjmK&cQq@rfQ;=%T|71eYTaNZ(SNX6z)`j zLuOK6O@0p}BJi1*-EwUeehrs%SxfWA!bc7Z=5Zd^ZZ9>{vx_NT30T$ZBt2vouLvFC zn~~q$3LP!}niSQCN55B^$X&iy^cfmh$#{ykdc{p-Whcct{sCk`zg*z%kzP1r=G=l2 zK?2ypq$p&}tpnaw)+FSN_mBF}H#2&E9Wk*?kj5YSUP!#kZ_V*dzT5D6@to)CkesnU zBX?JHCuf`J7kj>87Pckp>aNq^(Rq+RC0l$r$9}$&iXkL7%vCIe$cvyeSM$8>Y4AA6>1g?T zIDFP(8#Lbt@v`269PL^5pp;EH_9payrcR4ukXnU zo%c%$8OwOsvxdOM+ry6v%la;FVv6&k<;9&^qjM@8Q$ewW95S)AZJ!2I_>Oy34MAl| zw_YuH`R5}0<8%$@Il1xsZ54FxlyVvK+{Q@sAFEibF9B8QFq^%TT(2AA8muJUZ# zT%t`^KZd@i)|}Wp_b`b`2O7?eN)`sn!--zO5Sb((+`xLsJ*KX7ohrSfVQI$5#>2){ z6cynMf!X(XWPw0pYfp+JgL84I_QG1%1!ADr zOiiS0DlkUW)zVgw0f=heTaq)5Hqn(QfT7|wUBTldM>6Q~Un=$M7?bNQm1L0C2)@Yx zl3&8@?}=g9XTpd_i5$smV0$yG_5e#@+CV(->gCvs*YZPfy=<_m^_Xh{mSwFLo@&hs zZzhz(x_Yq1!(Y^m+$KOwtSky9-Z@%DNPBNVa^^&@3g58u2~zu=Zk^M2VR8SpTh^wFeI(qRC9 z5}Jno6MG4WJ9jl0a2RbR* z$&j2+bKE9Z{TFN@o*~3tQpz)M9vNXU6+?FMHrB0pM{|lyG&3vBfJR~Uw`1zXDCFWN z*NcV8R?@b`m!1~)e20#fZVPHxI&;@LBiBA2Ez|Xxpw8x8U_@X+VWHX#%Ps}R+lER+ zYy5DuX5rp?hzm4apW3VRxQ*9ekhT%zo_`O6O!I7A`GPrZLNeA|=zF)f6&8?9l;Qy| zJ=fcPT0%Tdcpn2M53X>yvgP!M9XXT1JE#&QaPNx7m|cYToWr0ZI|9^>GN&{MfLP%sxc!&CTD ztZU%973k!eH^7PAiNjgP+?napB-F`C?9&RDsC36qtQj#GX=0bI3)Ydg1C6!$FIEK` zUBldMZ@ez>z4;6;!~k1FBZn?BMeHZ#vL{4{%c0HU&7x!yif4LuPlv;t;PO7E<}NB#Gq;0;OJMdv~3X`V$EpcvrHm``olXRpI%?+ z(lz6j!5~n&mHVXy%|?Oy*F^r9EXtt0ED07(3=<@Mo`oo4HlTc$DSv|+;bu_UxQd6| zThsIGO`_Jli6EZo?@*%2AVFjB=$vcKfp6z=%HVzXav*!C#k9|~nDwBt{|8YTyimGO znx~8PR~d06pzYD1G>M3LJG^y&!ZNdkO*-N(Bt3=O_`ibV>lvcKE%sSUQ6?2x?r9Ck zMNK%T9&pR4sTu&=zCTIJJ!(0ieFNVyU2v?k-yYg*ay((+K>21()2)D>0-k&|6aGVx zR2+oh4nM@KcN!mKybGlMj1gujAfNbh2Uu}Ss=4G2N!ddju~!Q75}Uj_LXR!c&VMQp zRWeFQfKi+BFp`U{AtMwpUlGT=P7myapedQRxlO7WG?}-zjr@L=$2ZKYKK`RTGW~*J z^k)eaOr!GG0I-+m2iCwW`ej*`b-Xs7RZ%%9Ed_6ABz6s5B&0(w$>{v@vaaWbD$9og z*(|nC)i}iPc|Z^SD07I95?ek)X$y}l9Q^`v!{S;>H_pA+w|;BxUCzqMT`8}J2|lmb zDhBEm_*V{0rHXL^e{@5keBR|`gf`UPcz&R$S*7++lH-FX>}Ww!58_ z#RQoSc)`&MYxz|`7!(8cy(&ZEwNX{a#sn~))mPIm&u%T_wleO0Db<^BR$WR-vlzqi zeHL3^sZ$A_jF~bS66-euasPOotDU0*$0Dcp#i8i;9gty@w>nTsJIN9%motR z|6dLBa*;#8Kd2=JLWK^n;FXr84ded&h*?x+%mB~!os&?g1^gfMFRUf8jE@|D=0u~t zS_(S&4L4J<4?LIG{|*6C`KBzdw{EF9{#Z{ z5xU%>*U5#e?`yLOGcmZ0B0|7hx6nqG{=juv8O8uKMEl4=n8n{QBrcrmSRbEeij%dr zR+MZ)m1_6uLX%jcq{=^rzK%P-jqa(s?vd{9kt?u1D zJ-R_hlCWs<{&FX!!NE67BV8wwXzs@zIa=u(sZT4Hz;cE=sUO!8@eqjj$fnpZ;opA? z{%+4Rzds^*ycV6e1C2Hs8u4CJDNfxl(xlWN;wn%3hAk#Ms$V8q`%_Wl+{Tu>_G%kWyiU+a=&9xMSLBXi;+OYF=;x0hzGu+ z#9lrF-PS77&K(1wbD?+ADwIezwSyJcO*Q6Ll+$*#!G7-0;gO( zujS4qq;;hduCs4R>H5vSO$&F7bMj^aa>lz;c+?QVsb%*!-;CRwd#b_1myaM^Sk{Qu zbWvW2_eZMfGX<5)Jyy;3q`36+8wXf*g5*mQE|D>o-#K0S969ohUP3y^B+E{`LGBX7+7;Dges_rzKliG))u~L znB5HW1ug;}@5%!(;2=a3sJLFrxTV1JnVuRo|*Do}_ucS9qap`v_0pu#N0 z3j@M#bF1*MIvu;^wkGjwpjdWpp%xBXK@vNrf4JdUI`ZGKBs7~Mcy_)NMxm{Vz!Y3b zg5ac>fbhblvvus{A^+d+!|4A8d$a9oPQ8#}i~TKZ;9DZl)h$0cU9nZd*A>I4slxMX z(wk$O*xQGBJ{l3GNNP9xmcNX&f3GpiSQO_4px%zo+#*L3uH5}HPcFI ziP*)_B)lPq{G-qu?)D#=EwEfNvL7scV*AXF^P|7!)skJ zE)er!$G&H(#z?$U55Z7T))$XBfZeFn+$tW)3nJF|g2Brl6VsE4ci9K;G4@vAJlmWo za_!yFZ3QNeEs9d)T-?ZWRZF{Rn|fr$mn&d#X@X`#X@5WG{mvL6@N%_3jA^xd=gQfc z?cu~S6ipNK^vB*PVDFKQc~_F_GP>sGzP4vG?z0j=;0}wDBT{oj|2zLA$UrdsB>id7E^C)+zMS#sI4LDFk*A{>+R@G|0T||DV#ApW2boep{ z&lBN)D$-bank_t+EtnXW3>7BS-WN#QP6W?ZuOt((=gv4j;p=NFW!k^ilV^MRdZZGX zh?uR37?^V>{Zru<;&qh5hHqMoR5^1UUF0e9eb@TqfJA@D;dzEAcJY;@^~fU$G#BeO zG4h&MPqIQI%Dw&N)#bA#^?)fOj_vPG17ka_fh%mPx43bzuTv7b#ifDFfYqx!m!-<~ zKC_fh9NTwTP}c#s(BJVx=uDY*Ob<5Jp|#l>&gq0<~f@%G@xN2IG)&s>g-Vvn|H*>*|Kmu-_uk?mkjT+AOb z9>PVmssvS`jSTGSR3TGU2<#!HWSc6f2;uk($&b>S%uMR*x754DhhI8bSR zl5A&I0x5(BPtUZnKb1D7PwgucFTQ)lB0?$UA5_-_k`$=3duV5#V$U(Cv`^#lRCwWp8o1F4ed|34t1a8cu!g_9R`ij zofLP5O0sI^hqdlg3(Oe2Jo#p-qLl|3J5nBm{p>BUMsAU!Z9W(OiLvh3JtpLR$HgF; z?y5YDh>QDm?bU_&%DDc?m;~QmDl4-rN_rryZD`%y=I*JYcBeclA^M&VGq@hVNECwd z0x>Imw>k-)DAC6^1W)(Ue~G(pFKfQ61|@D{&xH2=EeL&5dw>pex1QW*1^#Jd%J7<; z{qQwQnOT-f8-dVN|3DlLC4*G~4T{amxPP3xu$w^La?Wxbk=0Dd)y%k`6MQ@}`T8pS zeATh|9B+QO>}IL=8_SYj6Tk{7vtQj#=$s=Za8UixL{a!(CT=!tDK*DPN}>0lj%s*^ zR<+I9nAhQ=sJD9Jx7#l4kw$G;y?-+bfd@MfP}X%DHgdTgbd9K&qrS##}QlW zl1I=Y&4$7_DLx%&4kpCE&i|U$o!4cxex;R7vaA_I|G|yynPI6=x}Cl(_j)qv58O7X zn2c)svN7yocrpqIvXuLc8ub-{s-Ge?-g2*w)U>VA*4e{j(tbUDTvU!W6>0%%%8xBS z?)RC|b?%`ZG;biPW*Q_{{~@?409!HI)Q!fxUOQ8;(yX+BzkAFwJ2Kh`y#f?OeXajHTwDqjK@=8TRAj z<+5Ms3#&W&+YI^Tf92=!sgDQRoFmA5n0B4TVwjhOz{07Tj)rO1!Yq60mOBFPRFaAu zm(>F?0LbG|w;Qd|%olWP?)%DOVwSyIfaY*-)w$}OF2`|d7U8!)f&7Wwjy+!L1qb$v ztAp#Tv~-2Fguf^g2|TFIId`OoZ^uDT(_6r5^h_#wZ`vc5ALCjsxn~e zG81!8;k$nN;6}^bJi6E27`(hNy%wZ1Q= zXY>U3$s=F2rg#gxRM5z{|6o=9s@$3YU0Rn{5!S{~@x*A#5Ul?f#^vrkp)fb`IOh*~ z*Y&OSkRpK^PG_ozz{H7yO;Xo9W=w9lNIG=m%|#qb^h3GA_=(N^q}idY+0q zw{w8ek+20C))_iLZ3gr#=*TDTqNni8$=P*xG7C?iZK$gXU^NgP>;AK>=F$CdSzd9| zCX|L0Hxy5*rbB7sQRyMK%sapM`}5ql|#pbA(AcVXO47 z0yyrNcbA*^8vrSXUAqJ$U1&MZt{rhBRT=u0`xnzQ=JoAcr%G8~<8bAQsu_I)-4Pp& zm1))r9E};^7UYSat;}l80&yuRjfYyQgG^VPh=2Zd=yJRX1|mBPLkYj)tZoZQl_l$i zyFdOz7U!$ey7VH|&Wsrkmb7KI)nIMPYtM9jEr(|MoYQ}8c8(WvIXr&)hbM&oo8Lv( zcnI400d4>L@ILhOliaGD1^j`8_~Po0y-%NDvyc`*-EBoeW{nzE;4{CNGAPtHj@KV7 zj@IvMF;|*;>QoLxSR`Y{@cO8T&+3q{@f8r?_)(O zLItFZr%EcLCPR!we-Vnsg803P|J$uSAnCbLIMVl=yt4MMfsT}SBAq8%@K|HBJ{3gw z6#R+|iI7U4$z{LI&~3$Devm#&*2QzgiGTB*ZLnDVJdVTV@L0XyqG_}4*458DM4aAY;>$gS_xf5GJyM{V z;{IODQ$~s7s!?!r1CvQPJCDhdU92rDqR)fb4Q3fd#}IGxvg9f6 zR}K`WUg!{Jq?KX@>J8Jw$$Y@L(5hjbY@T=SvihBjJK@&cq7*rX8B5{u5aLoTZh4Hw z?34Z|UxAtFY|FpSITYF3M~Y*>&0JI9hHGLOIReJGoeF~gfq*)8T(N`yX%qYZBeB-H zetSiwQW1`mO5bU(NkoW3uDx!x!I1e_I^MkIJ=~&}3P8)Fx|b9OblxvmI>w7$1-dNA z|G}>W92?9x8$VSimTj9~HHhCO)Sf_xf_N4_I~yMUKB5_ecbIZ_ zr(mY_Eqi{)s?$sl(-_m~Nuztm8$$QaS5fmvy{VD;@5Q9LabYqY+Nxte3&r`S`8N8I z3{nXHx9?R0e}miDCnobtEB3#!h^D}SZ~V27 zYjMaOHlv_Zz4PGMJ3>!X$?8kMI%_dOPK#7cdF@?IXiTWp)ZfcY_0D_32g*Q(&=)pi zA~t;>ZWHHWB12rp@(s9Ze&wJj6~mtR7H>-jfcWYKjAF9H#9^Bz_bdZzeh~G^2WFXq#fY+cqWxK{h>~sQ0ClLtX_xc!4B}=bCpZAFT>* z><)SR`=Bj+HHa?uISFpel#CRFmV(WJbv18=bk4Adz|sUjRr*e?d;qFfewYNV1*sj; z9r)@wZ7+Mn4I=?{C|Z>v%?k9$yubuXSl2#_R8DPY_XdAPwtR&0+BFItv=J=Z`?#2b zIZ*G4@Cdrq;M59%iIF`VnGhqGaWQ>CUjeEjk>m_8!Z*^;Rud`Fgaw@E%N}XVsnsez zRXOi*s1FI6MO$2#D2pcOfEbz|Uj?nx<30r-nu}4X2J?9To!A^KTv)(XNdjB&@o}a* zsr%Gmw=eG(CabO!`6fZ;9MjB}@IHT?b4lWWbG@@?sE4l!9g)|&lB>{=8)Y-En&hvaPMc{;DC8fqk)E^R0JdbU zHS?(*n2s`PzX!49TOcu%w)iROG+TeFro`lG0zC6#Ev2kOL}22p^Ug0DIdiU7P^`|F z%}{n$)P*PZAiZI9*cmn;KP!n?SK=LE#HLq@I5!TJO+BxxH*0x3qAy&>SjHWFH@ zc)Hhm@zMTlM{5;6)prHuydIKNi&(rNf50}x$8t(V#}}W$f@Kh@8$K1U`ir8`DrA)N zjnD|3U9~m9ML5hYJO~&O^!_7|WtR72QF7c*Tbe&IqS8^&B|!&l^U*)E?aPJb$E02| z&yqU4=;h&Z&t-(I-B3vRX*mq7tT@3VR7Ef$P)_P5_(gbhP2-1WHBBM?T0#{`%pDoO z!KSLh{EG`m;oyy<4f^e`@L~p%G5h?h_Y8sMHGOW?4Y_<>QNzc%4FnXUtI=wJll|!9 zVwiKC`?eFb*G9C`26rEXNPsLU`?tr#Wvm#q>iHY2pF`g^bW#>@6Qjh5LX9m4Sk_c1 z-zB9${$ja6%`mFkAfO;jcCu{sZA046)}oSCPvuAW{(p}ofFZ_Hdj9<|+p zPQrYPpS?jo0w*ixI+N0IR^Z6{P9>GU^sR1wB>3n#>?OzEsxeA_g}2j+GYSyDB&_OO zz^?UF7JqVopxz1m04E|Owpr>#=IXQnkECl=~iRLCBqyT#8 zy+!%10-`fGn)LD*?F~;Eo{k9R?)5xc{cH7Kx{W)PDa?TS4Tlff=+9Mz*?f5e007p#ijK2W>W|D$wJBJPFDXUSgE~^{e6Rqb*lx3K=znB%i)|H;!Mj6{CCHCjro_hElcj`TSsp43)0TJ&rAVCxqGe0N2NMqSr&Z z1j6ibYrMp2>Wa6BJ&P>n1&^=W-9n7;<}Qa*6wZhIiI{n4dPlX);3>b_Gfx&8pqsL{ z)1u(Mym_9;zAg$W&*7YVj;96Mr?YI6dabqAws+s`!8 z^lrCl%%nT-qD@w=`sgp-yPMb;#iS!!30C7DUJff2`M)!{QX7!kIcl6Be6vk=%S()2 zXhW5Mm3mC>aW0Sck9=qHI|<&N`lh`rM%Jwm0|6UMY1m>4PJQ<|R}y&sdW|mjZb^OB zg3UVBEw_^+wpy#ck%l+aPM?O}d{H&ip>O|A%$vfXMB*oAhqu~9hG}F2wX?_ag(9-+ zKaI&;z$(57wROq1Q|lA$^iIahHy|i2zMoKO#OBXPdzcpPJwNnHAc_q5cYA|eLUHET zV+@Nc>80=2t%tob((`0Z3I2&M_M+x_^OC}a^gC^*BlYyiwr{U9uNyzQ%5i;yKuUy4 zDEsx!b<$0u-RP56tX56T<0LQle^nDu5SQIkJJ;nN9F|VFTjd36_>Z-P+WK#Of3B@%)K51E*AL}xXGOG zF-k!Tm$Vv10egay03Ig-X33<`!{Jf!oiotN$8XGJ*q7zk*U%Z=m2V1wEQ82J=u4)3 z{^7Q|Z@#PTSXSb*nM|mcpD(!I#5AP=3?5|V#{Fs@| z#HroLDz^Es2lx2sTm}YyoU+HnD}H7aoOq9;wr^k5Ww&GUj(}Mx2Fp>3P97JQhI#Mkh^*<;K-Ga}RV_%uVd;nnoRtb_rDJFDV-qa+@4K=qNx#N_ zvI4K!L~P8+r>4vMhy9_2aelnuotDljKqn(yHR(N_QJwXsVd-X9GpCV1b(mi2If-$> za8_`R&8wW-@2S5ZXx_~TjBfIYDh|G&ij7acKS{>X)qKXMZDft55%l%U&$xKzl?H~z zOM3sD6qCqTMn(J#~t0W@DLuaJfYx1Q)d&mKHkuq`Vysc{W%=7(rSf<(^F9Nq~~jrpli7l=hkW)u~`7@J<5*R!%}6_ zQsOxMwWK&RYJW@PE9t(P?_>@_hVZ|kh-<9@TtR_=tBCg<*1IGtu-sDsD# zXd{E-!zqm6pQKK!^v|X)e=wa*tVQ}qs$bG#yC+^QdFwaz*vlP;)eJ<)K$IAP;1Hp7 z8m1B@WMFc|tdFCKPd9muvJO4ELTgd+=_Ekf zoalm}y|J8*M`w(I-l4m(fx5P??B#O5K0t*-$x0QQn!mE{S35Zccy@Cog3B+K@h9NM zi}ZXaLluFmAQ736MZ;@JzPStP_MsaF>=3Ak`A7EdQ=aUVx%!1!SA)m%pwbFdp-$ho z+Vh6J!zDOGP5>1QbftY>Hxpq(W^>D*eJ*Erxj1F)Or%sRwo61Cu;SF%>(XUAyGovc z#~ga(ymHQNkmM4)Nh9vv!aH6;7X0)~t82fawtuayWRJEq)ZhwxmAT0!!Jy;!8c0#e-F{3^2Zl!5%yW1Xteb8sZgm zN6v)VP=X1W2Ezb%|BMw?am04!>Q=iKEUheY-BsnJq5V_{8Fy%XnK6~dx>|sBk=KzT z=LBOLN%!tX1rWb#V&O(T_1i6%M!k1`x&4=zemdgrSs1*f!RDU>Qwl2H0zJtW{Okd| z|D)(E*qZ*^IO<CVyJ64J3z3JgYvNXY<+(LE$2 ze16YMU>E!DuFpB$C3qs)6IBQOx6VQg*E3CNY=IJB;bw|(v4@;LVm9>X-Fu?az?>Vw zY2Nc6EoU|y&^{MpuiOv|XKq2w#NH(Hb2hS^^V0yE>D6$JR16Vr06sG*W-$#MQ_&mk z=tw^!Z63DU|2o?n8P`E|&ZfqxUHwLlQ@N`&9L+>>GLOZz{J^w4POM5RL+Gff`DQn= zrU9E>_-^`hdt-8+>`fhM!$ySMAS~1em_XxV9VaCc^RNqw9tCJpre?o*Ol?-Dy9y9> zauBE!*0R`k6Owmi7y52Ua_98es6korXNN4=epZmMV1=+VPm%UR!(p zKD|CmzbZ@xt|?|f7LTXz7GOc@Z%$gSpZ;S_2z5-1V*T8P z)Tm+&HfLpqGG%yV7nQh{y*}yU{q@X>)QHa#xF8OlJ3VPnSNtjDccp&>K_4#c_A_Rd zy+#e%f%OY`|1{@@rq z_GDgCsOO3Nybzob{0n?tG8%X6L_G88V&(U(*Cd_91qx?N(8dHUa z9kmH1D}$afexRI-1L3AT1?>WJ4z?`@zj&6AWN?s!HN&JOZcfuIn;f0P40tNT^3&%Z z!UwL^sQl(%Cs!ptT`#91Goc59m*N}c16qEbdaPDYiRexOKMjiBl@F9zdn~g1ul5kH zS}Y{?H!pc;Ia0J48kc@6!pWzN_@d7JdZp}PS;8dBp0LwDdcJ)Ql}Oc=CP^nhAFzv& zC{+Tx0$EW+aq16#i9A(U9;eVp#btE_l+#i|&2bNjX0{P$KzYJz8_24-L0?XtxJIff z;yZ^BQ~>XWxt@^5pF(IItcGnSC2@y82N(#P{O znq%K_UO6h0c?!rml(cIlk4i}}fxT_yjQu`bC>wx3j)?xj|1;2XRfp!+h0^;K9>Oag zi`SChid@()$o{C;GcisaO>J*c+jwI^K-<<=(m|VLEX@FM{`<1Inx?t>uV2sKm+c*y zwkvVCqB4qL=D+fdQuUAZY55 zqLkH-C1N3h`35;gowB01cTB$uZ#>^=`_kzf%v^tZ9w9RM)b3^VJ28Q-`$T)8%LY`L zU0U)IRx)jS_WN4fFZGPs7d%{)%uj4^hxUri-U)2Z%WN&yaaBKsm{OVV zz7)wFZ6$T!=%(urXQmW>(j8LMe#$P+(5W}XEoBVW+;;zq~hg7@GM5})DA+yJg$j0eXY~N}<{`RTal}w!m zkWl8}DcN5O&zpZ~#r5#kHNx*&n%#D(<=RKi?CK^~u1@z!A9yg}Q@Z($0QAL%Jg576 zlbJu-lI5WI)TpyVviR*toRl**?j&+Zu`rdA?u4=e45l$O>)elzxDgIZym_@gfl=#q zIghZt+(3$@k+Z3##%tUjTsE3!u&ea)60-D+1wz@jR+X;3lXioAu@jv~;@WZhWrCnW zYatLB0P*R)mXhr@ulsOqZxwZ_{I|Ai@A+;v(~TY!ZnY3a?kO&lg2ZS)@=wGu@ocjd z&=Vd12K^W-K-BtJHDC2qR6qF47Kq`^RzCWN!oBlgA!Cwprc^Ghx*S!pD?u1JZ%uq7 z(jH-e?J1TZ1Ij+S3$%nD0U^KdPRE6_E`F2Drlk5xGpocUd&l}y#FXdlb6)GSvxj~; zeSxF595c6_+?5ZZX&P7JMNcErh^A946B+om-~qA@eok~&MW4RC+w4ja=F91V@wrq; zw3}E^_z*}q+|Q_k=r*R#TiG0#O+ zhRpt^v?R3+qGI<(9eU$f0z2-VRL@5PznBuqy=Y{Z^ndhwlb3_OYqsmVRSqaFEB#Dk z>mC$X`tCi84%&lR5L!JZY_1-Y-pw#M@5*yR;K;Pksdhw;67f+f3fEVhq*De5)qQP) z6C{*>-T6}F;bBd*=V;pi6)OTh(aInZsq){Kd8LcctU7#f@rW zyY14`y7MMu1HIy~Ff9|!Z>iBx>?&j=Dv111fiU?gL4@7o-taE-d0cLxiTY?$7Wg<@ zts-~m`XTF1P?q&fT>NmAa#s|923bu>$@rX8?abOweTVv6b~n{Bm%I*}+0;M` zzCV3&ASp9O{yrg@2qQW4Eq^6)E(c7x7o=~bzK+SGD#K45ko?aerG;gaO(-#((D9>X zyQ{e#kpZdU!dug6rV9z?ZJ$~D<(~F^wdv&JWNGG0B=8`B$n@RVVrPhZ9t_0kCX$^w zjaA-pAW{q&J5$~qqr>$jk>SL!R3liN4e z>Wby^qD|*k>!{3UhUp3ctj@sOVVwF#mo~b%Vt4|Avp^Tzgy=+Jk0} zqbI&^Xt05f>YuGN%LEQms3A%)Rj`p^N@JRs*8CpC`xPS#*SC54j8D})V&60!W)MZ{ zJPQe6W#eXQbc%gnL)$5cp-`?lFa_YpXIUnle*za}O-pcY>>K%K4?K57-1k0P>eodh zfLz1~`{9;*f3$?R+UmS%th>fo`}xbm@-p)k-;c%7xofiO9r&B*BCd{f>?QKAKv#3| zqk6XwsD8>djY=Tcuf)zXGYUKkIHntMx>AT|B3NF;>iZeR+guIG0k;7x>}Y$|V)-dP zLU1P)i{bZ+1ZnJs_#o2%Y#X)ECdQ`wEHtDl2*iKsyoQ0_;Gv}93^9_p0K<>wiL0Nd zA)S@kY;VgW9mwJh*C5ULPg`XhX24*4<;zd3l=fpf-#prK9N=$i*X*9&DUDn;0?m-C z6R#CBO7lE#Y5gP)9r?LmFzb}Mi!Gz&x6&ir0#&3nLv@=|%E$l9?_U4|b^c7efzIEMy>*)8l1I#M$~qhoDLNQL3aoG|ak=DV z&-u!FKignwT5eVHxuT?>J~dn0#d;Qf=SG`pJSF{mVKxDD`Q99H@z}_ zw^YcFN;Zu~x^J|%ErBs>{lk%vGq0QW@cs@wHIm^nSfw6|Wt97ch<6*OkEP(eIaG7( z`f}uHn#r5kH@CzUh2DHh$`vk3+6>^H#zQa=9_) zn?JwXk>#F|)HXiv-E9#^0T>#do%&3JnL-NaE}~P9Q#}5}s|V(i-yiY^MUs-IWQhbN zIX$7%Yd@|v*9)<;6ECosiOHpIopRlKS>HvNU`oZ6qaT}hTK++`{(J0*l*O;v_|C1i z-zmXLy-O!uIpw*RDE2iim|IM{J?Ot~@t!=@iI|uiI-1NXSXZB&)ZqEEnaoF4EP|1`6T=#t4!}^C^B4*$o&Qf$u2?*nD}9K9szfPD`GWBxj~ue}k(v)WUK(mUTo|8E}Do^s(+ zo_b`#*3H$P7+QdevXJGyPX{ulK0VRHh`0=mA%5b=*cdTlY5B@LV`^~#0#74en(;Fw zGL`yOW?OM{?V}*fa+c*{T*R!1kghl$FWt7@0*$S~lI;$K!%}C)@4Tb(3M_nCCTw9z zIy#6FOs7Uej+Gxd7q(DUqoMI!@bqLV9YAy(!h`BK&;Kijvb`i<8(fjsTHhFKA_nC+$SEL<%^vApieu0<1Vx8{tmn4x zGxGU3)-ScEU7aK=l*}m))Q4t~LUA_}B``;gk%V)JwV2F&iD}Pil^AHW;7{4lKRskL z_?l>Q-)9QhBE1y|MkZcsSEPfn0*LEP7}XLyI)m5xzqa((2O#8#?Mr^H!c#0;QBOEW zQj}bV;#2b#Yfi?ck8>lw6?GB4R-||DY*+Y6aeDEgNU`;`9+SsC9xRvqegIg&eJdCB z)aPW7(1H3`iQXh#*hNMs1AVF1KgT-KKr5Ee})g9!V<@Pr{pKk<2 zraK>XQEQn>YexYo632?3+diuBe{7LC1+OicuMQi+D-7>$=P`^v4hpu9V5-W zqxUkqs^~WJiSkOK=EL7`%ll>nwyg{}Q@^s;N{IQ+vyuwDlVGouGcQ@|3jLpy{DrE$ z6cz2@l_YZcyM!4C>Yp@-ucKXuH<0n!t!GG2E_HuQgKUym!ukiZ54vMiLNwEIQXb39 zC%89ng&r0}*GxY7eD)z{9c$u6ADg8yg4&OI{LgRf&vTSiG`sdl6if1%pS+IZ!y{4^ zhZ?~;Cmcupy`|8{SLMdFd&k=P)r~+eDLY~G%p{bg@wVGsR zU_H4}SJLBfTgG=RTQE22RdqxXna^1ltvhOCY-t=q*HBtcj@5{pO3rpE+4|!IH8C@b z4B~GEpkE>dCO;DGc%@GN#sZ9;Jg_#~ZhdklZu#;lIW%PksR8pP=maViA`hjk>j{Bf7-xgCg;al)m*sctsy|3$@;YhSZe#N<_9H`P}Y~ahhN3N%a=O zL`P^vQC_waBGl%q|BHKkTMvDi93-Q`eGmr!^w6E%vX61f5o1Yqfn~q47q2{Kkq*eT z4LE+#cJbu*!O?%L>$&j5KZkcF%N_Wm=G5;#3HN+)BH0q3=tKYA&9anU9=h}@K*<*D z%NDH47PQM2jM6?Hfwq=eOoL;9!zthdf-LPUD;{_flWUwhFYggUCpqv!a!NB+42zAw zW@vtV5=n!wtUfnWtludkt)7BgL=gR8VxuO#+~*M3Bl*Jrue-b03jX%HmIg8+(vq?6Tx$~Xa}!7q-H4bwx#t* z*MzAjSZ5@($_RDP`Cp;{-!+tLTXv-};Y+C7M1pb3lSw-dt0do^Wq-yai`>`>9#pj- zxgjh8)-0SO=_=gB-UZ7?H?WFZdpyjJq0IjD+KM~^J?ztxeB-y|yDz~_%7QT(3A^;& zm@s{@*8dJOEzSAf%%gyO!aCIiZ(Gu;O>(?HvC|bPG9MRm|406= zJMHT{$1USn1k$3Uj)_45IEU1Nohbt4hrJ}3JV2k2qgERGnzcl->IDL_P%Zhe8@6FT zN;A1oKY4(BjP>NQUG%qct)x2tN_h(0Cp{)cH9V~63Lsr6&HC0@MW>_t!QC1i+8so^ zQ(vRtY9*8;L*ul8<=Pt98LRp}QY~fiV>YxuPU?gb5JHa^R@$Sw>D)@z0AIrChVoPb zEX|M-`+#?wAhgG<-{&t@-v8%2%u-nm|0J2(HCD6G;qS|Vs|+ad!m?>hM0vy)wQ+?- znC2_TO#lUs)0tc2>5*7+pYP}GzzL|GY%qbi0~Wed*3763U)>I+7kkPhtS7iK|BZ|M z&{h*C^P%u`Uwc_xYhD|!F_@4=`f6>qJY)WG%#ZQ}Kg%bPp+|2JjG(o#@Q7|v<5`F87j=c=u~gy4co@v;qnMH zfy_%C_;)s%qLQrVb`o=Hr6pyv9IYV$;dWOv(6-`^e_{PYU$=d$Oc@}UZQgu?i4(yG2Sr`JFK0dG$$#h+TWdC2hc`=6 z+cKCcWwZ-^|Iv1Bf)*nsGUNWO)hv{>ly4x7CsOTLTQSCo%x)_!i>(*lIRh;G| zjtWq%M|M?5fmiHS>I?Oj60+^ZqWYsHQQLD;lE-c26P{^-vCp33$!xgqhzu*+p>OZj8#6D39Rs2DVY~8QrUNDi6)(!R)o$ z6bimp{Pq_Y8_mppZQteVxj|57?!?lsE;*o_5Al=>RiH#AKjRS#A>Q=dwi1l3Q8T3{s0?>KN{}T!T4@d>GD%u zrYWbt^yva9oJ*&Y*lqRung`Q;k5ZrLlxQ)27P#)_GnIt(5bmc9^USTDJ z%mgmmjDF?Tv07}!@Q_&#QK)k5|Nm`x1Gq8!->La9Zu(<}mEMn9sVJ`pMxP zkU+AEs_WCI)Erj%WzsPN2T^JXyoQ(&7#YuPbO7n@j}0_}wL8c-%2OI{jNmiL%uh=k zd&)n#S5$~8!AzXHIqm8a+{VsPvwW7%)U3y$F0jV{a}IDQNtXvEP(d^*)tDStNccV? zd+MCW__;TQ8W=@|h+C_iN324z=6fgKA1aNqZyr)Y;v%g#T8xKz>3u#RGP!q^`?wDt zv#zB6dDlVP<^;gnU|w#hDdn~HuCDl|p4x~RGtc`P)okZ7*5&;>n`KSD>UO>_ zg`c6sGeR|0dl8}I>q?!`(p)N;Geb9ijX`M#3$@RGt z>#M)8%!WR<%;tx#tmsp)%oEtv(5@#JDM{xY5KO&?zvID;X-Iu4=1!U@9dm+Sz-D*} zP)rLGe6WPbB6JLUG${fJ5l(eZWzh-+v}w5#&{H;c0YXOYI2sR?+kmytSsKnP5$MeF zcb#j%t%St{0fNQ6`qh3H?lvc-rwZ44jACISnY@r_IQY5Xmqv%yc!oA?7iP>`SHv{K zDT7qh*z5RDu6mzut(LTCTQDyt)et##z=HYSyW4Bb zn)27Zd)&}I!ms@=b-w;^e_b5tZwdyW6hVb&Wt48Zs-{0pE` z`572;)spsNjM3Sl%;X%33)cf}~td1u~s?t(a?3bU`?XKxt^{<13lu zKc#tYgOWOA5DL-lD>A~{m6hjSo7>EgK%R<3?X|`-n_y3Zx*gZvQjLz2ku&WsHND`p z>!cV&8rI}*EZH9t3VCroK+yDruBgldcMQoN2TdrJBPLtTHt zK$^L*Fwl%A{eXFib~WxcufLTY%bJ)}-PXP+<=Hcs2Pr{24!XpKpd-z*ogP=Fs7~<} zg}M}qE{=PA0F;#KNEl$}M91DiJPzB*Xd-FRtuyDI`6|H9PkF8UoOZ}tt>wHk6m;mY!5^#vI+^NXAOrfRR&Q7-s*PmEh1l2z-_$FyD zFj4jdykx>VD={i`PAls56N7W{!lA;^91Is)1RV5nYI`TpF zFdh|>`Rha}eBly?p|%tc+n&mCxm%7{ZQFIa+msC^akVCveU56zp=O;Hd+EqrnuLTR zkr1}IuKep$f-}jt0}hH>=31DzZO!zNPsN*PK9u)Z5*@nGjE+m8&X-F|#c8idUCU#Z z(zwt^SpSG6fgJW)RY5+H<}fAYsnaX{BUMUH>qH3w+IjJ+gyhOB5K!R@Wvd$b$?~Bx zApus}w2(y84AV%vRK^f3zQ)})3p_dDM!u|hp{!q9dtLWOSy{&?J<&^Z9ym}BmY|N) z3(SQ4#~fc`FBvaB5Qo7EG(Pq0ic1nVA2a23_Wo>4cxXHFaED)SOz8zi4P3yr^%<7? z0b1LtqB+D6OiRazl~Tf=H_Rp;u?w8>CZqqiJ19tMjoal?IDY!X3iZ}%lG4iDo2_D} z%!yhHil18t$v(lW+$eUv>1Xu3eD{#ml!NS$RevM~ItT~fr6afGa^7YCUh$I4)5QGo zNC7KZQSr~W{vhS?XGDA}j|s`_`(`W~Gb$086VmlZJN9*kn%Fe)teJw8Z*P#|QNEw{w4ItH^mBeF1RD=Z*79VDnnX?z*t37k1S55LR|_j9=d6>@4VMX#9tQH3dO;_$UD5?DU&ojzgT zsjKvv8C#CNda65?UnFk4)Ft-Tt0ZqdKih0f&iQ&M$0#;6Pm0iAr25SDClCVU+=|Tr zSO7@r@Dl#T3j@v#9|`4rocx~mmv`OLdSq7} zp&2GW^9z0`wpG471XW_hm8oPXUvvc(P{X!FOG}EVL~$+JhGIi_BYM(MtD`Oer4!U2 z4W$|AN_*&<&FW_rQL;rXUHkqJEAervLEJ54O_Ur04{Dbox-7o)=-|?x1n%{c1341| z6a=O-o-ADsZ>W)PrM**Racj_;wbN%ze(|f{6C|%A6evTnnvJnD!G{ zkMIlGq+Xd^>si%4&=O4v#9D$gXw9u2eom0a(<47ptxFC`k&urTTy1NrKihAZ?^lnb z$kZL7XcGY)1rwe`{B3#q?c0e-whrB?eStT>-xC`zEleKpgpWvmtZ?d)G%BD=vnGIs z!cfCNUQP`RN(OaC;Qq@_4R%)Fmc{$;z9H!weNtE% zR?T~P({GT_me~qVCm12qnF&FMB1OMo}72wvf$w$(cJFU6rt<#6Y{OR` z9|}>unGn~1E1x+673KeVNDrW=qTJn&2Xf5=P8WU&SV(`Pr8BFZGB%4H84J8mc*kI? z&zRGs-dIviLgV#nZEKOi&qIx-z-l^y#@Kh=VWe1AkHZRI73QMUlJHJtERKwQ8}>1# zEjkU{G{?f76eG3P^lP;lc8!AH&(plJF?V5qpGjFFm5&k;BKEG5G%+)ZjQh3k;bFyF zKnwHp)eDw>I9*-_G3jzEsuc<1FH0Mhh6}J;J~QP+(Ni7(wY;pLq#CE-bG9uuN^dfX zKX$PN8WT|2m6zAfm4PU%4-1I&IQfHoW-?uuQ;I@?W>+$2B8tdAt_Vk&oO?So)NK<@ z*rA5Vuc&5J_ZMmUF~arcTD8zDy5zw5t?pEf=1+@I?NlTvG7UmUaG6rp$%VjKCPWMn z`gix!c#S|=*)66aYW{DWI#a;qe@GHE*1328P##IunQJ)5{?gSVtDmT>HTYR`W~Pb# ztE}ygkz#P3uv$r6i6x0etb`nwWtp2&1F;pqquL^AskEvXrb5=xKUCZR@AlA<C0z_pl41s=7NnU)>KB+}sk+fP;+8=xirNZ>n z1_jEuk@3kodJyj=`{ftRq>=eU;abx_KkKs`k@9C^F=%FPvEwhzeP6z`IUO+$o$pe5 zb@JCk;3@e29u}wRkBw^I789?vBqO1^3;PkAceHd zj*^Z8V?*$%S2E%)@gr4|MsC*g#?OR&asJ<%u;@)Z5+cQbIJVkoJHs3V-*HK{2Qhk> z9A^Z~w03dVD362*)6#HXPV@r5ryF&Fw;7F-t~X;Du$r*;s;)V52mxYOF|D5*IIF7O z4p<16X?()IenBBR+5Zhie%zh%ZcY?sd#nWsA>0xbFw;)0?=>a}pr6L_NhxC)peq5v zj_%rK%be|FotQ4G>5!=PN);fg!QsS!{ivGdWA)`85H)} zwxlDMjecIJgx5Icv80|gs9fL(6}}KMM&`}yp{k`KGPGcaY0Ub_s4xt-o5X+CQ-X&z z-+g_@kSNOYB%kxOpxA5P+yDt8x>bMbw_>3sv@O)Fw%Eo-D77a1SY*Wsa3b%K2afXcN)v1Uu)gq2oq)JaH&C6Q zEdRktTkGa9)~=4Fkr(+=x}XPN=wtn zb0)Lx^vC!={L0}STIZ^_FfP`5==N4W74lc8#-oVtPg;te4{S;HNGm$mQh_=X(?XgM?$R&9rf2G zq^qdGg*oD*iYZ>lsPuH@1hwV2tP{QEyk7La(Le}}(vxOLyTV-`-{51@UrbYL zF*&cCJQ3WXh@$i|kOYGP&@-m4M6h`By#q_Ut^}=P`3oU+w;qTKk59Ed4wX=ajfewb zwJJH}PTrg9zc&X-6`!w-41Q&mX_VN3gQeJ(GqGu8UaXjv)2!GIIY!&c+&}OhGBAU& z$H$8DPqg!hpNMTy4}G`rK_L7+SO7;VN+%x!2$oE+4sw>#QonTVK_@9tk!o3Gaq@1C zm5#*M`0ZWY#e&N|N!zBM2K3P9@(;oEf0`O+a@nUSv-e&} zlB4@+5R_`cWHp-Zz3=+8LpS9aW0z)%jIumcY!01#=1bo4XXc?ctn(xSb`30y+Ly>% z++wHHpkfT->ob@MVdbX9O`s=(!C9Zw1S|QUO75?ue6EA@Tl!;5)i1lhJZ0zJ<;u=W z+-jlc;}#g~$&f;~f1v;dal)zmLLqTWMii&w61S0T%Vnt$@$obWz#s(FS3;7;I>&u# zf0Ij&Jo?-smsq#-rpDX2cY5!&3M9t~{qf4ty`BYhC~1(~^l=gC8(5h%nQz}mhinh@ zNQXG%m~Sd0=f3RcWR<>aH@Q9mrYFXiMTz9*$(G}I&d+hVsZ5=exW;Ql7J82kTQv5S7@ayIuC>F$f;kD%Dh3t?-%p)t48<5g_JJhO`gk za!R3xNJS7~OtXd#X;0D3hm|q{iZI_P8ToA{xw~nR^it+cwBgz8N71-+QG><}sXB3Q z!=sPQD&|5>(=A29<-XA61`0tV32lpspisFy1>3PMd#8URcxsehWbCV~y>(3ZQtdLe zMMRk@m{sWv_y*xrlQxo}Za6q{1tNajq4AIk^W(bmZ8&hkpO6OT-BMOi5c1Sho+>VlQO28x^ znhFSGguh~1iCx7h&lK0o(VSJ47ZO68dgF^qia$XqCZ_SjP&6-9g~eF`K~Fjp=l`#4 zyCVCo`O%KZJQ%OK0Bz<2wcuADbBJyfCiV}le51QBp5|UEJ@pRxyWm^beUpZ=3x2^- z42znV-!&%2@G`qgaYTtP(_pK*Xe=jJ#LlX%7Jwe)K4`ijDL0r9{>}J)RV3tB6&e1^ ze;NCGcj9j3zYlc z;OhmwQWHUX2bQg^yEEMpf&pKy|DXM`#awWwqBgp1m2qVkMH!fmvJ%_d{;U_b<}ZlU zFj|&JfGVD7(x%16dscnP$_azA8^Vj)iAcX@g>4&M>LIzaVBhR4wilj@I?_<8^zI58 z#9Oln8sJBiS(16P9#aA!du~!p9#~5uo74f##DT7(!cORpS(m`RwG`|N%ZywndEVvT z7iIw{DJ(3J4DT_l#nn>w=WL-Mm=^5JAM+3L(p503Z5Bv zra*_Abdrn0NSQ@ElXOBTEUd4Vhp@vn!%9Oh)2lNY5#E_H!~V;t=aFP(U@n*c>#)zG z&d_3;7(`6!(oe6)DrQ{2zbdy8U|Q2Ra<(ekGhCiy`A4JyI)6!m>IC57%ZIHW?J;`I zo)?9oRwp(NHcz#;TNcx0vdmW!5LA{~8YyBao>rvgkSw!b+`sb%A;LOX=#c_krn#2+ zsZaBh%y}P$gFvMz_T3pZQtZm0-B-a63QF3KVuk6F3s;aM_C!Ans)d{aAD0K#GOLx8 zM(V&6X_hjBhg#;#T&}-PZhNx87yCX%3y?1}#(nPB z9y$!bqQ%;&<^v06sMy<&1!`Dm^2}K+D4AI0VFjqk=jmdNWZ9<-o`GOha_x*QNC`E02yBm@i()ln)#~Pcf6M~801C)bz!?MCta~ zWXx7X(`3-ItR&-Xrt*5SG{N<=e;FpD8ynu!LS2Z&8A-m04<$pthT!R^o0roR;TEZf zkwGj-X=>4S>_*9<8k@?Gv`k?BfDcl0FH$wq?P&g?E(Eouu1L;nA%CmOGfUU02rRc> ztn@adpJnBlb0<|!>v5P(*%#%dZRsM-AJMkA{C@|&2D$_`ZG|M-6o+F0bWRoc`?*Kg zy8v3jY)Fm;_jbejySfecNHesVTC6ztOfGGo$5u9KKNb->54LJ`kev*OpZFxu-}N8{ zo>03q)LF6_gbr~eNUAC#6GgP59YteBYV@*9!xUnn@@_Fsfc7O8b_g zS2YnKSL#>4HBsS>6y!M4^1p!XHawxNFfU$(3>aIcG2`ZIt~JPVR}$u4ze?nJT&rkb z4gRj4d;dY5@vw57O`!V8B4J?$B;A*nSTktMOQkC-myqDn6C|X=!hV5(Njy{|E!`Pw zSDX*>=hthyb1&7Ih5NVBytjJT>(%bI9WT>NToBzo)LpNMuO)ZrvHYp&} zBEM5ekmpea_<+nvT`OWHJ*A#RK*z}HZ3XlQn*TA}V*WLi;2IOfJafvAbyuvtD)~t< zK5pLrOJWB}G>JhbCuZ@x4P(@h&7!c})2iBPboIlJ4OGeoMqwMGO{Is3psYKk-(`VZ zlB79J=Ali`fi7Bo>XD?lgnZK4H*K5TTAerAT$??xrH%PJV9A3&IqCEr=6kfw8=AJ@ zW##UD#=)H#PXr`OWfZz%01t6A9e?-^q7az!nL>W&m=aa zgPM>b_$QxD={|Ornnbg z;%jpeU#|w6v}2*-R+g&?^Wt8#k~H=D;YqYyX)w98NI-Rx<4U<~%epV9$HyS}SJx{d zr)kMa0QhbL6Ns(-Y`3Cw_k-`H7TbH!1d~PG#4R+4QhQi&xJ>i>J&mo4tEgMSN;oRx zrF)G(R|By7aur`OouN|BP52oJb`c64J?wF7Am@Aa(ZlxWO-kF2%7cRX*L47YZTywu z2Jo938FX-N(qh5gK6=-qeBGAn);I&>%$*m9xhL%7Juax6hb~)L&qs(yQ+bh%K&5{k z03z~@elqndU3j#AmtP@aPm#u$U8=wkOjvyc? zCi0QG(u)o474CfwFyj;(8wSG<+o6v2)8JZH9vsbn`~ki^#rTfhf(#rdhmJ8y;`JH6f6>17{ko|+ti&fVBa&)kgTV7FctkW>Y`|_SCjH*7u}PC;3b!>&r#5( zJ_+Reef?B>gv#4k#HU+sr61%=DPCG$L_mD~=gUNuypj)byJcKztv{usD0p>zXwunk zpq_Y}8M623d8PeSMg5TenGv#Dm9`&(&-1`FH==MBT;vZYQ>?F?Q z+v&sH$-teR1l>#)qn5J_|ZY8vtB_J$&vWLorYeRsUM z9;>k&^j34>VUM)nL3$KDV(kPsj<41N?^7fyOKBb3#q10;MCQar?f6Y+7Q$!k4d2*( zic}J*G@tt*$-k;;X4cSyz@;0eCUM_x^Jx{c)d^q~IB-TfbSJ>U{*UVNXFu&bivM1(Ml=GHmKSAItl9pN$_3gMc6V9l61Owbn9?xy> z`1@g4K0LsIljPJUP>|{S<=3OZyIWR|e;sZhcrhMn{%jnpx#RDlL{o_-7lFhBt7z73 z(%(buqbDaAUeC=~LkaM#89l;>m9fW@h_MGM&Di73DTxB-PF<0R9H*H3tfwqZ4D|aR z4)o&*BKxBRdsA*MM7rr!j(YG(SK8=E16}EkI>D?Y)-4aCF8F%8xB2>lq_;MDnjP0p z1_kK1T0vv`eoXcIcR(`uLH(aF>57eF$oq!cF=PsaVXT>M&TB#roT#tOM8Ibp{P*QN zmCyZ05+W_qtwS#l*~$5^B}bu25s%A3EA)umTX6w*6!GYpG+-(0%)b#K@AtpQS^or4I878{ZyQ|U*SwMQE=$PF8ZJ*$;B9Z9w)J?qzqLMpyx zW8jY+ctjWYcYX0$gPJBO^yT;XLaGMn<2BK#R($<_YN1D@IWX+R#k*^N58isfiR>-b zfX4k2zcT5%(&{PY_FKprxjodD9oW`7|E>W+&TGcgSXcVk{ARDw-HM`a?vK?dwj}VR zz%QD9apJ5i|FTr=Q5U$*lRq=O;7w>hGyVMeGqZW}c8i9O@NW#i2DoMJx1B;wtowOcAE1i-}Ks~ow=`vZOY2>x|e^q5L<}lZ{BZ!x6*f~EA4Rce2-66 zc=9&$odE>b$9H~>=iU-wS413jmDk~}M0d2ks#5XxegUmQ`L9E>*;>w0UHZ$d$#O``|Jx z^@batRQD-k*$0`1NbiS_lG3Znm+7{I;%0@8L|dMb#2E^aNSf5c9UVlRdgXfq&2k=@ zd59Zm5RpV<=&e?eEo8m|F31Fp=N@Z$&b2PQgJWm^1FAq(zZ^8>q_a+yiRmSISYB6* z?Hv`kd{zx^SWt(X7Lo zwR5U)jhJ19tHrD;ToqD{E18Nb#7sve_A^aH%iq4R9uF*Q#v8n!j`99EFxZCO(`(UR zPchHSL)PRBWKGIKYi==C*4E$x*17In*oLPhmK5^WH&XIgCwM*JwGAB>))!tSuaINw z+nG`(1qEF=Sq~%Wg5|(P+Kr?;D3dWs@AQTV=bLxTxqeK_wOwwX`+k{ud6ww|EX!B2 z?zXo=8m4PnV>-Chy@iU((HZH|i*@#d&o|n_7rT6Vj2El81asZ+U*5 z={(N9lir9rVFaC`8Vb7P+%;csMKi~3bexp8Qo>s);jL(=cB<9Rpc4`qRMoCVkX+GadnQp1ihC)epFJ!LKEWh%Ov|E`i&%6JP}i<;3?*o?XY3UyvRN^|Nc#dXNb zs6|#<4Kh+|k)BqMjC4vkWjrUV6FJ%4OuIPVf$R)U%VI(?>-%zAi1#GK>R-T_WUa$6=ZgkZ4ptG)*^qI7yuE$azqcb3W zoa^{B2yP>Z>6ZE+4Ve*7;|z2eW|CRxCOwU_(c3r&y-fklO6Q_4ptorr(|MTHItN#5 zItTady95vIxtNunv$3qE3mfa3ao4iBcxv+i-aL0Te($;+_@575fPa4Oa(s5|a{T6% zOUXsRu?z5-)Gee3brz3cF+Lu>J?dzjw62EV*(6<=Y|9ZzD z{^{0b_}Pui@K@I@$A7+JIsV|H<@or#<@{r^3{S6Hh9fJM;hv?-aA*HA+_qRO$L$=x zW62=yBzFxA;=s~D9313w%a*ayvz(QhjU4f^_v*e|9EAaaI z<#>DJAl}=&6yH93DL&e<6yM!x`H;ik-ad$Tw=T!)XRpA^o0sFcvzFmmE`N060AAR% z1g~yhf^ThKicfYk&zG#mf4OQM{_6Vm_}^b!&*NE-|8vt?{KL&_@sGEx!$04)fycTD zKfikuesOp+es%vAe13%I@ll@7Z|=aapWKCCKfN2jdHy0^8(yQguEKBLzYf3o-p%;U zkMG29e*Z9j^T!Y2H-Gjhe*G6u7=H7g#go8)`X+w;M~~pMfA=sx{|`^#vp;zrzx+=x z*tw1A53HV*)!+i-*}Gx;Tt>fH}`G9|L4Fa{FmD{;y>NI9{=%% zHTa|JSL08O0XZMPe2eMZ z9Dhe#j9eCzXs~>(HpZ(}& zeD*uH;_Pnc&yTQtK7!Bx z>tp!*FQ3Hc|MMt5|Em|tOB`nUKaS$Fzjy|}Vp;vgj~>R)KRAege)&fH<71cNAMV|a zf4F-m{_(DD_`e6X;-BvpXXBp_I=0yKp4j-maQI&i^P1nc7610YcKqUjolJM)=MU_N z=fNHLw+A`zA#&s#{KD}td1Mzkm&3d8Z{Ogs<56ChZv<#q=vqB~9)9`wZl=5O%Wo20 z!zTlt+8Y~w(i_$?Pwd98o;;7&T>4xaw*d*C{d9)64iBSSO!(U6!uncUqO^_n<=7ODXH> znCq7E_ND8%T?y~2cufwUQx@(lOUG{uQ}Ofc6nsBD31_Dy;+u)_I5#x`SLP())?)dd zrt|enLkWKaCB;UHRQO)5Ox2OP3V*94EB}XC!QVIYwoC!%6|CgvV3kf`#jG~N&&HZ8 z6scsQXf3mjk992{-h;wmpXU%X6%c z^p*_?#uixS=!B2^gyFYIG5k&@pm1(Hie|?$F({f9jY6h?ZG(cDeEu`}+}TFZk!fZI zUyB)h9hgVc9sKU|`Aa#C&tEc~k7b(9Jqgel;_H5) zxHupPKlTeS;*X1c{qTdNk3Zvw@0ss<`{F_$U!0e)e!jOK&h_%e*&a+!KYXj=i!&-d z_@)PAlwb38{kpq1zGA-Y?u9S9dE-eAZRx)2`kspLFq3`Phh_?#%H0 zV0k3HBik*lF*&pevf9^0r?+aN=5tku@|W=Xv#+3awVJTkdm95gHpe0h5g*fzZ6hL< zFy9;35__2465?Dzo%LNrv1Df~!OLt{AruwT2~I|a!mAL23e#rzI-5h`T}UU&S?ajz zvdmc*ma9b0iEx~PQEX)-fqSKx_PX*q`3}JSvl6-=jr3q zT{w5gw@g=@_t$aax?*IQHvz6wVVN_PELT0~f_H&Bmobe9+`4bJz^laXzyAIb{`HTS z@X~Xyp~fq9Q0uh@s8ge%I$@juy*_cSdeMnt-E-~&`V&Lf703;sJA2C|8s*I;tV>ky zIU}VEX_w>B$Q<$8FvN_|4P5z~ZejMu6(Ch8mFjaM5G`}OhGtHiTPJtDjwYF6RxUVIy`K3|&< zuY;FfU^x8}xAPK_|MDx%@yaW$@ye@h@$#!}Q00|YT-J?|#$S`m&++r}Mhi6IbC*9GTD(n&*Cncn zaSiY`Xi>j4nlmj}*B~d(RSbw%K)U1!l&cWoQdWv{Ne8s_fO#c2S3nn-yKvryIB(mS zKzGM^Qy0*sY-=Fhzf}N+CFNjVZg0%b?untcc!bnxhRo(oaAZgdZmu4J((NM&zM;U5 zekdmnu(>-CZbTuRD0h}Jk0rqbqDWwlwHYX9BcyC;GRhVwp?pa)lLRbD02apsip_*z=m&n z+3-Qv2<%Re!0LD#<~wYdLU4}@4#%i~FpTmG#aRC^ObR5zLoJwZwP1-o9Lpoau_}g; zkF#QJoDFMv+w}=HY)Xv4Ho|&mDz}*yfxRsEaryvrFx7@b$yOXnvf?1i1IZTbPqAP( zF}{_{*Cs?DFUE!i5f;ql{mi$9W2qw?Yh%NS^>DnK8O|N173bLC`gvdkt_`u{kD=Vz zGdG5?5irb-+an@zcQhM51mwfKSHSkbxdC)Rw-e*$d;z#jOUdmpWm`1JOV<-H zYqQwU&%}McE;kpX;g^|7I5#c|pAQPh$GwB`dA~4xPn6%7lZMAcQ^^``lVB)Y+l}FN ziSSa%Y9k8egtr+%xC#+&MnFzD>yjbP70Q_s6X71|!N=Z<&yS@*eJk<3jS$~Ppfeil z#Q7GMn|h;ULr(&RSwT4Sy(ygE1^Kfw*#J$$eS-Whp?z~q9DW}WgI|V3;m5uaIG=05 zR|NUVq#%5p$mg9IhI0d=@ypZ{+#&QHZ|{kM-Mvw`yB7-gNCj^d9-p!kzfDEX8?KRE%VpHI?2|AIjO zY6eQanMt6}A*g`MCusKfe&=-!0*1G!NxJtRUL?Sv|WPC8rmo=!01(*f$Xm z*A2tng}rfiMi(};Gx!>$BY(Oim5p=4d`1fKEfIjTl+5CM3Fk{5&E&eX(vUBofw^f4 z<^>BfS!NRD8tDb|OrQ(SO_USgW)#jP1iECIgwsn|n&G@6;=Cx27#EZa&;{lz1l@vg zox%#G3SllFFXsBit9YB$e9u-8uuC)W+mcNDupk|u^1a+WG!6^1tr!;38NGblU_@|x zEK3Z)dxQ91&(1>rDt-pn^7BYMm#yx?--#TQugd1T@atIqj*bYz@xH#88`~PGZR)_gW;J+MuZqlOwXh<#JwE9bgzpB1 z;HQB>xI~cu+~1F-2Kq%6jr5Cs0u<5(=o;yMxWEX`&-eDndA@Gv2=lW&{Wa1#El?Mv zeQ=AIF{KC+frI%sPXS6;z0e|sL!{nzuT`E(Vut^PWan>ECg;I;&BC+v-HhyC%b70mY$;rrqVQUSV@ zs@|Frqzl*u>Jr_XzJqn?ZCBxX+nH?yw2H#Ij_O$_CY?jy4TLL*bD2c2uI35I-Rf%n zm=@T?tcq-b*_Nj0>(v0E_20nTFTRXd{_6$2`P7T({Ax9HX;Ke!1Nc}R9dIC;Feknb za$A!9tUG(oqggWhouz?vS*Df~?woe@qRa8ztrgG(zuFZvON>%vOS4FTfkjOwi!XX6Y6gBoiTy#9-{}{3H6pLGQSa**RCnoOn(Fa z;0NaKe|whjtd5%1-X_we7oDIa%FVO3OD}pOBaOLCot<5JeGRNPQxUA|6TGPtz^UWR zJrVDYbU7JZW3FGPMpIO)QU}jGRTY2xzt7^SzrBbWFV$9PZ(X+?+7PdT^VY<9tGcaJ zT9`%`B*n|$4CNsoUUG^@kB-4@O2wn1|~m*(||a1{ahljv^YOl3Xi zgu7cjd(8=N6Xs9M6O_B>zrlGUGaBb+6wn)aE2OtIfv%!)-mZx+mlNp?eGt$x0HacK zF`q!6otcY%VUY-^!yns7A6&`nf%4shh;zc6P{3Bfc@Ku=7Ac89q6&nP?lCud&1HHc z8-8ok2y=owFA-SAQj(VpEKejN6F5znFNq`0V}SY5D4!QioD=2T5tnd>TRbfiCERfq zb0=BIon;|+iUm__-0@rS=NKD)Bx+Cfw&O^q9h(#ESQcr=Y^xnp!t9tBV#fr3D<%bn zV@7Bg7FxrwIw~An!QPL|{s|0~5oeRi;?%m`9+m<$dl; zx8Z{>5jfr5&K<8EKlQQVN+0gv`-b5;gM;sd^iEOM8$a51>EDf54X((NofpRm8vH+q0D{}Z=@V$Cx7|KshB6{Yc{L*ri zUtWvypVp%I>!rAVWD2gW=#THlr{VkIiTG($JboURfU9f}|2{1Nx91W!Y!p9UmWl#t z+_EuRyo!zB)oc{A!707ur2_Izl5CW0VS}3}my~W5h!X_cC2YVOI4_e@EhmDd*IaNe zz}_s-W(4C;q$|puAm_A%5SMx7@_E}Jk-EmfV}jBcuFexWI$_W!ex*)~_3YIip`6)3 zXiNCImu>2)WAv8m-fzyAI>D~8g*X?KZ{=;bvE1HU1D)TyGU-L%(wDCd0p{fRu1k@&&2(yX}C8f8Mi0J?aek;TQQi;5?-1vb zqXSTUY#>UG66x;>&W94`1p0>~Q1bCelzcLpKp%_ZljBkR`2+%eGKx=6LGf492z0kz zbf!%5%^Z|}Js0?T9y1^Kl2|{v0Hw!gpkU`1+|TQWThp`oeA984xj!Wx52mK$Azud> zHIPqmOEkP$pG|x-k7lPcQZk(Hj4Yo+G|klzS3nn-3(6JD33q;ur1$(WaV|aQ1^j-= zXax_HOWZK-itaU6Fn8jdAT@Ems+-PgGu<`FoxSF{YJ`NsIls?EtGnXH3ZezLBSUSYYEg6)ctKc@ul{NAW=p85k!MYg4}U(9VkSdoQa=VjoV zi79x0csz~{jl;)d67l`aWc<09@0s+J6UW5@@)fE4E-+GZTB3k0zfV%Cx*NI;VC&@u z$klQq#*Hf_Z*mMCPl+bH9VnR05W9~F zbQR)Ph07ij+>a*<&UGGfT8DK3wg7yxQ3}?%?n7=@&*T2ZnOIdmlJItteBMTS;x+WS z4j+>a*PR^4{c$W4!*IC~1$5P89>M2f!&k$?u|C5W1ALmpQMWGaZ`Q(qHVv>l-3Pz$ zJ|D?GOh$t(h)3!CSe4>=G2Fk!Xq3-#Fp)$!+X7Ob9ce&add@k22A{uM&v`!Ug7Zf+ z_}CeRbOm*db=8yZ0d$83I@=p}jNIn*P0lxwepB_N+i+)MIBri3=i?5?@d1Gt7a=D+ zu7NsFzl2WJs$)Rs#@LhPiwk_t7Y7I8(jcOIpw6WM{`jdsK|X*mmr`)f@&}eb^bNrG zeF=0U-wD#03kv59F)lzq$GYS!CU!uzed z80Oa&Yoa@2Zz2Jk&;|zu<_Ux;vzHj(8?Rx$H-RPRIg!rwB)b_6bR%k-C}egrJDBan zx<>@)5(3gZW_>H`5*f0-h0C^>bt8I6ygrs)hO=)Z_!knWxt*Gzb+y;<>OWq@v;X&b zRR6D6;8m>_hIMF#wYE-#bq5@ZYRmAs5u^vWt^JI`H}7X3=c$s9OUnH!1iD16r*W>s z*TIMhbcJ*kf>*$-(9F6qUjy1)r;UmrUDi|37O<;G-Nd)lHPH2ZGcs*rUzf67^*Ey2 zsO)y8txl|j)65r9dG-8q^G=MDn)q(zlWESuYW!dv1#@2}BL zcq^zI_5Uu?b1v%&&=u0nW%@qr5y5X%Z-`f3coWY(T^0ZO`-^zypD*L3XKN76a{csr zsH?zEq}ObWMnt`P8Y{57hiEt9Zba%$2zVL7Exq9~JpIjTgfkKT{L`=TK3`_4;KgUE zUCagf;S1}*I#X@!T!u! zc;+9k;h%qd8GrxVOH38~ zUB1ptQ$oC%f$`?5hg_GcE(os#=&oLK7qnX%!`#hb?M{HJA?%(}xAU0if_Y14bPu{K z9bF;JUFk%m6X%UxKyO2s3(ifTw2{P(i$Lkr2;$tzMu-)6##r&o5DUKPYsK+g z8}<;_o0B83o-kh*@4&_c2R0{0Vnfh% z*NTrg@53$@oX82o``Mv5o)wCt#QKqR3l0(C2PA3XgnK9dH zgM|&%xeRfku)c)v$8w^Tuq;~B9R<4v;?bdzxU+8*uCE`2pB8k%kJHj{ncKQfu-=@R zgu8Q6@L&NOkxPh{WdsQu#WIvr4Ow49kW1FGfy~Bci44=+D6nQDo1Xy{g>yny!CWFJ zXCqxoC(;Q9iLA55xSec+@GcdIE1(O)jYyr_708#X9(G3cmJ=KX&P&&^QM^18w+X4A z*jW5xU>H8^=CATa|1ew}7meTf`rIL|9_Fzjy^8lIC?_%$&{c9(S*9Q%uwVq=DpDuP zWk|WgxO)WUEQ#_`LAiptL||@4ATH^yOJZC_&Esul$hty2alVOJ-A0nhX;g?Gs z=HTI+4BVeVj5Bwqq~g}ZB>X-$4wr{HaF!tdIL!w~V>;k)bVnRd@x!U!R{St79@pll zVPDFekiK4oT0r89nU^QGQrLm=otE???pa%(4E2Ig$P@ zfiAu0?-S_n6X+)d>BCW?deKLt__J{+5umGK?o(0n#dMUOX1<((vM*<%?CTkXIdhuz z&zX;j_jf0wVE1S|SThiJ7WTmHnK^7cXW;JSRNUihAi2-a@Pp}TY=AQ}1>e$3E)Y*A z%o)CJ`Ewa5Rb<|i(HJ*|wX3?3dD5%S?}5>Ku7Iw3&G|X{E0oJ;Ov3M<3}-KpA?<>3 z6@DMhNYD97f?NTebw*))CBeLsz+(#d-aX=X_~xoyoFiZljgG^@oKOt5c0@OymKYk+ z9`h0cvA4G!Uye<{Wq!_Y^6}*p^Kv+bI_$+r8Mh_F)Lr3sPK^rDkw2we_;!o*cB>)i zuF~v1mmYD?-gBKYvo7B!^}UjLd>rcbT~NsTzq=wEzbs70H&YYw$rys1&+W^JiTGh= zDz5W2zr8pe50~-vU#@$;bt1pVb+`GluFO|G<@_uV;&SMWLb|}5rM_SO7OzU>vNZgemx?cE#9>pvP>gi6MQqFZ z2(Dcl(G445fOlKu#RcMccN@+Pvf|fK1fmQlCx{;t&;=3!x(Xp`q+qg{D2@0jQgWHp zd7FG^i0vsxq%OE-{ozz84X7)uo9H&yGoj9?ZK&wwDpNG(70P8uyy`V~;NB!VZV=|@ zMq02t*AJ6yZIIKZ5z-pg!<6uL*q#-D&$%zZ%*TCaUIGdi5$B7OQMxFR`>h0&66wWk z6DXX|mLcr|bUn0PkS_BIi1q@u7tG#tJ=EO|=rf6P=HW~}E)}Uq;Q`_PfKY!xsNW~l zb@-U4MdB{OF1bUn-!_0QJ?VGY2DvlE!g@IVoEnDj#s*_sb_WdbtB=sPtHY~CRm3-~ zgDF-*DZ?9|N>BH|0Q@vKh&T@*%*_z%1pOuA{3n(_^$)<0MlLcx^dry-btllx^a*ex zU4VYRcYwyZTMxPbU3$?K&>87P|Eh-!areQOEKjr4J?Xv-_YEus=_&$t)wA9ipLXkn zce{4P3L?6fS3P*WRSj=E{{mk6$Fr#Nj~CGRmDds5v?<00w#RaN8*Ghhi+zc0aZsg= zLb_ysfU^1}JN9PJ41c0@U! z7r}Z!!uvF{pYsLbYMO}M&&Q;3&N%BP;u$^;6ZHz{&bTAp2Po@`TNo9_i5*B%v(aSijf*u&RdAikH`7u$+uOTIrXvE0!T z{W{h|06!m<0$oK7bFT#Bl|=WR|25G63g>DWk*R<#k$Gm_IqiOSc%qN<|6`!5R9wG} z9`eq*oItJtpJN?j`}L~z2=khF`X5#CPh$3|zrRGRzk(P3RTVFDe)SjM!t2Cut*Q<1 zb~S>vI>GuHQ==goFb!)qVg&L{)%DZs*Jz5m)f=M@;rzy{^_?eodx0o__Ni(rFFhmM zt)+&Z*Q?Q3^_sWfZ?2IZ0#)f1|frqQM(_n0y^>=dEf@ zP?NZ>W(;Gms#1&7wNRapqehjwsQFS|yiSA*#NT|m9%{W(AGKfA&#f+>TLU>ZoCt67 zx?CbohT`*nCB%3$=@qZtmiN!7o^ht0PE%EKIRW03ka zH>@ViS27CY2F{lg^R?_4WE8i zoMq1Rv*DXQHhkI3iZ6OtxMQ+##}tN72<8t3>O}PMObd=>SaBr7hC@WQApLMg7>*L? z@8;MDbsG+(+ps$&0y~o>M0=_o`z4%rC^Z5{(rh@K7KTI8`<@bp!*YCjayU*fCsV`l z6`#+!>`?r``~JDN1;6rf{yroEH-<;x=19BFa5i*?N$J3?;ZeA)5{=s3Qk2D{+g>=joq7kuj;^KxRmd~>!D4fK)?a{O#2 z?k!BkuWZPEH_U>s`i9_(-XSzj&{5dBH_m@b+T@b>@wU&=dO6m1e zJ$V`s&LQe%6vj2s%TzD9o>#igK)C_)GSyqo(nvXBUQU#k6Wl5Uc==X|oUehegG8XN zhPKN#^swV%={a3NJm+;o!IG{D<@p4e^zh!Fk%HTk6Y$&EXj~p*XG1LvUt|a1lQchk zoa&EH(gWEb3&(jG(mp;BR|(M@E4tu5U&H)exdb_(f3OD%59t&g?u9}|%A!LOV*OBW zPU{pOCdvimMC9Jz*BAp@9OO6>pe{V1&NM}AE)ITKBKN?P;k7UNEq3)%hjz`(2 z6H#`O`J6d58RZ0f`Kc)=|7;3MPfSA5!7+HWc?j<2^}+2qU2tn!CTN8Z(_pC(a+tNY^3KAIxIOJS5Z~O3%4MxB+y*dWAfe@U>PzH+#;_D5w+XGVEOe zogg!Tu5hk<$P1Sdop}=01?DRH7;_bcakr@9>xB8rZv4Ix=Bv6GFz-V2b-^71`{IIh zd@wNqoA~=MJ1qcX>>V-2+5yv}ys(1r`M%x}_;f@ZF7Uhm2Op=LH^F^)x*nEp#6Y=P zuEOt}6Xl*Ms~GiN5u6*Pb9lOh-yH(I%p(dJH z%^M@JX+sR~YKcXW-q@2FjFWw>_(^`_$4f6Yu}O3bv84QMx=0rOTKlsS4?G$X4;f zcofYe&gT*2b7fe&M6hmvo%I6dG3P%f&>s`%`R*aa^NIOKMjlE`pcC;ARH?CkpSdR? z)bFZjpqstucc)s3^)UQ0J_Mf*^uux@w69lP#5H;y@r~a^uTBjyE21rSrVGsdae)xO zG=vBr!g4Sp(<+>2)PG|ACzd}F>J@=*#slenxLu-L^`c8y*FEUQF!x>rI!nnn2Gqaq zDL|L_;!D=QF82;b{(mmy^Qf*;`#Hz#zbKZ}R)XkXFd~VLPQl)^_>|qzMYpfd> zRya3-?&>j@=_g>$+nCwI$ENCTNLM}T66ZVv=)7-T*D#m5M!9Tc8;9{~qYNhn?_tBE2HQ^}Nb(E@>pC zJIc+N>v#a2;WAHf|4$=8Z=<$tZc~ngS$%4bT1SHBQ&WtGsPZLb-M|qW+EM#_`w$I3Jrc3gd!uMsO~}!#S^+3Zcx$Z3115 z4B$2z*Wz=j#n+mUZun*^)EBf9+4X8PM_q!uUd?7id~?(%x*Hg2_y*UPyvg@RhTSub zxShu8gmiqZ_*k0NX~)Oco{vG&PNkU{1LmILZ4}b^xK;Sro#8a0ZT6nK1HDBBpz9v= zwiP1t++tw7vi$czm;5`RYn+?Mp|@!)KsRx2U|hx5h~V4@9h&*Ut3?p}TZbd8Z3ueU z64B3|g!uOU2zk3cjtxx0y*1rYzOy%h&TM6**L-7FqCAHvC(aehiE+v5WMCCRzLMn% z={+}k%N5MyQJxov@@32thBz-L2utV0p=f3d9!zoI&v7)tZ zJI?d9`F21!zUd#1ZwFf0K(yoXq*&aVmxg>opqS9{>?P#=njtLI$=nEUiS99%q3gPI z_K*wEiSaTnms0hpE1WZCkGTo+O>QXPA|5v3nbLdo&* z$lo&p_tp=@?ZrKDV@3}Cm`Lc1O~#FJNw_s33AZOE6X?kVI*~p#6?X~ry9D~(=|tW1 zbT+n)%*;@wf;+*kkzP5@B?{+%6?dQ;I4^L+xg1xnao&{>mk7vNu8^=UA;=Zb&11?1 z*YkQ*-Nfs;M@eY33M|Ch)tj? zm`jhjv(9im9XF^;xSmRdZJ9mek|Kp~fw^0V@}kx0Ecv)3($mh{KjLHiV{szBC9aPQ z2*t8gFANK9h4eO!kkqmXvRgODFz>cl=J3Y*-HAT#ukKDJfC*z0;RTZg-U4ooblod% z_KxfMCfZefDoY|;hj3*S(2eAC+5_nl&J&>P5V6ywp z=rZK}381T(KzHj!H*l_iuHvimHS-lwF8Pvm&-mc;US2rXwG-A8#uGytA(Qax{AM-0 z_1uei^Vyfs^3~U1d%HHew`_!ILG7?U+6()Vyl^C`1Kvq&hj$3{!wTsHt%?D46~fg_ zGJ$FWoy!F9l_6bv)%PT{CD3(ttF*%|MtakoJ?aYVZ57ZJ)(J>Kx;{Q#j#Y1|re*l` zyzpii;#D6BP2NJs8n2<=3$LKzi?71F24UW)9!7O;iRG3K*csJ<7;lF|#OooV)r^UB z6>d|7_jy3V`>%*~7t(bU(p4!qm+<*27!&6z8tWR)8qE@QoVSV#=O)bE<3f4GWhT(M zZI-ev=^fX-iE~+^}5ggQ?6ZJ6R$k~76D%mZ@(s&XCuh#5Tpv=0$?MmPT)$fv@=Aov7Q+X zbfYI-g_!1ii5k|go}+&4%xl=I2;K$pT&^R3R7l#QG4G?X+`evGm8QgZ(|Q8%_Jp{^ zL^&Um8DhM-MBpt$*v)C@e9vf%6ZNIxraEHR0i~h zZa{DB26O}G8t8<1Qv>M4xk@u1c()2hq<<2;n)oB8vmI&vQHW~o14n~~_-u4K9FRl9)FC9$L;a)Y^cZK&g57&6rx#Yh_>6~BXM(FByNl$)W_HfcY>6V`(=0p zp&mh~+X!_lz9&}C_p>Raf7!!=Q{63utOXx;wG!zzB3%RgxF9_-f<%iSl*pnQAP4RXti;BQ>n+?N*Ea=ub9BHk?kFg{5Q#mTe~e4Q17AJ~Yy+S{U$&d2;GAN!4=(xcAj$lMsg z2GYn#{5CQQ*NC{Q#P^kv4tzH_5+}P@aV$O%M-%+HqbB(I8r+hG)|>>QBN2rQ*$`S3 zkK!c>C??QL@{&-pJXsyvS;EF^2^*p%Y>1YuCCJxhvq8?tP;zywI2&04XNmNJOK-RV za|Lmut}#xKDx?d}1*xp7UUoLtM`ddW?YOK%}@prdiFk0&=ug>gBK+yJ`3 z+lg~QxZs?RS;a)Ugwq>(5!#GGIb-&iyQ5syxh|K<3F3+gmtr~GU_~y0mxKHT*~EAj zF`j|Dvr=(~;JPt69@oal;1b`@3;bSu)gug_66GJH_~5++FP6UeqFV^Q=X?G8j3hkB zBNpYDdwx$#b`t%PU7X&{``X3&9+vwEbm>7qAUN;E$g$+aIZFlfBZ6|>OJ1z%f^!0& zKrdyzRG_Y~u5qqV{ti(tz30bRKh__m?{fP1Kmwh4e-KIubZ0)03`N;{!%%iyLacu< zoOmCB!uLiY|IjGh-##3-R`tjA*}3>-d^*49N&HMF;`dQ}O~xegJI#zw#w`N+eF@-X=!}@7?yVl^}Ewt5x8rl6H#+A334-)Aw5$^oghx1B+hx#IO#oi z;+!Z~J?C8rbiuixoCsGDn6p$dpzg%E3}5f6>IJKF@rdjHu`nCo&q~Kfd~Vx^#9)3- zI7UbLpnqsP3=L_A*)cxY)x(Of#wX&2dFFKiv-F6|kab3eu4|wh_%?=-J7dh#$9?nr zA;>oCT&Cv#ed)8$c>k^r#urBbf4Cp#0;05QB0^-72X^!g z!L+yz=;hr6Db4F5wP{@pXx|JABfM}hCkz*cMd8krc!gpY%8e*|YivIzymd@`O9bOl zC^SlyX`Ih(>BOo$CZr#8zK($1j4Wd~FW-p5`E>3Vc)Lf_2=i(2oS(pOUrn6L`fA!uLe^rC}ksJS2z_oChkT3(lP(#(y3ZWW<2F0dzIY z-H5Xn-Px1w4s;pfUIFOLS=P_?CeWEPe5~KFbkElkg8ge^{A(_keA(LvpZ4&=;cUK7 zi7hcUtTAF+yoJWEyo{Ir{xn{D<^{BPwHl%u%4OVIVO=Ca&VA3(EN$%O(4Gdl?=tSl3{0OQcKMsR-70v)q-?o@tAn%nl>Y zUUdOGVQC^=hPbaLDCb(6W0-Ff#5Jvh*43-4liAgM{uTHT=2^`eVw!&&Y>MneM0do& zXg>BBK5n8_hjpS=MW(s^!)ls!-seGQ+7jv#J}(KEs}QzQdP3b5)l<#K=^9pUMtZi5 z@b;1?fv$VOpPa8_-d@i)V6N_yuP-AQ*QL&W6}}&Q{5pKR@w`o(oM^8l7FZi&pjSPF zy&CdJDWoVArhL2-RO9 z-mBEbD=*eT72>zVvGIU)HRj;d2 z?F=7lQ$ktlx~JR(yRJ8vy4$oMU54v>M7GKM&?TQI(^$e~It00jMtKvW+Z9d|skD#~*Cx>QiQxG9NI2i4ZlqG2OWZ*IKgYSu zs{nM5W6z(A9E)xu-GsUt+D@dmBh1@MntH>lWf0;*(h%A%8bK{Bu(b(AOlw~xHED`7 z6SMJn4MDz{Am1cI*@<$A;Cu~nE<@Q(oUfHSQO=aFN<`U;1eE5*5q{jc5`lukJ5v+! z+r$)H9GQ&M{p0a&muT!vwqtFq4J%^oSd$QgO(}8Mosoc}T@&$X?>L+r6pO2)V{v<8 zEFMZ@VR}3YW^m^$4GALuJ{t~q*>JhThR*FtQEa^H+?+tX3ev|Cuq=Nc;~>=S3hGye z*|_7h;m3hC?hJ|azH;_=D^7Q_;xp!xt~Pws#fB5^NN3*7ioh{KU2>EtKav@V{ppeF zSo0Ne4$QDeVo0D3xjt5;c|{<(lO5?ypMYo#4UNU9kVuRPwqs0?9iszmm=J8k^pJ4O z4-H0Mcp%o;g0L|n06QWB`6C&Kas{w9}5+fAU$Wzr7lW6qtCq3uTRxe4=Py4n*0zgP6f6J2n{Q?+#$uA7$?l?S}`WJMhgAp?Yi33Zl_h;xY?PT&l2 zE-|6*0d$3Pg52meFIvW^-g5yt-)jYPv*a=}M0x?|JtE-ma{X&dy5if}U9f9tBBrKU z&@IFZN$p#qd&lNj7|YN5kSJW6$NOBZKSLTea&kAqMzThd4LQM^AX}f@O(4$ir+jCn zcU$!UUO}P0a0{X(f@lNj&Tu|4?m3UQRoE7kvy}Vh_d=rUavN?({tV#vs+1s??_S}m zt^{jW+~o7RJf|zpPRhoq@tOF1LKewYbUD9<>J>MRA(zM{(O5c% zt;=IzS-|!4`B?8QPsJb0(s6!vDh>^c#+(#?boFWmYyGzo%?$3?6zk)>@fG(owXJ)LAFcLVqeL6J5 z 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 BFlqn* literal 0 HcmV?d00001 diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Style_SpeakerTextbox/preview.png.import b/addons/dialogic/Modules/DefaultLayoutParts/Style_SpeakerTextbox/preview.png.import new file mode 100644 index 0000000..55f22e4 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Style_SpeakerTextbox/preview.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dmlqow4is4acg" +path="res://.godot/imported/preview.png-fffb64b5a80dfa536274e4a967369cfc.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Modules/DefaultLayoutParts/Style_SpeakerTextbox/preview.png" +dest_files=["res://.godot/imported/preview.png-fffb64b5a80dfa536274e4a967369cfc.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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/dialogic/Modules/DefaultLayoutParts/Style_SpeakerTextbox/speaker_textbox_style.tres b/addons/dialogic/Modules/DefaultLayoutParts/Style_SpeakerTextbox/speaker_textbox_style.tres new file mode 100644 index 0000000..ce61f62 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Style_SpeakerTextbox/speaker_textbox_style.tres @@ -0,0 +1,68 @@ +[gd_resource type="Resource" script_class="DialogicStyle" load_steps=18 format=3 uid="uid://dgkmuyvy5qc35"] + +[ext_resource type="PackedScene" uid="uid://c1k5m0w3r40xf" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_FullBackground/full_background_layer.tscn" id="1_sde84"] +[ext_resource type="Script" uid="uid://bwg6yncmh2cml" path="res://addons/dialogic/Resources/dialogic_style_layer.gd" id="2_i34tx"] +[ext_resource type="PackedScene" uid="uid://by6waso0mjpjp" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_SpeakerPortraitTextbox/textbox_with_speaker_portrait.tscn" id="3_epko4"] +[ext_resource type="PackedScene" uid="uid://cn674foxwedqu" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_Input/full_advance_input_layer.tscn" id="4_8y2vo"] +[ext_resource type="PackedScene" uid="uid://dsbwnp5hegnu3" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_Glossary/glossary_popup_layer.tscn" id="5_ll78j"] +[ext_resource type="PackedScene" uid="uid://dhk6j6eb6e3q" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/vn_choice_layer.tscn" id="6_36eid"] +[ext_resource type="PackedScene" uid="uid://cvgf4c6gg0tsy" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_TextInput/text_input_layer.tscn" id="7_hx5el"] +[ext_resource type="PackedScene" uid="uid://lx24i8fl6uo" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_History/history_layer.tscn" id="8_00chv"] +[ext_resource type="Script" uid="uid://dv08k6ljua6fm" path="res://addons/dialogic/Resources/dialogic_style.gd" id="9_sdr6x"] + +[sub_resource type="Resource" id="Resource_1cyj6"] +script = ExtResource("2_i34tx") +overrides = {} + +[sub_resource type="Resource" id="Resource_jk75o"] +script = ExtResource("2_i34tx") +scene = ExtResource("1_sde84") +overrides = {} + +[sub_resource type="Resource" id="Resource_l2hgc"] +script = ExtResource("2_i34tx") +scene = ExtResource("4_8y2vo") +overrides = {} + +[sub_resource type="Resource" id="Resource_iqsmu"] +script = ExtResource("2_i34tx") +scene = ExtResource("3_epko4") +overrides = {} + +[sub_resource type="Resource" id="Resource_axty6"] +script = ExtResource("2_i34tx") +scene = ExtResource("5_ll78j") +overrides = {} + +[sub_resource type="Resource" id="Resource_xh5pc"] +script = ExtResource("2_i34tx") +scene = ExtResource("6_36eid") +overrides = {} + +[sub_resource type="Resource" id="Resource_ytmk0"] +script = ExtResource("2_i34tx") +scene = ExtResource("7_hx5el") +overrides = {} + +[sub_resource type="Resource" id="Resource_yjxtw"] +script = ExtResource("2_i34tx") +scene = ExtResource("8_00chv") +overrides = {} + +[resource] +script = ExtResource("9_sdr6x") +name = "Speaker Textbox Style" +layer_list = Array[String](["10", "11", "12", "13", "14", "15", "16"]) +layer_info = { +"": SubResource("Resource_1cyj6"), +"10": SubResource("Resource_jk75o"), +"11": SubResource("Resource_l2hgc"), +"12": SubResource("Resource_iqsmu"), +"13": SubResource("Resource_axty6"), +"14": SubResource("Resource_xh5pc"), +"15": SubResource("Resource_ytmk0"), +"16": SubResource("Resource_yjxtw") +} +base_overrides = {} +layers = Array[ExtResource("2_i34tx")]([]) +metadata/_latest_layer = "" diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Style_TextBubbles/part_config.cfg b/addons/dialogic/Modules/DefaultLayoutParts/Style_TextBubbles/part_config.cfg new file mode 100644 index 0000000..47b4ec6 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Style_TextBubbles/part_config.cfg @@ -0,0 +1,6 @@ +[style] +type = "Style" +name = "Textbubble Style" +author = "Dialogic" +description = "A simple text bubble style." +style_path = "textbubble_style.tres" diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Style_TextBubbles/preview.png b/addons/dialogic/Modules/DefaultLayoutParts/Style_TextBubbles/preview.png new file mode 100644 index 0000000000000000000000000000000000000000..74bc8fd315e6b95cbeff924112b0fa0e3e721fa4 GIT binary patch literal 19024 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 z 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≫!m_(= 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

    a`+XM({Zt}TQeDImeA5Ik zc78ub7-PfO#0Q>(qPJ#!c@TZN=|Lc(EU1mM{oJ+oKSYK5!?w>>S%o39hxq#2 zNj=ymbdMpueR4c1ttq`S7qJw%^$?Hy;KQ2*=RJ@*8e#bQ+f~Xv_(9Pb##KTc zldN@_a-Y8_MjKl`#rL#!GCwr}TjKi$t`U?DR}D#rE4ie@)dO(-xtmWy)jH9VETHa$FX5!7#NK86wvqBs zZ%UZnw!%5JnOMj^yOnv9O+dt*3e0St&_xPpI;+46K&HucgWPYPqJ^{p@9LJUxvz=w#sZRai+~q%< z0WIsmp|s=cO3{#i$_y{`X(P-Xvs`X1;QNhOqk!HTNYeAaT3)8+x`ed#=V!~r8$xdGX?GE3+Q+EM&%r4Ww z?vc1Y$bOx(J<{1tCYn8GJmK8+Ohc!**0)jP#`7|_z;C#rk8Je8i663iv(YS3si

      -+Q53NMI3c#rShbi7fFyp5-FpUO|q5SeZ(gv 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 z z#w`Y0-1(v7m4MxT$#}sp6|V%Q;Ye5pjz(qRSR#R*n2VSB*gHo=VyAyJ4n?Hmjkru4 zizd%{r{shK!In4d_>!EtshPiJP~0y|{i%@~5-Bh@;N{l_kUxp7h*-;FD){t$-$ zt2}(82=|V+=qlcS!(U|5xg9=gM)u!&zR(_^-$l-WF2`>79&b`mzP)Y`ajPA#-ScX` zI@Q^K>*a5MRn>HLuJgYV^1s|=`}iE^fBEUWdcJ=I?*DBFd#TvpdDaPCy906m7P7)`lS(9Vk|0@>(`oab?xF?K+Yg_=FWBuXEc*F-XLGX$Tflopx zypuxVn--}uB2`Yi7NI7O^UsVzaBi%snup}XAtWyz!8x%A;%ApnObEOqgB0L{czsY- zG=j6EQCyXa(G5kYsK`c%RM3m_QCgIP{E}4UkIq7ReJ}|$h4^`s!tF5^G0y~{AvQxaj13gFEaOWj< zxL#|;ot^ApZm+`KZPoZ@^%xwgPr%RHc-!aO@D|${TRSlGxpA1fwH*_lX~D#2TbT}Y zOs^!+qtQ;Fw?sxh9_Fs10bMdimwIW5@jjsIk*;4S;`PU#OXXaSIhX2rLlkcl%?Qx> z7^;HqOrX2yfvz2UE~ive!`lVsa{Rdt=rLT*&;h-~&0AH_8+@dKPM`+`5aXXn>X zRn9e_YdBXxmkPS4%;Fx7rjg-jk>Txuks8pM2?YAgkZ|lzip556U!rB4n!v5+^?7XP zqwBTBxb@Nk+Umlo`ulCKumy$#C@YPFm@%1YU@WqRB@ag^; z`1HUGe7tu$KG`=L*VzHu-B6C1amknworH-&p?JC=9#@~4gzxt+z}L^u!1<-4@ZPK{ z9G_l|x2MoaORGc9bs=KvVtQ z@k(tz_Q?cCnd#V{k%+T%N8#G)CZ+{fmbc=<;(DBA=lLMqVU zRo(K%r^n*_`c9nV^EtD;4W|}1;UwYtzPv6I%klO&W_%^y>8!-tEfsiwOeHQ5=vSMG z^QKX_-c*MRO_ey$eJ;(Z#nq)_@X_jKe6qd`AFplYYc&Sv7S-b%U)ytp%6aw&E-q@q z<>h>R_&R*Lbs|39G69!}oAc8~;liX*xI{=^BM?7n8G}z7$KbOD-e=orT%S;nkJ}i6 z{dz+kK5DARHMUo|eyvHK510A8uE=xaHpzAFbDirSNm`gzZj;l*weY#?a;=5Wn?K9d z=2~2CsK%u+)woz!iL(tQxY$vF%lz4|j4j7Cz8)VD>33h7g@-3r;Ya??^h_gWrxSD2 z>v2mmrwO-aGjp18i(tJuuNgl{7Bu5$;_K%{t+=(M4L>h#XQX8ov~XKHZppSq?f7X? z2W~EC!%u|%O(N~5d9n{%6<)VuB5o|7g6|hj;CI$k++H{ycZlS!nVn2Kx@NSZdwMgv zr!}%|;&UVvneM4<3G%zrPL^eYP(qmBoyzTU9dUk_NWVLg+xZ^!N(lAdd86>_p-%jA zY&;$vZo_Z;TkvpYgBsrdA0=xoG~?W6Hy=V≧kG8+9M{M+SZ9J~DccO%!Q*P|{2C=Uvr&%i{ zu4U59$3WLw{c@Hgajq)p-Wt%^=D2yG&OaDU0ikLJ_cD(WsPObbErDJ|px5zpsLdw; z2a8gO-X`2zIGTv&dpolh-HaN}Kc@!w=GO9cVCG8*YW`jKE+DW8a!KzZzHSTn`sva; zpReIuVtk&o3~_!}A7Wh6JF_15W^$hyg#R4=F7a>U&eB#@LGR`7Nza@X-cKj)FB*r3 z{H%Pia4a6My}wAdwW~aou)q3n8IitX8Xm2gjbGLg=AX~)~*D)9rB%h z)hz9TbUn!Rt;}{WL)`OtU8Ie>0=mq~?qKAoqK3FL+AQw+VeZ=b&-;Kr+!o%}1iGrA z`y-0jPw?_bidTSoA6CXjVOw%EcJlLIe;)Mx>NIP5peJd^q35P!b$le2XGY?u51+ve zBK@YCBu>lsC%53!H#QL58n*Qn^fPiCxp275om9T2umY4SrT#9)~b3gF}AVBP%~4QI@-e2)n3iKZsH(A&8-M# zCk(T)gt>>S8oF-bDMRG73FRz(7%0oy=txDx0ilB3k|ol=Fe3-E-YwGDyK$FOz5$YB;pBr-z@P$#z5!>nLw zXa#Fi0^Qse4wm-l95fi6|N0cth8ZBsVmLgFO)-3!Glm;^z`)p9Whnnhh79K)$WTj6 zHZsK|;=InllpQyF)H*t2o}D8Wx;bICy9h12)i6(@v>_w4!fn`h1 z-gq6*waafmUslIx-+d*QNdHQ=_4gMU693n`U*p&B-@`9ozX3TPxl9Hp$p8Q9g;U3ZFLI9e?)`DN`+AugJ})B=e*Nxkb!_}^U7xCdKIkv%HQgKb-wO2Z=Umk5 z^`E}{?XP%vaV@5dvW9Cy5L}aj;YyUd#sZ=F z@YznnX-fmXKGKFCjQTS6Q0He_TS5#vi1U_c0zEPU%>=Yo zNe@F4q29#h2DTCn=^+a05~-LA%vH;%A?^z3GGjaUBg`A3_0{w6#}#z9$3V|?B+v

      nwK4e7>_LI=>y6Fm&6zuGdrgxmL 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�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

        R*>gb*bQ>i2*Io`0k24wV*W&Jc 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
        d>XrntRn!K%acRd#K92Vvjd+g?4)yyi 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�?Uh1O|=f@*o+2tKC35b9aYlR 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≧xo9R%yU(EaiK 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
        A;G6sH^@6jE0&&8&0&&Aqk2C$aSn7$5 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

        U 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%0Al+vA~VKTsWe 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≠H5r2ZPjBtv$klw>ne}C2-dOFI7o|>K|~xg zkOw*f<9pLPR(<|S{I3NAp(`wZOCr|uQg$4+G9mQzxGa`sm{G`F%<$K)96j^VOSh4C zzN!~WH0XG92dSEcjF>9PSVtc5GW$R-P)=o17N~h_nDX>;4b2 z1=2iKWegdFXS}!Q?Fq*dhkK5E`ncD}u&&Ru#K0kt!R{2IClt1nlhNcPI+(Q?B`9Ye>>cp$vLInrJJF* zr(8JdUSL9-sYCF!iD)iKxRGUWuPzh%YQj|w@z1RB+AZPVs)|Q@X54rNP&wrA z0X53?*5QG@#PB?-l4pws4axSwiB)Z|Kwi78}zHSHH@B)T8M8aVX5{> zMpMaNSbq^H8tVV`LkXBqD4&CE&>;A~55BeVLB*MvRh8eJ+KiUBFa5K<@5A=3s&bE< zVS#;>A+6=Y^q%IWH{`A=mJ(4Q_3@G3lX%bfJsRfz*nK&#U8l;c(2))E;}>Hh{Xu-a zN4~Z(|E%1oWeqtsmDHhb{J1ZkH~c;oJ7d*A5h0=+&|U<~Ja~b_IEV;Y1r>(Rfp=Qy zb_R#gdQb8-@*fBfkh08s7>e;pi19i0TZ$*rhoOxB?7NjG5ugrE(vFhADd*vqB~l;} zGvaH=-{Wid%EQR5gLN`*<8Bv$A>W`=8*2<<835qfxJxrg`#*q0z|zRkzC3U^4Z^X_o;z5CRR)gY3Fqtady- zNj=G;s*cP5YdJIOKYVl3h;}vRZyl}l*CAH!Pj0-f6+2~SAKM|DOMHX4<61r66783G zb4wXpX=zo}e2;MXb;g?TkO-mIgKcdzmqq}#S2P?dbbPjGdIvC`BMMo0W|C;KU2%ze zQGl7;y*tZYwBOaiG}j{0+1R5Nri38Q?)`|g6sBT{7?#DO?kN;UHEJN}QgZdO-)U7` z2BZxm#h^qwqt*I(AD;h-5y~Jw%q+|6kQvG4(RGt?36OQB63p3FB-W4GAL^%!E|5oR-C0|50eXEHxK}n5XI0+s&cgG`^#c zxFw;g;P(0FU@0Nl{^MtUmtaJwz+QK1y>?viA&KQ=R==-1jCP;CdRuMccqO1OS;qC12M4b2qZ29n1IG9r0V7cp z{;JX?*z@e`;a!4(J3qLk<3oNpR!qR^9!lXJeyWPuxIzrQ1FMz@gRURJ(*tI~Y0mG% zL4VuygFZe}T-nm*TM2TS$gw0;eyb_=IHLxgeBk8-kAeSsY*8z#*}nByNt0)u-g-UK zUL!PMV-G-+Dk0J zO31{CE9A-0)9sIS61L7ZG$Yx8E~HOafc`7{+-}O(s~iur{Dd91n%B$8kfmFrpWXQ1 zg_9qAB9H_jCyeJ3gD-wwm^6V`AEFQytHsQCc&~as#T}%g6gyk?RLi@v?=OwiihT?k z3v41Qy%HJ1aA47o*|&@#e^k-LXI&FK-ONlEZuGK8_QE^cIG3fwx*GGUsuSGVDw_`Z z^qTT!ExlgKkKEV*!sp_!Rc5VeQUEt;^5lKi58Ei))OGK~(C%`Q+-q+{VRB-qGan)E z(lkFcM^HzuQkB-CkB%`)#oHW}wG#(~A;hAnqw(k7yzE6$ngY$H{+U`oX;)}S z+&=xOVudD9keP#^?A2x;o7~E2!d(9O1A7n; z`l$!r)&sA_`QNvwAjgfQ<|b>t6$YI<+tO5rGa}RlPdV`iKa@&17P7BvQ;K5H{URy+ z&zT<0x%z5|Z#E>JEyX25>boPBFxLHFX4C|yyD=j@YG|OsD9`+l^=veE@Td9g1(*Ak zoG;V=`k9GZD7hj(D72|{s*EFM?l{eyeBihD>UB6@-y?pL39|Vuw#1&uCRO z<(h-q>VAJyL$@It6o>`m8NR8(7kK)>sspKWB8XM)_xxBd0R1_L@ywbX zRj;7KHS4}9F$gcqAS5x+uP7B?t{?u{KHxZWDFgO!kGacT&LaJ=Hw0yU`Z5X$syRLWNHWOwS}dF(%!a86gw$38RDiB&16lC!jaqn}7WGHA%9CT#=at#S;0E$SAvKz!hfk5wS8P@Nq?zb?J z^&MmZo)d>J?-j3D$iXNpw-i3y%L1H$^~Ww4CV{hK37j7(mrYq2CaTq@fMs2hsJN+D zL)Ex8Hhw7SA^G{Kr`c1iMQtWe7=aI)WzfQ5H_L&}#lv>L7*ls<;-L69;`-1)^?Z?q zFb}NP*{DuX@QQOR0G0oJr{H=VrIh|3U+)13KnUUmb0_RlyUToUeSUOltDSc6Sgt_) z9)>saxuXUh=|1D4v1O2wUDrwRH#pjN;A7i>#%fO{Q!jW}quK_77lW;i>8VlebM^@f z^qjC(`p!CYCe7gC^_~$_i@j5_u2D)k%vheI7;Q!1rWL6EvMj)M7}Y4#f7$Ec8dfc% z9dty9702;+Dg!Z<>>B~@as4hcl1r3K-fM7BVgToBXYMtP?8suYQ^SZPk)BxE!2lrI z?lp?gF7Rq6pxUz)@6w<)N4X@SWFTq-@6q_jZPu8sbx!)s-ogrsoOpzC&tmv z-{CBw2f0zBL4L;I8J+s5dKkL)Lnzm&7?q0Eh)KA-pdj&9|WV8@b5TnS{Y41y|C`M1&G64mh%0$Gk;ZP1_eu@_Xd z1KVvO+{c3c+}?$|a}_P`H^}FsXY7$C1%xgUJgMVl*$6jiqVrQte8g+Fq4Ro54mOyNiE>*82Dr~ zDb}}wF9|zpGSI_5Y{r0+{4K%#*&st*_S||%erM>QGq8jQr5*`s*YmwCJhg=~{alRp zkkC9#-D4@iDEx4hY+#*!CMen$c#x_?08^7+Ee!YZGmrtph*!++1F}e88cx&k;(slQ zgrG$;8ri7$ziCeze0SL)@!k6uUcUmFVjgmHU{r05s@>Ggsq43|#$a2rL|s|iZ{Uw2 z;pteWxt1g?*}mJRBlv%SlA*YFw#Cn@`{z4PyL`?)inz$&h;tgw&Obz2-KS}hfwDD< z`Yh}9UrKKbW&1AwSjs99Ba z!eMI|%(Mwmu_**`h_wKfrrxi?6vFk`JVH~@zhzt&`x#RK`hL&qO495!s0E_%BNj=P zYx$L+*7ko&_^l3vFhX3;_U^{zNV5;S*!1;r+Nd@A-}`?^EZGHPsnN^>B*7`Y3p zN3up@%`=TDu;M62L0rQSVPmx<-!!PMq9@?{N*LK$iRGq;6Mb=N;0tvNm}hQJDCg3B z#M!;G1jK>xh7Bj~nHla-wed zYeF^(M_d<^?A$t+D0(MfCr-q?sZAJHYGi}&NNoKZ!o|o)RL$C<+@%Z)euAfS z~NjCRo3J4Os2iiR!=JNWvyMuceUen(9W)}7o z{=R9F<`)kV_OkwO_fQ=H3a;9_nqkI z5xS<2pL6P^`flDypvXrN ze9SOT)0<+g%anvE6`>4myf;@rV;`{#!_!|qnO7BGz7nOxUgEdskH{S=Ha421fmZ2c z=b48?lV78QOBk8!Ne}(^csr4ZA?{gOq<7vJ$RXb~0hWK10BaRT1~xYJ3!)8d^%_lkDJJuOQpGJgarGp>Y?*g#2)uXp zb~OoN1;KPm1u+N?(-FBePPdTOQLTniL4N_yeo^2-%wE^8bi@WpB4u)Zi)deUmSE|9 z(W3eI)P=N7($38DG+(~Gde>$3wwjjw7GRVdMWD~uk}jV6MXHU2=ArrcZwp9&UGf=f zwJ!R^U@5cwS%lj;aP??FyPvU$d7%t6`h9p`Z0CW+3F4?m3%wEp&9!Da#-A*#F=uaAkkZbGw#8^F$OC6iWk_bvxV{ z!r{tfOg1D#FVv}m+vP*<1HQ^&biy3ktH;9)aj?3OI$r%MY9UobMv~)g#d(Q-B%M#K9-vWyeHKE630;O>){UrO|+h5;6^}^-PtBhB~ zEN1u!Pk2~{qqZ#dIEQT?P;WVX_~8wHi;VrNPbBt^(?d5jw}bbPN;QYi%Kw-dNu2$73}3zdrE|NFy7!W46b00aat2|oti{2{O=|fC30w)XSV>!xYN%c!}ee%Z7e2 zM<{M^d-0Y8y*T3@(2Ehf^>6@h{waS}^1Umlty#YhbM{mDsecsoAW77)6P`h{>He(E zE#Q*k64p)yeA&HtO)iEKD9WD0Rg*btX*cR-Z3GdHqYFjx5zr3;0}N)`)gzXvgoqi% zLTptc9LgjGAz@Wh>Tsy9=E;{|acSU^5fQ-%!!XD3pX}h9T`euvK2LNh?cY|7r5NoE z-{X1*@{lB+#7*Uh<}c!NAjvw#CGtCca6|TaV_Ey}b{u2aPC5XFXfqw49BiEox;N47 z7+$Am`@km1tIY&F;;HPV|H1g!b$*?qynEYe7$mtD5=mfTa49Z(zqDA1{ zLhfYEy_e-@zq}B@@rb~iWxUk2wFEz0T$N|e5bf`g)w3kq(q|cB{w7?VO04y&KmRf7 z2=&us-4cIbi)@AJ2X{@HS@4j;4+%|G1<=+K3)NPyXQp!#Bc|myoTGQUTz9t8fdI$U zCE#NpL(!|D$&J*jP0bg&H}IH=jjpNs{$TxDrlXiFe>kjiEWrAKJxzmDVP@_JqY2Z= z?W$6)_DFB4!Nkjv1bWl$~$K2Lgy+#p9jWmieEuHYcZ zoC^}kN?M=7D3+~?NbNRilVS5-JED0KvR@RKnBQ61VvaUXe6SMH<$LK@9H$Y5N8F^L-}Q2NoWy{yOVB`wv@8 z=)pNfvPCtd{=b|hY6^B1Q4St-)(`&975sXTUe=bs2qWDoQH?BmGICZN<5=V|H>@`; z4zgwrUTh4%o>=HIJl-HB58^LPB2!%yj6A6kAg`-=48nzV1yBtZ)1D<&5$`FBJ4-gx zp*?jn&O2Dtn#fLFk^4|nyYK7O;tTV^Sq*+w)TB|k>Qo~Y!Q78Z#J6&1oYZv>eINX} z-dC0JlI#0(346Cfk*A37Ppgrb&B8TJ1lO{mwm zQ(qJRQ&!86M>B*4`ZPi6&WOjGCcqO*OonA|i=9w&0saF*ld)>=OJTBJ6;=2(kSrc| z6?c-~$7jSFz?Z9Q+q7_VA!cdR~F4crse12seF+)b}VY}9I=CA z7CI^qCQyJK$NoEX`=9bQ+Dbnq;KqrC9Y^VCOx$2UQ`f7&EcR=~<7K04S92@SQRo~< zv9+zd>DU7t?%1k4K1;)+4Yw%qQf4;nHV;ztK8|RMbXRW2g=mwbP09a$fzqo$+DfIj zhP3aebwXZSjJ1AZyAI;Ua-aIBY5NmwW)dAGtQ87%H3{TMUo1tyw!;D|(njyO;m)LQ z6h$LErf}U~;ao`@*PpW#uBjI6BVj3FmjV35+mT*PRTaNYD<7xj77Y_`s%Rl{gm8!) zf>XTyN>Dz`orqejtQ4JLhCcf%P4r+buD^7VR>(dUOQkJz^Log2!B z+tL4oo}Y1g&ssvynwSy9sAGZ8QxAKHv~#P~*B2!$TuRPM zYiivh0Q<;aF(BZT{TpV#q{_}+&|t2Hk;a$TCzX=*5y|4|20^657uVOshj6DXx zH4jjVh8!cpr=wGAH<`xCD;{oS*clO(7JvRjV#E?p29|V_(9s2hL9OG#zp0QxrBn!t z&sq^ll}g}=sCy(7M<3BRT(eMEmKYX5u#dnMIFVMV)ay}h1`lj}7`_+L3Kzd%ogC0- z=qRG^lKm9zja^c9z}eO-#l-IoV+-T3(K{=b_4t#=Ly3FAiquBw{`hwFb59Fa3?!H! zwqcm!qQxkPw`ypLeyQ8>kK%)kTgYd>yResR28%pv&Y^DghpXcDrp@&{?dGqQpGL=c z{aRay!INTIMcRc!hw^bD%3YW7k&bOCQ*#K<_X2nQhK{AvI0wp`X23dy{96YrX|^hAhJCO92O zPtKx8z(vzUC6f4r2N6Pcsx8}2;a~!03n;mGM<%?d*v2zeES_Ud=LfzrK+ZD_*y0_5 zG2VNgg}NawfApP5`QmL&A@0lPS=PTCQx!-|`X9Pn2V}Hy<Z{V#*uBpD70WcoLaQ=qtv2!P}Z-^zrU3z zFMsph&Db2842$0H8dCM%K6qKb`dSAZz{Ee4N^oLhn*}-POCeKK0C90UGUst)T8CgOXtk-kZx$s~!-RN)H9tF*{WI*u%;xM5g z?U3Jn+)}*2KK(1!^?z?sC-(V;pTw^*;isCP4JPwcEqcRbUAsbujo0&Q&RfJ5qvYx8 zzIF`X^vP|f8Pq@8fBGQ6UgnbadsmV{!!mmT4$gzJSCfmvKHb1&f_K!osK-eg?T{B? z9cDRv^g|e;XB9O3yp`U=h?p~)rW>56ZxrUwEP0_PN9*2Am*2n97Y7Ize+BBpv%Pow z=f1Kae)cI=4;OMmrxjoBABYSLErsvxiS$zyvP=dW_OuEPw5jO@_KGF*>geucBj%Yh;LHcWzp}qvp|h`Ga$c9hZ{|Q(&P7Mz?Kp50lkpA z7+!*z$dQ`gPrs8*nwM=3ZLWEhO;`!eB%PQc4zCSYm_y^iI)e2RW<4K%&v->z6w&nK zWD^ykV=suY8E1$bVpNLR!2E!hWF3qM5hC7DXzcPkTdbq?S^aHdU76gioXX2&(ZWJ4 zd0 z7+2ycMt;QoQY@rjSIfrS5TkLhrQ8$ZEH@-rbdL9H-vWY-tFt(3AN%skh08dGnqcYiPRb;YhL}pkuEKnc+=`sXgwvul3sLL$8m&-#S^t0HXuhtSXcdJSIMW6Sj(cfq%U{2lau%H=?Xx5@CGoM`5xIbLW8xC&2C zpv4OU{mx&Rr*&?zXv!62)@KBk$VIf9s+b|DNe0V<}YmjeFOAf=ZK2=~I(hhy^Qd}qOcY)o%=Q>v%vQLDuYKdX@?YeyqEKzCAP z^JLAO(Lu_{!6$-~vPXdyXSo>! zr_UR&nnVuP7*dtXOJT`V-JZ8CUxGW8W3FpI`pyI@JU()DQO^Xnh1~ttAO@SZgo( zo}4qBuau=RKMmj16>NwgpApU0k3TC4YmD)%NGRQ+`k^j{CwrW!_ns$80e?op><~SZAhc)T3|IscK!Hl4CHk>F*5~D35{)b$O`lQ#i zro#ek+O*i&r_a<_1I;XEh;KB3EpJm9v7-4VVo#Yi*`bo8f^xSV&B;Z!`9IJcnnW4y z1!_iXGtbW(zgVbN|B6eQoK(H;SBJ}-!m7hH0Jky6`sc57nTnnS$p8T|Ln%c5;}f4e z+q%y6%Qknq5-;Bg*yC|^5wO~fKz`~1nnXC!232q8Q^AI%$RoS;^bhu*H*~c5%@9mK zJQ>E5_)#%hM{Nt{$! z&yZL4N7ISV_kMK4Lo8P1yZ8OS?#j}(e$AwJc~h>qq`CU2+FLd=(ain2Digh@rGnH4Wn4R& zSA48s{BI-81lpHif3)1^gBE8wY^xT|y-cwJJF09|%HX#>b{*%~g@1bwF;>aLe^)UZ zFwV~7q|X1H#ZS5uy`2mjL|7pK6x&lBM-osCh&cY*{K*TE2>YmX=ZR8fMJS(Ef&wz? z9sNR&LOd@y@`E58t%7)wXsLF+arj$;4TNXxl+tU5S$%unDU@Qg2lZy28dT=b%p3eT z?5zF3gk0h~*6x+M}JB16Ws*;5dB~)Tl{rP z?vzBzVeSyhi{aJKM91aoh{K+`uAdLlm;9NS*$6q_+WT`-{q&t|*rpiAeXDYPOK|G_ z!91ElnQ)k|HeUy`1{1xUbs>mmDC)nz6UH!#|ut++bP0CW-*lF~FQmLqII zbnaItomF4Ov+_g1QPShQTKxjMqV zru6<6<&4p@@I+n=2`mz=#&z` zE@6zyninaf1|<#>L-#RRFKTrCtr=_y_yOMZLm!4!FTu8Ec{kdxh;6qXCxij# zY;$engy_k*j2LML(7r)EYIZCt0sVc^G|ov$R1lf;HP&v6*_{7N0+mPnbqZftkZofVpdLUu!lGyUur<+d zig82i%*cjKf8UOVgTf^3BS^MvIZXwzTiE59xd}`XEe{$JZM>s5Sw$YioY}OWfxLvF zS$+mZPZVheD87RRG7{G@NV>WzWkTo8Y!dwMEx#qbjDn+s4#y=S$pC7;E~Lw4aUe$2`sbMAZg=^ zQ!d0ynSLu2Rm1h0%rw7-ah0VV&+{m@(VM12^2}qwd9tqaadtGy38z`V|I&?DQduvU z4^s{aCtZec>ZjEq4I5Lxz@6lXQIM&|+hcE|O<3@(vQ#RbK@@g#RrCw5o8jn^T3oE zy=_^??k{k3ca>K0DYW&F)uJ>1`hSP@*egiuq}EUFscInGjuxTHmgYL4svb1c6Y#Y7 zG(;*EVd>GAB6U|{WeZ%P-r@15kBV3$Ok?x>UWA004<&L>rO{v=D>@kMqx(2eFzo4>66j~xcpd)CT80mY-ne^4d0OCb4wOT<_)w=?bc z{-rreSbZ)F%{kaZqnvZyqui*m&!PZbnG2?tII>0I*m03ziSH3GO&>U=g}!V~eE?|J zmJ`-gZEF>Pr-RG6;UP=rgdK?;3t<5d<72@70ghHjxR(SQHkp(=Ysz$C7f zYM(ysQr>h-9-%_LA0q$a)i5@AapG^KkfanXOZQ0-9f*G@slKJJeBaxQx=>E9=low; z*W;sHW8=jw3+5ZFTe%Qw`Q<{i;nZ2pnc?+Bt`6CTt~`5t{BLAO}}9%&SM;@tFlbaFCSS01P!S_!1JGofa*Yn$i^ zbd0=96JI*zHL8D{|6vY;aES1FuEB%4{f@Y}^r2Bg&#E_A(!qYFDyhVI?`712GJaVCkF(x5`~m zg_&60Z&r$B>w%}Q`vRStk;%ArsSLkIIyGHuf0G19VKK4yvt3pSyYw% z3OA!JTUk<4nu;eqm35u+toev{o38I7a6abhhrMly&fgG;6Oe%Q>YU^lufnNz^SmH6 z<2K;kmyMvvK)d*T*I(f|dOGg>)az4>N@eTP&o?&{iSr#0Zf*zSsC3X4#XmMvFhy%8 zRjfAN#XY_`W!a5kr!-iI7lzuiVm^LRL9lm(IW;A8h&9xjR z)9x)mvz9m2@+`ju%jCMK@rv&VrV>s~;Kn{qix;{-bXW_LW6B*<#8}M!yQIgvK@3^v z1x!Zmlt{NMmtu9R^akz?osM>CCW43j==K(l7m5klvGeA0>J3ksp^8K>QQfsCDKx8W z0%@Ns3)VITSEI*8qnpZTZ;uANel1o19ls083HQA^@6l^9Q9dPS{E5BWyYqQ4+ddq8 z;e$_@dp2hUc!!$O_zr=S&shGd>&cM3fyz9<#9a#1eo4wK^i+uH6=PWre$1u87O-DZ z>Mq|$;;yrM*^j)FrK!-N*jknC&%&%IO!fMhcPFdmBy^NRyea>QMq3p|NfF_E!wxb^ z<4#e3l=iK&iitfUj>I^d8_eMMMrPaV$ltSpjh`BIkaYz0r;aD65o}T1nlmja>dZiqB?2Xzd-Po@#wcE|neB^2KgLtihaf#={Iqmsx{f zrnjF)n{?DJNyZEOOFo7H_NY3Iw}Om&p&0uKG=qJBbvk%*gbxO=l39$@ge`dM-t^Y| z`z=Hk#BQxDIsQ?iTzDDN!`7O4@kbyga6UX@)`6@c=?j)%EXm{+PH8vnBII{xa1eq! z&r6zctE8YUlrhwwhRU0!(QOK@7-pQoRYcWkt&38P&V!!#o4nt+R$ZnQ>1iH9q}wUG z57=0;AY@*=F}N;@jf= z;}J3-xRDfr0_LAHKTc#gH-h5GxLYV4psh~|`HL6~+&MD4ucFJUCI-|Ubej+@zBUNI z%U7=*YWzmpob$7%|INzzFt_^&^gn_V@#ZT=VeC64znfvuG9J@tPO;H%Xjhm3F9y;c z0pDHcFYdNWv5!ykf(Oq6>0Rd*GulfeczMyo&MV>IT{VI$0YX0j-X=g;O>FV|r>v8Z zEvH8uTq?WdnPpz+HwND`TTx@|2R{6(CjR~y{S2rWjl%K|W)XROaBcXtNPUCV_^ z!YMf#SBi*fse%@3Ye1gy&9#)!;i_TgFlAq7jbP$s1C}&MqAj#ff@}*GAoNbv9S}>W ztDB8k;3)}|CCaMJ+0V`Q!mEyOCgO|;ZQm7^f4hRBV5u56 z7=w4CGdiSxzW9)A>9EkcbSs{CQ*4PU*+2BTRDz~M{ZXU)s$L>h*+c$*V?nGD+K9R7mv;;~(-g4& zv=Sve1xBBemjF3bJ|@ z$Yp7ic_-VvE7ntle(=vKhfFTE{Ip`94;y!7><9Vq5=Hl zLDG`If6Rp=Ou%Czp#;!>6C`%(9b=kOY05zBfAaL`d2I(3lhN|h{F@mlYvq4u7UcT} zEGrFQ5;tJU384t_gur(FI0j1B$+i$4`?k6^pJO2~Z~)5e$vOG;?y8wH zLq3S!T_7$ZNCS@(1N-wNxf**M)CN;{zU2i6Gh_2d2prV+43$Ca$`!}(={w{&+181o zFM~HSYjQ3;{5nTaMHDU0n~h<-#a_58Vp z2i1PZO@YA(d%Oms+zVc+kVbrDLx2yEJC3sC48RlyA(8ZhjlrpXVjPghuT>NS*^@|c z`$zzuH9q+w@j8TgI^(inV*v|V%_wBZPc_EnohcN_-dP9xt6zkfhEJ&f+yctm>`rDm3RXuB+R=a>{a_I z)*Wq#-`;=99WwcSEzenPe>?ibi;{UgQ=+R|mRy)_4!EGQZWEmUBX$se1`X6!`X(B9 z1RRF@T8El=>}iiEaC zb7W6vdr=|>wZ#4jt0A;x%hexQjp6>pAw37yC z)&D?XeO!#=5fKjhs#j>cP9zZ2Q>-e_k!@W@rwOj=W6*i2(5z4IsDXqxBBJp zO=vOZf0dOc=Gk`Q_9Ms3KC8wTc*mq((?<<_3(f}n$S2V4cvzWq#fCTjjV&TU?3VOe zo-HS#8%^uROY2drN}gc**o|~&AI!4hfX=T{lmwS1wSz5wYd8pb`wO9O?Fa9^r=M08 zT?>M;Y3tOrXP;_49)n!MJ=x0zT}Eb=)S)JfUbX#Ww*6(SlpDX^cDMl?UH%mNB0Wu8 zzkhMJD`q6|a%pgg>582@r2?B$YH-W^1eq!q{4wyI;=Iv~PZ&a@b*>_u=Kk2d?;*#G9p5#t(R<0d>168kZ})JVr)@*P&ms_ z@#74>6-9FNun}VaS1RFV9#KlH4RV~@AvXz_#QuM@IYZ+Yx*&G<$GMnrR!ay0PWb@G za{vjKTICK>KDnH*AH&DfbunS*g+9{8$DzEWZmGoD)H&}y6use6VdOtwi?#n1Cq+6- zUF5$cbANSlHxFo0@iV(OT&sYcjji}u@DaBcQn{Pq!aC#K5?`F^uF33SPUQW9o@{^a z(cHK1JjYMaI&rRq+bnZUK4_mThk5Bo{U&pT5{P@_-ycn;7`MjYtxHoHMzODm_6Hu$ zh4?_7%O*yv+DbIH$1DxwE}5(k$~KWyD=m0dE9r5hM=kRHL@Pb}iW!J0tGr2n>vH`njF(vTVOFBU3O#}bC?4;aH*Zg8c$6uQX{Kny zY5;xOK16FQw+F5>>>wYQ`1FO0+B)^{$BT2H`xbLL6yK*_(pPal zDR}TLJ_d#N_BgyY`Lr#si&5sdVi_=MY&!7-5mTVTVj5#znNanovcGM=;O8_`MyW=H zv+naiaI7fdUK03%AT@?(f%PvgsxA>1Aa4El-U40z7$C|+yyf30A!fclkjUEif-hU8 zm}XG!AIq1~cK6&48h+Y3%kQX(HaBtI9S8a;OyDmje=h>p4J#H!bNw%+FRx9EACoN1 zhUA8<%x}O#uLRw8Mz8H6X5>hqN=_SpiWt=WgzowVQxim`3y=Efq|OTe#KG@Lkw-} zvW$#cOLZ(g=jf6VS*yb!dO_A^or)h#`<1>Kb~}L%wGL9G9+DEo%j(jOG%u(i_{VuR zql`Ps_(4ZAqN1T~(y2Ldl+J$fY7D zIs-DmN|RqRUCAE6&mUQIo#Cv4s~&XVgcT)}V)4$UPlPL$h+WO?Z5=c-iu&OvJAw1$ z9MWBbkvgHMm0)SwUW@Ngyw`87kU}i?sOMbr@P@m*^P6Qd$H5_6C)=>5h{?Y@rOTtR ztwTP%G-%n@vT0D=fNY9yqjM;cyNu>o?ax|ODAm}}5cbm?9+fotnQkh}H0R~imGu16 z2F|RX%~-xjSQgx3Z?+s{T#bEu^-Bnyd4u!=Dz5*F z*gt;RalX&~tyx5mC{=|JbxSAASE?S7ef%8wD;cA(KFiQ&b^Znf+PZ(-!VJ9T~R3r15jES>59aTO^!puLJNr`BDZfm^t`a z5zn;T6MLo3+O9Zh1Qp%vgw!%4P0(4OZ1k95--_%{K0Bm}T76?>vm*5KQTf3c)r60~ zOt!lZ`cD2L98oTEuo826^~K>IU*z30Oe4gL%r3sPt%CH(jme*{1Ibkm4k|JnG^vNN zmDGO>)Rrq-bE@(s>&%j{Cekd?C(<2(KbN6LunEyd$W3+AUB5kIC-%qTCe()D$z2V4 z;-ZvWAHK2yt{%$CMhm#iHvxp()!*GcsDy2mF=;OW*aD|zTt;C_PY}noOiX~cYi{4; z#rZz#N{)kV(2gs3D>cGnLFfYy|G8tS5I^;&ay`6o=v$w$cig%zRCG1Z-s(@d+Cxyb z=yQm7n!z9|Dt&`wC5V$NTiN^2*{1Am1AF+W8eP$km)68%fHfTfmji}*Js()R4j2;J4iP#oEO3_ znh$BLiudAWQyB)eqwUN_KR+Cp(8)0l0PegEeOIEq*s!OvW2zk2g;r!3vaO)eRL_VE zl2J{AHfB@|nav`Q9XoB0NNmbDsM9!ZzN>p=bv2PIKjG6Z8mg*%Q-1hTRt74HvA$c>;+}B){U`|c4j}~;OhAbm`(LPPq#c#8xvf$KLQ)tK2wByK9}>4! z^(A{Xi{doP-+_*~jzYUuyPGLj_9XFAJOa?4@WeoGwZ$asV@RVIXzQhM#G+tn$|t?Y zBMVCTzm-0My@_mM!xSn{o{(Yqo-maIOvFA29t1LW#XOA7j%skb*UdVI0IYleUwruz z>KVT^bh}_m6JoqwLt7y5pzKfH$OYMB(rpmRR^B4l&ZTtxs@;db&zrt437xnxW8Z4| z=lsmEa3QEm2lY$v$+hnd`n`Vt4Yw3 zl~QWHvhWsvg$=&4Tf%LWXAz5sx@^)<@FB;Ojnou!pg%{$2J|8OE%GSI_%V)deAAs6 zR!F%Yh-c*2X5JsnCT!gU(#kicKBaOPJ7C@fohb+~W(=Db`8%{3Ym6FT>N#k>97MSEbF zJNV__=&rreOEn z?NqjA{*(bW5eKjz8^Z|k(oi+OF=3@LS*?K5=jkvXLt-{V15+{1*nvDDe6H?lKNavU zvz?==J381Qn)9@-kNnCuUrmP-FgdvX6e#1%UeC6>e&isy!V7Lp4{zv_%|m`+RVZ7> z-$b@GGc5nr!r=MX^_ekKIBp>L8)8WqJW_Q~V>aU1jZgHvu6xdq8u(y(-_9Ce(I(xb zMV+&usM%5JC(-Zj@Oww4I+VI08p?{YdYSPF5+!HR+g3?y{NY}PQHJsRLbg}Uir60L z0p>=+aur<$%j5)mLDF9;^FjzSW|>jrPQ|nuJm9PEc=yGtzAD3_Gw*eXN^nZ|!o~T9UZ}b1JmiWm zgr6_B?Jf(n#H?OP*iNi+Cwg3L)n?vyl5{u!Nm0K2In#WsgYdzKR~_Z_qmncaPlF9fLXfkSuOs2 z=@B*^sd+rgZ$g+L={Fqtr39UjvJbGI4>v;OS!NJV&Pq7ILZoZn7Bb8Q8eYjmt8){v z*&hc-Y~W>c$0b(&KxnNx-##66=xt6rcV(Y;oG2amrizh!*J(92e~%7fl(XS!k>Ont%J{!m-a*JxvF=HZbEm1?>Ym|LXBUDcLcsa zH@2lNkDOuJc%*QML^M&S%&d=Mf!cvs%yUeiAuE7qTK@{^m`eVg8a$0qG+l!W+#9 zT;1z2)|sdDyQSO@;$@Uj8Xj({zgdKzL&{nA{HR`)f;nc-&C512t6eNDFr*un$^edJ zzAXel=-4j%nF89Z_W`#0muE~rNVfVo=#(D@lwlk-aY#JE8gvxG3%z*=z0%Qik9ONW zOf`#9*zoPROd&n$R|$4tIJc*)!_-{QZ^(V~Bi>mA`SVSvIHNUk$Pn$t?Pj`Y6FV8M zDq`KS(GMf#ey{PwCrFF-d$Wisx5842)l{vP zFxmROT>MTA?`8TAONcFg-%|fYBbjQ$Q-s{Xc|71C#?-7^;@XL-H=AMzAF~tTd9%#1ibB1H|(bZ&h7 zWI_tmFOd4gI_KUhviyMHg!bV6jYBkcdqH^1G&zwt^|YpA!P#pOF_}s?k{#;}E5bat z`6g4X_V6vdDI0wc;WlEK7Kf|xva#Xt@yLgyO*)lvCA5Ggh3DR_>S7==pN#4n8*X3K zQEtX)<~bs+rD3*MF>*92$;sblgV>*ISDph-s_$x@$jG_!c?$M=;+o(@5wK8Q7Q*f& zm8W?kT0wGW(_aa7Y@zm*Bu$OuN}-HyskUFmAM?64&3UksZ2=Bla%aCvv5ug&R=TdW z?R)qsDW*OyaS}%x_r^)Qt_&V77wD^<4 z+n+GNN~x`N$;;I6!rOP^NnwiGz&`HY(gQ5YGi|QwoxFdjz8guc*z0Cfj11T(eMjsa zB{MP20q(huX{A!}uidZsDJ&BR{L~e#%9Iz(0(^v2t}K*jH^;zw%{!FL>^i=$OMYI% zrI7yK-cDFg|Mj}Bpv%>rU)hgrFQxh}{UUU8)nF=gZg#_>hkmOV*ilEF4}f0=S_ZRB z>qJzCJ+|0Uf53eml)5xj*mZkvM))wbJS9y8vdT2u+8fb2Z3##SrwamwgwTG9mA9|h zHQS$RU+UxQj|>w+l#!!T%zs@q{ES5ohJW@%$jMQ#?}6|rpe>2(&-X`&Up%VPlb$O? ziU32Sw|p7XAZMS_{He&-{m!YrVA;-vuaREAvi?VqmwaeY*16(=-zz?C&JZZ;_XOSn zS1&2|-=d=ww7poluBAK9T!BA)+^wzk7Q&m;epBmBLrvxou6F4$U!4jN>iUFb0uJ8! zE}L+?izLAnRZ;jTq5cweT<8RojD!dt*FzSVy$_i4vyV%~t%K2KIg;Q?-e3{v&1XrC z4j#0*iKnZR7ufY6%hSzwEod~{@^hwYAQDs%R~;*TQ?(F|91wj*UD~C*WhZ9rOg2qu zZUBKKyON>5rPPq@Hl+3Reo1vAC)$>cS<2Mi0Di+=Qap48+X(;5N(n~jzV1JVWXg#& zhFy}ZxY16Nt{8-Rtrz#JB?dam9OV1YsiGk+)Eh+W%6ibGjl8T6lk~mWzTu=Ko6Vgh zOI{oia%J=HR;L^%Mmt2{x6o@hOyZOQ+-peHwQUCnX>Ym0|R=SIw0mzlw5F71b7}h7x_#ecfI~SwL3# zA3P+aNzq~xGh80zh8k--0-QshJFKZCey?#D{Qcl5xqM>Ld%Q*EmCWM2_Nz3HA<+~H zc|S)tU4~<-5mGG0KQTVcsCi;y*klo~M7A|UOz0irbhxTUX)LYovC>fuAY@imCq+7j%~n&Ibh)0~O-Pb=cc>ZTv9 z1WB`{#(0$TXxghbny@q(&h@{cY6$6fdMKs)wKN5Q+kcWl5XWmAQ9(JFP)SDI$$F1S z{}8z4CShqu{*R(Fk7vUFi3zw#T9 zd-d9Q@sg8B?zWw$NwNWV@4?&4K9MAN9B2Z+pB3 z%=yQ7B^}Fwll)<1nRZ52{v(n2136Z$EJvfO!`h99KPCBi(JvMZqSmo2KP`VDLp|>` zG{!|GPWbR|=>r1pX{SIoUZMHHzLq5{Mv6n~XP?-9w$ZJ!v?tpB$5kKco%_zaOj|GD z^G%UcZ5H^!N;nab_mMmoT3sh!EotZv4qz_wefghDG-4dFu!KMS)x(&`#E zk)xW}1kuQwJ)p(MP{BF;XzOPgDSVOlP!ozL_;5R`dF9%HTkHG%70Dyu6vww`!kE?j z(UkK)ndfDhj=HEEW$Z+Hz3||pp;`QZb$g3==((OjvUKPM8;kc2`7`+40|dbMZ2Nx z0bl$$CCwZAidjn6F5Zsskl$VD?>F;|jxSU=jhK~hN87V?5Y?|<-v8i=g;QoMJTvy+ z)l%U-B4aGN4k0e-9 zdhMP*{VwprArbq_tJ{?WT?^!;!XTRfbuU7X_{r$(JPIA8X6x0X+`O2Y80V03yNIl= zZ~nx4DIV=+!w%&K*FB_OKdjPn1o+>DdkkN!OTLFaxw7HLd-!P_;H~gG1EKijadeST$4+w_Es z7L$L~eGlNq`E5Sp{T4v_~D)y=L=4M#s7<)6oCg8PfBN=azzdZ`6az-L5OtxdPV` z0jtScr|Jih{^K+cMl0GT&7MW8M0`)F?s#>#57|`l-l4=f`9zO`Uj?Dk1w)vZ{>?08 zP^sowj@D#g;4tu)y-J62;n>PsA}QRY}2qnwL|W{PcRundh^6l!5G zHeXvm9ze2gMz^qCUU8G5i5LKq^!UWC%`8Q8n9-Maew%VuDPrf_Q~-wvO9#MgD~Ip+ z&-$+yiZZl>tISVlZ>x5uifvo=Ai$$G6skNI$`z$#)gkJlI&(oOQ#AwEMS%VV_m?lz zZrpyNMhAHtz|lI?sm3t(PQ79=QJL=-s7aqEohRWez=TDxh;B(JOW1gdmQ9iso0yT6 zl0{X<9SOPCvzh*-vM@tQFn(!Hzid5AOg^F&cxsqo_lEZ4EC5TtBqnI^Gt7@}!-j3U z|El|cqHM#$)BgBBx;fMc3OXIDkyTsut`-gIkEa@zj>Hp(MRyqR*X$-hK6E%Jyt`dL z`R$B7N$rd4bNKtw0Fu4ly>0sGTkV5bG@ovu=i1Jx(wScNnTR7)4nt{sek2PhfrfJXw^{uHhvBaN1;nb#j!S|HS7XFmmn0 zxJpPT$2Loe<*BX#&3(VklZ`YrW~y*kqwb;SUv9O%`BcG4fNh{bK7e?6MDMD{OnQ*?~|{IzduksMF+g)04R<8$It<@!*%C z&U9*-Q=zri>$m_#`QY!4!f#`lK)l`e?wT6vmDBp^fsTZ4&xzD|)Y_L{LI1Y%)%tR6 zYC`f{C|sf8@GrvCkK6aK2|FTPHpGfi@Nxo^^_$Nvd^b4MG|_7Z(- zn9MO-e3$Qz=ZKkuA~m9vK_&*k2h*xzikqFUa%b7NlGTC$C|9kmBFQTudrcWA15C5{ z9(qoxvW*D~ECX2fgCBgom2Ia991N?W&{nObv!H(8G}Tkakas{o+m!W{iyQ|n$MM;Q zCVBzp+${YkLhlS0BBtu|A`T5)Reo%jSN^H{#MUXyO75<`4=iOH?R1aaQ|@S{Yc>j0 zO$|e)?!^T89T~bY9BKn!i@Xi|++Uh0RR42Uwyrl*XW<~P9{LQ_mv-y?Z`jF{A79sv z@Wa#?G(!&aLQ88UXmYb23wuwy@mQaBlNPUoWXWg}kpCD&*TcX?aFRW@fvl%ZKj4v! z7}vb~?VJ6tUH#9&tO0bakaU@DYBK--z)Hwjh%GH$b&nL3VNTIM9_QK7a3wlb`h(=>~#D-Hu4>lyJ=0 zqCX10=@a240><4@;sYrIW`BVwD$i4u11PszN?n$kA=rv-lAc0{ql}oiiOW2jbA|K^ zD6jGXz}!2-=Q6l}LURc@HhMSLqPvA+GzfM0ygpDPe7{a6SFm#H=5ki|0gtw7s?*27 z&m0KwrXsUPff{)GDi-*qHGom&SV1I)CriY7PR}b}Mg$zq$dD1!G%QM_cCGz%cFoaB zdW`<74F=H@9sxS5>HKoqN@<$j50Uflb_5-N$L#a;HM^~TMQhtOy zKO`22yJkJdIHqjiqEo~)KJhje$GG`!wPftmF!&5jr8++cWHR%$Ef7Bw*O)fl9%#qt zxX-=iJW;hJHcg-UtKhtu{}`~NP=_P-(|-@TLVj-z+iy!0XEk@GU7OjImz49tR(5Nf z{P=#+>F1U<68f)=#dC*TU~us*_`ulvGwPxQ$CoI5{yoZiXeiY7G)gnkpyS+ftxNh} znRvj<&?~`iPgg?*fPt8<#9NBjvDdxCis)e!#vv$PVmiKo4$HLmZilD(tI(`gL<)zm z{Ke4Dg}UHuOOvJzkdJ#=-IJFjj}A&X*{8u4Qi&QW6sEuGzgw*UIq7|g>EiuJe$1S3 z{r^bax@12}&+BwH>Y$EklzI5B^)J0!X;j{w&g!vl2Ko=ndH}Eg7!02eY`5Q3a7>(I zL~OHA{m`O5JETF}DGO0|6S&oICjvo*31HYed4B!7oU@4vRUpvNX54<1ZjGt1FP>i= z8WM@$<1RLQ=TL@*#-|y&vgQES&F%O*1DIy)L)i8sECNsMuV_wQ2}~Ld*+f`7J^BgJ z%Js+%_vt>Q&Vt{uloA5}an>;$QJoWkYYB{HXA=v3CAm5cgjbdBu^LdF#zc^SEiy}i zvV8mI-8HT8ht7sYh5L^UF9Lov)cgpTJlYCLCokKEG(W!43LN?bJ5Q;+JL4{QZN{n=btSy3wHs5L^|hjrwrOFSe;{um z#tNE|RCb@yYrVUMNtwm3y~NN)sy?A1|DB=@pIZ|xtdv=BSM@=aSXL%`cIUzy)>fhW zugH~uC{DEl#UkcmSJclyZ{Utr^kfeBpF!SGr5mza<$yEZ_m?wFS}5J4GS%D1O^MS7 z)9{>jfu-FTDgbKEEm|TTsAk_eM7i6!vl2DwM6oRaMTsKGxxP}nMR`2cRgHk9___vA z&oALuBn$h+(-MAIOMD#!X4~Ug6J+`1m~&&jl%S)cpdp>@_7C>-$I)uvd=8>h)4E!l z&+X(!KM~KD(t^=lH;)kZ`ciM(7b5*6Z9g~inj3;jO}JBTcp~}WYRmVUHWpZ4y~AET zU9WKL;0u<|1;N+N`@ce0nkZ5VD3uLO$*ln!jevY)?s_)zAj`)A(S*KKPtA7!XDmH! zhMJGsWOmLzQO3MK&U=|#g*#c2vxwVuRBCC@x0_RR2B=b*o>}y4K26dOtct`l4R65mYy}O&tDbrw~@>~Moh})kZQ$TE{q{G&s0;z7ao2*+U)giHS zL}0cZKLGO)^~C?y%dyh3^GeDihn^k#xlj^+s~#;Nr3@44eB$|D?hR;ZTT7K0_t3oU zFwwR#thp8~SHRhM?U<&o^FrS7F=WeIHX_ZaJN$`^2wFT}&M*sjdSiIn5kLw+`SbU| zS2I?5y_9K>DP79M3jB;nb`FRalzl{x=c6HM`y0jsvC_0K2yjZx#d;d_paZ>-7J;?L z8wx*xDA0PbV$dqdpbD;OTvifatodhqk1MULrDIHUK!04C&H(hzl8(`xxO^jS(5SOQ zZsJEO)e9z*Gm4y}Dg+6+$mLsEAupw^+3sGF*}9fnp(mvQCo6pmggd$Gl+V{~Lw4UD zoLru7S1u)<7Xbgf;Re}^aAGUI!Avax&q1gsbi-8mzDJZ`;61hY`^4nqW)lxnSN7wh zH&Xj%eXG+yvR6*HCb>l8!n)}2S`i$~;ua(HOU&REdLYX-fc|4D?jr;fe#ta@bSvXpSC+so(jmJV%PZGRBEed2&G}X+nmnlGV)yd>> zPnHbI!K|r<>;hb|Vba1bVMu=Gj&}=%AetAC17&mm<)L z{gx>o=**Xb3=cb*o$g zfK3HVP#-g%9@aogH;1+?X$6y=v$V2RXWV@1R<}@ho+tr$kpMpm(F3NIdOqwX;eAi( zfTf$B5J}+=ds|TW6{I`pgr~F9{1Wy^ZYCDDCFl1ZHdF{3)!OHkG<&6#XfiGV{QB+d zPLAgc+s)053j@O?A*{Gyz!a7^?c+H@bqM>s%@CHy-GWzQg0$ z?&~pgb=8U2BUvNRvA2LVw^&nYXa@y*1S79pefChn>6N47E7E17NqL(?ZtX6T+%{N# z$7%AU{gU&WLtmUm--ksT@f!#}MKi4NL&?GLC!qnmxv~;KYg~ymUAytp#b7}aA}OqK z*c3+{-2_y%9c0*UhH&U!dY`6kb0?0RW(Y8R(IwEg6&sX}hU_lMyCHb};wPyPjc84I z^CDf~(e!N%RgFjS#VfaijXW;ikMdusW`o|e3w>`$fXH_K{C9J{Y|nSS?Mn@dTl-MS zuw(h7M|%rgWi_^D9R-?a%xxrsz`txR_&Iq-Bt#zh&p>^VVH5wgBQ)FQe1CVOx#~P< zT>z*2!+q5mcE$8nK-07TP#6gMHS4}Hg;)lO)JQCvEWa>E{T)epQwOdKz z59)nqwjpy!ZH-(uPd7Jww)o2zTa6r`B#xLZNYq4y(4iR@Tugm#rqfbSu!_h>Hyc@u z63Up$#|+8$xkmnr+w3(Ld(XO$f!;PDDq6@X;1(rXj9OShcJC+{Pah+ed`HWNGf2r0Re{3jfTM` zmSBn|@Hj3;|66*y?j^LONBskH#LTeD+)5sS7x?J-rsIVw3&APW0V7I9R#dv6hC#s& z39ha(rJBD7T$*)WuPF)NQ>0IAe0lV}fqJ{Xkn_2M=$wS!(ZIJYfv~^7=!K{THwh2+ z_h05a8Sj-jy>UZJ#x~^fPS}N%AMwm1gz)^0%;%oE)EaQb~W8~8+;g- zl8fns7Or2WJTj?5TUD8v^$r}t3%<zQiAElZSi4_*lg#_*bztQRS(em zM+18Od;y-UDw++(E)f&&m(Pp2(w$%(=>zlb<@8u^6nt@-jJ`%ntTMV((y#}Q4+K& zM3bWy8a$OZHCoT?ER?wAUjJdY`u9eVOD5!ppsB7BJ=S=Wmp48CH7fvcNqYF7mJy+Y z6V_4gP28HFHQ3!<%&=)f)B;am#V6wWFqxU1I@ zeEyzfce-8{HHNDYc+zpOra?%vLdwpUo!$NOS3$>YjVpKicKsR9J-0}mtRTJAN=rf= zNVtswypur9VSenYku5I%A_yg)C3SR*Sd=@3S8X-UzG$2iZB+`S0NL&4>|4V3?!{iL zP%T$~)Wru}f2%P!&DRefZ3(05&g`$2Vik!ynp-}@zC=CAm~7?=VqWVrKRS4tLdo6& zkRJSKp2s+sZhurD7iMNaJpbQgc0hWqm6mF!luDLfsS!ScDD5!<8v`Ia2rKR!2n`ev zzq>P^oTJ>N0#bFK7IDGTr_;2ZQB5lrLv3d&6*T_)?AXjg$ud~<2JTkg4xXUG912u7lCp3$6m39<9VD+!llF^v~z za~=QkNVTE(91~?-f%9{5;3;{14tHT5dJGR0YC9ddc=jaVEX0k~HwR@5XmeN3l7_20 zmR!-kteHsvJ=*~z?!fQUuIWX1(+mUx7rqI z`@z;Q{IC#_%`|nzlc2s!btsBeuyhm)sYx$w&o2BtDmG>N0M)9!(ok8;g5q<GM+XH2F;9mRu40&n**|Um(8-pb1g?GibJCC4`QD#oHq2mFmB;5AVul6! zNII-9HtC!%5G1MI)NhhsIRkj(sfW@`oDtPeXKm0@w>{yh=On~s94SvvslbUm0hRIa zYkGC3Ur~WPR^iLw+w`SvC4&On_F(z*nxn6TGy!O8`;&wVaTWpn4wu6Rr>9AM zV+_K@0epR;#8oCd%RF?Cr*yg1h?&4ONb`eb1Gpp<NrdH&=5wyC~Z7hm0wf^}A%@IVrtRg9&oPFW?3JCPO}s3)G+>mKHutM+4k*3v<34w z)w)@pHlVy9WVPh&0a|?EQwZhCQ|w@>Q~$a68x*Qvw(u>Ey)lOgUqGV)I?WC&$>l`b zawPjvidhqfjn^4_Pdt{r(V!*Rsp!y=-N@0>vf@ZE-V7Ub7EFgPBC|;Ipfw+b?jxaZ zVo00s-j<2~HZWrL_z}gYaJx4eQ3X3&KKXz;GcpV*|JzH#ha-R(RF)%bzI-eE5X>G5 zb0+Iga!~C+=oUhE&YTFVq06=-uQNm8t%)`#%bK4k4=36R5BJmFC#QenFHTy!euPwA zjO{+k{TnCERvvo0s8yrG4bYNW9V{0bFkP*z_wVEhI7smp&x-{__v&;`ggX!QW$vTW z)-RfBUw_Z4|6x;rIwzOf$83OI9{Ao=NC*p1mmmr?M&G0DZFA~DU5uupYB22~!*K1F z_~zzX$Wxwl;gRolp}|?-g4|#^jxc_^1tamu#uDIqL9vK6^8>hXbB@1B47j@D?e@#% z)IdOplz-oWJJ$UO^6?bUWPWb6<}~YdW(L)pXn6X{JWBpj#7~EdUsG+Q;UJ{39$7x& z+1zb>{soihR%t5UH86uH#u!~yX0>I;Ijg8Xj^0lky4?foBuNXD@b!;7lN@v6D(Ubv zv$U%;XvRNG!|cP!P#!on!F0^)BhT4{JbSf)(*qRcBn2OX>K_sW=5ZJ4DJ9~f-xOQ8 z62^0k)kvwo)=BnSf1{&YMx#+OFqSL_ohpE}pd{?_{nD&mb2UN@wTVq$o$Ltks3FufFl5&y@YSyT{F}<%=LHTYlb7{?b3>2zE#88#sXS@g7dOdODuEq< z^ADr}mR!~>&5U;9-jy+&UdQQQ`W}{BaOP}q4>4!0+G|k z{60*h5eka8(*h53e(F~=6k(c>nP*wJnqd7-&5J@psr@y;z}01qZFS-ZX^**^E8M4Q z5EZk+g5DPD43ATLOwv+P@{8~mL}n0;cww5q8C{TAAKs8TDqpQ2zmc@)70O^Y42f|jJEGvMCmcJQ$5qR@UrtWtNI}z#Zl6J=bt$y zpzcYd0n3=im~fX8TFO7Ix|9w207F7g&O_Fu6$!H;Lo#h7wovh}ZWnDADm>#A?1PML z2apa8xX15B9>Vj*qpAYa%lO@)0r*H2d-w48L)8rHN8fE?UeCXI{U%y^E#`EG86GBv zayf5-%#CKPibPAGCb_qowIF}Ev9F31%IaXs5@Q@+0FKV!FCD0U?{D67uRI~efXUUY z9qvCkK{yV!>CPOafK}0y*n9Q%@&@4KtMSZBPCr0)fQLA?{b@>UAIDK`Q2kL57^{Xc z0phQsh98WN+3Xx!bo+~e4@Y0b_WQ4?$e?YG&zyyx-tK#*xwtS@nD`8cc?tUA2y>z& zbX<_kz!ArP64p0IK2r^PKi~@HMH`$X#(n-h&50S7qfc`Nb=IQPU!r~E?#Mv)-EFm* z|F)-6+rNFpstLjJVQ7Nj&7|RX+=g*fKcB(^glaPme@k8SXn%CreBoECcJ`|DFbA-# zkOi74KzYwi$CE0vo>0#K*J(F=_=D1nq|W=rqXXzSHjCMN^`_6q>)nl+Hx=?1(StRW zX94g2srUkSqA($x;iUW7CToz_@v`MCdw&ZgqQxtcaeP7(TuBctMsCi}YC~_lbW0s8 z|NJ(;!fCbcp6an<^hQ!1s;=tzN*|J?deeciK5U;enq}gG(d~v5*8HLOk0_0L1!o7p z+s<=pcVSL@D+^scdBK8Bl@c2TE*`n`2a{uCbyu=RXb5A3Au2CB>i`bZQIDIfraVc6 zpwH(;dM8v$>NcM1uVO@LdD~5AgSnO@{~{9&Wr)b1G(WtT(0q2{dA+z|8z(89!IBff4<>~`F4a1h~ z&l$IyYUKF7634vfGsmKiEAyR>4MruwX4v^Mz{ckf!T`kF9N1-+OmmWa*tOn9*rvwY zHueTyygp4a8!?S9ux)Shpo>ywP5)6uC|!`;iEsnL7QeFe9WkgU~Lu5@jAUlT)y&aTPBYcm}gl+-aav z-TPx`6LC@x3Z;kK zSaEb9871O8r6CLJn^~CGGyxT)Efk%%89=rp&c!YIz>xk-JmkTs!kPosxrvqbITs59 za2FQLw)DBNrgqUFY4}0P2kz&T=acbXNF(eVDzEuS0OOq9zT3Dk&CC0wL&+xS7IJ0e zysW~|W^28JyqGwvgjw3H)jXajj4hIPJ1T@RjrXR^RV~WG{2wv{D>Iekho4uivbrx> zr8?}D-Y+)KnPAlcF5UhCv`AWNt+2OIIHiF!lp|6<)W&iTzMB71k%nJR2e&4m-p_EE}p7r&sPHA)v> z?gnY}&!)uwl-$o+=66T7$e~v+h7c}~$%@-|RhyS)xqTzKdW8qQTu&6!qcRATd0rX_ zuh(_lL~$gY4C*?ZebR!v>BNVv@KWrAS?mec-N(mXmhI0HHv@k(WDOW?Hau-2ywJd5 zK!qjZVXetIKcepi6bEWv86o++-bBKa77pdE3APLCnP%G!L^j7YJ>~LeyWgtMH8>LP z-TCkOb%@M}s!f+@`6$=YcZcr=K@V|ke&pJoQ^gcJn-ZvE?xT3Z*W;b}2G!mz!75jP-&W$C zp{?TLqM6i!V(>Ni*b}HTcC6*LvgXxbhhRXzuBkd!s8939yQ?`~6w00juhV?!HryUp@D(9}nKV8em2bPmACuUr>^BsO zI{Z65C_%AbfZ8K*5hm2|J}0O7bp1IEqi}qL5B<@%?Dc{D1h*tI=UJlz0IP3yM1fzc zxu1j|N`tUCKSl-v>Txq{*g*+UHFdY^qIdK@LrK!Rpf-}#rc0pjrB|RTDA4g_VLRIM z{%NSnmHgcND~|M|eJ;DXzLNyg@`a?3X7s;p4^LaojF2B2cL|9k@i=}1xg9nRFIb;- zh=eG6P@|(l#gaRH{KYz;ML(d>i?_28 z>@@p!uP`HkZy1tv#3NncFqdlC;`!7s4FUG47;pgu4zo$^OaR~(e&!?cswvg}QM`4a z)>)b+c#&H||Er)Cfa;iyf!d*~C3Y6}PrW`Zin=zE_NUxiZ_pqE_9+Z=AakJN{a$Vz z#*A-j0^w=0c=o99!2w$Zy3}|Bgoo#*5H9xv{~G{@V4pRgV0?9)8oKdbAk9WU&!`v8 z3hnxPptKk7Ky#{jBTnT}5IE3&P)9(?&nCyyqS#CA3Yy|-OcXb^pXSBS2oQHz@THH{ zk`TG0wxR$&##W$eUzpF_(wy!yfwHT#7iod?*RMy4ak3nHIzFRm*7ShkB94}pJ{nU6 zJvxjRyb!usPDnFSu^RPM)KR5qU0d|bc+kS zX&$W-oGv;&#go$l300Sy{YWH=(j#=Kb2@JO&xhcxd8FjkZ+YqZwp#8#VLRyD*m=`+ zGz8PEc|7~#WTm|_K;0`&qwDXC?3(D+`ToyuH!TbqO|;k0I;8Mb4+pJ1it{_+gk} z_LadBPXEf)=6G6iP8ggS9}+|Q3}FnU@4NDDCUud6a2o3q98(!O_xmu?uM;>BPWqN} z7v!OFsAgx=TTAVX8;?Z=6a!Z_OM*4|Iwc2TAvU&$fWzuSTb^;6Sz|hX@dbvpf|<@N zzuE6>VJaL4x6`Y}_CEmr8^MMVhl+*YbEIdg1<|jV8_(pYDW1mx1DQ8Irg>C4s;l1* zbc(x8<3k)qpG#I-&2Zti8!nl6YbFe_*7qQA7nV@Ixww^X z1>V`#fOdOn@J!=L&#f=p7uFZTwy4%suz?4Wjv1%78w&W}V?N499GcyhNR4U>nHel1 z(EW~rf&#_!qneX33EoL7b*b(+LP*jDu(}+3Q!)2Cxaj zK}U?V>s-AL#|{`JHtS?}bx}TIu=!DABBM(A!E|7^St=FQ8!rIqK7vw?^}jr{jV&VC zbjP$SELNjH(f|lxy%T`RyE6nhf2K5qkj!CA)~pT9$XRfR5wn`h_B)<<)$8Chrlubi zPAVZf+U~poWD_Pre(fg_(kl54I{qYt;HQU>hY5n`zvbZoO!`AN#Ku}X;{#4X-OvMu z;aj!uGrO%d^mw0YHNOQCfot~X9R9*7Jl^qXrFrU*KfQIY7`V>*eK=yA{CqUD6`L|g z?+^mCmFVAmOCJ+aA7{ZwHdW;AV2H>eU_f$OeMRiB)b#s5ft3c_9>YJkHvxeo+7xAP zWIzana0@E-))G(AC@lN+S&GOt%!k$9fwfo6AJn<^3>>N0bgA5t#B*W44bNy#R-@BU z!+N_3EFMt#&TxJdv2vX>R~`SAcWax$kyh#+S1}Vw$>-x@ob38g;H7sx2){!_O(tA`74L-T>Xua25^D6YpFmYP|d_%Yn0d zqT1&T-EY;YdBF%LIzPR3Ze1aTNj_0(X|5jTYn1(c0CTT=s6C6la)$##_C5Fy8s^{Q zpy9~y;E(^G^x5H^!<*Kead0_R8JIx37%Z)P`{DcpSGEyLfa=nK??RE4PuU0MYNFka z$2{#4?in*4NN8%5yUw4$-?uvAH{VGUOer}`mINU4Ja~G9-{^G|SBhN9cUqAN*QeN$ z1s-~9aW4SP3=F89ncYAE4^X~^Og|SRCm-yNDIhF<&+ z|FXYz=7kht!J2pYN`mD;7cT*0`g>Ag&R^=msBnKu7b_3SFRY=aP#ijXMoR&q@nq#X zYAu>r6?wnJIp~}fTtM6@oMvL_!bY@~A~b0xk*~fs=yq3LWXp+JryNDJz$3VRgtKG` z)5`EO)_sAfJ};k`^b!Ni&n-$b&Pbn)yIv(8)cp?9*wNjY3F~x3dx$FUmRdJgHHccv zf7ZwU`XNaeV9JNEGXJSZFdG1X7Kx2~A@ z>L(p=U_JWmRi~vRhDBVoih>@5utI3Ea14U*rs^{F=TGE1Z`Z9`E9-VPFw;8O3#Hzg zR4V-MdFvm&IK7sFhaw-N$}rlh0}5!+{1qkhko6&ZvjIr$b>SP`1qU%wEO-?82XMa5 z+N8O)fEI0f6?^B8JY`w>8?g6RQz0OpDJ8)3t_yv_H)6%3Rq<;{7Y0X8;XXl$%QKQI z3JGZkKDXQG>?Nyct|{58ublNv$B$phTFo)|p}ewvOMq3XgmPZn&ls05)P2JkAXb^NM_=|7#!p*$&~Su= zHi#r*ETlOK#)64NYBb}_$;?CE&w8KGZAJ3!k-o+R#L0D-Dew-!7-}`k-IIv6w%c`H z78=cPPbFWX+EJcXte@pDm~v(ejv0Sxz=jWW@uf1D~`azBR_vJc7?2N9(AX zKxN*%W5GX`^Ib(^C+z-n5zG{Ydgp$HLhO%tv!#YBuPa1rINE1Myh*I4-7g@Pa z36F4L#6;?;AKqt^bu*`5<9y2V+BS{)4ciAT;;V4a^7W$84~XK!9|0@D zsZ^89KZW1W5Vupf%koS_NBZqTK21;`T9>KVwVM$-zK!8REkq;{5a4c-q>QG0b>n+I z#oT71_xJ3!PX{GTg+`fj#^`?N#=_@JC3~SxwQjkBotkd$9S@c!oBt#Y>8%#gOoMvn zpD`nrE>sv-tjZJ>;yyF(C@cO}R{*hgL3!j+;O&CX3-B$vs;@4r?ib)YlDiIy+}z1g zao+=_?xtH)E{-$pz7?Y*zti-9 z{$gOnn2*;}{J56u58Ot-0p_jdnFqs;-rTK9Wsf@~xmffn@T_vdp!nSMcc6!;MYf-I zdxT<*Vf?rOL$aoNn84 zd7wTcwW5O5g(2U0gGf}viRM_yu8BW9qbz&Q)KWmvKCsTgnsGzHiS;!Yu^$USdduh; zIA~}p>l=I&aNn`2-=@nCD!vq~Uj~v=CjFA%ExVT=#E&0e>O@mE1S`#ikY9OA!H0&Y z1y?zav@5*byCc|rxfzscRxnCT2PTleCS(!mb*Vr4%6>3i=wC~-p6!wm*{sZ4ylCh( zv>t=_Uyj3ZL7RM~_0~&40VxwXCn$oLIUO`@rn=L^Ut{Lv&-M(JpXVr z<;qHQN$fCv&-TI$I+%8EF3mG==|JXOAareD%r*Cdlgo8`v9JB;gNfkcWYNVaoHf^0 z6MY!8PKnu^lE{~@YKuE2I`{x;+GYt(-`g18&0Jc!9HpSGsN1) zuZguq{wq(CeUc*)&DpmmBSs%XwI-e-Xj5u02_I8LMh<~DV2gdm*X}cVdhC^Sl=r7iVQXv!XPODBgyGr@zz)iEE6yM^_S8p5`*S5J# zyxDM#hM?ZrHIxMq(?#)00$!p>idG%QqZds5(bddYu9u%mrutRs(tM-5fe!%`vd|k& z&tExR-_V)vp5s6TI-F00Ybab=vR61|sC5@ElGRe(t3+Nbk2ufjFtg*;L0Y(sFo_YZ z32w52!8c&q&+Ap3MdE^78oAL9T15sJ@>2oPU4KB9S};#SJZMzIosc9R?y(e<5Xe{W z9p-&%3)+|oQC8PS0y#X|s~R@G&14vi5Fd{i6in|B0su%MGtDjK)q{GYjz)Kry9+Ttd7AZ*G-Rjt}QqC~?0z)sH0 zI3UnqKesVZ`Mh-m*0?FmTmn5sZ#h@&GXlw9tI9L3cS~=^L!|u3)Z}s^U7Qo_m%@4S{V59z09dQfYvOXuM0a9iE zaZWX&%LrR!yG}9bHoNhRD=w>#BkXm}2K1tv?T`WwH1G1sbiV7Z>})MteL4I+=|WvY zeL9~Uha-Ggmeqio6=nuCFUB5enKn;Ckgrl*K?set$I&v_fh|-eL(SE%(73VhkH8d1 zAAG(^%2wCsF`w2q=4(aXx%fa8bQFzsU&Bc8z5`zizEwQ?7dM+e^ zy40iLiEp`b$e)(D4iMtY$B^j?0P;>TI{uaIp2f$mRZ7%B@MS)kb)YF}<{x4G{m;#Z z0oQLb!Zfd;GlNPxc~LoZ?;*8nCzc?*C@NRwC(RsF{%y}nUW4iMmnU|%eIiShzR!ly%U%o#S^qX%um(d zIC{MpODit1QZd@Vnb2iJ^NuQ;bxFX3AIm?G^7HwfqRn{fefvDBQ`#o@_r^N0@fzaI zsxoc#TpDFr2;^~NnMdOjm()A|$^WP6eLs?aOVb100609|=57E4e12z~twMl&zF?7# za+4XUW?7SSn|bV*JBT2n0%$f*xUa;Yc~&C$Y9GNWfd43O5gz4+E|N|`&{Nm4%-^Z4 z(ha+rGB5i+E%S2vfe>ww1p(EFvWr>|Yfbx*qbxu0VD#bU$%=!SwXWmT$Ym(s1ifDQ zM)*GJ@amv6(`GSX&y`@-XM3zA-PLMDPnb}7NpmypXm0vIcGzTA5qI_c{K(zR^g;bs z$VT`9+k~eG%O(~2Lw925(vn@mY=FC#K(WTut~4W~s-cu27%P{bX>9F5TosBPA7)zu zXORtz7D~EKJUmK|!oBMUs$6oVC3YVPWXvVzK75A%QndJ|?<51cmcFxd#pEzlD=$wgIG(De4e zBiL!_L>qy#oMtQBmxAW-MEG_q@LzAU{<7NyIyvryACX=+vX@G1T$Lh5lEjqgI1N`` z@eA5)-L4=vS^jRs;kLb0WI!u?UAV#nhgI2;1yB?KNAktHkl+JfOCMr`r)M5Mb zouOl0)ymJux&nxu+0(r3f20*Jb=|R~Ixe}D)&HdHTiTmwkepasRy3RmD-!6OM!Ol@ zS>1k$`Amz)*s^ITm+hx8V0T=3QI!W9;O``0*k3U9l9k9@CO!gc#4SadKW4 z*Mrn*so4v`<^}l)Z+q7XjloCq$ig4tlwyvH=A|GwxObLBpyUGJ6v-G#6uGcC?a93; zCH0DHWRMSvD^;6}1mx=ydM!HUWz_XZ%RLjp8hHH3cU?qdNaK0jy)_e8 zFsYGYbbfS1m-ci=wuxi&dtX@1-Cz6mw;W(iGasdtar+hStXOR~G`|pX!0Brk_ZJZ8 zFhJL?Fv#-@YqW~{j<-UOlWLU1+~g*b6YXY4gq;=MM70Q|AV(}yfIRf?AK&^3XEcNB zEnY=NXQuuxXY$~;YM*SoG_sk!WfBECv|5!Tje<~mU|DR!R z6|%Kum$Ju^qLPu!I7X6?ee88m>6MJio=0Z3>|>`Kna4Re#j)2pPWIt&gzxpfeZIf= z16=2NUeED(+#f>K%!7K^+A5xvFJcl2d#y-c;F{9kG@(8>&7C|0S$Wji+YG_iWKQi} z)X+r>aGF#83Ef87mTkP*h|>+}tDen(j7cXY09yzSa)@wp+EdC?MQ0bAh_4L0OsKQ+ z;At5WBg!VbgUqaEnKF)~%5K{}JPUWPE+E!bFi`iBBmP2On8AV>S6%|xg)zwdD)|dC z0fJkeQ(#incUp0+05LZAzH0? zTcUP-^SBJ@#XW9V)m*D>>PlflA2P&}uU>g4I758+LTadS+@4&ctTUO35?CxyA&*9B zfJ6!VL(@v{k9M;{pCq~$C}}N%5aW%Qi~ZD>nhl4oue(}7$1k?~m}ymo+z2Dw(U@Lm zyMZ_YrA8$FM>%~;BbS!DyICB5lGZtY(_k{w*O+ye&_~C#|(w{4i`$u%ey2S;CquxgzEz1=FzU9r|t* z0d8mv9B5vEj5EEasIdBICSnWyUanlKoY9hKYfNZ;qd_EycG;L!I3YXF{1zRY&fKW_ zTea@IX_?zibZBQKd8%S6!`G2B0~d!T#&=flAvX$|p{rn0w8H|Q!|Zuffn>pltVUSd z^==>DCf5muj4;;skBPx^wb=lz;NE+-zG>og^odnoFxJPbB=OdzCsMOfJKz<;;U@Dt zE%Ad14gcous*U^P0lKh{Enh4A=QsY!;|hB2g;Y~JMosf?J!KtCa}5Bc8yuCPsNb+O z5q7jLdjH<(xoPB(8CFx(D7+mDY>|VdV1xk!7S!Ux$ptX|g7{SsB1+?US1{%5yr#ma zVFSQcqTfYonKJ&uaNz&jsTivfH%CSUZkjDWXAc3P#fGoGYbtucH20AE<28&ZHV#2H z4)0M3Utx}P(VL{xc4m)PEY5r32O>8+M{K4KHu0zU&NREjqgg4eSHk7f7eIT_SXtmK z)((UP{|m-~Q^$jhry`=5ZykkEf-3b=ga$X4c9me8B?a3ZQckg>>A5T>iErh6=&zh^ zZyF$v?vISz&4g^-;%S(^_oMFZ&jS;f7-aYo1CG2IZ+=o)_r)bJEX5j(e$5O!{Cji* zLZa^Z1EP)QU63ZS)dOA{?VHmS6Fj>rYuUmMwrl>zoSye0M{>lJ;BeK$+l9FoIv9BQ zd`Bv1O}R+6c>qaEmF$OJZF08o|L*?M#YV@rsBzC4avKVhFhxdORN+<#j8ip|UMl#Qf=(s=<8^CN+0qWppM zjI`rn;eH-CqyZDP%>wu2O{9j{e4e;Rk7c_z8Ec)Vb9_%`)m_iCQ@!0g$TH+{$P2%` z=I4^569OggEK{Suv3dkote$Z)-EN!xqIB{kG!6gx2t(Ffh*t+b%j;1fghcD5BtKZ5 zql1~+Zn+{!1phUBdEp~PG^rQ@08c9lU zTcZc^)eR^deGRfE8{cnk)NC9NC%Ul^)Xz-#GKJJRKM@=W$EH|7=;+Qf2?6% z^zH}l7j9WHf#B)q3hVPqL9?ZDOsk)aE~j#%W6S11)LhLije2Ui99UF^8-__)(E-yJ zkIO^e)r#$+O!EgBC#dmPH+aN6DgLCLlV!}LcB-%KZ^mzv0mVCBlp*}3n0p}{tb?qx z%C;FBXKE7tE0iR&_6>frr0+U*gEes=MElF=wdLo4vxON!w5Nw!jf!Gb?X;N2kP)x= z5%j`XWmrj_l1WM8$hodzWJj*8A^TDEgGhf{BA9ybDULbZJ2UsMXov8EJ1t+OzbYn*6U`{HMLUYvUMZBYxcL`9Jw7 zcW}Az>HoTmH0oDiKq2oLpWZbJ-tDwtnZj+mN#1WxJ{^N%DSBOv^qltkjPm*4rW5K< zKkO$kR(VXT-&?tYHO}H7eem^^Tb1Q(RlFB5wel>P z(pw~HxO8vy-Q9?=(6UZ9b~?v>euaDD)HBV(X9{nReTwx^4U{&nQ8Ld67wxfC0HAu( zqLjOsZ-NllXs4K6VW)<#gqx&nLpFCV0uOd_v*+U%L-sKvF9GZg2vnIR9x zX6GPx(xdy9Xa_7kTU_9H&vjW*c?v6e$ReDXx`s_(nlrKDT18C(NF8mgLa~cwD z{H}2Pi&6mi{ymwOzI_=Ru3ncHe4pm39)C3b=!x~x;taS{&86ZvXmGGzUW?-mzi7KS zLAKGozu)vQ2wcI~+;w_mD>q-0iBzXT=w#S6WhzJOo1Vq_%ds6n5E>p3(~sS%KJ6p= zYO_voZ9QKaO(NG^Uhx(_lP;e`O2h}KQ==9J z8#EEB{ux5n9$UG;9kAwF4eLbTgqm#j;qm<+l4E=#T9H9s^qs>TGUHc>U3a6+Fz+_U zuwcEcnO5TG4N4E`a{XFThc04F38F?7X z9e((0ygh_@>wvMi#I4hK&#uZ0qY$lr>9>=Pi%6L#dfg#M%bV;=M+Plw9!0N)2l~*! z3kS^$Pb!DThG*aDTLcYCiS7%2{r6x0;Z0CD8EF(rwXX^JQEcr8umC60nMK)sSxK)O zj_6mX%Nj!qW!)!&-$o#mO*xWtD%%H)XT0sUg#&zwvp9-_@x zWV4c22JSrtz)FEdyE-mJUh%bTHkf?!JP{;n#nttq5xh^TOtZ5c{Z##4xU;@@H-!wE@9Fvb`LNF^swFw^3^y zwd-Yyn5b&9cK+6A_sw>%8lyyRixASP8b6aiXb|kp?8iRjCWf@DR%Az~wyHIqocyqR z21Qg>gTlpu2{6*iRlM;r(Z?r{a4~BY2Z9qG$e$!X+;Mmeri;KV|1@8mXYAUu7Jr0e zHv0%6HSK{A>$6fXq}-**XMX5T4H({VAi}t>u2H~>Dwe7pGXC6n?bBZ8kY(|IqaW%| zLXV5`jKq&7Fi)fYS1rN^sB7A%dAq5~C!vcCBgG^C<~HxkpAMZ$m9!oHZx(S?EEuu- z_s3osi#gW3T``7oy-vxIA^OdZ9*=wk(@_wF5T3wEdgt-1^2 zXh+@mKWeXpQZo;@CySwcl3{hq|x_X?2^@G_&&F7I2@! zGJgrx*W-;JT;_+llJlC`TWtp7x@S3nd$^_h?dM=WOdGkSgI82A=W3rUr8TB2 z<;)VL{Jine*>H|<|V zie?&!^iW}&sWY7^RRg?p?8%wqISNa(smt$X7!ly;;OI9Hi|`Cuu#?G9-QOwIq&kn+ zRfjBq4Wg@k!)J_fj9q&7-1%bNC^a#rAP!r6NC)GT@)rs-mE%YDk>Jj^HnEP>e?rZf z6i)_h?RPY-6iR>0NZMGaYOJ0_D&5aUb%Wq2hYLupbLs3jAAc9`XY?!@L*^rlJN&}< zTah<5M=(>n9niZEFE$FQp?I#z5oiZr_H1gJ;%jIpZ(5izGacAsrYvVWPbtNw{4414 zL=R~5-|h1`=c;-Vb{zya0SZC0>%G!&$po$EK(`w5Dx#@Ml_08=LGJV_rg=H@Z^|L7 z5TMXVW29Vfkng5%$mxksNSK$bL+6)95d3UgXmo7YSS~Q&bK12%bV2@|FKPh6AKgUX z4&VD1MP+9s7mpXXy4hifk<7p@qr@!^IzN$S>%E4|h5t_3h-tncp&_63ts&cAl{@^0 zJ1j6Tu<4zCCNu=8dfe^dt(3}YsA?!xNwn%N2Tvt;ep>c9;DQBiF%1sz{6vco8o6eh zi$hsn6BH7bv+5gKz7p7AfdfG;w$Z_yB-QGLL3dAnpQ6!{wzu2-DkE$#jIWj|4~o(T zbPIDLte>Ezvbp&BSDstuC(qy?I~k~^=DBYngYJ%+w8zBorxHzfxv5>Dr+!VS&{HAt z%L(2|VnVh?#vD~^V5W5Qi7QdcRg2T{Qi4pD(BAL_-&kJ(aVW`hh7ec3Hi#2Fb`C)_ zpGiLZu%O89t#e3Nvk`Y9)q9TtA7V{>I*f@C`u@kBaph^%V(!QUCH>k_8B4=o`w8mJ z@(Q6rC{AAxn}~NFR;Rgdn)K?Vrn;1w1b-9+J&%uTm3l5idgTAM{3Ob5@=^}r$?*XB zK|86b^ixqH9Y#<^X7b#}&_!!DC|3K`MHRd9CArllp>IGwag+;AcWJp*B}46B4^FpR znaOw?xsB>$>a3CW(NJK+|Kt_>`m=dFtpV#^Luu7VGi`uX}9(N7JGN z>dl1OT;EkPTKW}{i%Ua<~TCu)d@A#fAc(;B+ZN{7Pnzl^KtQV|D7X!`$yT9 z(3epq7TD}tD#sc}|GouOZ8E?QQ#6}+JvT5BI?~)|iL7#u8J{BJ*~tR-GveK@WXC zJi4H=SirZ(!yl-lko44skmbEGBEl3M-jG66@161b3B?8z!uj7P#Fs}&|3l$<2mSxT zZAoI4dsW*}4i{KTSjYZj#aokcIFUZhQ^1;j<1@2J~R8>|LC+Tt8`q;>u zwVgJ(1hwjxzdPz=<_z(I1`y@9pqiIyw%zAk?}6y?`& z_6D0^w#^I&V2Ksy+4zB0!fClwk@D)$%He+=!PEs_3(wKtt%HJPih@ucpE&c}AMm!_gn{CnAAHVK)sWWnOjGm|6C@;B@UD}>t6M7b#!6m3N>pcx1 zTiW`?Kusj|gbB`{4qi-a{E&^M-CNJQa{W~c!#uC+gGohUaK>#lqZrT6iS=R=UNPP_ zdhS`(ZJ%(&E7O(429XW}#^%_EDv9JV;xjvl+V_x-$F2QQp_M^rvDHO}Pk-;;#GgK4 zB{7XSYe-8>PNZz}xKhnWrd(U<(U{UL&Ob`Xpx5AKUYbXgaU_-+>wu&nXP{>5j9ZU+ zd!m7LYzd(4Ox!c8Eqw;Ta@U}w|CZZkK?b`-qyhZ8=jMmpj=yra_2`{g=I9-;M2D|J z8j^}(T;~3Om{<2(w~sWP%rn07wkZ49MWxz7L)u{)mEAl%P_epOKQW-%dHLNqJ7LP@ zA(M{U#sTn9FAsx{FSNfNfvY{RRGkgqA37|rfUf(^(zKtvQ8T-z@x-}hIOYd1eNs-e zVnRs9P3i)uyh$^6Wq$^ORGb#cR(PfFZ(wZ*bmotgkrlab!tsWS9W{3+fN}Owr3F-# z@VmNhr2Xq2y0McYu!q0au}V;0xfpr4`7aW$e@Y3KPV%Chojtrw-b;&+@;Y3J%sa+J zDuwTigd2t|rX(&W3!kooey5)2d8M?aKKOMY^j`oxF6S-A2C2=&wA+j3p z73gOVnSpocS6bUVI z{u@dH!A!mtD=VqOZZOsNx9)spSZ}O%e~3M65}~8w^+f%3nkjT$#v^8*^E&h(_!&qg zOKK>;Eq6d;&Ng0LHu0^S$=b=*D4RTsp9^z`O_vB`wiB<*oG#^a2jg;yQ?UiKZ%>9C zY(=tOiWwXx{pI(H4lMW8Vv2_LZ?koKOe5P2qvzw;(i65S$COY_zff=<4Z`7;oX7bT z_{e=A8zf@t;5f5yi1vUi+-sc+b^&e)zd27OH}AfYpZ&H+I5u$N}4d&^M^5# zWRb@&{2gJ0?X$f%Hi0_vC7~Rw=7qNkNbwJlZEV+qxgcva8=gqR#9J6OD*$|(+kpRA zZh-s)ot8=D%0g9=((KDVm3yxeuUL89Z4kVH`#smqME*3Hp{W8>2%;SnQ_ahdaQgfl zpeD}6CiYhYw=6+7QOD7Zx=hoJayzaW9TZTIpv9qv(P@A@9z2a>1pe>^x%}~Q4M#S2 z2g&s~{@bU@;CAZz-F@mW%JH&c^Y~C_pILYMKhpL+Rd~ja=svi+KF`~$qro$_&s+oE zROePAhr1CLXHNQ}<|aTn+`pS!RvTM&8rPKIo4W8#K@QzCt6ETRdu`DCYL)m6%Aq`e zVdVP!CD(doGr?D}fnsvoA&vf#UZdemKRhl6oK4-)?WR4w$WX)XIvqfC1eVbjDaIp) zGHI0QXB)l}@^dy*DnTyyEs4l~96v*1{knY;rm~mRI{N!_de~-u%JX?sRK1V^36}iZ zR!x<@t(Azbw#1g6>52Rzm5??!%_J*sOI5=lYk_PnF$yp(i!I%h6#uiGyGvwPDx ztV3Mf^X)6Pei8vX{v`HXN;JkBl*4u@rsd72o}2PLlA3qKsWaoZCJg30x5NINwF)qP zqR;n;z!Y)mTr!QH%oTMo4cQ5$LwvhcHzmCsW)IOFi_Y}G8Er%DUH!ZVc}Kssl}f`G{p5>`Pe)Ge=wz?I z^^joQ+24kFCnu*^B7XMUEG6$r#;HyS+3R1L`lSK;O+dCOB|2rhLcQLkJ+#0*bBdUH z!v`)`_nx)eP&c7!M=ED~0gF|d3RDeW7VMO;b+IOQx74ofU8(kwTaY|sB@-FK=U1*g znm+XeuA^%mzd}r^V$6kl{}tl3qRg z(uHn6K2KNXZ`GF38}8AEW}6LnDE1pBVgQNdr}4N1Z+aqz+D>c&^R9QWlr;gC6YC+y ztw-W7W4aoUfUM$?tjd|Nn=IL!ppww3GSHsIIOXtN&#hNyH4O%gW{Y+Lk^j`@+YCKw z!Y{c&cb-P?JbXIg6APIP7ElfnBIPcQcWDd*>wJ^w;7FUv#!sn-JgYzub||cgfm(x7 zjGr>uq!d=K-XVlcjJH?3c6ZRAoKz*|Q8&#Ar63$jhD9P2JUe)bZk&XqL>k zqo(TRc`Q)+o1k$K&rWpQrQ3GZf#^B&p?^#UY2x3OH4mvn_XgBDNcL*ayho>8+ zH6<~N0~2yCh5IxXi%wskCIqlxOgfrZP0GD+p0zB`hPcAR!Qo=X4LIBu7y(%E=<_+` z!=6yw^8DAT7W+UtirfGA>Ow~TH zfJ^NeLOLL{{JFi+Zr2dw(=s8)u&=mnHYE4H8L$6=P-)t|qfVKF z4)^B!G`1gt{>L4)VyKgwniA&$SNm)3wc^<#;Z~mKJ3q_oN)~YuQSPxjA}>HLA(eNRkI%i$6U4{~XrsD!Gxmpl1zr-zZE$8vF|0|K| zD#Dk#`v9GY9E0zn5|uFwt{vip0p?DcjM&JgYObi|73tY#~W zQpVXag`0Uj2|LnjU|*h+x}X^oa@_&`MOwzG|z;=m6&Tqm$BRA2^K+pmU1u2>Sb>YnhW0|E|+l@{pA8-)kYT!!!GtvD1(mQ97K*7d+1c_>P zc3`?bD7C-?qi*2EjmMOFqq$JD@%<8R)q=WN0&g}uRve1uX6PF{@7xBpJ!*Gyc!dhD zP`W)A_+wAmDBVUI@gm~cEn2lE0Nr?|=c^rIH3d3Mjw;tgYTd56r654Pm*)%J06ZSu zRkUjY*_Uqcpv02GQ}>7|@ZW|-4I;qut{P?&EQOu;CS5^hGjwMkGRz5jHHB%{v?Vs! z`6|r5*?p0Tw7DsOkj;AM!dPSJU?;hw@&EzrNtFsx^q&yb{YVQL?BW+lykKi@VWZb-I~lR z#2j5?B00%Ie`rSSnMnj!ob3#+c}QdF;Oy7$YLS3%Pw{o$bBL&(n5~Q@zjzbY-L*D& zf9nOGrRvPAh`XvI(Zee z<*Q^MG`!?Zy;mV2Vm}s-=~({wKau80#I7j0A@TSfeha|mEbdYJxg!k#spiR)SDAK* z^lRtQST8LEEx_!gmJo?Ypt|N5Vd|1!*30xl9$+3*VaV5tNNAH+c&V}ci(K7oF zQf~q$LolV4e+TH(z<-tVmCnmI=umHaHDxlVdzm#EGQdB4n;os|`VF<}>2cP4?zvv* z0$!uu&>lOcU7vsqT5ozs+~jpwYZn3!Myva|9c#ZDlOLsps!F2UetOmg2 zN=XswV@!X%^whh;i~ngm5VgM3Ns@-_`kAn$%~O_^M21?OWWAK(>zZ< zov&;C{jxhN470Vkm(fi`rzvntX zT6jAr|Y_)x2GaV}%K1y9}ti#rWX&)l%6reu}7Al3Y)2fJjw4 z%iK&wL^nHROJgDrJ6-Yh~umOqO{C{ToE#HJ+ z8}y&O*=3RWE7gyhqIn&?c5nkXT zE^6^5FPJ^4TqDqY_U&ezBorMqNk>ua8bIhDx)Z4hgJ?sI?@78LoQt0(lvBapnt*`L z(D4m(A1AIMr?t7-+>sFl?a^gMfU8?uE{XF_GsCkAF@U|41$<08x$-ChQ%Zn~^7V z*n4|^_mz|EbWt&&ajZ1{LyCQ$x?HT`ba$VvhEI)0eT(328!H#<{n;anZ{Ssy^LC7@ znuf}Qasw*k|Fmi0!^ZMWEiLM(*=sCJ*lN2o5&%1q{}_ZwuuQ3_5}nxJqkaP&-!e4+ zX!-!O3FzjE3x;oL7EyX^NtotR7ucqw4q<=en-Q^l>H?tVk>Y(qyFc(+W>-QM=MnNC zH=SjWaasP6$e?{X8?J~uo}c`ceDPSjqbyD91l~E(eIS1Pm5M)IwgXlU>;~#4rvd-$ zP6s=0!6KJ8BMppNPV9w|EkyR*j}htCDkHCtnJoA7w*pyGZU zHy6?M=-^6!HC1>~?FOsdI>J4Dtp&l}a?XM4m5nXU5GLmBSx`r7>ei5!uZ~5kinmia z9G3V6)!^EcjpC zR)&q#%m|Mar`JK2@+Y@n+&Zg|{rS0jzW3SH$sI0I(9)-pEHR5CaahUeVGO#; zlFMkl1O6=(0A`|XK&0j}8e;^8DGGGK!bfpweUvXCHDQeZbg}^BZ~JI>WjBw2)KdK2 z_8`gqQU%3s!od#6Yk1RplZ>V@t%rz7ogew0bNqfnI7vF9%muS^T~=nr|J1jFcsmGh z-v*(WE-BW=Lqjx$LI-ZW49=>_h0a__FYu70HG?#y=RyUBn;5gzle`AzY?mj_q-QY@ zad!yC*KxM3$c@bZqA<+6q?jrJF6G@uraaQ7k4wA z9Rh!-cs+5BcYYz_SBIo1DW54pKl%YE_2Y;S&F*^D!?&?^)wH30uYpzMMX(Rwh!k?Fu>PSl`d5@z zBdY*ye5Q8zP0LUe6@tA&bUbkIuC|-ICZAI%{X%CX1vnIW?9+liV(4`PNUhfFR0y@! z?geiB9>M=-bO$d=`+7};X;OG8Gm=*$%BwE=Z01eWCEO5NPEwybZy92o(p{lw5V-cV z!;WwlV%%=dL?$HDb+cC7E*M(PMcT!M zdr)Tno0P$AhsldND+dZySrt?mzbHC0?0#S0T$k&sPC)LLQN2SDnw9bew7<(q5>cOl zfI=*{Up{(U^L-pS9Lw&CH8@KN-Ec?%DkFk^R-BcmEi#yMg#)DgSTosP0 zEl{`)Qv;62XRPu{EO_*z$#JEOT~p`e*2M&5yvjK%X4x7b!CyI6FuS4>+;PE!URtAj z;%j0Mf2bz66$aWj{V+Gp@9Dcxrt~Ay-#*7S3xb}D%a7CiTy`W@BAZ*0z_@yhC|xZd z*{gbjYU z^)S%T(@2}ypk?mgAM3Y%{SQ23o6x&E#wvtm6qGO8e)qwx8OzW z!{BW_jo3cfWu&qrlb@&y><;Di=baV1;&j2zGLPrKPNqW+l_}Z`J9>xw@Mf z%nBS`nk{1ni2)!g;3{OUKapB=`V;QQu9n;F8DG*CHFG=GughD~$RYKr6T^0|cVun{ z{h(bfmboFEs*PcjhY9p8CU7DwO>%X+CXrdqI5&a4^`H#>{C;0$e;}4&P_);_P@C5{ zqyCj?Zoeq}Fw;ACx7N;C>0YL^?HF8!u(dw0Ob2b%L@UpS6*#?Xen6=En+6cIg8kZ9 zSKfrS4yTdFLNtbmE@@!u3t|M3KUi?1jB%RLn>6^d%m#0t5?sz#TTo6K99b1Q zkBqn%Zv_t7ypQ=fVwl8<688t#p_^$I92OT~)!l83SY4(y_uFMF(EeMHaCQMf>m(6)|KXj=zt2NVgB>lXk=J^|D&hT~zd)ZdYi}0_vWQ&5g=W;`ZA__OkHI1{u*+Gwhr4BQ|ys z3j{o_VaZ`;?BTM!zo<0D-OAxoHp_XQUAwG)|4(4}g&3vff#c8MeRSl_fj4ZDf6QSI zI3-hVBJ3ZPot*@F2IVW=0bec7bF=nID`<~AlT*-!7w?6n($RTJTWK4uQ31%H3(WgZ zWfVPx3hIQ@vr=pw!K>HKjQp&@8}D{ZWHd3DwzZ`du}SEM)nt&v=Wq=mw6$Kx$R=dUwX4&_z+0xPfLA ztVwaeTaHyCtpE0$h7C5hxnU8?%6J;f8+r0(&q}>aWgvG2gU}eTN1*?# zIe76?x2kJ#tA^pW#j-zm);v=d5ODN4w6Xpjk>7auD9xg^R@uBeD8GbNF*(bkAE4@i zj{l6q$-nku+?t?x-DAtdZ=rzYhYnovZ6xqaPmUMX`C~l?#BGs+*#1my%_|)$OXeQF-rcF(LA4YP0|W z+C%WT^_67(mr@rr8h_=B;Y>j-54!XP0lRt&YzjpnYS-}WnlPd8c@Rl{lyG0!Gu|aN z)GmrGh_RwB=0V6agz69@C2QlBCegkqmSKq$F}*d_lFm#u!1%xJX9wKC!wApUAeAHF zZVFOA+IQCOWoJ zneAS%$a;VEidH&1s>Jn1OE!Pc6X9D4@}>KH=2H+-NzOew$WJ~%+4ZaY^IaRamN-PG zNS`&Al|AcV_^m_y%tcKlt@^0hTui*EKtOl1&LQIK!Oix_`ul0EWv}-S>dc*NY4O~= zAJ(+a)}LvEApT{SfnR200;b#FgERvAe$94hWjzYQ7iHW+=W2pjQE@aE=z zc@m}*(x)Fs>sTLWW)>}IsSsG`VT9fTuRiIXzH``~rwX&P8B%^|U)JH6`wH63hGW33 z{zAeJIfe(8FHTQ5r)--tMND4(?$%X%HOZ`NhHbVL(nfKuVi+wF@(zDY)>KT{zM~G1 zR+)D{`*mv=cx#DlWs9Ca5Suh}MK*6dz5=gHf_rtwHrI(m!U~W(JOk*>Cy{b`=+n<) z_*z#RRNI*W>nqs>$X#n~(XWH&AGf*Q?qmsr4zGS4tZQGtSKkg#_Lm)>YSan3{V=q4 z5ai7?@7!hzL+c*O6&^9)opEA{>S;f|h>XYvPq)Xo!L+fFC@A_lPt~f2aR0~LKT@ws znKrH>?F|T<3kes!SeJ{Qh3AYksj_3U_5xcx;CXq~XRs~31-Ce1%)|PhU^%?RPRO6xjqJuV{T?9qSkd#j?yg=*i`!HbSyfzohsIFD&E3?s>UBPk*=ZbgS_XyaM`Mt zXR|E1Ozewatso)io_Yjru(rXpsq-_FM9QY{Y`%y2s+;)v9TDs**uJ+dN8 z0?*`<$0Dk-c_$g`(NAftoVhUaByGT#a}nKfALIC~`S*=ROJbpl=eohN^}E}eGV@c5 zyB>ekqFNTrwf035CS7w%p%#|g9)=#Xsznvf&X3LK=tVcFC%E;i zFN0VVQ8)Hf`rq z7Gt;@Y{M^I`~gPHQmmM8o^(NVV+6lA(HU0BcBs&fI*5CsbNDK!<5kDQkwnn0Guj_H zU}#L3=+2g}gKILwv?6(6U4Z=cnEGUvZblF7q^KNA8<(02<`#F)eG5m`dU6~ckq=v2 z$(@I2JNmUwC;4!C^}p2r)dv6>2clY@bc^G^yQ}U^b}DT>GurGC-0e(_tU8Gmk-{6? zfDuE`c}9um84W4N31`I>#~eZl*VRhP7RP@! zPD9RqAK8N-*#FdJnsli)l{-$z0kG&FmKl*ehwNZnnwpkvreKjU<n^cg~wm-2{7nb>dPlww+_x|&UJ6=N&A!p``6 z#nI1^wPNH9R@AZlTLWOjd`Uay87bSkox*!W1>_zFtB&@vob7pji*>^<9X91h@2Nq{TZ zmZ%>M72dq>fzF>S8L{t>Z&zu(w+@@Lb zrj9Dth$_@UBmIrJB~n=IKS)u6nXp3G!!zfQa^6Lo!EgQQP%igr)p{|v1P-d0{f>DL zCEPq8h?OruhD%IYN!yP>s9vG!#kvFj!t#G;FSTvOyB#KWGmR)kte#7xBc`S0GK_E% zZbnbC8TDAZExNnTOrfFxN{!PCPruEcFHRE!b^xApsSQhzUi`-CDRT#s8)5H1h&~n7bg)`~K+`$tC7+a27=lihXU7ZzvqfBBE)gM`@A`Z4 z*lC*`pRMVq$Ho4)Wv5nGX?h{+E+?M!CHsRErT%~SB0aE-uZG|L1E)n+2|%ej0u;bj z8T}7fNV-0oydkkL?c1ULY_cKW8h0(6*jZb+$oALKYTUqN^8x&4fsXB)qWg8dnQ=@G ztR%mm*9%^gMiLQ!)vo>c2L2>OeU!iAS0BjuGMb~SZR&x$?SwG@E?}eo%w=9JGLI8M z<;=Iv``XEQm1MlBHpwt9gLS-a1ySE7Gyh?ZRy+r&{^?zoz7h>u+kGI@!&j%^o1b*( zN(lSAkiSanu%N7)$(NwJ={F7ID*z#Ed*0z_tx$@lID30)or^04O*nX;&<;pgKdF>|g)Bf3Qp<)BoBuk53MKkN+k2`6ZxnG5Ff*Cm>7>6gc zTsd_P{y;~VC46pgJa?SgQ!{WKgwCB0xNe`YD3-{6{Bh<|#TJIIwAFlOf^v|+zgV9U zkIT=+FTdl~o?cTi>Dmq6Y4Z}per)1i3u$ff$cRYY(UO7%UIGGNF#JNOP4=0w7Zvop zvur#yxtry(P1OO@ZR*DIxkTyn9jfhK5l`rI=U|=qiq+DKpEXp4@EWBkX zjYc)ouXkAB{M@kF1ZjC5BjOz$U!Y%~dsWa>4f0@m=Qrp1(4Q57w#(o(wc=KnChMaV%G=rx-~~4rbL#Z62umJ`zOZo8rv?2XT71MX zrMzz6=rM{PK&gm>{e*8*coqrA^LunZlBzj<`ZjeQnYvrZ|>g z5vwnH-d{p~p2(POQ(9m1t~KuPu#EoR-Nrysfw`?|cUgr(4FgYr_MZ-b6mZT zehP$u5H0Aiv~*+Tz&2Z(pVgA8*`M0sZkwaVn(N}P>23{}D6$t0mG~JwZMi(8%bu?Pjx=Rx7un2dw}-U<*8gkzkLK{n zfrN?8hyMrr9Wo}`xQ?%dU_{QqiNf?{ zSfptR6F>DU7`^{T^`p^Hh!&20v$pL=GDXl`x zAQiqdgjx8Kf1df*Eyte(&M}7qZG0^v`DBj3jkBkB2H=Nc^_f;nr!*&yePFAU#Usy* zV)1{yC3xZL2q~wnRSHl^_As5=$Aijnqv}rTXm-F!H77cOP$x`I3O`g_Fx$v%oD$q3B;3cBP_{&{A1;6);D`L;q z8m?+|hOa$<-k#*ejBJBe&x+zh{uX#C@(Cfeo?Hs9{8!@kFU=t#fyS`%13b%tQ?Cgx zc>j&1sfhYJ@7J8>WfHptG3vX?N9`S}leVzOwe30@NtalvyWswMU;mdi0$y0Yc|2eU z@zbHnrKfqz*XCl#lf?p70UkKPz|tc1uy zgek5&mGQ`bW)Te5y5%`~-}!ZKaf0hPTq{QNa)N*M^>JIS#dw7Q5d74B<#xUcQpFX+ z4&LQ2Wk!j!eV78Z&wd5Be?w6+IvUr)#=L|z?FSCzq}c`^i@nv_;G}9v*FP8WqhdAM6Zl{npu2-PH*c55 zS`DB1kd?gA718t)9=KYsX4lfro?hv7s9JVmdR`Moe180^3E%Vcc$iwB3f?REj~R7I zi-`rRUEg*ME()LUe-avMJo5ScOPLc#F~l8uq42HpW3Jco`}*YC_5x~>)m%3eQ0H4a z<>;yb&-{1^8Sz=-{D%K}9=l4IACw5R0Rhi9?Y!ONNq$pBe@< zk)I$hbL|}&=D!>Z#cf7YdTkK5qKqrRS+6xe&PQfYf>Q%Jz%(c(^!m~cN%dBo@>EJc zIsa;y%WYiyU!iaAhqqo9W$van^*5I1i%2B;gICx=HVzx8N*?|J2`*%sZ#iJrkz)?5 zL&Yt>KqsUTO#u$Kbkf*E14V4WPu~oSDnA~1KBSmQRhpdw$y>yJ4>A}vXlhku07SKW z!%7w$=r<~`8w(rnuVWU<=R1)5pBhUd53k4)P+|^ZQfZoYoA%D^FQ#uMGKxz~w4_5i z7}ruRdRRJY1|BeD_kgR;BdV$AJ{UpVR~5)f>j#1wR^J>QRfZgHn9%R8n(ph+5(Q-v z*9Rt(x+TrJUv$i@OjJpE^0 zCoOiu*xF{V7e{0&i}L8Y?`*!Bg>K{(Kw|9T_cRb zCl&CPzP0`%QDJtA7_>qvw}H@M@i?XQjz%{cB60J*Q&H3~vF{c#7OovoJn`kRmdWJ* zW9hvA*?ix)orqDpliF0PwW-=dR9i}o+Iv({Bley_l`i8`vj}Pzu~+PxwYN56)Jh^1 zE2#b4-{*P$f!sgj^*XQXyw3A|9GbS_SF#eQ#G-sG?O8E>CmF(zVCsnGK}8^&{2SqT z)AQWXC^aB^oq~gU>srD(96XDQJeMwn3*{z^-(vX}>>FIcEZmCd&4YFyF%@WK>M`Q( z&m=qFOOE9n9?7->%}liA5o02ob5HMhx*PkbUPrXkZ%Bf&IxRirZkh)FwmANKHYCwg zliY=kp;{CzXk~_~3e5gXdU722U7`h)|KCwTUMkoc*4*IMLNQzRsLQK`>~_OkIo21U z_`|$KFP_~NRm1S9PzEGhmHK0~PYM1v^vwPj__9(!X{Ml6?8%}&R=4PDz9op;GzT9h z(iO@v9>kOgE=~;rdddObwyJM9cMc*!9)WV&JONvciJNPmH5qm6=0#@kr!z-DUk^6g zDJ09-&rQ5uyCYVSyxj+0Ag;lCPaaI|tvg+P`K(6`*{B?EZk>}OI>wsc6cW;s)90wF zQtdnoI!Jo_Nv3Wj)K;$E4-R^TEOZVI3=TPYXdCS98f@pC2|5$#IueZ{F|6FEFhH_W z{o%=2Olp6zoA4qILU1dVJEq*=c`46x?MZ}Lswn*rm4_V`rvqOXtVC-`LwY)=akghq zzcko|#E7#GC{DNBT2w3F*zChA*umecSj{`EP`exJeQ*j@@|jidKY?u$-e zrI)cPsN1<^Z4pNBbh}SF(!6ao%j*bnEI*vJaSiA&jUC?_@PHrlGX~Hw|-M*0jx^!lD`LVb(%D@xgwD;u5Qm-$DU4)Axn^e z-4u<*cRs+qMfx^4=mN2em@H-+r_8Dz*yDZpLDBPlW>dm4lc9k>wJ)5;ZFP_-3qoL8 zZW`vN*%e4U?T=)~{EXFVJ}ity`cd~{c)o)}IYy0;Klft}u+;DJMWTIZd`}YHZueT9 z`V-L+ZdH1xxHHCa@ruHy>_jC`t(pW@)A4&9;V)EZaw`od#3n;SpE9oS7y2xc`6tiy z9YQ~n_D}1#`^h^P6PX2`cCwPPRdI1~ln*`C`ed!?==~lOf*1H?hR--WfPM|RJUS}r z&4U(-Wu{{Kdp^DGZn#U|UY`?ram5mF6R7w(NF-EMwrkqA5NZ@>byS~4x`zGqpJhHNC(xDFCu_p zD_p_6X!SV!D|7XeQoii<&%dyV(#PHw_ErC}yDpCVCdrUWCu~3pq_#)p_J#+wPq@cu zrs-X3JZT&f#UAs9ev`{b*}wl0!<}~W61)KdM{872X=RqO3r>0$*y}}SDQRu38lHO2 z?D9)5M#?YyJ8epJRSB**U|35zSEvLPW{nY*yw*6*+~0IrN!!5%TcCj2R(eN<@yJ87 zRNE_M@}O`mHI8YcCqdWnh?ucivS>XumbI$LItr~|&kid=qo{@_@^Tj(C9Vddym<~C z+smCbhyjmF(Z-rn(nUy7qFv`rIRFb=0Xl@hYsGgNY8fbN7rRV%&}oJLo=|M6!ThEM zMF|Lur#G21e^OIHBL5U#2EA7rgFup;t3 z>gN2)>R8faSUaWf<_LNbo`!4Ffi?PFFzEmP0u+2~K6oktE7nd0hv5+<(iUkY{#wj6 zOa_rt3vO~O;9{UNEz{HOeV5U&54OB0ON%eu?b0L0I-~wQHrI3|?ARvD(5(8F*Tf(7 zJLkhwPtPB*CXP;vWf9UhT=K_`p3V4YLf1_=j-JeCy_p}Pner`E)RKKJtJQeGN?4o_ zfXXQY!ARXn{-P=JFY=?d2!DfMm+)F&t&`<5>o|CEO}c0 zkG}I8zf3}DVO zd%ynD1cNgV-9V6L{}%)0A!9U2J8cyRl92ZNG;s{Tfy^DGw_X}1E%=AxUk;+Er|jQ<<)K#|{Rwd^%n zgiM*c!^Dh{b#cDb(ffLLJO=gvyCPg%KAHYuE$4XT4%R~n64X?qnAMW5rnnY1lr(s? z?)M{S>hGov)sC?ToK)#F$u#Ne_*A>puyIMFwGR+aFn%$OLrxtgv%cqfgJOeeo(bnh zUqzEE<)ZjK66m>ZB1lArmHM3MuJe?giZfr1v(SVbk`mT+1aVMS{_&swCbZtxL3 zI=(WW_&V$vxdy!0DL$lTWZ6hR?qMJgyem&*zmCyBP^>5s&`A#{ELRh*Ob5fcBCUP5 zoNQA5Y%K(xrwj0L?h%!x0?RS&Q$vq55tkhNeKz_T^?=xKa z1*%1ehWcymg{G#HZF4&aE3yH3JHvS;L84zOJ@(hTn#jvc$`X|`ZQc2^HJgDYqWHNl zpdYwkB+NwkU&Kbi2Pmrg&#nH~En$x#?sQd+*G3u#L+=kQpIJS61zbQ}y&m15Bu`6F zj%pE_cXt?ICXfm``Uy{d$^u~+tEuE?Gupqh0@s z)@2IotlpWPg!0^YxR9qB#Ij3WFt_{r)8%)F^pojd1zB`I?nM*I?{G;teUM%b4d|4c zzVU$eIy%sx(?)IC#>AVMCwaJ1=C zZ_x$4tDsj;YQ!QZ{#=77_3){Yg5e>eF?%f794^-4hU|CZQY z5$VisolT!bUk+>v7VhV5zZSeQsvW(*GezHoF5PL2fkC*togY3D_Ms`<; z0QZQT{)&-ap)WZJ;}Qm@)suhO;wv!1+!`S@+us>btB#8Kx)}f)`eVM;-3K?Q;&%+yiu5An!f77pQD*pKjKiI zDPDFSW_Idy{5^hOpm2c`!*A(OF(qo=-upw1)oah$!lKfr^{K<7CtrWgEdfGH^YRWe zJ_pN%CHya6tU~2Ix7Wwy=Y+xK(xd#gk6-^o5p?DpI) zHs9fySL0!Q{k+uc{oTj#V}le)!;rROqMda&#wqak!_OAdn5IMe#5oo+`}oLHt8u4J z?c1-+Fz-A}5I{2BUGPZtS5+#{yQh|?D#NziEZ(V5XdTtExk~kmukU`p~vLspz!P$oB6TAj8W#Y#>i$-2u?a~RaI3sRz^M-viATM z=KSaF(Th{GVPx~ere2^b%pt4`iIHkt&`{|_2!d&ismYKb&r^~HnLl|&j`;y|k~IWv zF>VyemTQ2zV2FGS;(|S){!wnv(-gaN{{?5$(Rsf*m^BE1#}H;V?U$$n9A9gVQ+#&ec(U#6a|M{o{R8CPwB0~QJVS85k+b&ph_eikS zp{L{@!_KqbN)<+?A6Up~J{&#hYVhe)9#6Nn6VLgv-z`kweB>xJm<27RO zxy_|7FzY$J?EchY^J|GiJnT`}if)7vfXWGz)j~EMxOUD|3)QhPcJAp)-;7w^is<~b zINJKFxc~dVp@&O<6wFF@&+frIG;@1u$G1<&ZxnOgG4LzF`5q>%-R0ezjLDfGUqR~6 zEt2wyu@B}%He7~Jc|9p;W3(cVCtA~(3JI{>e5Gko`x#-5Hu~ZZCblShrE9}kw$ir@ zWx6=GD7G?h7`N@GYB{hj%)&>_1B{WbWl=siZ4JI#b};S~vfCnKKDItS3COJfFMQ)x zB2Hq(te9f|!2FUvP!}Kmd)o093>PSz>&nA6EF5qsntf%I?RH`Y1D*p;`dh7>8*0JG ztD;7gyFU?kl=oJ+GU5EZ>X7Pc*?D8M!UsR5zZ;sUhk&LxZ(*T7G7zS)9Mn_{CtI4_ zv9g088`G93s56GI5hoNJi}--HSswq<|1j~y8M z`xs`q^pSm>t@j)Q`Qad1Og*z29mzf%U1yx(8X0s&;|LgzFl+D>#F&i}FC8k?h`2&+ z``bTQ5;#xxaLE1^jTIf}JLQJ;O7@W1W=k zn&thPNipH@dj$t3Dev6%+cQ%(uJa0Sv22~rCeGei{00}{t~pRgJzRM5l_*p2Q1q_0 zmxYrve*DM0w)%gmMgoM+GowQBBRpjE_RCMMlGB&DM^J!^mNzIbkzjz?M1;yNZWGNDU_cxrQ^M)EFs{f0~%*@ zWAE&_GivC_v_?lYE6Ee|snvZy{)Qtj^BfsL1i@)G*!v=#X^z+%_{9@RJ60O~n5)O$ zScJ7XF~h=nzOd&Q+H@(X5As%-oOoF>IyL2D+4|@mr?8?N#c2fM=yU%WfA|q zV5yXT`4x;NT|OCm&5>2>{yl*2(S$z}(QQZxFov-CwM<Ct-Mp^j)8ZkrHNi{ugp0xlyV5kv zv_by8e>{9V;F-I+wvN-{$*WyivVP^)rb zB6Sh|C!+GA$3~0i@{o0^?D8z)dj7UfhjG-c+3ns3<+u@*7pGI7RF+fyR+aM`%lOQa zkKC_D=VxYUI}A3rD`?JcCA3?96Qat}}L>ku288wLKqZ4yMMxD1LV7Y~BiV*rtLEb6MBxM316dQ;u|XpFJo^nQ}bE>085UC;+hmNz;mi(h0(- zG)x{OnwD;L=${_w1GS&w*$# zSy*Ep)QmXRPT?H(czIz_Xp!vbwY6`&-l6>mPT^^&s&MS{Mrcy4@tRA{wE*yZK}cX` z{FXo0>egUD=Ho+f`V!xR4mCcaNcO7Un^eDS*Cosr#5G!~_p8Mi6<&yWDCpC&4$nbL zJrBe;5(@ZH&T9q(VEw|g;Dt{i9|DqDyYCJmf_UV%x#SVvHo<7tNzGGs_5i(iA@h?? zTpxGe@6Cn{--`?^sYzFl@G6v6<@jGjt^9XTbIpgcGrESP6+YdgJq&1JpY~s&k%wTj zR`c^?uEEH)IN4iO*3ajDAgyL^GzeCfMYdWW$~njZuEW()ro^=C$!U}R?$9L)Z!K4s z?={-xbN;52T%_LMz_K?vX$*nd!B<`cUjcdEy2|3~V|Ra~)3VChRxD#iDOW}W2VMjJ za0i^vfu`?)QC6}V6LRCn2rGXK$^0`_c1^lCYn-11pgIYpzJ2Okl(t$WW%5*VD!O4j zx`g_j4hFYq|KF)SREcAOQfyc=;vxOHnJBrlWhkz@k|z`5Zn|)8c{J>x!qa%@dUdq_ zgWL1|Z}Eys+*A!OxKSBk1t8R}7IWyJ<-oaF_SACLaF$0uXGGd-9i?U2^AuV5aUrLUl?z*s@Km9J-sy{qW<~1iAAR=` zX-Jj(7o1HSP{#fbw=?rf*uEyHY1`l^|MzdQFiBeK?WaK91pygTyuU8*0Bq7fW*;gC|S$lxXp@d03mjvq*c>t7k zEd57G&AqUpPD90Yq2Z2=n}K^vo4cY-hLd7ABW;12_Hujb!#LKftCI@J`*2?yW7BcQ zVT)x>wk*g-S)IIfL3JmUMt%4O_3|~AK^SR#%T_0RLrOeP>51~=T)H^QL$|@^JGyK0 z;5~SKRFJWQ>Rg0bI1h$*C}oMQO_)z)1?1mBaiHJg87?X*fL-;#wuG9j7xe5_CREc0G?4Q;U*(UNubJJ4ss`!itrUNdDn4>hUAsm2?t250 zTe=Wjiz#~xIuxZ?1^J{w>Mbgvl;8P9z)CmAx9rx2^fMYW;-Rm@Qc_bIOGSv9t8&BM zsPR7wQyvrY3nIJ#o_z78B8NTOV)?BCA}80l9i3ywX3?q9MmKtqnOg#u1uVhty#{!f z2Dj+Z7;GQt6-~6y-DfY^Oij|F0EAMG*?Zc0W@bXMSYIc-tWT81c&`dYJKboZ3!BWO zkDkR)t&ydJ32LJO6~C>qp6PbVz5;C%>u(%8e#P-~;aB9Y$f#D3tDK6Og8$=FJ-cHo zreC499}-^3cRYr8_XeZ@)PqS=6UH+~J?p5TY?+xFi%vB-g4=748%<^90Kp4X*dv;f zZu<-Av{CL*%!6@U3!xCNFXEX`t;8KZ4FK=`kbRI@tm_ZZo_@9R@*D`e!hPbcBc(?b zRcd;Bnu=ZwF`8D0ytw&e(lQzi!E5a1aWC7kZ6KGl99-+0wsI7oN=ObGt{)X$FDX7JD)<*uKvF7PX|d`m`zR9B{co6$gZN2?Q(4dz z*I)zf2bIg%$3;OL1uAEi+l9L42Oh)t)82!Sb@huUC;xH+mD>)hBa#iyOu#cqLSF?V zQ0qAk`w0yvYKxlN0k_-EJ9Eovowq%+@nfe}cxg|&Y);zg>9{P*>y%}DWqn)qpfC$C z?l7ygYaT@AYR(MiT1wH@y31Jgwk!{O%QApcxbs+pAgp@rD+A>k7yBL}=)Nc!oAW?- zYmj6+%88?Pq+W}vVZfONRgSq>!$_IN7RMgO@Kbp;3Ibeji78-)8donvF@5l2p1z5z zT`Jckb&p{q&*1!Wqz~P1b_9}kmn8;FI8gXa#76r2>A5rO_u!zKNKbgYG^i8 z@2-yKwtMQ~;|ElkldnhhT*xb?z1qjY@^Lg-9zZ;lEs)qDiOL_co2~?U?&Oc^y(Rfh z1&URkzq#m?DOWn1azhuU_C-W#_q3pWlm37|vwf`8eX9cmPgjBltC@Wzk3 z$|BwCl`RSjE%?O(o23Cuy5YMGNA`Kr5A;tE2iLrJr}UkX)oafbKD1WzBp6VO9UzWJ zC{~76?iD@h>&g(Wy_myyC|)vsHnFpe`eKt_-E09p7X zVlOc==-n9IqsST1>{Y!Fo9hTK?$q=$aocI`J1GQDlFb>yn_D0Ii);Kh4PsPHC!ANN zVXnKRW?*Vc?I-@r7f8|lt97KYTREF~*B+YSXR=ex)=n@SbWe||FbXvVebm;9l&Vx%x5<94P1R^{8v zE6TdM0ZxSIsBK}>K0nJqZd0BJRfV~x7V#@4i;L~?zo`-Y2||n&PRje-r-{^1fOcD) zw>)p#0`m3o8~Y=ci#s!OwA;=pQb#dOEgi!{2VA^$y{!!9V& z1Y1uBN~etJ$2omxxCikqz$IKPYx8!bx;$`d_Xf2(q5jq*d@OU)qV9@pOxYotL8_lg zDX(GNdPu*ASL2*a4zCYuYt=C}IXxdgZV*1KZQIs&st_NNSC9Jpu>`#KIq=4Snp-U> zQ1(RziypEbEPKI}hC2YL z1DU*Xl7*(~>h0j3ynSIojUp^X?h_$hp%9>~~pjV)KBbZPNnURP7?bHqfun+-?J ztVfO9^%sM48{GIz!qcJ^Jln4uq@=p~)T)aJm#1poI$q_}tdhCCl$2}somVMUyWqJz zqXaVu01j60G&fZl&J?$r%J9;3GL~q;##n&KP!@gFOX@9G3iN9Tt&q*Yq!IUSj(l)`PL5n~4RgXwQ{(Ui-4PDOa(jz<7_0wGC%_d9;xVRCmX;;D+Kzrnw zsyQ#botNC4vRkr$><$Ki^UNbc)ct~KaV3>1pMU#cwvE~pbB$K;)2Hj`xU@f1_u|^) zTzCQejU9MxV^k-wbAG9yE%n6VF7vuu*;TTz1)#Ab(P@L2o&aUHrQYTFL z`60xq6GG^XEQYj>-)t#fms95q@GIXQHjC##+wkWYqoTZjj{Tkzk{J8`2TKzt?BFS8 z*8UiVw&F=K16Br;;#=+mv$PX*nL?4Gp4y@nCatX+9^Z8h(G z6863#V)W8~9~t{qA{z|N(JeLQ`LLzrVWm_0>$2B~M@k5sEmH?k@Fe}I3Mls*PMp?m zWQ?CYcZpSg0191OmV-7#WO1{?+L^B|say-?DQ4!(DqyBti6lAI{k^9#-s%jdELlisX^V}SvE0qPYk5F0=$JTQ?-X#6Vg~z0i#O&TF^&@je<`3z37f&tCY(>M z&!-~|Eh`!fc2tNy#&pyP6OP?LoEHb1%SREcf$ZU}|KL#(ZF_#+-~Jl%}c{vCaM?llZtA zHELiwPK8en`AMw^8TY%9@6p`SawDg#rX&(8id(M%SusahG+l!Ys3lRwQGBJIiK|oS z`ES_Y{a%0lS29ECsc9G3t(*`_iFbuoZ6U1H(D4RAK~=FBoFOxLx?RC8vRI_Csx~{~ z%5r|x(Px^+aI$8bo-nn#Uauckg{9;)EBbygpBsXH<-dbG0+&JwvDe-u&fdxt;_u9F zs$$qQOLZ77uUYE{>)^iLyEVju%Ox^~ju|;i@F+m!>mVn0xHKC#9eR7Y%36Sz*okv= zf}!B>fhX6d?kpH+N#a9Z?^g+ni){uR+$V@x&W%`Q6E~4`3y{uGl**Ho;#D6Bp1ah{ zl*26wOGp&0*D_Y!Z46;8h&T;R0eBNl%(_!=e7|0#^y3H~mxlnZZ~Nj%@w~MoJ)E3y zIc#&DKt&W6zrwR|HzDy=w~ZQLzcmJiI^9&bzTVKAu2nJKZ*)d$7@adfUZ9oY3}0GpMl#zYP<<%JV@Px2UpU zMO6ELU^OJQxNIvwoC!4R6bOML`qf8K!L8ZMywuZ#xeqW0-|Q_0TqG-JvXI zoPQ(c_{zt&ScQNdKfS;f%yHu;+VYky^C!XE_f-=MTLtRR!M;SKE8OqAm_1hth8+~a zAC;D$QWAYcTln;kKY@GgatAQ`lVQdJOw2&6<2Ar_8+VooAC5?whs zN<@pB2OwFo50hQ9k66bLsP%nAu>2kOJ8h|5b)EA-*ZQDx?(ic6&Yg1g<(+J z54#V>ulu*aNI>czfvpo+(eG@&c?>}hd2;j-AE9B>gmzRzk<|F|6WkkwJEYQqw^2{L zqyx)T1GMq$#@;_I85SQP!-&yn7qhI6ih~O_5agg=9$j+N45RoM!sTy|r zBsc8tILeOeT4R?4`HsRsi(goN;!BY*Ps&1zCLJ|JW02JjV=|Gmn66&|)gC|5N?#|| zvkNHMt<*pZ)bFRHcbIv=cupWA-R}l?%|@b7gJY*1`~U5$<`$==i~GQuQH3bo;#C%( z_Hi>CpUzNSMrory=-|T{J!^o!!lCNVxKW7dKQD*d zIRqTl^M)bn(P~Q`()c&6W@=TxCCWMC#MtLya*)<++6|Xnrb2F86!k%5?jQ}KJ9zX> zXVk;Unc#15YFL*ld#M*=x<}Pl$hs9ciG8AYqS4gT_fEP>hClS?^l8l=?Igg|XKl!( zH@zGa0d_w*61xIvHzunGGbJ?-U;Y`jc4i&by=7B*pi<%F{Gf@#_-o?u9tspFvLOt; zKWtzV8Dwla4A=2lClG)0byVJG2x{N=T}X_7nCJmHAtd|L9QZ1_wFODrH8yiP&tpb? z-jOf9VrH$<2E(3N@-FCsS}PkLwc+vr{|tbTX7SW912vC8bkpnU@gKAb#zMY3fxL(| z@f78!Q63^2zyV9ZJ#I$+)|XCao}74{9-r=hbtKl9#yrgYOg(LRSXxkR?HJ^ta#2Hi z>SyLrOw}gn(J~h{&UTXtjC)c2?qdu1MEMy{tGw3)%W!F!wbpXDL}{VF@|M<)w?J^Q}`S zg?@rFA=(8OF}{2*7Y6(Dg>LD78>?VP3})l}Lxk<6sl$IxUyw?Phq@!(x4M`0V9GZk zAe@>P%m(C6{R~1z!rEQK&UuV8xnVf9{xAg@G!9M0H69B#MvDh7j234VG zBManrw}ky=`D6od=^cvekYVj8!}oFqw1GTikgxPjK`mxs=5nyY{DvI!g$5B!PTDFf z)})ZLaR|by8#|pm3ix?+b@%0+$(7Z&7R4h*mbbKY`+IhdLMs#=*{b+!02xQ$Hcm&; zv6YW02m9k{y@ppdR$k3L75^NcA5f*i?_9DkO^=?mx@Ll&9r0CeeETs3GJgKm`%|b_ z24i5xeP=P)HtD4x9;3munZ*pz!=rDfmpvr8@StU7)bmHHi+v=unnx>TcjThGX85YC z=}ZD(r;oZ1kH0Txopqa^|8Yp^HFV7;m*tR(a!!iM2q`?rGQ%@$@0Y$USx}#Q{E8#- zT(0u?4i&Ng{GuGuekR|Swzr@%0tb`TrLgl$4*89lI-!e4|0@Jx3fAC89AS;q|A+#Izovp<4pUjl5o$@>fOf^*{9O(&)E?02M^&uE* zMqp zu0M)y=EYLRso&N^u4;BGMqNyH>cFL$Q}nEhD^J6uuY?c=NM7LI4kf2@JY@1x%&odi zAb#$*OVrJiyCq`E7eUH=Jl#r*R$j+z1f1=r9fe2B12Aan>-}bH5{On|^ra9mkDVrY}!t+Kj2DU3k8#YH!UWG0_6xAZ8*O07_VG>Dcs_ zEJp>@>sAjxd@2E-L&DGj?@RlpQMUrk&2_dd6j(O8Ic)^vQ{@fA=ea9i_W9|bvc9W2 z6yA-A5yRBDzovg`E%(-kFF~A`l{{+@mj=o&XZF*U@YPP1nc90ncq1n2Yn|8pXzIAe zT}XQxg~YSJIPBLn3DKQ%ET|ew*QSXgg;9q&4wtG@?|;6~mHkkb?FLZcadnrcn4?^3 z-}L~-C+VbBR?W=DG$*zgVu#1>Hzx@!fV>eCzckGVq_mNAPxrF;E=*kJ4$1o;{ViM6xS(hFi>?H=sWggQZI!izfD|0t4%Ig!;k+jc$AM>!Js)QCv5-a zk1>;!|5nJ?{s=o#;Saro9eNc;2`p{Hh7X_+-;Pm6SpU7}%nEa1(;eTg2C(r=kBvpU zDrpt}_cA7EsFL>0EdGsXhTou@vm%+N>L6 z2<58)YL!M|W9XyKNrg&BX87LGi>dyOgKF|`9>96b?+H zQdfBp3hGfu-|t7$pped@o(&3GLZWyzZq#9gF@GV5 z!R<*@3g@9Rhqd%wEW>G=9~Q*Pv3C27JY-m z_2(^cZvBs2u$a}*+~uZ%=qoc9#;uhNVI8$qUdR^<&1_8yf!W^~+r%|G3Op0!@|);W z!9ec6x@Zoeb3Qe9x$*1SaD;{u;4?nr!6WfaVM-7F(M8`eSS}rD69<_n&MzCoeaqK< zY&n6`F-U)9PFd4P0_i|_i;?A<*MIl9 z4i$KBt9!~=!9Dqp;?S&X$ZJHUH+;OQ{GkWcV#+AU=Zl(BXPc|)m?vsgay_(=Vi4Xb z>x{L~q>q$(74EHyrc9pa^)^G=jLHM0Zb0ih!*y4XJ^J2Gc7>;3VJM+YOoFJgDtM}y1)ojJ{e zUQ&#Q@zNjSAU(}4u%)pd4j~i|3}}Bz0v-)qm^`o~Lo7_K`j&|>b=GxgdRRqNy3)4P z7Q)g~uWGHDD<_a$E5vE}?#EVa(s=W@;gi-ZcPLIyPQZwBZLYzg_s<81$_G1iB_Jz@ zos@BK_Ug{*W3#632H_r;PY7Ctik+Fo6#aRzBG1yDY&+e@tbS<$YY#h!{Y6;bYdal! zvv8xE>kqcT>-E@}HbW|WwKbqV%qdd&cMw9bxj;TY`5SOqLms@`ktTeJ*y|?LUj7@q zeY@lL5=TymVAx5>C7d8zq*#^NFM4obzpx?*DeSM7TZ*@VlL!;ovT(kOT6JDI#3X zHMS}M9Z$);e}3p^Gg)6q3@9hc@;u|0P?NKpkr=+C^K}Izzn_t*2(V}ten;*KqzByH zdnKxJJ*zSV7Su1YLEmY4ToKV6*?ia5M~*erNDtYCEoxR!qt>y&L{>EF+`^YlxK}Mv zpLwLka6fpkI+teH%RtiHgB zSkp6eVSPPj6Yw(SG_ckoC0KZfjZgIy?2k)Mwy-9~r(|W^ z1I+?Un?}}tqc65?56&P*qBD2sAb_!eT(sKu+qU!+g8e9)&}HtqU;wvCbEfpPr}kC$gGU3bxD zaD3UMLxti?ivv>y{fqiK{Y?MJ8M7Z4rPOE1IWd2R7uK9_B-D94hdVHs!0I^;Zhp@m ziNgteGN;QHG|h3aCE3;WLZP`?q4LPQ#r@jhh6}#Viu1aRq||D23(h0&7(fEyORXtm z%9<76=;BI`pDEfn$*3NZqv+;}?txS8x9-`;(uQ)#Z-4@y8Ba)DEV8Tg*c(f7v59|&ETdpVdIOhy*1ng?BhYro==O%9(j&d6Q0(s z^83ypl&jit29bhQq_DO*Yow|d!V7_RwQ=^lB#Q>#N7+jfdhgb$9=zh9-><%!;7}$J zM+D+gMc*bGI3WwPoEv`H4Ab%^Lh1SiyG9a<)gE!V*G_ zix)`^;PFz4f9aiVuR0sw$44HI0Kb`B_Hb~MBiU(4&dcDMco!D7P(i2%k@cwe?Tp{; zwKvzWdV#oxntvqioqxqS5^^p^qsf~#7jp(Dd6!L-V`mpe!N(pKCcF(_4l_?;>XnF} zWhY%#_5%Pdz@Z8z7NL7txWs$qvX`(Lv0?_<9WTCE>Bvw%W(_y`f3etFl|yJlc3RRT z!4dVY@7}`LUcw$`lk0C`z97q5K;8kTNGDNwbAngcwv|D9Vy8Q- zu1p1F`MZS*Sbf{pdfSAiN#_yHDpOT9IoZ>{&sEB|1w2<$L8H)BUpXvIc0}dGRYNV- z7!j2}T(2ynOB(*5{yX%GXJD@nySFtbdUTyPhi|dm9Xwy?oxfC9%Y=W>m2Y)Vf;V?{ zy5L+$3CZX?*0MO)$~gRz3RmV^pg_m`9s;HDSpfLnb5I``z)ZIm5Uth0Tp7k?TbngZ;FAYZjPI|gjn?q zkpa==;R%P){Gms~aP8W<49IHFHM#4HtH8|hy_p-+YCcd!jy5TEjk(sSeW7@&wjASN z>UY81jHZG%^Vf6sK2gjmogOdPg~ohw;7HsaTuMo5MrYnbZaoklS}f&scP(^sIqg7G z;$)1*URq{~&Wy3IFI>sBG5kBU%7kBJsRXs%4;)G*Cm}{#(kCwpv|r5Mtp2I&wvd@( z8iiY*qJ^@*ivleFea)@k&6sint|QZa6}=X=H@$wX_ZNA4{=HM6u*3FV<1Y?Kc6=sb zA0v`l-`1EgL%lRM^qxr1QY2~9pBwDWc8~$JeH!S`5l!TKkq_nlEpOC zhQ(q1%-w<2Qn*cUlC#N*Y2C;aj4q}szflQ-imXxl1cSLGxEfr`yl6MCsVl9S1*d1) z>O?qk`{v$$K=YawGR&2{;KJ=m$}?fIey-QN+|IN-zYA`pJEFZu;|r@7huIXo7lMrG zwznq8QTM8W@uWTEABBP~%Xz}nfpEW2zU3B*KqGy=(XLjyzk&O~TpT;_PL%fxqbxta zfof($FFRGIDmm*W_Hm!W#BF-<*Cyg#P7(Q!ww6fOh=$FCKE)RhY%u5~HtO}-Rrl2W zJKV200z$?ltRv-y=om-CvbAd+hYC4=b-OH5`pYPlf}OmJmKb!8kJl z3c$Y$^5o@V$RtN)C>Fql5dysBB((z1X@cOp{Yr%GLi>}p`pCH!RnSSx@!66PTLI56 z+vwBNW44d)?DF2+T=|Nr?OJ#FC~q4d995peKG#pNf1`XOTj%TQVEdAm>kLumABUd% ztapryt<*Q!9XF8cbv*T36Mf{>up#kp-XSR+{L7y3mDiPJqFfPiezo5^Pi^u3&TMKU{odmji zZKa~c>r+~-sJ9HBz1}We+&pc-*no(k5*q4%{&V-Vid)}$1lfPibb#b7tUPG7FI2Jq zWK`+AROTF>GdlU8rD;F(CXS=u$xcvrKhz0?PC1C70I7|ah>g2vSdGjw5X zP0-Nxb!^^k!G&j9taT4H&#c~DN-Q`>cV63Yp1j#%1jlBMFA7*KSQHPL2MFal@HT&b zJAa|sUpww4d3E8*ToiconF~K~)XqHoW6D>nlHq4F_aT7-!fPQSHMyrTWDi#S#-k86 zxqID|XLvGcl=xwk@L|-8!8LtO=znvSJXl88%87!b2apvlKXSYKPu=&^%mWgd1*8zY z-KDqY2kVatf9*Ni#-^d(tsT6EKP0cEv`mWDPCYW<;E=N^`P{~vEMPh=s5S=r)Cn}D zN7u0SxpK81K2lK(YipLpoQ7V4R??k*RU&0Ts7?fkaX5>O}Ovd-xx3&i*8Yo5(H@m6W#)f2#V4vA`+uU zZ7>)ipeSGvN)16mx?_wKP}HW8p0CrAruo!p?p8m; z>}wv4*$3b!bnjGHj+w1<5bd+*t@mB%g*nL#%UKmgE+`wuGMdE-?EK5S^WgLBk9>#O zpYP7h8uID0O`U^#(m5yHGjtnGkWV2}4=lc=XEsdeWX6t*sG9~n+V6@pS~u#`Ui!02 zQUYTNJ~No6tt~|3KAda$y|DMaQG5*{gW$CX~A_9Re&lL2)b znZT38sgICEfsuFpw>pWtmSV&ehFoDv?E2h5@KDpH0-b1lW$;a?=4(MXW~#X%9s|DZ z(M(F@f0j^kH(?^hly&cI&qs60bZ8~Kk`=YWBs=pNh#h$$F<3p~<(5;lpaa~`3r(pztGcoEg|PHCcnb3`zcL0{%<^qV2SE3O4sY4ol6 zjJkZlx42NPdX%poHB7-C#sOI8o6)vR%cey4xBik1`p#y%5QABdXI7m;^4Gytf$yqd!hHfZTkUHwHkPa?uwJCvSAaK~3bjPCuGV*OP{Z3)bkbcx{K~04z?xET zyG!x;z`j+0D^d&soHQN`PHS?eW@Ot$m4Qr%-z)|7`fYLYkiex_5{XzuY$W%FO=jI2 zg;LI*i`Pkc-Agf6!+?CYI%1a+DlP1b zSd~}qGaUxl?3Hq2qdf`&@|oL{u;~3?p9i$r|EOZHfw=9f?Q%b^w<4vWrYfXd;3GBU zW!Czte%?li)Qj-iM9bI`lhl-OKeP|eOoDC96?}g3sdjj$LD`)WnRYU!wY43U4=*@b zTcrG>^|5m2zP)AS)s#`Y;X@Xl>(Urt6}nwWz1!D9Q%h<0yFRl8F#iUUqp`G;^h=p6 zvk_%(&W=+G+=4l_lv80;cgeV6$XSimql;Nhh@R$&8kVXBES8ZvY$;7ufckZE)5$iq zpFE#EH!fsSo|^AIfY5i^uFmk4gggn^13RlmYubW$T%8A|^*d=O{zZYq|u_GtTHO7$5 zD_2l=O*lRG5%U{A)17_aiO&a#5<>bv0rp>FhoR;!%~KCI0qFhC9fl=YCH#?G_utb{15wHSw7#U`F}uJ$pa3WZNEIH>plE`1 zwo?f~RJlnW0w*7kNC}hpEU_BLJdUrfw&-ImFSu6;Ag$%d(~AppXjJ`O(&x6On^_;I zxePkmW#YNydT^79-Pekt%(`>9=>x}#(bTTAoLkYR&JoqP@T1~AMRcuj9l@sbFQdZMB z?`*M66P(6@)0tE;1uqbPeC59;7C=JMBROc3MuL&xp6~gU3R?}DSq&i}dMi~AzG%r(_{uDiy5yQ8J33hU> z|2q4W_~0i!X66;A4<4{rtJHu7t|CQzS&wAz&jdE6)?Ljdj5|*cJ{b}UG(>Jvnp!ZY zA1@x9*j{9r$j*%Dha7YdcAjGc@lF?iGxQ&#PwCEhF#e>M?LrQ$b58H*|GfM?H_Wks$v_PTD`1!L;l`TBv>gkqTwOo!0PudKP@2fL(f zHKEjH9ExDP-z>T#Ffd8qk-_zkUA?uU5@&!_jxveo`tKf4!;V7Z0wNn#**I=R`%JT2 zQ%T0Uwujqqq=lWJ(C013capCjAnR*fP7P@XqQcX8U(!$jTWI&U=)1Ep&izJehz*%t zKfVuG`wX4Z2^jSf*?UYO9d2ZQ>r!fFD?sD{=T_c1L=SW~J*~3sEM%F-zE_7}pFE}; ziAX`019AXGf37yakgQf=epym9cCeYa9p?Z`XI|-5$*3}jFeoz^lEyy6WvRBefvOx2 z$W}sQdKUrqvPN^5FBFW^+$P9PeoYmI}!{RKdx&>gYQb`&eBTeaibBx`G;CMo&norcf*1F#k#2GWFm2+z$`Jywpg#AX704@I$^_B5K4INhcLBC!u!A;p>^pAj|!gC)X$4r zUpzIu{#+&THIb)B+7_yeiG9n@U|au3Oju01aQ!!r`ai2F{aH4szkZ$Fpm3bB3=+6p zKW9J;RZQ58`4#CHc)a;QE6fD46NK1Xm;;4kE3mF=)F$2&>|h88x-Fq;JKnRI=G{Y% zD6gCv^GK=gV;<|1+v%GtrXZhaMlZQWzen$P|B_%T+E?z3eSY`$$9&mh>LQ@M?iI9z znrJrNo|zA)HWW#!**1C5_&`=iR{l3qX$HDKO@aDA18v@0qF653bRdp~O#jEYI(7-I z8U3WbL0PZqFljS4?z|C!Jnl!mKrVnU!c728IkbBvr*XC^8s|}4dKt&AP16616dlol z$VxULFG3E?29AwCXu7mk3~z7bmx)jtZrX_Ncy+=)Eyw^*EbmbB3VsrLo$cS82d&ta zp_I&723cL*aQE-dXFerKRE&*dv5pJfN;6CIci_P*5m~0v-uTJlE1zZ9dax3ilp?%e z-6Tcb(u?3kgAy;c=F!yW;p7?ruF=rLj!QRmrRFPefc=fGU?~H!QxBolkRJ}lDFTeD z-*SV#SWmKs0ry#m`k|B$Ei;}sO}^&?m;L~`<6EV7!l1)hk^85! z(2<~I1|A3>loeQm*xA)4Q03_g0`!;^?26O(nwn&k?!#uxsYfwGW`c1po2eIx^WQu6 zjf#w?y7Nj@b|q{Rn&{y(2SsI=sQU#1193$-J+9$f7!S#bj$X&80FMmCIW_Hq{Kqp1 zRUR^!Unr};lN}1rJ=$vqCulL?T56DrFL?zvu9?*!|2nayZcjP;OELV0%!&sLPSx9z zZJeN*a%N87@6lrqc=A<=_P~=iK>frTyI>*yjHZgh&G2Mnez34b-K>#k#~e*i8OD}B z5^6X;Cv7BP2jyuq~UzmGg1gbY5`1!Ni^57}G zPg%>eO>#RF8XHOT%92fhvpKa2C&fMeuTL=>w&d)lf3Z~>?eVVsJxre=E_iNOuC!<% zG{yCKm{NDp7=yCzL~MhKAQN{cnj?;!Svkp{578WcXv;KLpRhp$LN&3Tw0T1)i(++8u z!VIGJuMD_yYkc-}(!5p)m;kQ)99D1U;(9eT4*MNK)r@sEb5pPU(N~zIs2`WzTd?fv z^u$d7;ps~O>8xGa7P*cmRL}V1i-`!nS9Y*HWMJnSLIjpHN&mM!mY$)^7H!sN7F=lRPz2Gw@O0!07Ov<&04_RXCG! zZsIWFBGNCl*RNmcfV`FHlwRo*c`YqAbi&(*8sEG9@w9M39q4tEriP(hbN18)s3I5b z9H{9bOiBt?7y?N1Q$LLHLwOj&JWnt}b`NZSij@#D((AlUk;^%1*9ht9SMr4Nr!|NI zOm|T4tLlDFt#V-aR{L4afL?G%F3|Ht`21(fKcRLlUeL;G&6e6e&7Rq5A_*(90wd(q zoOn6O)#^Qg*c8!%ETnBhJ0I|$g>9Rk+sfRX4@tX)EVF;4w#*ZA8pyLA=Jj{7f}yo- zb@>_hrvcL~{CY~l?7(?WaPuh5ZWTUWTP3rko9dA*u7!Pwp)Q}XzX3!lO?5U&x}w3S z0e$dtSw^Rtiv6|D57=eANzq#BPT;Vf{KwuVXc8)BOUwG0wGYDLTL1A`{v~Q%$nj1& z<-d#LpI_Y4e>d2IeWaPQwE_Ng^X6r4BG5ZK_vokrfgGw{I`X!9BwubU(kITzG_bvn zlWn!YCxB6jH-vaJYgAvWhJj~zdN^U!i~DQWLa0Yi-w`^K*n)^8xm{)_Q^XANe{_ED z3tF|t=}pOi;S!=&NF-4y#8K>Qaa+?MgF>(!q?uGIRyt1#(ZrpuG^wICQnvLuJ7}Q-L|&P%u#YYGx->_<+JDbF~B=JEs_x(?H zE~2+v(ol7|K84FJLvr;B&0}n7T%ULw)u;st-wu&AXRXYD85{RMI*uNf9b^Z39Yisg zDi77b&K2JoJ3{w4p-OuG%1#jDMWDPWQ1z_GRhBAI7p^|4IA5X15x7v|cAC8NeKu_> ziTkDLe5*`7JdP=dLZVaSnwnk)eRRPoeR34ttuHfltL=9FJ(=dwXRs zZz-&A<{TUzJPQf2y~qU`E9f<<0F5RouB{61gR0hG{@qg7&;f}Pdn={XAiYg7-AY;< zb3u>|72jrsk1Ho5Cmh^ig^Mha-|ek;2r5QcsRDZ6!!_|kC+mA8tJr#$|CHr+a@@Xj zvCGyt4x5|xhVCV>O0C!h7gp|5>-y?&B}n$^UR7o~wHw@+q&-FCaBPjA>JQjQIk7x}34jk?x=+>C z7KHfiaBT42@7$dDjjr!`AD`!zODmFYBZ7XfG`^1&geg8uKQ~4RQVR)RC>C$J-`BkK zKSo~^dLI>9UrfeOz1w##O?3{D#FV*+!3bDZ8T$6 zBicMMH-Wb9v?zA+tSJL1+tty#KZhPF40hjp==QuwtoW>4o&L8ZVxE(yjH^q8Sy_v~MBV6b#lb1-ye&a>u?dvTKw(zC#b{pY)-_*|u=ZnC4r zVlQ4>P^M0E6`e0AQTUsFDM)s<#ZS*)maY#pbQyg|@5$uR8`Ez+Q|+XWPqH`hH7Gq;aisD^`Ziau$OJ;`V$0sc zn*cst%+M83w=(rH7>K;P8bYA;iQ1P3;=+6|>Hvsk&o@Pbx#kfS%)){D*)(~lEEXs? z5Vd8Q9db(5X}d$VRv3THL@b?#oW=D>pOb}-{0Ch_mS!H6=zE-2&3q*s*@nQ8WSR3W zQbmZ}7mc%|5ESz4XPj0aPv#7Ps_Wof&>BKIZ4$iZlY1S6mp(-6nZqesObQ*&aXN`K z^3W(Ms`Iapq0x12ryHKb3C6>p_(G2#8Xls9m+0HWQa2iHx<=E)6ukNDzY%ga8zza9 zyE5*Z07U+exf!G8<2f@{wrO@i9nC&Wx!?J=0yXoA?Kv{Y5XLm4(exIE1!h!sN`bIFVXbuSBc@w4(m*OFva6ylgNG=su|z7pw=jgx;P98Ir$`X{E1W+ zhmt~_3}!r;Ih&qI6AaoBk*q@RWJ_!ZWdZkQN#U#G{A`w$jL+IE^TYzjkV`A zV>c^`uY&Q@cy}1_QDs@E35H+x`DC5QL@6JRhU|r8|m3D zFfg6GdWIK;SPtA|d8YB6@(KDFHp@0^Z8^aHTu42rv`l=2Wx&^3h}v0a>ddz4!`SXn zM@zcu{AJ5#dKn%2KWM5zcfkq!ID?cSZ8F;`R8W03(qtMueHD|0Xi2&vS|yYH%TP&H z&`3}MQ!l=kFtBN49gfO0OWH@w>`2Y4Ch~S9=x*3?!u9==!RdU78`8r&tgpCsA2|xn zGyJbG-N}}1<&FmJ2bxx}-Y$#|qac>ixIXd&HJv+MzwVN9^U6wv=Ca$=Aa)b?Mc1$Q;>M6Vb)s z;Gn-N(3+AUuT%Q^jRHamsQ$nie;oOOUswjCKICc7u3*<-(3Q160o;##{xtdf?pgpm zHDBzBk9#K#X^RKF#py$Ja3JoZO4UJd2#F(=FOTa=JUF|8|7-xajhMceqNF)-CvhM3 z($z|42;M5@5CWaxv?(CvRKZ+L3M-D3uXzvwpwQ1*P2vvDnnZAR+@z-cmG3vFb6*C^Q4L)eQ>3*xR2=tN1y9yYv$V z8(d4b_wN}27phB==JzCRYDuTF0^hGEtJ%FsY8mo3&tjcEx0gFKvUeF$L#vz1#6uO0 z(npUm9tOjnv6fgZproC`Xf-wE0Z@j4lQUjIz+HhnJ^Ht2Oe8;Kh(Y{4egd`&CtS8( zS}3SF)w?bJYx;KhU1I>|>&u{j7i|M9DDF=;57Kuus`0Ht_pN%s(5AO%r{=r-Arf;t z2Hmm1<*5!etg?LV}v5a){k~*$j(L&7gahnd!vPIzVO3qRty3~}a zhG1L&Z2!9eNFu_&6Bh$g?eAbeZDyxFHx4R@AC(BQxPu8-B0Pg)g(MG~N(*>~5Pv4& zsn`J?W?RG(hrSc!_>K1O>WtIHTzpMXcg?SjO?KT;_EmQk4~qfkFK_9lsadqji$Fl# zM84vluYaabmCDa_yC1p%7)AMK*m|cCKQO#HKfC&uc^8${`h7rPbD|u@C$T?`;e`s~ zgLz%_wdZO7Cg1N)Fe}d9XNUH$o3oV(j(X2dt=#v28Vpbs(i9p|2)e{|NHehAjoylU zwmmXAJ&3wIdx*_7As7sHSH)0XjD|(y2qzDW5|6~(}OTX!FNX5tc@~;#`ID(h)$l%1Fc*W52-_eKJ3ij%UDjvW6 z71kJ=0|!}Vo0Yx(Yskk};k+G8|Dc1Z2O?;6U0ujIGu7XH>7pGnWs>}dm=<7o_@RkJ8-kU{(?|E-O1|Rz`UE&N zqgdxx&2h;@afxfqVqZ&RZ$8fG7|jQgqBk4;1+4iR^4OWCKD2RUTn>Hsy7EPbU&D)G zuc1zJP)#RRwUg0Wq*Qffg~}=+`<`3q1M5Cg8_Voigt3k($98`fH-wD(qmsIUT>;Zr6;%v-X(3Y=b<}+pL=!d{>W32>Rjq%f zbTGe-@p1fh;`HO>O*#I|k|6(31Z^$^%2J5JU;;$n#MRhL>^^2QFmHZh~dmj|JceGoL`&|Zk@Cy1dOo6Yzv zZ5H4N#@MuPU%5qQN@}q6#;*ZLLy^RNO2S1bM8~rP{LbOmn~A*yI@E;`EC5X@PpIG# zWE|kR5t~0kyQ(zpZd~+D4RQG2OE!|ju(3w1B1^M;^IcE_94KtWmdb~5tpkp6nUt{_ zxl`$=vbV*gq?h<7i;wIEN`HLGIpy$l+L=x)G0uaDmN0kM%r;~IQyt=ON$ESZkj6&z ze}fjaCpswKk~nvxR~)Sf?<@t|k8fj8qdP^1p@-L_s{UkM5_bpK*4KS8Ntj#mInb@w z(Iq}(T`FekLIB_m^y|?|j%Ppn&21$$HxiY8YqPr{9baH_$0yl zVF&HigR`LY{+_gNYKMfnCCE(R>t%dkpVAxF06jpLm&kwUEt~zjXhC!kO9c1=RwxVI9jIQd~Cb9GN6j`k!>-~2ZP`>xZ*?b!c7u&y*+L!=ly%D6aUa8_4>Ys6bvj!)Au#30)i}zAELMvjw@7Fz` z9U}lY&9=OCGY+>zyDzv{p%$3`{JEz+*PP#Gb?iQPtOo?&>`ON)52SDdttKT?zomUC z7;#2~1uWi`0n6sr_IfQM#G!@~Ts_ufIa};&47)RWz#fjivL3<4% z9(b<}&qjyg?L))wM5kWT#Lq7`ibWA0Y}hpoa*WbxNeo{Zo3E|WLigb))lk0bVb(vz z0BSQ{TO5RS6^I{);X;krYGroc>YKNu`A&3~mGz5-I4kNX=af0;#dN+8pj#R44_QmD z!gaWe7F$*Zo>c5Qm>z0UDl`X?UnVbl0cmW7q2pVhlyVG_jTUrRH+B()P=(cnBM{nwL z#p#9d%Iqu7OcUlUjj^<9DO%=nmfxD0-zj${cTW0<2xPXZxcP9Pv1Xv;*J)KR-a7AN zCLeE26@!qDkDe~K=wyKSLhiKI0Z4VTAM40zw^y`3;$qY=8G=3lRczhhz5#Sbc^ZHM zReG;Ird!O>5<=Iqdp(iRrOc$I(vohywbk-rZe&m`eoAymz!N6lP=~>)-B~9uHE{PL&T1{#e?_W#gDCPv_4%9sUGrdfUGpP@psv z%*X}Pq8+^*$E7}am8%v6qg{@0v(k%jKT8yOr34TedUa_n-d(r^@5{K#A08V%QasHA zU180gWTPy0h1D@5{8;>?7Q`hwk>(-F!G?xyhXL=qO9el=29`b1q}QOe$QE#hR0Vav zo;G>x26olds_!KbULzFv+1ZY6WgD|Cjm!QP7+}R;wX<3DPWpOTW|pS>;MP~{RG>{q z8Jxw!JQCaGJ+SdP=-{XC2o3@wPzpM?HC}9C%WTt+`b*w6m6kPiUYt4XHA~A62c}zJ zyu%tMf&F^pDekKYx{VYQ#9CuWBF<1|{oRHk>xn3U;1x<3&`%)^h#BZNxL$ z%dsuJ-6=yJhB(N?7Npl0U;>bD{_)-}M^>jqw2%428_KfE2NR~q0xH2)HbVYA7HfGF z1=uGDe&YYVPpiBg`N-E7Km3m$FqJ^;dO}U80f!?m>MZsf71uX50OqL~UUR80zeRL_ zNNm|jYe(jIB$1YiQWe8Y)nsWA&ZB)7e>yqN#-177m8OO--V96GYXeDF&{a4fF+FMh8f zlirFg_^z3dGKO-(_Mv#=AUS9B8amm!Cx+~ckA_dZTQC*|XXnfXNntu=M6L|HFHLB> zxs$3#b>Ysbi(H&5FG!=msY5-4F)1qz6>gq=@n3%b?EIpM?dKzOI|>|JvIXVTT34uU z474qAH61-DWeBdApdVe40f!+$KE8r3*PV zK7Z`sDK0uDXt);A<7zYi!As_i4nOE4@b6NNSv&(}yuMm&(;n<&t2k-?)9()c*`u6J zuZm9&lPZ1t(60f&Ro+-N; z5T`q-$UeXaSk1bv-`i3T_c=urd>EnB;Cs{kpfUhbcYE;W@)Hc<9_%^WbxgtQuC?=T z0RQ0EFo|F8*tKtk%<=v|3 z>d;!>PNmz2_sEfwNA%+AU}}uiThA~TSYNT8`Gn)Z5HiK`p7q2b|~-_Lk9P)!|YhY8LX z0gf*?{DjulyPgW1V3`G~GVNZ%3q&dxn~G@oNcM)mAe$_SbN_DI?uvr@IkS6B9g^^S zgU-tehJMb5VJft;+Z!%za2_4rbiUyenr2$eN3z(p=8^yYd`zGx{Rl%);S4sGL*rA! zF=;zrbDO7r4xBcL&s-??ts7)Qev4fbuB$Q{aHrtVUgYFlz;u1hIyr9tzY;G3d~)ss zn$UZ9nAXc`TjKZem3l1Vy1jsP39vupK&snal+%9H-tsLhNz3%)IWqRT(SPO_gu0mH z)CahTgWK~K5+fV{lLyY7jk*pc;VeBO9ao7+R!L0m;ixc#Gw_-+MlyT0n_u8Q)Qhq zQK9488%6J_M><8-6B_5_q`MQWV^*{NQ4j9>ZLcS`rm`T*?OQtwRMoH3o(v z<*d=-;kD`BHIEB?x;{kS;mPxR=nv{FA9QfFZppuwYFt?W@)&4bl5?{ZD%q;`d{yE4 z?Y|(~_rjBov#?mn$TBGz5hwcJ= zjXdE?WE&%<3Kw(C^=w^MUx7szyn{al4gixQJm`E?@kB&< zEiFU~`ovJ3LGdY_(_$YMKp*YHHoSbek^9>-mN`yI-=sly zAOE5j!!sYYAEWjn%4Vo6cPi5g`)dE?t@wp`g?@y$HzT36R{T?6jbX!|jhCX)Cn+MP zJdP3p1N%Al2tY_}*)>0Ms6Bh+D?{K+r|LbO(_URaX}dp;Q~Xr|W}57Hfjriniutyi zGSegW3&xqnw;{zc!THeLT8nJDwdL%~Z@^$ut+kdv=hvzOX(lnUaPp)w$uGJT)+}HE zNJ4v4BECmKo=IJgWscZ%m`PblF>xP6PYK>&kvs~&)2(|aFTvJoQZ$YxGUEt8zV|z+ z|C3mgcjJ@UL~tJ^D@wEeso>Gh>r2Ok9i`VzV!?hj8;x*AbYQ6Z$yxVOC^k_%dS%!i znYMAZRp48Al9e%)pWzs|^F{Y>n{DtX^#jA2t}lld`gzCA!G`B++t&u1S=vL^%8pPz z%NH#nCej7PCJLY7`?ttV7#rfIOXOt%VH{(8-`1A-U2D39gi9GT#{fTCf9`Wy)hOJb ztY6bfWj*~^g_i=YKtN!t#w-sG|{O5f|mxS(MY&(zCqOmy1icJZyJ^J1DUC zkj*({ieBxl@z*bC6zuNoeFn?M-A{8)?A#hjEen>K`rW@>KVea1m}!~G->gS>$x)p# z2Qi=9)ZyOtTw>^bu8<`?t6;YDbjDPKv!CY0P2k zFuIfHRzy9@hCa;yA#Rxw8Z{x|rnDggIerRhstf4v=>Cgj?Nb4!kvTnY#wK-s7yBAW zF0hquI$e?pf3edOd_lIoxapLJ@O$pzJ=xDc;4FlHU7+^~W3<}l`wxtz6|qlSNN`nQ zOM_d@B4PKGg_z=tMP^g+#oGW9u{RAZ3aZc;iy!O~kTW926IlfU(tYM8;Lu#VCi(}d zKkR= zx_`Z8gdI`cQ(j0_dtfNf(5{0rvq6!Yu^eE@ysWb7%bQ(ywjM%P>SWoG`Uc@2FvaF$ zE0+rmFAwOhDf@q=La@E@{f{befK^8Tk`CR+B?>kGVWRG?@_}Ci2XwOwCT^w;+kBf; zvRppsX@$o_M0?5}?zV>_2Y~7HL{8plu$>7&seO7-BwIJLv&{Y4m3oc_T#Tx=Wvs9u z|Bt0I_A;%cfXMjJs{6{JLmbxYPSHVR_llrrwD4kA$3eTTU89o7cR_Jc>U8i9 zFYBDSi3h8S{k5$MYti>pm}X-ga@_kQ$ufy4B4e#kFZEf9 zzPWY_d&i+Ew^C1jBAc0gkY=JSkh9eKv!G9)rHfK+Z}VTn!pnWA(>h=s0?*oGeHvjw zDuN4y6W%T?HI8X_YfN_}-Hh;ck7_1F^Zk&x*vsJ^hp(JYxi3?0rp=)?q_zzKdD~d$ zdiC9z8O9I?#k-T~{i(N`>VN2L;c}je#ZICo`4K0RG6EIn0p;7dLgI(Eqqmxnht~#k z`{H#k=5!DzWt38m#!Gq<7l(@_=l4Z&X)YP^`aMTkvwkT2+y85c2_{FpAHtTGdsWBV zU?+#`Dpc@m7|9D?`gkW+I32(~`|L8k@pU7|L~Zl8_Y9c@k#tDzb8&XmtLGP6*_2PT z-dv&dJErvad@E^KjP15O3A~6w6-FypzVxiyhRyh`4M6YKm6jmQ+0?!2?mPj6WAK;y zVp87+Hx_UOsR;l9QFO;>*No0GWE|p|F!O*| z_|?8LRw)JxX;Y~a6T#!=DWF9M4v?yS-&(a}-$Oe`EiNxB(_fcNjr>X(Q+n*dv8P(8X_x$l*dcjPBCr#%1bmlrwur2G6zQHKYNXu+XK_@%&}O~H5Vm6b>M zAE1>`;dDBmM$F66L#IWBl`@0)#9%+Wj2B}dn*TD=}QPX zUkMrcM(szAtEiiS_e1cLY6`!U#z*=KW7Iaa-pAXtz%e|d{m;42ZiT6KQeQuTo-7+x zgXqA#_U2S0f=j%{)MF!$r27C>2yxI-6=-c8kOLTyw8m2#hfRoIomr1$LVL|VG^b{E zicj=ia~s#H@ENVrbAmj7^T|C=$aCnvtO&+1w3pBA&98`Z{uP_I5CY&u*rU=mecpP8 zo*ahdI)jM;iHXgJJjn%siMz9Kb>)?cAJh73>6r=A!Z*IIA9=bkxe@>4@^8f0aUG7u zJb~sGxuFRrmI>x#N#Djw%=3~k8hmz&@>C7CU7%X2+PZlCt4qER8473(&*8&(a3@Ra z=ddlLDs=axo6CVcHA*}r72V7R@g}}N+PQqMrQUbSZ@u$m_P*;rYOa;+ z68%q}RRrH%&mtbghn9>mjvxX?KkzkNoflaA^1j>L-1bS=UZJI0V)!GyEO6S4{^;FR zhxQoWOoA{=cyg}&E$g@UXaw#UJyEw$w~B?$(S`9n&zw|Wy!_RvU5+W^U^$8_v9oHu zK6n4tt!Oaxqll6^i;r!9cDY6)N}Ip?L_j-InXM}}{L&+Pl)4eiqqERfIYwexpgQxc zJw)PZB>DEAb=FRl&r%WJN+-o}I^=t)yOrk>}c`k^ShDz zUw1GDv1+DJU2`_ztkl=4DGk9Zs*(+YGV@3&tB&xhd~<0Bu*+f7TE@6B`}u!@ zC#}bO&7FQ-Z8OLs^^+RYzn~fx!JTeku;y7NyGJ~`wb5t!(dSFjonM!jWeSo?aK*-r zzDrMzi7?B>CJn#xjdSWZpUX5^3D&LjFO`Kf8Vg>GPw%bUPKm~yk-GQRL(b4X3d8ep zX(8`-GgL1YQ@Uigly#KYKb#Ld*xtN>(Ny}KbaU-t)Gs<>0nJd=WT4St@NLG;4+Wl^ z#u0AFe&Pee7K90~eoDK4VBzZD?wb(OSDLnpg4LTqdv!^G0pCGZ*Y4>wE!-5nn~k*i znRT_Fg5-r&;f-u%tkG3gfDFCMi{EQ|`hO^H>X+&f zm(mlo5Eg~u1k_<)=jK%a1R&8l1JB4h8-{hhgfK1T#eBJ1oiBm6xYKq^AB4Q@yXQz7 zCu$id*dM`bIkG*T_hBnHf!G{;kHb?Sfgv~Nh<_aM{{P=UBxg0SEBz9neL zAtA7&VL>2?sflr$e5>ZH2QVEa^c`hpH@c2Q4iG=GqHS(q4u9|q*i;Tn%8g9`g*_7N z$r!N*b{=0sbNnieqwdkjUK`LCkfSmjY>CbC?*x6uiYr@=^It|vRD|=$0IDYek0EAF zAivk(c@!Xv_|p%dD)6#$v)4VB^)WVW;foqj&-&ViMTZ*CGUI`}ZkhIk`0q)K$&fy= za0xAxHp}9R545G@SAeE|Y>YUQyc_XRf7jSWwZ*D5JPm%W&-Z2RC9RUyBU=rJ6|9@%PV{G?PoYfFMduoB+xK8Qzn>F3QLz#5@~JAP=? zvz^Vom}_`BEBaFLvAydo3tg_t!PlYpWGvqHoLz4Ds+0?=jo~s!d;LlL)E9NXlKot^ z6dc~q&+|4f<4X}o*<-ypB#WnYiRev2a-yIRc11-mD#iapq1CS^bR@UB!Un>t>4Uu= zpOhp8X&#{7h5Eep0r^na>LJm+@YpDNcb3fw>fiYh5e%pm2d=hLKSa}tR3BO^)94q& z9_>q~Zo+x-`Oi=>>KB;zryJJN6uK2sd_~|f&UEN6&Q$5o7JG4$ZsQpeajKgU-+4~t zr1oc3IQCN#yNqp{WUB}Z{u#Hh9)j^;je2cCN~iT6sqF%G;SzZ0!nHqL(_3Xe)pR&9 zguJ@$yLYr=_*tkSUt)6QpX{uHWn#Yc&2Q7zpI?MKs<=BpePUz&m05{n@omccy%SL; z@0I}G_-7k@trSD6LLJ_T<0RxA9(1hJ%odd7d^p1r+HFPb`?qy}tXmYy+;Lp)>r^V2kW zhI~hBqrP`Lc)xZ~IQ3H3O3p<|*I_?2Nd0HuU9H$&r^9WLP&I|Ikmy58L+FBFjew5)0b72a2A6eEhl< zXLT)gCfP9G!3*Y&%~o^#u!;As5i&t${&z6oD$|9t*D|0Kvywvj)lO*orRG!@=_LRX zRQ%-#OjGT@HgI;2DW`2je``M$US%dvN*adx{NR@zptW3SJ8*c#W z_;5i?keR)Jy{lxRXjEZ@XpoT**4|&V1bk4)kx9{!3E*<(1i7P&Fx z4}eaVP0@R<11kM~G(M4n&tsWvxra82LqMMGgcTk}Ygh6J>+Gi&eespMBtnM7$ZK$;R82U>x7H9z1F7<1P> zLmBR&;&fT;@qWjAdzGf$mZMgll9C7Q$d^y88tp;YfQ1xINzGfoy_)$C=S$s>r`WV0 zY*6v$n%GuWC%~HL#-khq+GQSbJ+VdSzn&RPXf}m~Ogj%ULr;X$A?E79@g?_I-14s{ z`{~+_bfi1^v`~LN>aCGP!qR)8D%NA2o2PXw_;mkqK~|ZL$UUyeTaKO@;~M?aUh|EKs!;jjX@)Kl?lWiV zu4w%Zn1m8%UcYugD6XUl0_W(rRBlj zy0Hb$C_N{J@EKaD@E^cS3G~LuE$(v_JHa-U&di#JaMy~Vp$VnlaXRbF)ah~dZ2dqj zrW%IHvO7(-z3-YW06(n1`9<3+74D}R^ZuzQ-;Z=?sdKq=?ccJZb|CG_!^=G{J|3{{ zKVy{rGrrzEQG~m?GBs@FX-GPn&m9Tssf#I1qTjt_c&9*_3kbVW&>cFm9y>Q90s*c! z9DK$wmNBaV)1WC-M%&(#xCWHONBJ^vd~a(&`ZLd1SmxPxF9WYDxYt&O)!SYvW90(O z!(o0fLqzA*>mOErYHuP0efay$pq(0TzPkA zdB9LmUMwmGx5~D<79EQ6kpFJ_irxwC!Aea%wyIzoKm(aPX!3y$Kvg&rP2d8gtx1jF z@LH2fVHf~9P6Ob`ek>**-Q)~_#cIb1cx0MN&BMlY*tCX^$#fmiToP}s?+om= zqR%!)%d{fd*OYF1d|_+0;%j}Keffln!rfAWZ1sSWMT=61W=#o~z_ro?a}1QE=|g=q z*%|Pc$F~=6%g#sNY5a4V)lb+k{_Z2+(y}b~En1&+@WdzJz*8;}6!%h9f!fG7Mz(iU zM!(YJ2iegZZ2}dgO(?WRAfoxs|8aEHQBA&Ye`B%tjLfTW0WW9g zGh{^ojZ?e5fbn#q#=n@5eu` zy3+K0DreP5lXOrOA6uLEi*}t;Ozu!Tj?kAR@t4rD!oKtjfoiqXd+L~t`@aH=6%ZLx z$^qltu={<|5}I7G)+6$C3<>0wtfr~L!z|Wi z_iwV(Kl6~-O6kc~4cGyC<#pBbmzC|FyM#=?A<~w0=A~wktf<~V<4->UrLnlvrJc(# zPaQ~`T4fHc`2oeh0d|&)3zd6FJbn#&VD^WJh>>L<@;{9U_Y%{cW2_92fnH!WTm*{b@cdgKE`2<6S%&H zKnlzZeIX%cVQZ++{L#Ip0MfYxnN}v~Zl#hOgD7ATN)xVV`tq4PlEtgCadB{0XDChN?ajmU#6O zQTd)5MG9EJNv}VdwCNJ6(sKd-It%>bHm>@hMT&6)&NJeGa~nm{nX5F>wCb3h2G~Cx zR>jh@gle`FN9^L{cmS3iArh#27(uKogh!>926J^N%!ITHCg*C~KNZ5k%*WjzPqJla0|+gDLi+!%9&HOcoO`Cuag)c zV13L(98a~iI68#^jY@koBioh#NT-=GO}JBsQQH3FZtVr;5p&*Y^_EGqJ}4V5^HXGX z>GLL!nuRudeq%1=2b zs=28w8R^yur<#CLO#txPe3qPf-*hN9lRnDS@$?m#h}|AA-r42q;~p;~W;oZ5D$!xK zds34Mj+YD0#(JTg5OUl{$c$uDhyBMibkf3DxwqWZ5^4r68cd&IZlxxNV_gbNXgm1%9vm9Ng*WwR(Vc=VMTOEj=o>Dpk~Uo zIWcJLQpQ1MprAW$Z-;y^+pO)@fhMC#lfEe{-v)At>jY+>O>Ntj;B9Sz43AT$yryiT zT+??8Rp+R*itwOXPIm(Zq-b)Jx0@`Od8s(UDZW$oiWrEd&Ci=1X07XRxg|L8ha`~s z7MLq{q~zcQ(yz>pDTj;+7|=4GuH-~@q8?@~4)eV_k9DhSlDKyc0xnbrVVrv!8_gwG zRQH{V(Eg&xh7$JOFJv&X8GSs_j>(KN&8M9}FqI3^CG%nAUhMhJ(#hl<-IF8&4k8f^ zVb6JnlhDEd#Il@QX=0Ze7p@NpC+^UIf``Agx-T`*Ky?=bePr98SSt1?hn?}x6jNY? z+hb1^WSKSA?bPAIaceud@UO+EiKpUa~uz*mCiZgi-4#;Fh zOF%gTRVUX;kMnNV!a1S&6qs*w*q3?~e1)`cNKlhp&qcK?cu%FKzJeC#Zcz#)Wu3))ofWtD-+H^KQb8}uZpOWO4);ZH^u5L@~Ob(~$UH8VVz50;-UBSKZmiN5jUi)#4 zab}X%egm~aJ?N6peJ2APV-6Lus98-tjievegP>1FtmV3RI+Rz`% zm%>HD{17pUgKpV$zPSf;t2sKykZt=t0N0?M^6hZ5aOJ0?Oh}!ByHG9a&0oq@NB$3Z zwmMIk^EE%kT0O4UEumpZOl#0pxX+LBBMG58WUFWD^ncned4%ZpfBA?52)SRu0YEWW zll0$9zpCnN04h8CEWCvln#EKMft$>kpeN*fu-iD!Z@BKDSE*jCXw9ac6^J1U{|vtQ zEi3!zMv)!Kl)!!z6HeJkJ(K~_(G!*0RlHLdo22L^{!x{2gACu5?4{&`5>M6P3N~{x z&v7(pTJ~eVa&y4?_?~ng?y&<$sPG)*P?40_^1UcOmH~#<--5#wnnZD7ETm}`oR^iZ zIBl4^-&|>ozMLj&fTI3eu>l(gEI_Q#(>Gp61oXe8Lf%WgPc3@UZQ@s|e^>N=g%UBw zUqfJmvu5H#==bYI+6PsRbUYCcNIlM?@bIBzU)w;wVG2UbGV`WqIayG^YQ%7!Wy^RM z0Ggchuy~=k(H0_xnYf4QOKt_OTT+<~i<8>{YBt-fYG-H^vPH6 z2owLXn8sJG!YTe=Ka!xdkUVfKe|9$azu2w0*MR}ZM}Xs}QGOpqF#Zq6jDavv)i%kb zJY)Y$`i@y6-r^4=PXky0YYc6S)?^h-@ z?N4PzeMr4tNx7lm07(U|X-g>sLo}dTO^AsD5E-F0f!ww4WO)16Qpj6C_QY8$kQ*QE zp|`J)P{KLP@SVbkq!B($t2;;q4cxDX5B%YAX9}<~m4ch>sVkZlo>#>z{Kemr2(!ty zZ#L_@;CPP|1rdbuW_*-U&VcL#E`T!a2>Her-^iV5{|`G;)gor{O#i}&Wxl!U-JF(; zM9=QYeF46Le3EXdCdUJDks{eh>!Ov?wF>P*n0k$jg-`3N*Khoqz86+n^%W?BP#haF zq=G5i%HBVSLV{|px4L==Q$ogrNn)=i`E&TAU?u>3|EZh073xn572haHzW^a)F0ra2 z*k3qsYyv2{uMy^4$uxX#vZ-eDKVjWY@MA!rQGy3($ihyfq_8!dhd}4r zp=NRt9S+A(Z7BccLaLIAX2*q)!FJxpA;z0c z3w{#<4JXY43A}ik35H+^@6usrt{G-7Kbl#(ed2)_elD36ZhD^#oWo_>!b^fVW>QN= z{zVyisn9Mhst=QZowXL|pPItiX_ZoESw_T=K6%XPhA*DK`3gzH=MM@sEjw>(uisVA zPSOQCH`IRC!LAXh$GyXPH~ zjGFM8`!%YuBo$45B7J8RiQY8XK#th=67h*5XEjb8PBy+~Cq4_Plpml8 z9oF()$%qH-BSv5L#-D7yai!iSt1x85P;QW~nX`8bpg|juvlS2mxNV{0YQfm9%B4q* zHwLiVa!rtjL&!E9BTZ(ktGKnzjD2saFx|!|e2N#tpt~1uFYr zZaVk3T_4y)JeE7$zgqamIaTYSvgHSUdkUBn<`5(%hmS_0NnwaTR2znW=vwLvTpUIY zBk`>6!JHI2e~3MK>Eb*YXAK3(*aQqz4m<#2J?;c@{_iW;>GH1U|9M6;h%hjY6t6Sf z#+960hp@9pazXjl5d@%7PPv5Ng1>YZef8!b6GW&8X zWuBZfa{h%`S1aqEgzJQQY;ttyQaZtIa-zCIPjGVIZYPjYnq}(X0SgFrYEl*p*jQIr zgnEI%!#$@|_+w0iOEU5E2e7fnwQ^z0$-FHN@CG1O)fM#3n+yJ%P6~dkR9Pojkm}jywi*1=F6HJt3HCoNW^-i_)jhW zxs2Bud)yZ|REn{Y{U{m|5MVwe=UyC$j((V<>xjaM#pLm;>F zD5qXHQyxy^Pk2B<02o=wkHNgbe#Jjj7Cm7*QW&?)IWVbJQ}~PZwFetDw^HW4p5w{Z zWhsZnOL_n6IsoJ!Yz+e2eL&sPXydBVzUpUq#?E78$iKze#4q%0t-oq0ax@Tx0~(LC zlv*u=oiFXjkHCGA(Ox!uy8^kaDIdJ)iqB>{X6;%)tV%{-CtFmBt3^{Lmefn>)g>Kx zeIk#OJuZJidSCV~&NkMw9xT=exv7Wwc>LID!GCGcM~!c<=F*oY1^+1THw+FdVCw2= zYa!|tuYb-4uE6NIl_*yR#UvPfZ-J44s(`>Uv0Q+8=+TMX3 zINlN=cM->=T}Oe9`9ckI#BWC5S-CdVIqYyyrE@q5oMux7V-a}zJ;9Z(x*DV_z@Rq( zw9fb5&cVFh?Z2l0K;okIBXy$=qG0udz8bp9k$Y0L?VFhq zeXt-hIY)9OfNQeECDO!Q&lwf?E`a}cZ#$68%cZO|1(H@=EC-Inx{#@i~i9t|)YTyPU2~?F zUKMXW_6-V*KbUsf2CBFps?U>B*nN13^g+EnBSuco9GxR|!T4H>KdIVY4eClQt6*{# zY*`y}(f3v=2vaShMY;hPd$aytR1Wj41^LPJ~7SE@qJw#4T4L}&a^J!!zv_Mu$!b7K8 zhAK=3<407iH1=*^)u1|*+b7>K4q@x1?D`{}3>A-|UL+Vd`d843PB9P3$!7AEY<{5>PGliJmqJEoumKt^!CLs= z#DSbEu?G(?8=_i9hP=PNj#he2QrJII`PjJB z?MAy;ziT*axe5sa@*$XMXA=%CXaLt<*cQWGlG$)d;iB$FlM`6eyCjGScQV4u|0Kx# z_xE(A5C+xExJ`9MJV*XY2CzKpfQ|UG4tBGvaNv*}2M8-x6!Y1;{EfPDGZ(VX)Mz$14`8@0A5y- zVXB4CM>-``NxEkE275I1X1%_V7*x?VXWrzq-k%SDbAJjf1Y1dRiJTDXY=r6Om7o7l zuXu6N7HWoW{1Nm6>4Tm5>?1%39SLao`Z8>V)Y)$vPH5HvR~C((d!INVo{ zBE8Ok(Yy>`bt~zvI|xaIgWFr@$zuxnxDUo-WTQe!%z?Op!`2}!<;c62B346IKO#+D z54tmcmrzwl-X>|F>jdC_Y`vX#a|)diEhedEf~$q3ViugZk!r)r`mx2vqo~Oa&~R z3PAfV-Z)=Xd{ElMzh*t{x7b5+t1FD&Lvr%aC(cZJg+L1_vZd%lZ{h)K3SwOCToW&; zhq$rHN$7ZDi6ACc9EN~|_+?)ijG2mH#ZL1klFZp-hH% zWw&G+*W@ln=*RF4hjhX;#1;#fdqGJ|*hsM2Y*Sv=1Zr?q&_b{4T^b29MG*Gny&?D^ z^|+{;_2D{(6shGHGG#Zj{1Tnkb(uLVc|3#|>XJeA!j(Ps zH45j?|1x;D%O4C4sE;kl7iWs<@|}1KOwl^&^E?vmrB!@F{d+~MH0|DOKjo->=C9+? zwZ3s}DYvl)ynX9{y*{+3$l!+_|K$om1(C%4@RNoXdlIn>im)wb0x$s9w(V zCGu~gXLGoFP5ZCPb99>i6}WC$;U%`=+b{A&+DtwSgX$)+o22hJ}G6#?ZA zEvYNpjq^6o?v4mZH5MGIRd}&k*E9(HyHsGKn=T6-@oQb!+KmY}OD84Zzc<>ss2W0J zbGf3Yf>Ov`PMc*ktUWXDNqIo>2QNwwR^B5MZr+edqyh`(;`VkLZ0G+gotyfAe5Cug zi)wPiPPZe72yDS3O#!k-PeMtL5k+xUYYmb}kC38-mL(%2g;KohFWIYmy73c0{bQLO z(g0lqepxm#$0{$>S0TYQhjQeb!;|1TVC{1*)_4SA)B&Is?E}cvCAwJ@+D)I63{6EV za~E`kSVAe%RWMA_$AG@2QiGyV?cbAGor}cz+#GP6VsDnE4}8{F&Kms1fh^IVw0c$x z1nYHxiUe_nB;ML^x2X{s#H$m{RInM7SF?J1w~i?{2%XhgkRDdHJ@v%q4Q;6DQtKlG z2hPoBZo)k9gmQ#?h-&evRtx!BYOfFeI^OzA(ysJh8sl<2PT^s%5K86I)rCyY+6XcX zr_Q;SwQxONpWLH*GG=(xFdU}4j?L!X>O(-n#uIUMS6Tgy^;uB7&lkbkbf(HavrEPEQNc zn`atnO}KDLyqNq8X`gaY#RI*e&ULU_KLG3m!}%`w=~F$O+ggm1z>VLI|L7X0&c=IG zsWx2oMS?_D97w%&b*>BebUrBpnn}G-4|i+To=^eKj^g~y6AOzga_%S=agu1 z4f?uyUs0;Qvp$A_N4gp6AJF0b=Qi#lAl7mq4AY`WR=BQjcE_5WoiT$}DF%HOz z7b^e4{wZD}*(S)m3{v4{+Xl>%`+j`ve*Joy$wt|5!a3t9s%=|M2{rF#W&Z#urI) z#fOif_!noY#L?W+SYF$bw3~vDZCEBAFY!;RNQ$u_D)ea~8Q6>5Tb*E8`%`{8=qPTn zx#@AH1*ao*yelH4OeHv!W{Js_24#V=#e(@Knq-bSw@FtZE?ANawP+7~L1Ll4^%Ba? zV6yPko-xLK<2Jom4aj@I->9Xtwo}FVvzAg=PBve8a=rRBT?psMM#HMe5@iJ4`ghXw zI#B1UXO6CGlTMutF)}Gy-h2Fu!5ZK|yA1Di3NW1uZS-ZoADWDC+g6s!$sq;UShEq1 zwhfJbkPIq~rXyDF_Od4+gA^8dkn**1hl@x5PZdN2u8(GR#tpj(?g@@ISYe%pea=y& zl6UhA10-=_q(KoO`3y!JppB1{PV{(gN@O`-xpiPHff}pHe${I&d4aikVf+k;I5Go0 za%N7`1|c*xzs&}%e7yX4+`Q0oHeZt5_1|)1-DOv!yIzf^<-T0nRDkCwJEp{0k%SO7 z8AsU#hW&gyreObcA71ex!h^e`AwsZcZ|OJr22u*~C-@n$0H#)O!Gf>69#0cj-9Kv@ zB59@tVvE^{p?JvCJMA>UmUvm?$re(W=e=E3MZj6;^RA%Q9WzVI+8g|H@-Vs*vRWAD zj!T$z*{#0O_?sf{HoN0HwiH*SK9G4|oySgJcif?KlvP;SRbQshR0+ zc;jrOHAQ7Ganm>)XYpEL;4aY0oNPvNLUG{f#JhOFkcV(!{!C9|t1Zp-xPe%kjy(8qklvrJ4`^Js{HMEL?KW zyl`J6QR)UW#5(x$*U34?t%@n(!w_cH(b~6(4<0_9B|rx2hUdZqcVI0hbrJv4cMH$% z?)~-TUtl=0TXXPuAu+)xICu8~>-NU+tW1!)i|~2>W={^V2V&s=7blf{x5;bA7&m-x z#a@Zz(r56qD!|>o9#$7RU~QTA-@DV&PHC5<=ZQbkY^<$5#qPtCAvdcI4M@3Ss<9ce z$WO@mjQ_#i4PZK}wrDz+-<@80hwUmEYUs~vZwKFFPr~tD0~IjAc`G z-O2@(X6v1p)Bq(BGZ2==#ZUeYj(b3dZhcpu5&B%(+0-{o!GlJ=5Qapmp)2$nHgRmy z^lyf#^&d}qu7RE2@%$5?e&=0|qw^Wxx!v}kH3grk&sWLFOS%M3Iw;ymWW)lnvi?Bv zr-r4jSl$)bCBP30B2rR@Pgg3UAnkDg?!GiKKPK!q4YAr==d0%jPipQC9y7W7|CFit zSdtlX@PQcszCCykmp}&Fb7Lx}!UA&0kMjiPNbes(5BO`ejhJ$kz!fmLWH!9@Zamlos9L)=RQ^paxq*e3J9U#B%lvE&3k!(18oheX0BoUz{)o1EI+IM|ofmVfQ?204hte??;2m|O?!tzg zH+E_n|Jg*t*$Aw?$Ddu>9A4Yi;3n~|@QZ}Q_G@BiYeiI4wfF_N;YG&JRS8da0@-KQ z@&Ccd1AFaMSU3Osaeq)Eg*}{BjT8E7Z!cObq~WX3L&6&>N__^dH~Z`$BcqEQLE2$IR-1`pWm?Rh=!DR7wDUJ{^txQqcYs zYdO^%)vimos=d|)f7*v&glRp?BTLss4E@w4JK*ajdI3|{F74PS-de`uv+U`WZRif= z+yDfjq(Y;vq`A-=r!}hKc>?_C`YxMNX8woKyT`+< zCz(568&_ZF_=YpZYvPDzGBo3TQyWwF1!fUcLh@x&H*@$X%9KONaZ0vH$TZs^N$T&* zZ`b$-hHIY^d4v){sIxG9qF?TX;-C3o>$`~|?jLqqiOBW8Yq6^k_Jc7+sh7})0ZQtq zpLA58EqpPTC6Ae6Qa2CWT!i!Eug zLRf48Mv*YK5%?k}6*-K$F;q!RPcNp;@v*h9yI1@x%=mkG(EAIW?ec{6em6CzfKzE~ z^Ealq1&`H4-bC}*1!xX;oicZs4%U z1<-;9GL9v`;jhrVPEcyuj)Ji)qLM%O2eYmN)-0XQoC30hLuP1pg%LVg&)0QK#hPRF z9V^txXZf>VLa4TA&OkUNa+EZhVk1glLpfaTo<@_pKaGd^mvaHomGgpIMi)XD@BUafam{xAdL$qD(B^hIm0MfCYCB^^Bb3 zl}B#ZmbQ%^^~5fx5Q4AY|2zPK8M4=s0p}J`%eR2p8?;wgy#l3_rV!b>5L}qk@}ys@ z=<+RDl~#$6nM0>95?%hE;d0K{&xxTs4%6AH7s1zueQVkK#^xKE8;NyTf z4`ox92{!loMb$v46a~vRLSNXGRe1h;ZY<6%9m(VF z6cIDC%CJJv7$)VSOU-m-P#{LDWmEp=7Vq)r%B&;I+cBgg^1OhE3d1@o;6uM(yd=7Fi;{~GH`Sh=sP%StwAh=k|~ri<=JEVnj&<}B`f~g}gHOIX1XsUIb$nyaT32!v8vs@Ly@feLdDHQk zf_cZhg**9O0Ee!WSGlcp0A&&N-o~(bmebqFa&MkTdV%6R;I8hV*3VFMVUeQLv^dGG zd&8qfx}Lj64obZ3<~e;c?&qG*epTrMoUz}+Ym~CmM2)1cV7Lp z{W?SlfeXhyNsCjuwH|0~DA*PfSOy`?)eX*z@Y24mOGbvZ3tWp~0@v_*TT1_P(7H$Y z*nl)M&@f$8Dt+fCK&u$#LR!`K!@&VEKWguJGM6Ri@@WfA;?7gN>YRs6dTfnk-hV{S zB`k^Ix6e8p&?@y9iheihrpqU|QSl*21k=xtl19a>FG!|4t3&h{leBWhZmpFIRk$hD z2-;->o>ETihcfk3eF6%rd`HTrjOzIVtsBbK^E=?LT-g-C^f>hAE>*{qhQ5~80DCBY z)tzp`p|O!d&*%1#7$TNs7MPCuuUVfJRP+n;BTkAYbJCE{M9YxH&bTX~_j`>(g_~?s zpYBUy@YTkHd7aF;L*lwxNG}Bb_mM0(R)3)t&{8f8+^F9_rNyWGWNb4WPBS2~Di3U% z%AWqPpV{fO?(t=ri0o?UfR#cP=hH^~yIUaV`J^hXM7FZ_#T{J3_2tCB;_Kmm*LoGq zJAJ>FBpcr)clG!`+RnX?)}dGCpX0hOtnoTBz_pNaV-%>x^#QwPeSbxj$|IW%Yc)TY z?bGR}hzSs1ba};&)TKv!eCyHg{`wdtmvB;H`MqSo9l0p&Zh{!*yoJ5PO`XpIc&15? zYv2u#pxf3yz$QmF-_xyI0kqp&Tz6+q)s<~2d4WW$npA8UL@`n9gNik~w$u-cWJj8D7|)9G z>XH&RJ<8pr_s*}8*`%Jmeo?1!e5etaMc?|bDuP5jQ-VW#!qTMO)Qa^y^N%0TO1;oN zD9!AokKWkw4dyAav100qgyUSkgkz7HC29MazIP&mwL)fcu=*JNy6C5Y(N%x&6iluT z-4HUusRTx)|7hK>e?|K=Yj#uI(ZwRCK3WVG2hgpwAMb4uLS zBGE-b9gTP?Obs6;2cJcL6!}_#OX!M@G@#+Ukg5Sl{z<^n$lIS=WdI(k_KN0fAryXayb!NU@6CnI^e(5|&;}>+sgl4V zu}?pa-?Wra@pqT+)2(SgP&5KmYJ(N;j@ldB)dNWZtFF+x8@z08D)Dsry0uX;H{-1n zr1WXtbB|DMkbZz&F^KM7mi4IdQle%ad7&T)EkZ#zBEW2Xr1ZSmYU$sV$cB6L?bRGj z)--F{KK;?$HXNu!hkgNSjIH_C2&g3`gtc2rE$`gc zwJ`H=h>7ywwR`Vxt64R3DS@=t`-5;8*IQb3xenpnd6MFaRDBNhdIwOYTEF9a<;piK zervtp9PIw~JlkLQww4s)UP3Ml!^9(8SAZ*s342oQH7S{`U-L7I1!v(XjMRBpedl*8 zQ5A6Iqf3kBo6q&OF6O+o5jj}^A7(<*VHBZK_Q8u(B+3abWh3|HW+;H0k+L+ukp;ls z;OW@B5|5|K(@xOHk+_QI4*<5W>46W=NQnc!l>6mpqP)b`S{Hy|_Z6kD`n5ngCSz6z z2(i(y5RdkSr#kxe8iTJwHsX%F_5R$d0e zD4dLK2N{MDBh?0yk8jMu_^Ozzk#i)LlUn)-pNXhoh(Pz_lJ@uyF&I{OvEY)1i5cyh zd{oWgt)3tam!ihTq(YxkUaFG@eP?EI1_yjs*jDQshlXCB58}qc8FvQwu^*H5E}9IT`Vsz zhY4#P_e9pba2-=E%l&V^H8+yGWy%-eMoUX^ApwV#GEifP<%W(Ee7r06&Kaj7{bIAx zsNMH`nh{g_p93~+{*6SwnB{1DI9rH*R+%YjRy;BE^1u?wWAkHFayRkqU!kcMw-`v! z%sa@%mt)@n9SP5W-&l_pzd**xI8F77}W4OBXqwU#0 z?+Z@QgXB#87H(SQUbyf2)dJIIQWS13JBhCAQt?ha!Pz*ju@9-#v$sQdO(L)SDoa)x z9er%FNzy#gW$QdKBis(`P^ND@Go{0GBUN>kpH$?YeM&A_)9pOv!qr33FL~0PdsrEw z+9Z*}>X2J_E;&!DKZBjxtD<4$*ydeVO6QPxfbaK5nQ4VI{c@eP;7!ZfGNpSIu+9rJ z=vnz5`7-G+U}v5iy-Dhy=jY@b*=$zYluym)RSJbe(Z(#jg5}!K*LQGbSTV3?ghHZJ zj333m`zr(Lbq1o`1Fyb=&_mV)EQw6G8^}`-ZesjqKQODVUPp1^`404Go(-C0~tt0`g-C z=XA9~zAFY~g+WdA;*h$0d3~r^XsUDu(+9d7C)cRZUm4R>>jV^2x~pQEk}D@s4kcV| z?$EDrrA*)2_r?aP%b9t4Pj$U42z%VLbAL-mnAd7as+T5+&sML^Ps4qt&-_eLuBGIRb^PzOICO*7qsE&t6t`6 zD-$YjG_^{10rQ8^>?h!5co{I*%!+VXfUGImomlH%TsM1&tn zLuW(Zeaq*N7f|{2=Xo{ zEV=J8ZN^FE+zV`LHYupR-I~nf8_^Iv%srX$WU3yf=jJ9l&?oi%%Uqx&ZIBw(2F3UJ z0Hl%D1EM8!_+_*m)%e_;S|TByO!LOv@aw##w3oWI8whRcZ%~$!-&Atn;Py~3aZEq0 zea=$xNb`LT)97$GP-v`)+xCi`%67g#uFE!r=?!>~cz3Ud`?TUwuERs$&|_vBVZzVa zmB=av#W#)d=LqZ(G49XDS306WmxKZ{7B@%oKg}2k{B~_J15YtqO8k}V>h_blMW$&* z%(vZM5DW@F<{IydH>O9bIY}sWH_mvMeI$czFY^qJG%@fFM|%3}{^H_X47N09M+`ei zORcsmm0LtnP;WSNG=G&l9PJvugzHi+glOm6W-{!5Vk^DyjeKu61AxTrvJExttohnP zKBW#ED>3#08hL++HRbrA-wLW_;4=mM)`z}4mufL;z5MUTfSb+LtIhqKf=!={M{~pC zn5G+iK#`Jzc#kJ4Qmr_Zs1FM@+v`wmHy?35&d_m9@~jo|;G>w4z>JRXlVVPRo&_W! zjX*#04Kvo$yg;|Q+@jLNmPd9DdQ07|#Nb4=R!Y%{0MV2}0QV;876;3j!&@TUFoLAx zymM6;AfXWf2X)Gh`s@tIyk?4-9{QdipBO~$P zv1w%;{%iy2#4-0y@D9C5;<)4%a3I;B-KmJgvSeC^dK%~n>@cU~WyMl;S|&1}zOgl{ zM%900sPpYNJRtXSRn|!HxezJf?xm{N-VgE(u9UDEtSGHo`#U%#AHXLvddlxE$6j~Y zZW#{u;Iw?AyeD`=hafFZ>Qu^SeP<;kgXt5=Sic#N*dBMKTf>@Nni23D7+e^vskC?lDSXncO2suc#0rFB+HL; zrYkaxZGR`johuO=$(1ANrV1pyjN)&Z)@=rp7V`UB%V0N zV(iaO=dlGu7nEvX&;CtyQ?Qp@%cd(h>`BBDPxSDkT=Zc_v&4O*P{QG!yF=PZ08**j z^NI>gd@L;yG+a7i+xAgqus>`2<0S}v{h7td2uX$TB7+kpFR4FhUEaISA>&!$T3=4w zNK#9iz&lpJvLrOnfNuF$5Q9jQ;5B1su@J_ufkj`JJ|LLv;0ZJqoRQTD1MEQf&g5hF z@~RwVxXhfuf{FVQtk5L9DF+7I(v$bC*KkKT6tQ0yq~*r-Q%Ej z@X;!~X!)NJP!+U!GMO3~bh}k&s%FQxah8p3c(fjgHu2>x27B2<6OWVaGt({>i1hM< zX$Er3S2Q?w4w_N&ypOI5B7=`3b{EK8GN~6gL45w8)Gas8ygLEa zYu_L{k0bpH9z1h>M&bU;y1U`#jwQ%M#AEasEr8qKmpt%&j&k+x5m^KXp%$ViWYc%5 z5;a+_8}$+FF;%6U?y}-*60m}L=T)H#ys|~kzeXmkWRn57J7xNKV6`m&{06pECx**_ zBeb}iyQXC|I>i87S=JSobdTj29%)U%X#}Um-5D+tZ$+yT58FW388mi^x4ke`GrwNDzAWRDQg?7SQhW(1{xMJF_JP^;PtSXz zoW1OTT4ryMXF}H8?%OZN2ru8MQ93ibnX4on%D(!@Kmj3`2*6SuoM*1220K6MobKZZ z3VAmLk_e+jY*dBB`prv|`sqUdm`$)16R(M=Tk&?^NR&vyUaRSTdDTrH!+&P8KGZUK zd;4$lOhP_G0uC@|J3q4V03UXDG(@$j(tI9E@0kL?hrBzyFUae1s{dS^oX~SqcJy2S{a^d`ycth%{g@nU_w7p6^**+Tek;F55VUR1~Tz0R2n3$I`$7^;^ z@8Qt`a99L*1I^Dl$Rs5!JU^VBQXI+YDc|Gad3W1CKHLupH@)>x%!s01oXkrp7a|sU zJdaiYsGuDIk2&nSq za=X!CUT8E#!Ywq}+g+g8{ZvB&hDkEn`alN9eFXV^d}gY1w^LxvwU*a$$BkzZ4Eb-| zce#qB{myRZevl^W?wr%JVM7uee^}V>?RfqPWTxsZQS3Q3fc;)U7Uj6VKS6os!5324 zk3=4?Xg9KLOwzjbA#)U{wNFB1g4Vw7_z;jShb8JH`lmv(7i95K{-xE79@!?7^ngaa zBsQSt~-&aA`L6DWT2=*}d* z3we(_mIshsU7y98y*tE1as7s@1+PHYl6SSwLwM!-NUf=UG+2%LH!$h9B+NmT1Ockm z8jsMStB}0Y1jxv)PzP@HcorL7<`q+U&)a*?&rT*fMgd2PeLt;S?xOs1w%%}7v;rG7 z8mYZ`R+GxCCaK0G3!;Na7bR`z4=MY7xa&)Um59IqTeDyEO?-Ri2%?>j)buE+H`%@s zSf928A8D3xJkxW?<-kXh_$6pR|I+pI^X>Cz6StP?k1p#&_ueL_Fp6VTg09G16%%?? zy=X8^%)ac-jd(a@jGa0EkPl?*w&6NN@49k}g1dI}F!a~ipJnnH#&nR7u|M;uK3yMX zTc9TE0o9VE&1tMH*V&$WO1M`tv(Gp0JA~d>042VbVl1ZlXA&k^IAK1+BX_psFHba$LxIl-KA`NjKdtukd;f5*;1K9Lcowm3UBKdt67^* zw+7p8`RrUu{qXpL_YnPdKL~a0Cr~u{bR|cwr~dx2$KQgfpS~Ay4~~xSsjTHnS@G%Z z{yjskpALdDv_JlsPk7=|_2Fv25aAC&=ozjby8%`}sXu}-&&EEH9H)LJ{4}<`9_=sw zbb2QzcTRPU9lY<6EYA1&i4V}eZU=%>)BmaY1raIQsZ|-^9(W4j`)ei6+gnY|fM%Kg z-Boaj$UZNrW^5;CPtQ^`=4V2VkLy=@rGN&gHVJ#;AtKSfVjq*!NDppI({1Uzu@y9; zMB+yR;v-P)gqj%#;NirH=nSX2k*{3-u=ej|W+pST1Q%dlsVau(6d{LY31L&{r>_Jf z{7tyX+Z8H86*pExyF88`v*pfMlj<)yA`9{zR|Xu~g(dvB8tV?tpuD#x+Tw*v=tf=wiP`%;oevY7>-@@99oXdMPz#&ExC>M*Bhmpx3tvCWyRli9Fe}^d?%Fvz!hKo zM`C+C^G}@jsLZip=t#5=CZ3}A?7~o~?)`Ql*>IZziSq3r^@Fd3`uB%5zDryz-{l{U z2l?kARit*=#h@o@Ye=5<*(H=K0M>d^5vzS?AQ|ui9#&Zo1fHhnK~njr;b z3iW35lpwiZEGujA&cpQWoqq7YN2~V! zo_}z{lzv0-3DVQS3HcTI??*j#zwl%VscAZsqe}LgON%se8Llglg(;UKp&k-y{SOv( zUcoY>_R3Y%E0Gupllwn2r%nAlB4mCMOBvn_$M_oE8h2q*ntwTrQ+Y(WMfoRc3b0w7 zT|x%61yhl0ksk#IqaNyKe_ys;S=Tt^mMr+-7973>PN)K=qPz$BmOvEg-u zfSci?bbtehby7=p0S>;W4Rj)9*LQx4R}T*Am&RFOb${`ICEHL`V2MWEhG!B=`Jvxl zbDjaVCJI@+^o^_Jh);j?k@7nF&~n>_zj_3~IwMZ5Ao%65?oU<9!{lOgr6K)ep8dND zNrKfHwzC?fsfPBdmu)VM(Sva%d$=e3azwOre;q{b#76aPKqexB8j zUYlX6ml?aa^xkb zg-*}6+S}jADG21br5VqA|6v4^xLtFo3Yn&gJ6P1)-$siI3n(-1JtbIERPw??s#osKwl-GS;kID)e}pB%K8T{{tfkfiuv4QP~7|I;|Q@A4}xE5s_Iq6Lb z{8+rdgLa(9qH^UEYu82&`BW*7j%v0KNDTRL$e06I9vKH}{WVc5ju$7pZ{>H!?pJPL zyxiw;EQeC={sYWeD{Qmb$)ak1+`0v{XA5jFqiF${y{WeQlTno58sJEAEH|k|0d}eZ zP4h!Ru%oGLe}} zSvy71Zdx>llZd_5@x-5goN%LamVHnmXqW~UD=&NWtmZ}tnuBnDA`CW~AqG)%4`ks; zR1y5&%EbVf=ZOz*G5|irsNiVPPb`r9EF+P~8B4{743-j&!6xHxgVuP)Qa4swM^FNy zWnJ3jcxF>mQ}0srgO!$yi(|X|=jRpDO?2iPk)nlPWP? zK*-6oRP>(Mn1bB%WqSOz(8A6nLBa6jcrx4gI6OB!)Auy|?t2&$O;QZ@(Y#|uU&5zk zNe}t&>cdnKz;7Khm*u zmY=JRaaZ8xoOuj~vl5nx0n?$XB81Nb2KZ@3JDiK=E|rG<^$CqveN@iXq+6rg1{oc3 z#ozhr^wIB$CnXHjCcgVIp{(i0<`0ntzl9>CymOqyV}$|SVdxZXh`sv_r`8dr8Q%3oZaYbjw;g^rq_(W*09*3%YC6} zUwv}q(@}(Oh~OIRh~9RLobJ!afhqxI4_>1MkX7)-IO*#S7u zC2tMc34eVxd;H(C$g;i8;~PIBxdHJ0GscNEVY=bLBN7RSCsCfQ|8N}1N}$1U?OVo# zr04xyJFs6-Vc6WV)t&K8T%%@q#0b`{C zox0~iF1JV#rGJE4N0binVdk+y5aOs_UY7!`(vB95oRJUk<^AyNVSSmR6^qu@*m5qT zmp+q{U}v2Kg}3wPOQYc*?wN|EnOMNP6T=d^RAMcCi&-gO8Ri20jw=t1SwF)~-`}=X zxX+}S+uJbmjnMUz6z&x_}Mps|Fd zKDA2Pt*+Wym{{E zvED7@pr)E2bZv$sc!UNw5?e-%a}NE?LjrB#FjD7lRfsy%xGNJ2Ml2~d5^Ch9V!m-k ziT%wfGpWmQ6w=xY`R{+`iCjD7PIAvnMy2gUn|YF`$4l+|;fFBB>0ckShkUL_B9#t< zdHB@X>Q8cwhVW*T*mDvrk#p?9fO<#4E1rKx-h@qc{B4=h(C*_Z;ut{w?;*RH0~qD|nA-IaR9%anPuy#` zsi+7Op=s?b(G2<9wz2(?3B35pcjX|Uj}r*n<8oyb%BxmZ{^*-kBI+D6_sD@T`Q;7y zHgViq1uSpi&oETH0$V&JP10^0)M}J%S6#_?(QjTb^avB;D}BJD;4#-P)r7 z5(hveU}&*Z8u>vXeHU;yIc$|4N9(@Ql{18F$Y1!K&XPRlrQ*W9Om(yS&l)q~J9>?j z@>Fp^39(1!C2v6Yy12B0VDcSb9QZ3(dmh@7#XTnFWCuDZcQl?P{c(2x_>Uc&wAftu z$UwyDDA9&QH!1sqig(JW(OB?;YSXoQV8oFX_6~oYF|uD9B-HWTMu#nbG0c?P4VN{%iMj#cMu}-~d5(JQ9yhXQ?Vlhf?IvvK# zp!c3`)HsJQ>u@dzW+!d7B&XYq$t}SJCoG3vE zu56^A)SmMo+#lgPy?^e8FFk<#Q}#?pUayI4NG-L=!%wa*^_8{?L!nu(6BP#8J4@WX zDlLyHH()-gXYGbYBBM4V#s+7Po_#nA@_{lj^S)P{OsH>sM>AFuy!DPM>ID6Y2aYJ= z@TRtL63lfycHH&(Pa#JN*2S>-f=_2)EcPDhl6vE*P~a1%z<}(qIY16T%OE(UyR{+- zXxgQFBlzOv*QWv9p*o38A|fmu^-A|G zaQt-D+MG#gR3b*Nu(k1jC>ha2TLi;2Dc_tQ*%B!Tlxp$-+y*Xa80Slq^%vTD-EH0g zwf-@Q48!^lp4C?Gts2qR4vFB9*3Za-5!Z~HQ5IBwJjh1`rBsY=ugJ=9fzxk>B$Rsts)is|0mCm-aft&RXDOHWlvz1c}%`qe#Qyf zp$rc=cS(|jM0UzF4gT=y`atKmL|>H3Ql(Or>LU(22az#F4id`<)TVNvExYWyU*0YI z0OQFrCsgU`pT+e+%>L4{zyEogTgY3T+^?DGB?UD{8Y#@o{{4LakQp0i z^0AQIYmqa?NmAbnmK2RxH2syoZ0F}bi_&7%}Vz#CD+^7)8q?fW~VO^7x;i z-s3?pbYCh&v!exhA}y`VvOoAz_||KYQ1m5c-M;F;9KNBNrKjuxu_GY;4+UhwBgSBZ zDU|CMTcf}#d79qyFIB7}I~phM+zN1~9kEv`;^q5L52W?~F7?dn5{6mxC~Q-K)x0t9 zWvt#Q6z=oFOEBHlo)U>l0{x;x(w?AX$>-idbx+3zk1`_;A7DpCAps`R(;Yz6$^u?))x{ zm9O(@u(eDefM`Z4U&AY(VA%M~;|w)mP<>(Jwy!$W0fq*o#VE6F)t?lv?JMxNw&J9V zLO7FhBHwacA&#kaJmG@_j^0j~>M-5rjOObj_}a`(bVXcS&W=*nC&X-N%+l+;ghq}> zW*BzA9u7jpd5b_XpK`i$8-N*$Q6al#24_?^Wo9jn6I$su~8KzjgtK6I6Wj zW`3#CZ65S_4cA>LJV&+t)G^dwVYgF+%J>y!+9{0E?lKEYTm#mb@iup-7;^2E?7=qS_~VIw&HD4@Yjd>K@Gun zvseGZ`%t+Vi`TO8=RTrlV<$PDfR->kQ+LBpYs<%xa``O&<%*hYs#_OREg@h1+l;5X zZm*88wc?G>t1FrrdgSwAd10H6V5{_B%^A_7N=J8v>S1HwH+*EkPX9A4J6 zD!;VA2sBIr2!E;annnx5)%&Ej_FyhK7K?OacVKKcNtR7c8gFP(|L3FH^I&!>eTDsx zt!>$b@u30oPDUEHugUS$1F5#b+QML}Zx9WR_AS@C0P%zoo9Afs-7t*&ddqT5u1A3bE0rKCj;Ln14KLEIz`+wnU zw^!+R@ejvH*z6ZLf4N&=hG$5SpQYAfg^H)@1H~UEq$w58k$roVuLZ9IcO`PDDVwKi z)Sv6+mY%qPRgnv^N2EoJgw*7pW@AnE#Pm5NAqkd1d`)6I?nWX%*Wp#HgT-+vYOdGe zd@z^7t;)268Y=s|A@5joIgT=5x@qls&%<;zqOrNUiJF0>2jaMyE0GkgXU-H2f!`5o zwLr~|F^qCgF$|r$n9Rj7dXvO|ih%0xUW*@nk>0qC3b9ERM+Oz)vQBPd2&u7NPky8i z{;WvqD(NYGQ$YAW5j55MY8oJSwyW^GYoBkQct1(Wf2%L+tk^k&xOh^<%!yE{7_<>}hyJ#Z5vP+bt>H zM?}ft9uBd+^mmR6_+R`bu~C?4t$GoWuQx06ehKW9dHk}5ON;tHC;u9# zYhaf5oZ_p2`~HjL#u_AP#418NMee@egNNsmc|%(hIGvub2MSSHmsNY3*jx*2Nsk(k z4Iw}JragRL_Fb~C&cWgZ&yd3*kw0&JWI7>VNf$W zu=bGWEh7V^qMg*X0jqw?b*a%`@VaKse^?rk?O(A$n&kMPtW)ugkJ+yz%#&p5k0;OR zZ@%b=a)0e5Aj@~Rej?I!`BTp0j`YAMj$z%Y!%Dq+?`RhtJYukhCH^&^P9$iS#ZfrD zuPV265AEy+y!nY@z5!ND)`>BCzV3ezSZDii{R+~=?A3ST#AQwJycwP;lMK1AO!@Xt zz=}P^A3v>l-M7xf2-KqApxyZ$V6vzg0(q6bRlz_YkjDF&x)|WEk_|H7Tw?f%0jbj9 z0YIy(%U@^3*43*Mw|X7Ma_Ai7^DoLIDAFPvnkB zayUgNyZ`Zj6%G>2SNZR~DlwN6hP2lAR94-%p<2RtM~=q49q2)cFk|`l<)B<8Y302z z-Cu}9v(-=gQ1vvX4d%J1JbhQs0dR|Wrr+BD{o4LU;=z183D+VX@AN3CP3x%cPL;A? z)x96|@XX(qE%3-g%hEWYDh*DLIX`1s>sGZeg&PIB#-Ejv&i}yp0C6l#mZ=i)EYGJ%jH^ru61wXKg>Th+bo`)MKtTsBG8 z1|g}9yiO8=@TR8{K<-9QD!y+4%7^rpE|CKE;WbaAX_jx34aAKAyrUkFg`^JieHGvW zl^`}^5M1>dZs`3#;K_HJ@+$yR9Hw?6zCN5FD^}etmgqJtL}yJFGD>J^&Nn!6dM}C z`^}#Xb4#8p!kA7nF!7s0sWf^Dm4($F&$2>4RL4}V`_z^{C}Cv%O8+coEBNLYWFdBd z-{PY`-1H{LCq$GXFb74sDl8dTO!TV|m@I-(EcUeC5PVucR!+e@@`gO7aTnl<=16;z z1XW@&a(3imvwvVU0V!Bp<*WC}a?orc^SILyW;gKku8??HCWpLT*uZpfP{E_~?ig}L zO9!Sh_Tf5|cQ8qV7(M&TteY$UgJNHDo*7@c$kzgf-QwD?q&Xd}RBpDU6eLiA3O>y` z?hTr-)8~@_4DS>(4{s?twb^tYMfq3-i7LFOMU(q>49c=QO|y4&m-UVes6_AHv9t6I zf5pTPSU})5gyok5_LX^ed1|l73wPwSOePCx9ipw1JBigFLb2%$guH3u&h94FDoX^Z zr+{iVni{l=@b>e#0@7f@b|sQhs64Xooh->(@SMkFum3o|dP-C~Fa&Q7F72;2oqUSH zu6QC$@$HRI!;kU8Ev+Z26(p|KNqcqw`u@rB$&ua3N=Ms^|H-!J&qu${pJd3*UJCj; zjNPLe)ME3zV=l9PDrHPvcd zDni}Xf=_2OT(v@rLW9=co%U_`6Ar|7u&kKm4)>hU0G#P*&kN3V5uNfBPws}d9sWn} zP6uj4?8Ek7gEwWj%8yX1jV6T35m)SJL)?00da<&RXqxg{%8&nYM7}l|`#VwZo3g~Y z1Xh~g39O*CRY?gbDXA*X&<@UX{UhDt$}m19DZ9`TtT<$7uHAggw613reO}sN9KF~S zP&D5VUWD)jHE1q&hJOsT?tS1~6uJz5L$K-pt=;5qB4z}~?<0=xo{oOh8B}HC=3mnO zmlKziv2X5`7K;6Dhn?$XO5f2}Fje!~mh!<3>I`D!+%wfJ>a-RS;Ux%2uN(xUfi89@ zOzA0OE3yLz%$o4YP3{ZAo=c5d;tL&G;+PJL#TL5~gfET}g6lSB490a+38)zN2IA+1 zGk-P;xR-3_+?akZu9Zu3V3?VK>3Fr+7?zE2z`SLUP_-{X?8HW5hXj~XPPlvv%>##D zP$zxSO;R$wWsv>j+Ox)@E9i~WBTFesy~U8fFIxi6U$)qyq|HGh>kZCLy_C42n!3zE z7vD_O*5TWMExNY@S%>`nIPp}iXdKEh&E%o`CnbSRy~Dvby8e0toawj`t9v+cbABhA z1(}Tkp7Myf3kRQVgo6)lPwI;?;ls?K!2xBLMW0#edhpp?Oi_!H-nXH!v+Ggu{fq0S z%zcL1LRaGqk|yKJ6sa2YuQiutc2fReGUYau%FW+~aTYDYQ9M&b$pG?@;5vX9O4YChWB*UPG>G zANox76#1-^_9*se=Ce|gMvYo#H6tU&i{t7Bat6K9_}|a&;6&2gxGS;X@~4fE=W37(r;jsS_h#~FZi=5=cYnESjMS*qulAQ>`V0=u*Lc~i zCsXMQeLK@yahx#L;nUh!=D{$2(H_f3oGimM>q^QBU5N|xr%xs3$`GUm^g+o?vz2)s z=GSq&-16{VJ2cJ`pihO-Zt`4o_Z|J+Q4|BS_E_}RJTv5{^oyq49Fb0DcGAs@K7KvZ zFFUUs&qOX2p``gCM80w9^PW-7(!Dv14aRTr&r7_GjtaxpQ*3uDcbqUdIJsAGFFZt} zr%{T;lTsn`gIOI`a>8F-LfdDJjYy?eHFGa8)k(Gf3=aE}cNt;!vstk1o3euvAe0gi zs$?Ci1P?V8c{BzwYw~OITbo6HaxK;U?B8yqz8f3|;J!|$T;tNkdj}6kCg(-_^)#b0 z#gZgSs~!90TgMN*vq zyLr?~^mt5RMw1`NB}7OuD(MZ3O}(0{|Mc%*^xOXTY0Nuz!(sOWxQ!A?;WBx+2E%Yo zVxyjd<-)bw`A54|@4rDu{G)5M65Kt#t#HdjeOP&7UnBteBSP+im4j~MR&7W^SX_#w zuV%|A*^m5od-TB?u$*C-q5hP)QN8qTnpww3e34UAPVIAdVU#NXOUlbzUY!$6TlT;G zRJq9iLwMd1s1NVFZgreJH>w&KS+Y{S+{+yNU(UYW$Y?#k3h{`jc2)+ZPwiYf-v4xc z5q+^e)M_qiuswYpq-$(PI61$V98fA6xr+DZ2QTcZf19_ItihWO&sr+1@(5ltBpF(^g6l9FWs$-CgU=E zIB_d}Gaz>ra5prF72vDdb)yS1ef9=@yM>|k82-lx7yXCOp;v~DG@BZTfhW0Jh~>?- z=ywGD(;yV}8i9tV2NndYzSObNKc%AoKJ~2W=uPnugf0VB!I?3{UB))J2f$(8il$(I zm_Si0I5=FHVn9xetn`(QVp>B`G7^X_wh#R@4+NJ`?*vx%1mr6NarenirFT(2&KyKR zYRRyeA^3$p;EWrc1NDEFAI3dL-pUFMXY0DCWI$mrqx|as#3U2*{bN1NL^ACn)Itf} z1U>LSRW{x->#IGwq>K=8g_l>`9|YEA#+3Cd=e?Wf!-r~orau7|3jzl6sun~&O(Uui zq-h72Q61E6cm$2&;UO{{|)pg zl0`=`Iuq2f^msG z&Y#j@sk>H$>D~@;9KIzR&D4bMv_Rc9-2mspzL{jPIG{9c@M2N%-#*q$KGOG%g@AQP zBa8~HPB(qazn`p24SsQBGEllFm3k9!oLU`vXH}4IUO~kuSeYKpY16zDRYyy4{4!eg zn+X$zoj;65tr|`Bc}(~?Tb%~` za}{f8Bs*N@+-B#QfCEi75S?qTSsG)jahY;0fMWgV?w2oq5B-KryNHxMCurMQS%jh7 znE72ZM-2gbHq;c0GtqWduGP44%;bUchG^=DuhCPA^$Iy zdMjWum)WSvpSYmhTfm)qD?0<__Gs#($*K;aKQT^64xV?zsjy=bR){ya$Y<)vd%1Kk0VP!I7h4!oE<5*^=Hm`Q)uzpY#A5Z5+b>?jZQGrsG z(l116&GN|7{CanFlw-ajF68}a%biM!dNyJf-_vBg+jd5Gq8f+W{x4N}u;*S+J4WnP zcH3XxKgCO*s?u74hwU$?@PETzmhSX7(vOm6E0I1-ztzOkys70O-=6X-2Jo@-$^Zac3*ksfuP6+cM0Vn6nzd-Q>SrtFc-W%SjEIrxYsZGm{PR74L z@DG$zQkdj$M&OS3QpF{6pj6oNd7e2&EV2L33YTrHY@%Y*<*L+NUUb4eTx1Gg?yU)i z;RBrJ%Gk4yYmx?SAEjW2z<1IL@(1~zF0bjauYXjED&uZpi|e+r$bGjIssIL|G<8z3 z@o~q=H*@F3OzNW$JWMcTvFWaSLh+yabztH&o+QRsYnZ{+Q|r6`YptS@BkAL zZZy`He9+TdP{`k0tt8g*l&b+crZ0KCop02xYPktV__0Bz>(w!AIYXVpixw?Lp0D@V z$etT;X6zXXuYl#7l z3Tw9PBsMT^;uV<|eZl|E(f5zwOE;G9|W*wY`kJi z9qa6;N~)V|JOWFIe?l!g>sr{K0*sj$eU;}P%E!!*^G0_}*T1_Z_D1kFcjU5o)9Qv9D>fF$cO_|~bZPa&Jf2vrl?^a~yb#+Qtl+z}ix5j86w$$S&$TiE2HbcIt~ zVFGefN?%>0KHf6uzg8V83-!BPlW?vv(x>D$gjIrWaP{U_#Y}m}3I)zGY})7-WWrRr^1Q2I6Eejzgl* zo#)UU`l!eeE$IpuX6wb6Gvz`G8(r_8vfZ0iQ~to8$~IPA_d!AE$VJPX2NvW<{g#R$ zD=!tpH$qL8=p^%$tQvp6QVUaqav3hFKZrR>8t9H4bKylR{Tu(#_$0qrG}0YZ8}0>! zb7?kncy%~zXwK3qEK!m^lGDsy9XVcVt&al0X89dcYLi;Z6nro3>g-wLsq-Ai(t+Fn z9j-FSnA5Wu%`!k#eTHk`yht-M&eZi7genyIbroP&zQ_L#akzv@~jj zi$0T=&T+Q`Sevl7=hjmUdG`9z(No_U2ck31Aa$1Iw3~($(*VpE zU_oWmVkTzx)tvnece&4vYk}w;h)2)}e1Z0uVH`6rrj-*WO)tsop@nESQ{B{a*r~KE z-+!#A&lSTwt(ZA!}IoGmw^*4A;5c8M5r$ssev^hXhTJ(xnp3K+Zg$v%qA;F2V z4@~YqlX={Qcj3?T+I4xMB5Wm5!b0Fl$;q2O~`5=>}m8|cKl$$#b2%G&C^Ffts z^~{c`T~+pCWyL$h%YSC3seVs6ywc8deszz;jrTdo_;4|ijUu3_GIrcH|5sr@4)+c4JKdR10OBrx zlN_jEjq4wt=4siT5~`OKY^Yr2jiIpV22}6TKLN;D{x!X^~iH)ENCU0mj!?}eF?Y$@04)7L~6$R>(yFic)QHAF&W=+g7+{SZrpHcyLloJ#O- zImqs+7~$W&Y|>0;YEZ(eTJNg9Ot<5Tu(n>>?NZx3FMt!Zyu(&*`9Q*=O+TYCao~64 zp*?92?}Mc6`uDBKXXhK1c{y!y^|A)LjHCqMV5; zNwlJY-%gG`(?4dfB!6Vy;GoKPo20;4YU0A z#3iOw0fw))zxQHu;}X+6&3$0z42I$R-h!k*U)?d75w22nE<<49k=XGBz`maHdJf<( zs&OwZ5S;1$SSjP7yK)qrvf#;SV{-{6#=Xn@kA?RQ~}bgAkAV{6u-5? zN4hcCb{)6OY^J3Lfn05m)q;BDPWuLx*I5Pkl9O!J@k+L3^PvOUE!Y7)LjJ3OA*V4l z&5qD37D57!_nwvdwd864A^ear#WOdsI`k5@M|iWziuCMNnSg;h;F21v^0J}1tzMtL<G^{;ZE) zU#%gL0S-55g2Z<9@c}xIZ=)MghK_5@`Jrk(r?oWR9}lzQ zZlK>lecz$n#08jEHcaU3HLl(2fxFqJC&qH@q3{Gne0pQX_T3z!Sv{`FwD{$~HXdUbKz)++83ml9*;iuWu2j`jMmGCS{gd16gv@#K0Cu?? zpFNT1XEZiaIFZejujkj|{`~oPrZFIVB(a#m@>j%Xz5kHX7xDj_`TKou*XBn5zLN10 z-+uQwNbRqwOGdP90e!>qYR6uRNsg-Y_-~QR5w1kA0@ZLqX#Pyal8QW-s+3KvylM>S zSI^L$o$J?bfY#1%+7>)|^QTz}8Y0~G`_ypvswZ8C+M6|9%pq%PZNitjdA;Np; zJj%C2-*l~LUrWK@mTlO_tthT)tza?D%*>ix^m;#^L={14Z&8vbiR2gR&qmvf@_XDl zjhsp!K~kn-t9|8uv-4;hH)i!PbiJ9ei43g7?F6en&3{jlNGds>_r}>skD`G&`8bT$ zhx1;V;ORIQ(?v78^G2wy$>&MNEht7K14qbWuyEWI~ z(R^3^;_x=)Xboe(uUhp*N3HRxdV#iTwQDrww=W>rD)@+1*?!C-j#*u@Yw3JpdZ6l> zz&;zMl{6o*;|AHy^GI(`+NZfodc9X(@LV4_t#|Aw``D-$oa}$&`2Uyt<=#S>ucpeW zdIX8AZGNXS*r;MRyw?x1`8XS!64x|TAVCJVLOdm!*FMI7Q-0uS2KJmUWbTU}C3;U2L#vnD=L{ zha`kL?>sn-6BAjl)2aHBS@}&+l|hv>Zp}>T=Z8GpZuS?mCJAszqZV?n4i<2j0N|3c z>y#m0OCHd;M7IF-k^gCUi~m=1(MN~LdQhWUuK5CQDazZmT)njyXfoWGo< z;FA|iHG`WOiDjDcMK}F7Y60~TUuvav0PH>&C|}}1Y=yq?7VL)Ejq(Ri?1Rk^wpW^a z0axj|`Y95*A!}OreP?2)L0H^$J z8mftle}A#|RV5&*lhg3Z1AN*BM>XMJOLlU(>}v*5v~MT}45ceGrIayuQbNN=_+thi z#_&9t=JAO&r(^EKqjP*ztuLZ`0|rKP@M&gAvo!2W!n_LMC87Tw1tXeJNP}5%UR8)l z{Zloc9_`ajZ-CEcB+@PAgu6`-ujEm(s}vlA*g@|RHpH^m-LvI~lp8CljyyAVfcx^? z4NpBDw^&dwwcDj4&fp`2p@!`B51!ttjk9hl?LyhqPw~G zvK>W}*R+ku#*N6(z}W(Tf7hunU~A1$Ed5QpuY=8)$`8N|I!Wp^{GPjHb+*Ioq=usF z;yXnUG`y7-%9ul&L&|Zoov?05q_5@MF{_8-ZA~5mz@E3$`lX>QV6fmMdPYJ>(lbj+ zRB#w3h@>A&v5Vdyn*t(bw6SPlfD~`K|3aOEH|}}XgxcLYOtd|DH3`(CG_M4B!kf$i zo!m;e9A8q<`vwGzJO%`}ux*3Nv)L@%26S%I0V;Qj2`GonkDG52dtx<9k%5JSzh^kP) zXJl-R$F6yl5`l))Pos3_(%r0P9=+S4I2R8Za}Vc>hJhLOlCU?v>X1+G4% zB+4icmdyX%N5zm*Fy?+?X0!YBOykE1ga|qJSRH+Yj($lfTF&7srq0MmYvg z+9{{3O(;&Z%_i$j{ov0^K=@|o6zIF*d4vslmw-n z>M+*T@`(7aYAIekgmG`Zc#7R9uiV3%Q=EZe#R7fDsX)INLSay9O?4b$ih;$)OJt6AkeQ!A_`NYB=aOJtTudM{N`<|yV`Sp0NmPke~W)1iq7y)uzb zWLql~haJNt*mv)Nh-^ELQ~}I$g^Vlf-e&plIi}YpE&%J6;xPKiRkuw4LrdgmQf!jK zPfuQP#w?5|H{KUhfMn=8{Tqv{d{qvLKvV**i&{UMhnR9(BTNKsLM{#k1r~*puJ+y# z`o{J%VmiD!RDzHf=E=EFU@n*47{@^pG+jhKLglyJH9F?)j@s@Oy5H&2*Cn;n35R66 zAEFkKc(MI?&YXRWmDHRq@h6E{rB@Wt3vMap!Q1rv3aM0SW1D&2JoU<)h)jFYy+17c-*a|@i-`poU_ zps2r&(5(c(pX})>%`@rK&5a@-3=7J^V&BijeKYkIyNuv)uHbZ4zEjBid6EmG`fZW| zJam=}s;IgV|B7-`o~)RmUr%1tf}W$kEZM-NCCY;=h_h6pyOFH^&;jsBvJ*m)=%U!i zJTBYS@)^Yw6Hp;t6L&2}0-a(UK9UTRXFh+IB8Xvm$3ppq_hPC&K8Qc@(5tHW)j74}aI6^S}z3W32F@tZE z1Ie0!iY{BbCPwgkH65W;nKQ=5*#kpb)ibdduP9h>S{R$&DautE(h5sR`^VG zW7dfRjleFZ^tLf4`7>5*l_j}_&-c)^p0#z6G3A$dwG+wH9>oFmeaX{1{`h=COC4$J ztxr{*SFeXx38w1`FEFpMD?s>9+=pO)iVL0zAwOWUWboXUN5HV~X)@v8BDB3_)c?Lelbq6(WRwTlkHOk#t#uW2 znyo*=p0S|W0RQ{2@N{}*anXU*ZF#o)lq~dQ3R8I80ZMJ2*)>*u5&lmb8HT^SavDuf z1r7<0zyt(Gxzg97oj@}>*ctwQ9jr6>JVj;$Fozp#?O-ukR1|e>)v>q0Jm1Uctap7x z3D^w#vo%g;*IAKoWGX_+O-fitT6nokbW!G0wZDg|@l61TB_k&B?qj`jY^8#i#+pj- zkg)4g+23GfhtJHi7sk&-HSEz8Q~VHR*SW?_QUdL^FUvPMn|61=Avg4ZTOiI}85*j* zEo*Q_n#PBGs((%0QC|n(Z*XvNhE?|aYH20OuIAn^X9aIvz!zS*bhQ*Valseom4x*4 zK;wNh2j8fQYFw0-5mwI>Ms0tv1!P66W+Xp#mPJ3zPH5!ZRRD0>^R?7;XfU z;Bbp?eeXq&C9(an>{H%X+owK1%!X{pq{*5=!Sb5HXvL@5vuB~*-Tv-~HtwX^MVFAt z40le-rW@`5h&|Br%&36Rc_MXd(#nldYdwn5?Thpw?R3yZCg(iHEF*3><6k+JsaXcK zpxGAz_s1Q{{yOn<0h^IF1;Y;jtBOCkS7C2**XG*17aCTK_fUGUn9o*0wQGq<@6S!T zR3|=4PyNd21(vIpPtyUz7%K}*o*02~bgW#uHHi}Lw~HF)9~^2<6N~?A`_9@&gKPEx z;3#@pi)~tFZo1OLv+2>m3BVLJn)ObQYe#QT;*IY#?d0ZBw7+O^#+eSXOGE61tUer6 zAVs(g@5#IQJ=HV^^J%P7qu7FFtj-Rk)O(7JNOhd;Wi`2K8abIiRKKp~YC?OgO^caC zubJ3zYxad`VTzPNomuVrV@M56ZzGq544LAk4-8Qd3QfX_~QL#?!U1rRQtY5imK;Vaf8mF z)Op{{ce7K!#p}M!VP_z8*kjDpfU6wWT?z9#9+v{2RrDRercw)oVF+CpY!OS^G{4;^ zh`AaKh;M2`H$#{^s36l7rVsWl+Fn+gF$h^TJ;JL5Wg!CAY+Zz_={z%sh3E&;v!{Vy za4u{CAg`X5ZemEya|;8pkAVFnSoR5*Er%GDm=)~ScD`|5^o-L@8@0`T2VLME^D21& zD==4@uk%yS!9u-{Vg`S7Sq5m>8^J?1B-}$1TlrzWrTZwWVxfc+-(AHXGx@4?)^n(QnkJ322 zDd(PgIMRfW8pyXlez>mVscv<(a$JIvxAMC|JY@c3WaSkbdT^n&E-|KNj8_SWGY_1( z51A-VAPg~>trr3QW>(JrgkO#S$tLaC|BI5KEVm-Fi26t2DmVC;vvDYej%JgR(ou$Q zJt8D5hD+AB5dlDl4x?>NCRKHA5fe3i?KQ?ioj(oloAA{En`D4LBB6-i8!ojR$t{f$ zmBV{5I-!`ApYJ|~b>mUo+Zsy>b~m6Mw+%b~^U?=fefsAkG`yVn_mSq=MUf9z1{0@+ zXc@3!0dQ3OQXLTXfSAe*7Lp0EIge*ibhodBNlWYKXHgjH1d)L+gTUtp#%eB8r7-d* z>NF@p#*y@be1-*pFMx1%#litpF(}gq!I`$*@DsqA1?a;61q~na;0}OmDH8|U`}n;F7FFu)6jhNux}ckFFQsT$-$g_Z{9L#E(0!TgrjcSG^J{fRM9R40HgwX zbt?9+31#RBr+8jr`<2?I+B~FXt2o96hB)2|j-yr*(49HV(PARlAPC&;+i{GW&1>Sar!n*{)BIE$ zKi%bE&V4n2wU;-z{^+ge{&CwXzF6S(!*UF1PxBsN=%RhiG{PO)w$!7Ok(KKDG>`ki zPbGH&BD&Gu1oRdHI@(LeW}}VbIj7JbA++J2u{}+j*zI@QCikD`*2K1rm)(x#ONFHD zMSvZ%_aZ35mM=>izuDPD0JH|v2ytx~gj2STfi=>Z2Qam?u+2nS-9F-JxVC+W z1+Gdi;~e=qaa~!lUhbcTvGM@jw+rnjq&sBu^J~ej?y79rq;MU@9(3HNyfF;Y4TAN7 z0ePGi#-Pp$xH8MS9PF(g#_dgOHa{rg1zVR+0ogi=B?|r{;B3*m{5y%zFgV3<{rW_YLM2|ZE znC(G?6U>vM`@@GX|4<#q3F-#oc}jwL>?O}ac~)L-tfIOBaC+$ge+pygc!xGf`&W-PH;658gUU z9{t32#1CwOxd(3>(QQ8Y-}eL)fAaTS`|W+|*Rtocr{_cXKJ>)odHsX>J+>YfX>$g2PO?TYSI;q^ z6wu1;jnIwrQ!nd*>?IFk@J|?sgPA-t-lyhzXZZI0Oi*!q%Sco z4MO~e5WfNCZdkSq0KZIb1dvk%^c$mP93OO35J7#{s+9)os}Ul;i|qg?-?fI2&hG9u z{+yp&yJf>_dHE86A7JO>=N>PgJ>zis(s=;!^AD4|0q37P{}}o53yxEL{)H#V)jPM! zu9J?C+fF<}-o9y@yk*0|a{bQZWY>-(28AwPNRS@P4jKnQ;Z z5dZ1h&Xk|N9pT&0l%E9s6mZV8pIv&E{QR=Bpl{OpS7$9>)K_GJjrY%& zwFC2IJ)v^OLO|tmSvRl*&^}j&I%mp^wqY4)9gXY(!XmxrMTp-Zo&$J28-Pyl`RM@k zGa!DdjXG`q3ONNK$D-4Vek`_o_`EO%y>YsJhO1iaRioSBtf02R)`1Z@efB&6Iv{-( z!+8qhC(WEECnF@hpN2GrcjO<7`quQ$lHuk7>2IDcQvu}t&46=&D>lYVYuCE)M9^rN4DRP90q$XAWUIvli%h^R7~dw3ge@9+QOVJ)^*tcIPE=mK#$;Dq1*+S;x-h{xefuHc9+?%b}eRYT8jI@b8lUx(_VAJ zt9h6is@$jnZQE&z5PV2+<|8w98h1L$T!v!OXin+HIj$1tI}0CkG_qX5HE z)G-TcgY6u%3ES5^=;fLYDdYMnq5Tb--Gg2QpksTuX6NEKX9qwpYI`(FYZdK|Z4@}Z zynyQxU|uZZTq>Lg6&=uHIIj^f~;bTCT-&<&Cydcz&i38V=? zjR4onCgZ3t&SyyYCLiIRjQ|?;AkXRxa86djK3RPbmW{EH&vFd0tYHA=*dtFd9?ELo z*f5rtg}9AqJ=U9)tvg19==~9%51edLft&lzdxO%v5ax-`6;)~sdJNGvCLE2VHwIP+ z>HgqImuI*ydA(?eAWLJI6}Op`r}O4CX!M5^<#or~vi);!c?l|`F$m@r)TdyM@=P-j zw{m>wyO%$DDC(OG3ft!c18FL*$L{Y4`GBJMxixlS(Q#&c;PNJe>=^hkGY}_0yN6su zK(Q^`!y^gh4$}tLgmRYycM`~x@oX83C%38fhtS|ZhH{g=#U!x5_V9Z7|E?(O#BlPx z*8$R>FMHmPmAondHQ}$`1Zt?&X)V%+a*ta?FG5{6N#U6 z^vFGb9%`BV{UQ9Ge)L!J;Ac*dAHK0xMw+_i zMJt!cpKo0wZ`is?PF=BD=C#j~Glm!FjO=$UTOhXs%I{bXtz4?Q9lCkd61j;2l;6At zT1)U=DmQUFHsJiG?aSr)D;7vkwO6VzHdpu0l*`ty1US>iYeJc8Q2rX!c`ZQwS^zvncsJmu0PGY2Uc;q; z^<}DL{04$K09`}AfB=-=xN?Ph(p9Sv2bA9gK)(rq&iF2X`7VSUlYTq$Z&|-u-nxFR z96e)!ym`k~`O9;T&`H!jf9~P(g>#RDj*z?0J3_wnf}`b2&pTTF;@o588o>FTryeCY z9(}01b;C}1=cc3N=IzJG`wl%yK7H~r@`dvN#V^8FVbD}Q_OQSvtzA0ywt zo?0Q z*KL-Ut=%jy0d&7;4S*Z~ei3vbVEjS_^Ud-C!1*~?K4$T10QG!@!9(V5#s3}uqs@je z`vU*pfSGLo^gmj@LSD6WnY?t#GP!usGPz*kGQj#$Ic@e5IecioY#tbuIbFjtwYg9F z0Ju|I<^ftqrMGPs3@q>74mjsb-4G{=>nwN38T@YgqE&MC!Z4dVmUY57jztHUpA4Od zcL2MFry)=tkk!T{x(KWN&hVi)(h`VIL_ zLkMRA)@PxO0qVnDGhkQ2)`Oj;fC&4g+SDV>ZP>TgL8&(O=7p1 znFye@fPezZl`4dD``&bcvzgZcloV#^K_{FO(jlbTSYxhF=yOl4!6J=ndejZj3EjMg zY}wLsV4d627dYlUXWeewn#>k8a5gwKDCc>n{M*}Ruh|O(+JCTTu`k?T|5P#KtSb$z zggCBeJyR*`T5j9oC)g^bsZt@J7kjjeyKTz=y@WP4KxfzQCTY}T;Q9<%AA28AJZD_C z_IDfJ>|>mV;9)mNr|k?tqRmZk(=-=*G%(NPlRbOAaXXj;&*FA|(!fqnyL;OWm?_Tb zP>1DGO+l))ML>L6I_oOZ0|4)bW@wl9CYc3|01CA`Jnn^Is1-~QZ`*n&R5&v~&T|>( zyUc3|`{?Jd3AXiY>_5k#&qZ6z!}%&;ANhPB(-iB$CIzH%R(AEC6T}JSgmVLN1#`-m zLs*CFDcQ4tZ9uR!FFM*0P+B0IBObxI0xQHgJ=p;C7)nE!l$PUq2EGd00d@_VnQnC| zc=~#w4C4ypDyzfRwKN5EFGGm;y2CnNAJg2so)tkmUBB&*)kR?&y6ok$<-Hz=ZNTS` zz9^u=aU~VyCzh2TDX#BvD79XwU&Upvhx3o^Mw7(F;vW?XXqZ;)Q8qc$dU`T$!p1T( z&`qvu%T_<*XcQ{EL9;(k?ib5gnuWFvgKKtAHxZl(--Pf6l%*Wd%P7x0dejxn5!dnN zT37P;nTG}fpck+%yT2QV8`zi7h-I8$df*lIS%wc9KJ>B7dbN>pqY{`2#xW!tC>tCz zG{t!i^IRthi1vYCJ%h#aM^uhpFH*T3v z9VVYW7do4Oew2KXp7iG*Eq9*4?~w11+fF`Gu0P@kdF#d<@~-vU%fJ5_!2B(z$&cT5I=~#d z>`eK|I|1mIodpO7puYofPAQl(4e`qe=FmG$KL@1${POeUKQ2EPkPcn`Jo&pnKU1ze zYKOe?psn&Jn|4Cm5#KDY*sw`nvSt&&957BW2Z&#^dZS#pa-&?Za+ACO(0;m zt}N@F2k2cZX9LvFS-D1zS#S{k=L~>M{NFP`-!yYn{se&j$4i&XE0-;oR{+vqx@3jC zXz_BnXu&c$f8G)~dDcQ%(KQQjJ0t^b^JQw=JV5I_X>TB)(veW)pFL7^>XIIHGuS$a=LbVUjaxrKwmpJUp>}MMeE`o13LcyYl^aE z+AKL8Fn%In`~(2)G0+j5aBcditmqz;`5gl?+&T@wJ*eMHpGFUP>k#6$tYEINK12Ee z-3sS`c7|LgV5m1#y+S4F!20ct)1;f;ckI`k_L=%AxD5nzz_xqH3FhmAbUE^#1JD8D z3g>`v!a2LRZyK71W$W6$1?gO#-8&f03n7mo&KCfuwR2Ef+6DpXgVNM89e{%K254$* z=tn-l5Q--tb4WK&x_OBy)WvfI2rbt4!G_})-q6Jz=Zmmokk0PtOs5FH?6S=D4FY){ zXkZh(74Qj~yp9N72~g(Pb%S-gE(o4HHUm5NmYWP}ecyS$lU{QNY#xt$O4(zS=ZM}| zZjW)39XEk33G|e;K`ibE$DDUagTgu0C*@L)aJ)0Y&&~ntUf99zLFcE|=m2A#v4`Ha zW6Rt=<1TK;&Ih+^#|+zEL56^45bj`ZA>q~I*1q~BCp|`%kB^t&A48Fac1_qz50h`# z?)!LO9c+_O?`hV3o(?trELu>Vz9?fI)_z>KtXOFTD$9cs$sMioMjOFbD1n!PC6x27Isd{IgrQlZ;RXa z#koHB1?#AAQldD=cC$R;xj7;8Xfxf$lLORI2gNu+o1xCk&TVpE_=khCwk_WefOim~ zoX}rJ!x6|;ID!29nt9?0=T@hIxwj!ex5fb2f!M&@LW5@Og0Eg|-4FL(^C4!nSLw z3Rm}E-yx5F>QH(7?$Z_2_kQP3ZRv6 z^~XMQggpAmojPkf>v-g2oArC={J!?&@45BkoB$7f{@gLpeIUB`+Gct3-hT)+PX7MS z|Mu>cNB{aV`JXF_@~1mj$hNslWOhT3ylKgDxeE|`8$kHh<(#~2p?*L7&gDzw{VVNz z;CBK34DU$bes95p&3&GkJ}g~79F+K61SZYe-~9>98m>Z-+v zLkzE4v{0^Eut2U{Xu2w^MMwvrUyXgb3P64};QA_!2Q7vGZtnnpFP0U-m6yOd4(y8kJg9LX2^<{wc74lwy`3lo^0~7PkuRKcgxn1{zxynv z9WB=#c8FYi%rSEN@khxuhaMrXTeBVU!{xiLJWc-QrN_zNyzE%{>z4!0Uj`6=`3ds3 zFFQg0?&T)|$WKsD`43-nvi#c{PM06Q8G0-94#4@Prvbd7%g#Uuy%S&#K>yigXUos& z9e)P^{4xOerRQs?X#jQY(*7>QF9)at&i@@?{>48zOJRdUI~ z)Z52V}5yhRkROh|@z3O{3?$d0GhRH3y&vIA?qSU_OJ89?JGYH$bW+dSm!RSx7#bI*A!2XlpVf;n_hfbn>%e3+Xb+| zR&yXGoR`ZT(%b<+$1xMq3FwW@{c7NrO6@RiZ5%G`PXgc+*m5x>GISBv31t-OhEcAb zbb@+q7wRLRn>W2yK^;KE<(lr0&d+VJetKf9M}yl|?BZ&&eb#FXA!nbbF;BbAz>l^U zmy^&K$E}Qkxj`50L$1SPF*s*AzBs6#g8k#m1%fQD;~Io^jPZWCt!LYGNVbsoKnYOD z@39lmO?^@-@_4O#yhAMi@La1VVAQGYgcPiZqs1VUJQ6U+kQ9@TUs3VWtJg4 z(@rNh@R$tJ6~b%d&>%iX$_~nhNVf>WxRb3T^M_!rI8&$@j_I(2v2>yGj8 zURMu5$8~AfOnki%HnnF5LQeQ+W6({^BZL}=8kAa^%krW!46|^K`%Yn3z2{6%uAh{x z@8W%6UCliW+{biqlsZsZr@}bJxNp~&xi3M?<8s(eO00*+rXdyfSL?U^<>wh~)_Get z`Ff}mte1l7T;V>{5ZmOn#<*T{wh!sD39;@-;8Pr5xrlq0W2b$xhO8XA9l%ZIv8Lj( z4y7LVbe2a$L|}~r#g1wmp-!TPcoNJF&M7NzH<7QOl|woKnfnw2FPBR=$q}IQptT&u zeX@PEkjGEZrZ=2W->6>qGPXhQI3c`@cB-Hu703~q7e0VF;`Snf$IhE8_FO09rm&BE zPzNaYaxs{@l3-3H!Q9ep9nW__r_6J2bz6D+L$C)4AH??X;~xi?Jw5!9M6&vLTn+UN zGSF6$O(P|F^$8@})m+mcMvOK|b^1g8bmm%JR!=nzd{E{kw+ciU0gs zu<$2;&yC++`Sm~FA@^R_mJ8ndD|U^4^at03IwyaB2*1bv{=IVVHB~umPQRQyFe1A+ zYx%;tvI|gr6F}O(C4Lh?odAB@N=^#LZtY6}tI(RIvTH57yf2Ym8&=3mRxbi%^hryx zQ|1CR{uBUzC30^z$6z8m=zm#@%}+psj2y^4^o0;p?O_$6|Uh6d=@0L&>uy2hCgIKMVXp&fvJ z?aGyM9dtba{rWWkb=69R^cxUfy>7L<9NIK}iM(XPPWg-H9VeeX{b2b#AsqVbnTN>d z&N*B@f6ifYH)ll$q<{GI!{yQ)hsX`bA0s!Pbez0n`w{ZmRR_yQ&pb)K|Ef~};>XDk z0N_7(Im6@S?_PPL{Qav=l7IN)ljNUY2Pl8zDe|K?pC&(f>#6dSw?S_|RelOMS0JYV z=RdiWo^uF*{?m7!Yaa5;2;&CmKSLV5$-)yYzYTl~o&>@ zSFS+`#k6zfcGg&4$}W%`wz7LZo(jeY(;$*DP7oIxNlfe8Dic@y1=S86XAp4(ZfS zl=Vwj6T68|Q_px0Rh=fiA>Li>m%hec8S3blWdm~n!84_))UDq@uh#bkUKZPS3xVa*}cLDgh7n90FB3FibwuFLM% z1TJ6K>b2$YLTL)U@qB?202XQNJrHlxp_%J?na-ml$0CEC4z2{|i|0ndJ zjGc#gp9$#Q1a#alX+V#GmNqAQl2q#HMW+2v0C9Vh`(~bL-_Q6wIOua98QQtgI$_s) z4+%oJzL-!2D93S7JV)+rj{!X?+~<1!;?UaO&a3slh+*BI5pf$NLq9Jbrw6@50iE5} zIY}HL-Hy2yVV%rWKyQXPqdS>`pF;yjkPE;E?6E+Pxx+ZY+RtiFK>?xsLQgL5Srb7YH8IQY-$90-~IVsE2^%yFk;+V01+)W Array[Dictionary]: + return scan_for_layout_parts() diff --git a/addons/dialogic/Modules/DefaultLayoutParts/index.gd.uid b/addons/dialogic/Modules/DefaultLayoutParts/index.gd.uid new file mode 100644 index 0000000..c644837 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/index.gd.uid @@ -0,0 +1 @@ +uid://c1dc5xk6urgfg diff --git a/addons/dialogic/Modules/End/event_end.gd b/addons/dialogic/Modules/End/event_end.gd new file mode 100644 index 0000000..b853119 --- /dev/null +++ b/addons/dialogic/Modules/End/event_end.gd @@ -0,0 +1,44 @@ +@tool +class_name DialogicEndTimelineEvent +extends DialogicEvent + +## Event that ends a timeline (even if more events come after). + + +#region EXECUTE +################################################################################ + +func _execute() -> void: + dialogic.end_timeline() + +#endregion + + +#region INITIALIZE +################################################################################ + +func _init() -> void: + event_name = "End" + set_default_color('Color4') + event_category = "Flow" + event_sorting_index = 10 + +#endregion + + +#region SAVING/LOADING +################################################################################ + +func get_shortcode() -> String: + return "end_timeline" + +#endregion + + +#region EDITOR REPRESENTATION +################################################################################ + +func build_event_editor() -> void: + add_header_label('End Timeline') + +#endregion diff --git a/addons/dialogic/Modules/End/event_end.gd.uid b/addons/dialogic/Modules/End/event_end.gd.uid new file mode 100644 index 0000000..2941508 --- /dev/null +++ b/addons/dialogic/Modules/End/event_end.gd.uid @@ -0,0 +1 @@ +uid://gyh5a2l1ltmc diff --git a/addons/dialogic/Modules/End/icon.png b/addons/dialogic/Modules/End/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..d97548051128613659ed7d84696b3acc64ff4279 GIT binary patch literal 558 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9E$svykh8Km+7D9BhG zNupn+*h5A1vnHB0WXW$Z40O znTJ`1*@3wVHy7Mgc*T;do?*>+SK;o1EN#bK5i=4}&h+0`S6uQ#;Z8G)P6yCnAW*QC ztW0_qw7y7c`F5StVRq7YChnhe?DagGQqF`h0R~k*#(+l%DzA&NCcq(>`+@8EZ}ZN~ zYCCi|@LJ)DS+mMtN%K2f_PMqdTsrO4qq~A%X8t7KmrJ)ut#yj%Jl}OXowfB?q2}tJ zlO>|NH||;X)9Z$S#k{>a6V}gOzh-T+w#@HaK^ijsd(LdloR(rZK>NxZRc%Dud8zNRhL?>$E25}8_)LrI`C1}$|SyW>4hCXw~OD}nELs5+s0!8yY|S`URZtM|Ax}dJLLE3 zeEssh|2)6ZGPU(9je}E47e5QWu9LY&COu#MSZsQH Array: + return [this_folder.path_join('event_end.gd')] diff --git a/addons/dialogic/Modules/End/index.gd.uid b/addons/dialogic/Modules/End/index.gd.uid new file mode 100644 index 0000000..c5234f1 --- /dev/null +++ b/addons/dialogic/Modules/End/index.gd.uid @@ -0,0 +1 @@ +uid://rvs5ddidyxmc diff --git a/addons/dialogic/Modules/Glossary/add-glossary.svg b/addons/dialogic/Modules/Glossary/add-glossary.svg new file mode 100644 index 0000000..f1b9f87 --- /dev/null +++ b/addons/dialogic/Modules/Glossary/add-glossary.svg @@ -0,0 +1,4 @@ + + + + diff --git a/addons/dialogic/Modules/Glossary/add-glossary.svg.import b/addons/dialogic/Modules/Glossary/add-glossary.svg.import new file mode 100644 index 0000000..7499bce --- /dev/null +++ b/addons/dialogic/Modules/Glossary/add-glossary.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cenut3sc5cul0" +path="res://.godot/imported/add-glossary.svg-1cde77c043d3874d9bc84cc14d0ec9dc.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Modules/Glossary/add-glossary.svg" +dest_files=["res://.godot/imported/add-glossary.svg-1cde77c043d3874d9bc84cc14d0ec9dc.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Modules/Glossary/event_glossary.gd b/addons/dialogic/Modules/Glossary/event_glossary.gd new file mode 100644 index 0000000..d8fce3a --- /dev/null +++ b/addons/dialogic/Modules/Glossary/event_glossary.gd @@ -0,0 +1,42 @@ +@tool +class_name DialogicGlossaryEvent +extends DialogicEvent + +## Event that does nothing right now. + + +################################################################################ +## EXECUTE +################################################################################ + +func _execute() -> void: + pass + + +################################################################################ +## INITIALIZE +################################################################################ + +func _init() -> void: + event_name = "Glossary" + set_default_color('Color6') + event_category = "Other" + event_sorting_index = 0 + + +################################################################################ +## SAVING/LOADING +################################################################################ +func get_shortcode() -> String: + return "glossary" + +func get_shortcode_parameters() -> Dictionary: + return { + } + +################################################################################ +## EDITOR REPRESENTATION +################################################################################ + +func build_event_editor() -> void: + pass diff --git a/addons/dialogic/Modules/Glossary/event_glossary.gd.uid b/addons/dialogic/Modules/Glossary/event_glossary.gd.uid new file mode 100644 index 0000000..9ec06ad --- /dev/null +++ b/addons/dialogic/Modules/Glossary/event_glossary.gd.uid @@ -0,0 +1 @@ +uid://or77lo7du0ot diff --git a/addons/dialogic/Modules/Glossary/glossary_editor.gd b/addons/dialogic/Modules/Glossary/glossary_editor.gd new file mode 100644 index 0000000..403ed6d --- /dev/null +++ b/addons/dialogic/Modules/Glossary/glossary_editor.gd @@ -0,0 +1,461 @@ +@tool +extends DialogicEditor + +var current_glossary: DialogicGlossary = null +var current_entry_name := "" +var current_entry := {} + +################################################################################ +## BASICS +################################################################################ + +func _get_title() -> String: + return "Glossary" + + +func _get_icon() -> Texture: + var base_directory: String = self.get_script().get_path().get_base_dir() + var icon_path := base_directory + "/icon.svg" + return load(icon_path) + + +func _register() -> void: + editors_manager.register_simple_editor(self) + alternative_text = "Create and edit glossaries." + + +func _ready() -> void: + var add_glossary_icon_path: String = self.get_script().get_path().get_base_dir() + "/add-glossary.svg" + var add_glossary_icon := load(add_glossary_icon_path) + %AddGlossaryFile.icon = add_glossary_icon + + %LoadGlossaryFile.icon = get_theme_icon('Folder', 'EditorIcons') + %DeleteGlossaryFile.icon = get_theme_icon('Remove', 'EditorIcons') + %DeleteGlossaryEntry.icon = get_theme_icon('Remove', 'EditorIcons') + + %DeleteGlossaryFile.pressed.connect(_on_delete_glossary_file_pressed) + + %AddGlossaryEntry.icon = get_theme_icon('Add', 'EditorIcons') + %EntrySearch.right_icon = get_theme_icon('Search', 'EditorIcons') + + %GlossaryList.item_selected.connect(_on_GlossaryList_item_selected) + %EntryList.item_selected.connect(_on_EntryList_item_selected) + + %DefaultColor.color_changed.connect(set_setting.bind('dialogic/glossary/default_color')) + %DefaultCaseSensitive.toggled.connect(set_setting.bind('dialogic/glossary/default_case_sensitive')) + + %EntryCaseSensitive.icon = get_theme_icon("MatchCase", "EditorIcons") + + %EntryAlternatives.text_changed.connect(_on_entry_alternatives_text_changed) + + +func set_setting(value: Variant, setting: String) -> void: + ProjectSettings.set_setting(setting, value) + ProjectSettings.save() + + +func _open(_argument: Variant = null) -> void: + %DefaultColor.color = ProjectSettings.get_setting('dialogic/glossary/default_color', Color.POWDER_BLUE) + %DefaultCaseSensitive.button_pressed = ProjectSettings.get_setting('dialogic/glossary/default_case_sensitive', true) + + %GlossaryList.clear() + var idx := 0 + for file: String in ProjectSettings.get_setting('dialogic/glossary/glossary_files', []): + + if ResourceLoader.exists(file): + %GlossaryList.add_item(DialogicUtil.pretty_name(file), get_theme_icon('FileList', 'EditorIcons')) + else: + %GlossaryList.add_item(DialogicUtil.pretty_name(file), get_theme_icon('FileDead', 'EditorIcons')) + + %GlossaryList.set_item_tooltip(idx, file) + idx += 1 + + %EntryList.clear() + + if %GlossaryList.item_count != 0: + %GlossaryList.select(0) + _on_GlossaryList_item_selected(0) + else: + current_glossary = null + hide_entry_editor() + +################################################################################ +## GLOSSARY LIST +################################################################################ +func _on_GlossaryList_item_selected(idx: int) -> void: + %EntryList.clear() + var tooltip_item: String = %GlossaryList.get_item_tooltip(idx) + + if ResourceLoader.exists(tooltip_item): + var glossary_item := load(tooltip_item) + + if not glossary_item is DialogicGlossary: + return + + current_glossary = load(tooltip_item) + + if not current_glossary is DialogicGlossary: + return + + var entry_idx := 0 + + for entry_key: String in current_glossary.entries.keys(): + var entry: Variant = current_glossary.entries.get(entry_key) + + if entry is String: + continue + + # Older glossary entries may not have the name property and the + # alternatives may not be set up as alias entries. + if not entry.has(DialogicGlossary.NAME_PROPERTY): + entry[DialogicGlossary.NAME_PROPERTY] = entry_key + var alternatives_array: Array = entry.get(DialogicGlossary.ALTERNATIVE_PROPERTY, []) + var alternatives := ",".join(alternatives_array) + _on_entry_alternatives_text_changed(alternatives) + ResourceSaver.save(current_glossary) + + %EntryList.add_item(entry.get(DialogicGlossary.NAME_PROPERTY, str(DialogicGlossary.NAME_PROPERTY)), get_theme_icon("Breakpoint", "EditorIcons")) + var modulate_color: Color = entry.get('color', %DefaultColor.color) + %EntryList.set_item_metadata(entry_idx, entry) + %EntryList.set_item_icon_modulate(entry_idx, modulate_color) + + entry_idx += 1 + + if %EntryList.item_count != 0: + %EntryList.select(0) + _on_EntryList_item_selected(0) + else: + hide_entry_editor() + + +func _on_add_glossary_file_pressed() -> void: + find_parent('EditorView').godot_file_dialog(create_new_glossary_file, '*.tres', EditorFileDialog.FILE_MODE_SAVE_FILE, 'Create new glossary resource') + + +func create_new_glossary_file(path:String) -> void: + var glossary := DialogicGlossary.new() + glossary.resource_path = path + ResourceSaver.save(glossary, path) + load_glossary_file(path) + + +func _on_load_glossary_file_pressed() -> void: + find_parent('EditorView').godot_file_dialog(load_glossary_file, '*.tres', EditorFileDialog.FILE_MODE_OPEN_FILE, 'Select glossary resource') + + +func load_glossary_file(path:String) -> void: + var list: Array = ProjectSettings.get_setting('dialogic/glossary/glossary_files', []) + + if not path in list: + list.append(path) + ProjectSettings.set_setting('dialogic/glossary/glossary_files', list) + ProjectSettings.save() + %GlossaryList.add_item(DialogicUtil.pretty_name(path), get_theme_icon('FileList', 'EditorIcons')) + + var selected_item_index: int = %GlossaryList.item_count - 1 + + %GlossaryList.set_item_tooltip(selected_item_index, path) + %GlossaryList.select(selected_item_index) + _on_GlossaryList_item_selected(selected_item_index) + + +func _on_delete_glossary_file_pressed() -> void: + var selected_items: PackedInt32Array = %GlossaryList.get_selected_items() + + if not selected_items.is_empty(): + var list: Array = ProjectSettings.get_setting('dialogic/glossary/glossary_files', []) + var selected_item_index := selected_items[0] + list.remove_at(selected_item_index) + + ProjectSettings.set_setting('dialogic/glossary/glossary_files', list) + ProjectSettings.save() + + _open() + + +################################################################################ +## ENTRY LIST +################################################################################ +func _on_EntryList_item_selected(idx: int) -> void: + current_entry_name = %EntryList.get_item_text(idx) + + var entry_info: Dictionary = current_glossary.get_entry(current_entry_name) + current_entry = entry_info + + %EntrySettings.show() + %EntryName.text = current_entry_name + %EntryCaseSensitive.button_pressed = entry_info.get('case_sensitive', %DefaultCaseSensitive.button_pressed) + + var alternative_property: Array = entry_info.get(DialogicGlossary.ALTERNATIVE_PROPERTY, []) + var alternatives := ", ".join(alternative_property) + %EntryAlternatives.text = alternatives + + %EntryTitle.text = entry_info.get('title', '') + %EntryText.text = entry_info.get('text', '') + %EntryExtra.text = entry_info.get('extra', '') + %EntryEnabled.button_pressed = entry_info.get('enabled', true) + + %EntryColor.color = entry_info.get('color', %DefaultColor.color) + %EntryCustomColor.button_pressed = entry_info.has('color') + %EntryColor.disabled = !entry_info.has('color') + + _check_entry_alternatives(alternatives) + _check_entry_name(current_entry_name, current_entry) + +func _on_add_glossary_entry_pressed() -> void: + if !current_glossary: + return + + var entry_count := current_glossary.entries.size() + 1 + var new_name := "New Entry " + str(entry_count) + + if new_name in current_glossary.entries.keys(): + var random_hex_number := str(randi() % 0xFFFFFF) + new_name = new_name + " " + str(random_hex_number) + + var new_glossary := {} + new_glossary[DialogicGlossary.NAME_PROPERTY] = new_name + + if not current_glossary.try_add_entry(new_glossary): + print_rich("[color=red]Failed adding '" + new_name + "', exists already.[/color]") + return + + ResourceSaver.save(current_glossary) + + %EntryList.add_item(new_name, get_theme_icon("Breakpoint", "EditorIcons")) + var item_count: int = %EntryList.item_count - 1 + + %EntryList.set_item_metadata(item_count, new_name) + %EntryList.set_item_icon_modulate(item_count, %DefaultColor.color) + %EntryList.select(item_count) + + _on_EntryList_item_selected(item_count) + + %EntryList.ensure_current_is_visible() + %EntryName.grab_focus() + + +func _on_delete_glossary_entry_pressed() -> void: + var selected_items: Array = %EntryList.get_selected_items() + + if not selected_items.is_empty(): + var selected_item_index: int = selected_items[0] + + if not current_glossary == null: + current_glossary.remove_entry(current_entry_name) + ResourceSaver.save(current_glossary) + + %EntryList.remove_item(selected_item_index) + var entries_count: int = %EntryList.item_count + + if entries_count > 0: + var previous_item_index := selected_item_index - 1 + %EntryList.select(previous_item_index) + + + +func _on_entry_search_text_changed(new_text: String) -> void: + if new_text.is_empty() or new_text.to_lower() in %EntryList.get_item_text(%EntryList.get_selected_items()[0]).to_lower(): + return + + for i: int in %EntryList.item_count: + + if new_text.is_empty() or new_text.to_lower() in %EntryList.get_item_text(i).to_lower(): + %EntryList.select(i) + _on_EntryList_item_selected(i) + %EntryList.ensure_current_is_visible() + + +################################################################################ +## ENTRY EDITOR +################################################################################ +func hide_entry_editor() -> void: + %EntrySettings.hide() + + +func _update_alias_entries(old_alias_value_key: String, new_alias_value_key: String) -> void: + for entry_key: String in current_glossary.entries.keys(): + + var entry_value: Variant = current_glossary.entries.get(entry_key) + + if not entry_value is String: + continue + + if not entry_value == old_alias_value_key: + continue + + current_glossary.entries[entry_key] = new_alias_value_key + + +## Checks if the [param entry_name] is already used as a key for another entry +## and returns true if it doesn't. +## The [param entry] will be used to check if found entry uses the same +## reference in memory. +func _check_entry_name(entry_name: String, entry: Dictionary) -> bool: + var selected_item: int = %EntryList.get_selected_items()[0] + var raised_error: bool = false + + var entry_assigned: Variant = current_glossary.entries.get(entry_name, {}) + + # Alternative entry uses the entry name already. + if entry_assigned is String: + raised_error = true + + if entry_assigned is Dictionary and not entry_assigned.is_empty(): + var entry_name_assigned: String = entry_assigned.get(DialogicGlossary.NAME_PROPERTY, "") + + # Another entry uses the entry name already. + if not entry_name_assigned == entry_name: + raised_error = true + + # Not the same memory reference. + if not entry == entry_assigned: + raised_error = true + + if raised_error: + %EntryList.set_item_custom_bg_color(selected_item, + get_theme_color("warning_color", "Editor").darkened(0.8)) + %EntryName.add_theme_color_override("font_color", get_theme_color("warning_color", "Editor")) + %EntryName.right_icon = get_theme_icon("StatusError", "EditorIcons") + + return false + + else: + %EntryName.add_theme_color_override("font_color", get_theme_color("font_color", "Editor")) + %EntryName.add_theme_color_override("caret_color", get_theme_color("font_color", "Editor")) + %EntryName.right_icon = null + %EntryList.set_item_custom_bg_color( + selected_item, + Color.TRANSPARENT + ) + + return true + + +func _on_entry_name_text_changed(new_name: String) -> void: + new_name = new_name.strip_edges() + + if current_entry_name != new_name: + var selected_item: int = %EntryList.get_selected_items()[0] + + if not _check_entry_name(new_name, current_entry): + return + + print_rich("[color=green]Renaming entry '" + current_entry_name + "'' to '" + new_name + "'[/color]") + + _update_alias_entries(current_entry_name, new_name) + + current_glossary.replace_entry_key(current_entry_name, new_name) + + %EntryList.set_item_text(selected_item, new_name) + %EntryList.set_item_metadata(selected_item, new_name) + ResourceSaver.save(current_glossary) + current_entry_name = new_name + + +func _on_entry_case_sensitive_toggled(button_pressed: bool) -> void: + current_glossary.get_entry(current_entry_name)['case_sensitive'] = button_pressed + ResourceSaver.save(current_glossary) + + +## Checks if the [param new_alternatives] has any alternatives that are already +## used as a key for another entry and returns true if it doesn't. +func _can_change_alternative(new_alternatives: String) -> bool: + for alternative: String in new_alternatives.split(',', false): + var stripped_alternative := alternative.strip_edges() + + var value: Variant = current_glossary.entries.get(stripped_alternative, null) + + if value == null: + continue + + if value is String: + value = current_glossary.entries.get(value, null) + + var value_name: String = value[DialogicGlossary.NAME_PROPERTY] + + if not current_entry_name == value_name: + return false + + return true + + +## Checks if [entry_alternatives] has any alternatives that are already +## used by any entry and returns true if it doesn't. +## If false, it will set the alternatives text field to a warning color and +## set an icon. +## If true, the alternatives text field will be set to the default color and +## the icon will be removed. +func _check_entry_alternatives(entry_alternatives: String) -> bool: + + if not _can_change_alternative(entry_alternatives): + %EntryAlternatives.add_theme_color_override("font_color", get_theme_color("warning_color", "Editor")) + %EntryAlternatives.right_icon = get_theme_icon("StatusError", "EditorIcons") + return false + + else: + %EntryAlternatives.add_theme_color_override("font_color", get_theme_color("font_color", "Editor")) + %EntryAlternatives.right_icon = null + + return true + + +## The [param new_alternatives] is a passed as a string of comma separated +## values form the Dialogic editor. +## +## Saves the glossary resource file. +func _on_entry_alternatives_text_changed(new_alternatives: String) -> void: + var current_alternatives: Array = current_glossary.get_entry(current_entry_name).get(DialogicGlossary.ALTERNATIVE_PROPERTY, []) + + if not _check_entry_alternatives(new_alternatives): + return + + for current_alternative: String in current_alternatives: + current_glossary._remove_entry_alias(current_alternative) + + var alternatives := [] + + for new_alternative: String in new_alternatives.split(',', false): + var stripped_alternative := new_alternative.strip_edges() + alternatives.append(stripped_alternative) + current_glossary._add_entry_key_alias(current_entry_name, stripped_alternative) + + current_glossary.get_entry(current_entry_name)[DialogicGlossary.ALTERNATIVE_PROPERTY] = alternatives + ResourceSaver.save(current_glossary) + + +func _on_entry_title_text_changed(new_text:String) -> void: + current_glossary.get_entry(current_entry_name)['title'] = new_text + ResourceSaver.save(current_glossary) + + +func _on_entry_text_text_changed() -> void: + current_glossary.get_entry(current_entry_name)['text'] = %EntryText.text + ResourceSaver.save(current_glossary) + + +func _on_entry_extra_text_changed() -> void: + current_glossary.get_entry(current_entry_name)['extra'] = %EntryExtra.text + ResourceSaver.save(current_glossary) + + +func _on_entry_enabled_toggled(button_pressed:bool) -> void: + current_glossary.get_entry(current_entry_name)['enabled'] = button_pressed + ResourceSaver.save(current_glossary) + + +func _on_entry_custom_color_toggled(button_pressed:bool) -> void: + %EntryColor.disabled = !button_pressed + + if !button_pressed: + current_glossary.get_entry(current_entry_name).erase('color') + %EntryList.set_item_icon_modulate(%EntryList.get_selected_items()[0], %DefaultColor.color) + else: + current_glossary.get_entry(current_entry_name)['color'] = %EntryColor.color + %EntryList.set_item_icon_modulate(%EntryList.get_selected_items()[0], %EntryColor.color) + + +func _on_entry_color_color_changed(color:Color) -> void: + current_glossary.get_entry(current_entry_name)['color'] = color + %EntryList.set_item_icon_modulate(%EntryList.get_selected_items()[0], color) + ResourceSaver.save(current_glossary) diff --git a/addons/dialogic/Modules/Glossary/glossary_editor.gd.uid b/addons/dialogic/Modules/Glossary/glossary_editor.gd.uid new file mode 100644 index 0000000..608b717 --- /dev/null +++ b/addons/dialogic/Modules/Glossary/glossary_editor.gd.uid @@ -0,0 +1 @@ +uid://bqu863yjcjc8y diff --git a/addons/dialogic/Modules/Glossary/glossary_editor.tscn b/addons/dialogic/Modules/Glossary/glossary_editor.tscn new file mode 100644 index 0000000..a30d33d --- /dev/null +++ b/addons/dialogic/Modules/Glossary/glossary_editor.tscn @@ -0,0 +1,319 @@ +[gd_scene load_steps=5 format=3 uid="uid://due48ce7jiudt"] + +[ext_resource type="Script" uid="uid://bqu863yjcjc8y" path="res://addons/dialogic/Modules/Glossary/glossary_editor.gd" id="1_tf3p1"] +[ext_resource type="Texture2D" uid="uid://cenut3sc5cul0" path="res://addons/dialogic/Modules/Glossary/add-glossary.svg" id="2_0elx7"] + +[sub_resource type="Image" id="Image_2730t"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_dfvxn"] +image = SubResource("Image_2730t") + +[node name="GlossaryEditor" type="VBoxContainer"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +script = ExtResource("1_tf3p1") + +[node name="Entries" type="HSplitContainer" parent="."] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +split_offset = -200 + +[node name="Settings" type="VBoxContainer" parent="Entries"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 0.3 + +[node name="Label" type="Label" parent="Entries/Settings"] +layout_mode = 2 +theme_type_variation = &"DialogicSection" +text = "Glossaries" + +[node name="Glossaries" type="PanelContainer" parent="Entries/Settings"] +layout_mode = 2 +size_flags_vertical = 3 +theme_type_variation = &"DialogicPanelA" + +[node name="Glossaries" type="VBoxContainer" parent="Entries/Settings/Glossaries"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +size_flags_stretch_ratio = 0.69 + +[node name="HBox" type="HBoxContainer" parent="Entries/Settings/Glossaries/Glossaries"] +layout_mode = 2 + +[node name="AddGlossaryFile" type="Button" parent="Entries/Settings/Glossaries/Glossaries/HBox"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 4 +tooltip_text = "New Glossary" +icon = ExtResource("2_0elx7") + +[node name="LoadGlossaryFile" type="Button" parent="Entries/Settings/Glossaries/Glossaries/HBox"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 4 +tooltip_text = "Import Glossary File" +icon = SubResource("ImageTexture_dfvxn") + +[node name="DeleteGlossaryFile" type="Button" parent="Entries/Settings/Glossaries/Glossaries/HBox"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 4 +tooltip_text = "Delete Glossary" +icon = SubResource("ImageTexture_dfvxn") + +[node name="ScrollContainer" type="ScrollContainer" parent="Entries/Settings/Glossaries/Glossaries"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="GlossaryList" type="ItemList" parent="Entries/Settings/Glossaries/Glossaries/ScrollContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="Label2" type="Label" parent="Entries/Settings"] +layout_mode = 2 +theme_type_variation = &"DialogicSection" +text = "Defaults" + +[node name="Defaults" type="VBoxContainer" parent="Entries/Settings"] +layout_mode = 2 + +[node name="DefaultsColor" type="HBoxContainer" parent="Entries/Settings/Defaults"] +layout_mode = 2 + +[node name="Label" type="Label" parent="Entries/Settings/Defaults/DefaultsColor"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "Color" + +[node name="DefaultColor" type="ColorPickerButton" parent="Entries/Settings/Defaults/DefaultsColor"] +unique_name_in_owner = true +custom_minimum_size = Vector2(50, 0) +layout_mode = 2 +size_flags_horizontal = 8 + +[node name="DefCaseSensitive" type="HBoxContainer" parent="Entries/Settings/Defaults"] +layout_mode = 2 + +[node name="Label" type="Label" parent="Entries/Settings/Defaults/DefCaseSensitive"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "Case sensitive" + +[node name="DefaultCaseSensitive" type="CheckBox" parent="Entries/Settings/Defaults/DefCaseSensitive"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="HSplit" type="HSplitContainer" parent="Entries"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="VBoxContainer" type="VBoxContainer" parent="Entries/HSplit"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="Label2" type="Label" parent="Entries/HSplit/VBoxContainer"] +layout_mode = 2 +theme_type_variation = &"DialogicSection" +text = "Entries" + +[node name="Tabs" type="PanelContainer" parent="Entries/HSplit/VBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_type_variation = &"DialogicPanelA" + +[node name="Entries" type="VBoxContainer" parent="Entries/HSplit/VBoxContainer/Tabs"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 0.69 + +[node name="HBox" type="HBoxContainer" parent="Entries/HSplit/VBoxContainer/Tabs/Entries"] +layout_mode = 2 + +[node name="AddGlossaryEntry" type="Button" parent="Entries/HSplit/VBoxContainer/Tabs/Entries/HBox"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 4 +tooltip_text = "New Glossary Entry" +icon = SubResource("ImageTexture_dfvxn") + +[node name="DeleteGlossaryEntry" type="Button" parent="Entries/HSplit/VBoxContainer/Tabs/Entries/HBox"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 4 +tooltip_text = "Delete Glossary Entry" +icon = SubResource("ImageTexture_dfvxn") + +[node name="EntrySearch" type="LineEdit" parent="Entries/HSplit/VBoxContainer/Tabs/Entries/HBox"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +placeholder_text = "Search" +right_icon = SubResource("ImageTexture_dfvxn") + +[node name="ScrollContainer" type="ScrollContainer" parent="Entries/HSplit/VBoxContainer/Tabs/Entries"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="EntryList" type="ItemList" parent="Entries/HSplit/VBoxContainer/Tabs/Entries/ScrollContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +focus_neighbor_right = NodePath("../../../../EntryEditor/Tabs/Entry Settings/EntrySettings/HBox/EntryName") + +[node name="EntryEditor" type="ScrollContainer" parent="Entries/HSplit"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +horizontal_scroll_mode = 0 +metadata/_edit_layout_mode = 1 + +[node name="VBox" type="VBoxContainer" parent="Entries/HSplit/EntryEditor"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="Label" type="Label" parent="Entries/HSplit/EntryEditor/VBox"] +layout_mode = 2 +theme_type_variation = &"DialogicSection" +text = "Entry Settings" + +[node name="Entry Settings" type="VBoxContainer" parent="Entries/HSplit/EntryEditor/VBox"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="EntrySettings" type="GridContainer" parent="Entries/HSplit/EntryEditor/VBox/Entry Settings"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_override_constants/h_separation = 13 +columns = 2 + +[node name="Label2" type="Label" parent="Entries/HSplit/EntryEditor/VBox/Entry Settings/EntrySettings"] +layout_mode = 2 +size_flags_vertical = 0 +text = "Name" + +[node name="HBox2" type="HBoxContainer" parent="Entries/HSplit/EntryEditor/VBox/Entry Settings/EntrySettings"] +layout_mode = 2 + +[node name="EntryName" type="LineEdit" parent="Entries/HSplit/EntryEditor/VBox/Entry Settings/EntrySettings/HBox2"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +focus_neighbor_left = NodePath("../../../../../../VBoxContainer/Tabs/Entries/ScrollContainer/EntryList") +theme_override_colors/caret_color = Color(0, 0, 0, 1) +placeholder_text = "Enter unique name..." +caret_blink = true + +[node name="EntryCaseSensitive" type="Button" parent="Entries/HSplit/EntryEditor/VBox/Entry Settings/EntrySettings/HBox2"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Case sensitive" +toggle_mode = true +icon = SubResource("ImageTexture_dfvxn") +flat = true + +[node name="Label3" type="Label" parent="Entries/HSplit/EntryEditor/VBox/Entry Settings/EntrySettings"] +layout_mode = 2 +size_flags_vertical = 0 +text = "Alternatives" + +[node name="EntryAlternatives" type="LineEdit" parent="Entries/HSplit/EntryEditor/VBox/Entry Settings/EntrySettings"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +caret_blink = true + +[node name="Label4" type="Label" parent="Entries/HSplit/EntryEditor/VBox/Entry Settings/EntrySettings"] +layout_mode = 2 +size_flags_vertical = 0 +text = "Title" + +[node name="EntryTitle" type="LineEdit" parent="Entries/HSplit/EntryEditor/VBox/Entry Settings/EntrySettings"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +caret_blink = true + +[node name="Label5" type="Label" parent="Entries/HSplit/EntryEditor/VBox/Entry Settings/EntrySettings"] +layout_mode = 2 +size_flags_vertical = 0 +text = "Description" + +[node name="EntryText" type="TextEdit" parent="Entries/HSplit/EntryEditor/VBox/Entry Settings/EntrySettings"] +unique_name_in_owner = true +custom_minimum_size = Vector2(0, 100) +layout_mode = 2 +focus_next = NodePath("../EntryExtra") +wrap_mode = 1 + +[node name="Label6" type="Label" parent="Entries/HSplit/EntryEditor/VBox/Entry Settings/EntrySettings"] +layout_mode = 2 +size_flags_vertical = 0 +text = "Extra" + +[node name="EntryExtra" type="TextEdit" parent="Entries/HSplit/EntryEditor/VBox/Entry Settings/EntrySettings"] +unique_name_in_owner = true +custom_minimum_size = Vector2(0, 50) +layout_mode = 2 +wrap_mode = 1 + +[node name="Label8" type="Label" parent="Entries/HSplit/EntryEditor/VBox/Entry Settings/EntrySettings"] +layout_mode = 2 +size_flags_vertical = 0 +text = "Enabled" + +[node name="EntryEnabled" type="CheckBox" parent="Entries/HSplit/EntryEditor/VBox/Entry Settings/EntrySettings"] +unique_name_in_owner = true +layout_mode = 2 +button_pressed = true + +[node name="Label7" type="Label" parent="Entries/HSplit/EntryEditor/VBox/Entry Settings/EntrySettings"] +layout_mode = 2 +size_flags_vertical = 0 +text = "Color" + +[node name="HBox" type="HBoxContainer" parent="Entries/HSplit/EntryEditor/VBox/Entry Settings/EntrySettings"] +layout_mode = 2 + +[node name="EntryCustomColor" type="CheckBox" parent="Entries/HSplit/EntryEditor/VBox/Entry Settings/EntrySettings/HBox"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="EntryColor" type="ColorPickerButton" parent="Entries/HSplit/EntryEditor/VBox/Entry Settings/EntrySettings/HBox"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 + +[connection signal="pressed" from="Entries/Settings/Glossaries/Glossaries/HBox/AddGlossaryFile" to="." method="_on_add_glossary_file_pressed"] +[connection signal="pressed" from="Entries/Settings/Glossaries/Glossaries/HBox/LoadGlossaryFile" to="." method="_on_load_glossary_file_pressed"] +[connection signal="pressed" from="Entries/HSplit/VBoxContainer/Tabs/Entries/HBox/AddGlossaryEntry" to="." method="_on_add_glossary_entry_pressed"] +[connection signal="pressed" from="Entries/HSplit/VBoxContainer/Tabs/Entries/HBox/DeleteGlossaryEntry" to="." method="_on_delete_glossary_entry_pressed"] +[connection signal="text_changed" from="Entries/HSplit/VBoxContainer/Tabs/Entries/HBox/EntrySearch" to="." method="_on_entry_search_text_changed"] +[connection signal="text_changed" from="Entries/HSplit/EntryEditor/VBox/Entry Settings/EntrySettings/HBox2/EntryName" to="." method="_on_entry_name_text_changed"] +[connection signal="toggled" from="Entries/HSplit/EntryEditor/VBox/Entry Settings/EntrySettings/HBox2/EntryCaseSensitive" to="." method="_on_entry_case_sensitive_toggled"] +[connection signal="text_changed" from="Entries/HSplit/EntryEditor/VBox/Entry Settings/EntrySettings/EntryTitle" to="." method="_on_entry_title_text_changed"] +[connection signal="text_changed" from="Entries/HSplit/EntryEditor/VBox/Entry Settings/EntrySettings/EntryText" to="." method="_on_entry_text_text_changed"] +[connection signal="text_changed" from="Entries/HSplit/EntryEditor/VBox/Entry Settings/EntrySettings/EntryExtra" to="." method="_on_entry_extra_text_changed"] +[connection signal="toggled" from="Entries/HSplit/EntryEditor/VBox/Entry Settings/EntrySettings/EntryEnabled" to="." method="_on_entry_enabled_toggled"] +[connection signal="toggled" from="Entries/HSplit/EntryEditor/VBox/Entry Settings/EntrySettings/HBox/EntryCustomColor" to="." method="_on_entry_custom_color_toggled"] +[connection signal="color_changed" from="Entries/HSplit/EntryEditor/VBox/Entry Settings/EntrySettings/HBox/EntryColor" to="." method="_on_entry_color_color_changed"] diff --git a/addons/dialogic/Modules/Glossary/glossary_resource.gd b/addons/dialogic/Modules/Glossary/glossary_resource.gd new file mode 100644 index 0000000..638d036 --- /dev/null +++ b/addons/dialogic/Modules/Glossary/glossary_resource.gd @@ -0,0 +1,340 @@ +@tool +## Resource used to store glossary entries. Can be saved to disc and used as a glossary. +## Add/create glossaries fom the glossaries editor +class_name DialogicGlossary +extends Resource + +## Stores all entries for the glossary. +## +## The value may either be a dictionary, representing an entry, or +## a string, representing the actual key for the key used. +## The string key-value pairs are the alias keys, they allow to redirect +## the actual glossary entry. +@export var entries := {} + +## If false, no entries from this glossary will be shown +@export var enabled: bool = true + +## Refers to the translation type of this resource used for CSV translation files. +const RESOURCE_NAME := "Glossary" +## The name of glossary entries, the value is the key in [member entries]. +## This constant is used for CSV translation files. +const NAME_PROPERTY := "name" +## Property in a glossary entry. Alternative words for the entry name. +const ALTERNATIVE_PROPERTY := "alternatives" +## Property in a glossary entry. +const TITLE_PROPERTY := "title" +## Property in a glossary entry. +const TEXT_PROPERTY := "text" +## Property in a glossary entry. +const EXTRA_PROPERTY := "extra" +## Property in a glossary entry. The translation ID of the entry. +## May be empty if the entry has not been translated yet. +const TRANSLATION_PROPERTY := "_translation_id" +## Property in a glossary entry. +const REGEX_OPTION_PROPERTY := "regex_options" +## Prefix used for private properties in entries. +## Ignored when entries are translated. +const PRIVATE_PROPERTY_PREFIX := "_" + + +## Private ID assigned when this glossary is translated. +@export var _translation_id := "" + +## Private lookup table used to find the translation ID of a glossary entry. +## The keys (String) are all translated words that may trigger a glossary entry to +## be shown. +## The values (String) are the translation ID. +@export var _translation_keys := {} + + + +## Removes an entry and all its aliases (alternative property) from +## the glossary. +## [param entry_key] may be an entry name or an alias. +## +## Returns true if the entry matching the given [param entry_key] was found. +func remove_entry(entry_key: String) -> bool: + var entry: Dictionary = get_entry(entry_key) + + if entry.is_empty(): + return false + + var aliases: Array = entry.get(ALTERNATIVE_PROPERTY, []) + + for alias: String in aliases: + _remove_entry_alias(alias) + + entries.erase(entry_key) + + return true + + +## This is an internal method. +## Erases an entry alias key based the given [param entry_key]. +## +## Returns true if [param entry_key] lead to a value and the value +## was an alias. +## +## This method does not update the entry's alternative property. +func _remove_entry_alias(entry_key: String) -> bool: + var value: Variant = entries.get(entry_key, null) + + if value == null or value is Dictionary: + return false + + entries.erase(entry_key) + + return true + + +## Updates the glossary entry's name and related alias keys. +## The [param old_entry_key] is the old unique name of the entry. +## The [param new_entry_key] is the new unique name of the entry. +## +## This method fails if the [param old_entry_key] does not exist. + +## Do not use this to update alternative names. +## In order to update alternative names, delete all with +## [method _remove_entry_alias] and then add them again with +## [method _add_entry_key_alias]. +func replace_entry_key(old_entry_key: String, new_entry_key: String) -> void: + var entry := get_entry(old_entry_key) + + if entry == null: + return + + entry.name = new_entry_key + + entries.erase(old_entry_key) + entries[new_entry_key] = entry + + +## Gets the glossary entry for the given [param entry_key]. +## If there is no matching entry, an empty Dictionary will be returned. +## Valid glossary entry dictionaries will never be empty. +func get_entry(entry_key: String) -> Dictionary: + var entry: Variant = entries.get(entry_key, {}) + + # Handle alias value. + if entry is String: + entry = entries.get(entry, {}) + + return entry + + +## This is an internal method. +## The [param entry_key] must be valid entry key for an entry. +## Adds the [param alias] as a valid entry key for that entry. +## +## Returns the index of the entry, -1 if the entry does not exist. +func _add_entry_key_alias(entry_key: String, alias: String) -> bool: + var entry := get_entry(entry_key) + var alias_entry := get_entry(alias) + + if not entry.is_empty() and alias_entry.is_empty(): + entries[alias] = entry_key + return true + + return false + + +## Adds [param entry] to the glossary if it does not exist. +## If it does exist, returns false. +func try_add_entry(entry: Dictionary) -> bool: + var entry_key: String = entry[NAME_PROPERTY] + + if entries.has(entry_key): + return false + + entries[entry_key] = entry + + for alternative: String in entry.get(ALTERNATIVE_PROPERTY, []): + entries[alternative.strip_edges()] = entry_key + + return true + + +## Returns an array of words that can trigger the glossary popup. +## This method respects whether translation is enabled or not. +## The words may be: The entry key and the alternative words. +func _get_word_options(entry_key: String) -> Array: + var word_options: Array = [] + + var translation_enabled: bool = ProjectSettings.get_setting("dialogic/translation/enabled", false) + + if not translation_enabled: + word_options.append(entry_key) + + for alternative: String in get_entry(entry_key).get(ALTERNATIVE_PROPERTY, []): + word_options.append(alternative.strip_edges()) + + return word_options + + var translation_entry_key_id: String = get_property_translation_key(entry_key, NAME_PROPERTY) + + if translation_entry_key_id.is_empty(): + return [] + + var translated_entry_key := tr(translation_entry_key_id) + + if not translated_entry_key == translation_entry_key_id: + word_options.append(translated_entry_key) + + var translation_alternatives_id: String = get_property_translation_key(entry_key, ALTERNATIVE_PROPERTY) + var translated_alternatives_str := tr(translation_alternatives_id) + + if not translated_alternatives_str == translation_alternatives_id: + var translated_alternatives := translated_alternatives_str.split(",") + + for alternative: String in translated_alternatives: + word_options.append(alternative.strip_edges()) + + return word_options + + +## Gets the regex option for the given [param entry_key]. +## If the regex option does not exist, it will be generated. +## +## A regex option is the accumulation of valid words that can trigger the +## glossary popup. +## +## The [param entry_key] must be valid or an error will occur. +func get_set_regex_option(entry_key: String) -> String: + var entry: Dictionary = get_entry(entry_key) + + var regex_options: Dictionary = entry.get(REGEX_OPTION_PROPERTY, {}) + + if regex_options.is_empty(): + entry[REGEX_OPTION_PROPERTY] = regex_options + + var locale_key: String = TranslationServer.get_locale() + var regex_option: String = regex_options.get(locale_key, "") + + if not regex_option.is_empty(): + return regex_option + + var word_options: Array = _get_word_options(entry_key) + regex_option = "|".join(word_options) + + regex_options[locale_key] = regex_option + + return regex_option + + +#region ADD AND CLEAR TRANSLATION KEYS + +## This is automatically called, no need to use this. +func add_translation_id() -> String: + _translation_id = DialogicUtil.get_next_translation_id() + return _translation_id + + +## Removes the translation ID of this glossary. +func remove_translation_id() -> void: + _translation_id = "" + + +## Removes the translation ID of all glossary entries. +func remove_entry_translation_ids() -> void: + for entry: Variant in entries.values(): + + # Ignore aliases. + if entry is String: + continue + + if entry.has(TRANSLATION_PROPERTY): + entry[TRANSLATION_PROPERTY] = "" + + +## Clears the lookup tables using translation keys. +func clear_translation_keys() -> void: + const RESOURCE_NAME_KEY := RESOURCE_NAME + "/" + + for translation_key: String in entries.keys(): + + if translation_key.begins_with(RESOURCE_NAME_KEY): + entries.erase(translation_key) + + _translation_keys.clear() + +#endregion + + +#region GET AND SET TRANSLATION IDS AND KEYS + +## Returns a key used to reference this glossary in the translation CSV file. +## +## Time complexity: O(1) +func get_property_translation_key(entry_key: String, property: String) -> String: + var entry := get_entry(entry_key) + + if entry == null: + return "" + + var entry_translation_key: String = entry.get(TRANSLATION_PROPERTY, "") + + if entry_translation_key.is_empty() or _translation_id.is_empty(): + return "" + + var glossary_csv_key := (RESOURCE_NAME + .path_join(_translation_id) + .path_join(entry_translation_key) + .path_join(property)) + + return glossary_csv_key + + + +## Returns the translation key prefix for this glossary. +## The resulting format will look like this: Glossary/a2/ +## This prefix can be used to find translations for this glossary. +func _get_glossary_translation_id_prefix() -> String: + return ( + DialogicGlossary.RESOURCE_NAME + .path_join(_translation_id) + ) + + +## Returns the translation key for the given [param glossary_translation_id] and +## [param entry_translation_id]. +## +## By key, we refer to the uniquely named property per translation entry. +## +## The resulting format will look like this: Glossary/a2/b4/name +func _get_glossary_translation_key(entry_translation_id: String, property: String) -> String: + return ( + DialogicGlossary.RESOURCE_NAME + .path_join(_translation_id) + .path_join(entry_translation_id) + .path_join(property) + ) + + +## Tries to get the glossary entry's translation ID. +## If it does not exist, a new one will be generated. +func get_set_glossary_entry_translation_id(entry_key: String) -> String: + var glossary_entry: Dictionary = get_entry(entry_key) + var entry_translation_id := "" + + var glossary_translation_id: String = glossary_entry.get(TRANSLATION_PROPERTY, "") + + if glossary_translation_id.is_empty(): + entry_translation_id = DialogicUtil.get_next_translation_id() + glossary_entry[TRANSLATION_PROPERTY] = entry_translation_id + + else: + entry_translation_id = glossary_entry[TRANSLATION_PROPERTY] + + return entry_translation_id + + +## Tries to get the glossary's translation ID. +## If it does not exist, a new one will be generated. +func get_set_glossary_translation_id() -> String: + if _translation_id == null or _translation_id.is_empty(): + add_translation_id() + + return _translation_id + +#endregion diff --git a/addons/dialogic/Modules/Glossary/glossary_resource.gd.uid b/addons/dialogic/Modules/Glossary/glossary_resource.gd.uid new file mode 100644 index 0000000..da87365 --- /dev/null +++ b/addons/dialogic/Modules/Glossary/glossary_resource.gd.uid @@ -0,0 +1 @@ +uid://80elcodyqohb diff --git a/addons/dialogic/Modules/Glossary/icon.png.import b/addons/dialogic/Modules/Glossary/icon.png.import new file mode 100644 index 0000000..e921f64 --- /dev/null +++ b/addons/dialogic/Modules/Glossary/icon.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b6wqvg2qcjxs" +path="res://.godot/imported/icon.png-624eb6dbf7e3ab27845a397653fa2fbb.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Events/Glossary/icon.png" +dest_files=["res://.godot/imported/icon.png-624eb6dbf7e3ab27845a397653fa2fbb.ctex"] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/bptc_ldr=0 +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/dialogic/Modules/Glossary/icon.svg b/addons/dialogic/Modules/Glossary/icon.svg new file mode 100644 index 0000000..175e284 --- /dev/null +++ b/addons/dialogic/Modules/Glossary/icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/addons/dialogic/Modules/Glossary/icon.svg.import b/addons/dialogic/Modules/Glossary/icon.svg.import new file mode 100644 index 0000000..3fcaaf9 --- /dev/null +++ b/addons/dialogic/Modules/Glossary/icon.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b5xwnxdb7064n" +path="res://.godot/imported/icon.svg-4fc0c12c53379638e37d654e7bbaea1a.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Modules/Glossary/icon.svg" +dest_files=["res://.godot/imported/icon.svg-4fc0c12c53379638e37d654e7bbaea1a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Modules/Glossary/index.gd b/addons/dialogic/Modules/Glossary/index.gd new file mode 100644 index 0000000..4b0f997 --- /dev/null +++ b/addons/dialogic/Modules/Glossary/index.gd @@ -0,0 +1,14 @@ +@tool +extends DialogicIndexer + + +func _get_events() -> Array: + return [] +# return [this_folder.path_join('event_glossary.gd')] + +func _get_editors() -> Array: + return [this_folder.path_join('glossary_editor.tscn')] + +func _get_subsystems() -> Array: + return [{'name':'Glossary', 'script':this_folder.path_join('subsystem_glossary.gd')}] + diff --git a/addons/dialogic/Modules/Glossary/index.gd.uid b/addons/dialogic/Modules/Glossary/index.gd.uid new file mode 100644 index 0000000..66d012a --- /dev/null +++ b/addons/dialogic/Modules/Glossary/index.gd.uid @@ -0,0 +1 @@ +uid://787tgkcn11ya diff --git a/addons/dialogic/Modules/Glossary/subsystem_glossary.gd b/addons/dialogic/Modules/Glossary/subsystem_glossary.gd new file mode 100644 index 0000000..74077b7 --- /dev/null +++ b/addons/dialogic/Modules/Glossary/subsystem_glossary.gd @@ -0,0 +1,174 @@ +extends DialogicSubsystem + +## Subsystem that handles glossaries. + +## List of glossary resources that are used. +var glossaries := [] +## If false, no parsing will be done. +var enabled := true + +## Any key in this dictionary will overwrite the color for any item with that name. +var color_overrides := {} + +const SETTING_DEFAULT_COLOR := 'dialogic/glossary/default_color' + + +#region STATE +#################################################################################################### + +func clear_game_state(_clear_flag := DialogicGameHandler.ClearFlags.FULL_CLEAR) -> void: + glossaries = [] + + for path: String in ProjectSettings.get_setting('dialogic/glossary/glossary_files', []): + add_glossary(path) + +#endregion + + +#region MAIN METHODS +#################################################################################################### + +func parse_glossary(text: String) -> String: + if not enabled: + return text + + var def_case_sensitive: bool = ProjectSettings.get_setting('dialogic/glossary/default_case_sensitive', true) + var def_color: Color = ProjectSettings.get_setting(SETTING_DEFAULT_COLOR, Color.POWDER_BLUE) + var regex := RegEx.new() + + for glossary: DialogicGlossary in glossaries: + + if !glossary.enabled: + continue + + for entry_value: Variant in glossary.entries.values(): + + if not entry_value is Dictionary: + continue + + var entry: Dictionary = entry_value + var entry_key: String = entry.get(DialogicGlossary.NAME_PROPERTY, "") + + # Older versions of the glossary resource do not have a property + # for their name, we must skip these. + # They can be updated by opening the resource in the glossary + # editor. + if entry_key.is_empty(): + continue + + if not entry.get('enabled', true): + continue + + var regex_options := glossary.get_set_regex_option(entry_key) + + if regex_options.is_empty(): + continue + + var pattern: String = r'(?<=\W|^)(?' + regex_options + r')(?!])(?=\W|$)' + + if entry.get('case_sensitive', def_case_sensitive): + regex.compile(pattern) + + else: + regex.compile('(?i)'+pattern) + + var color: String = entry.get('color', def_color).to_html() + + if entry_key in color_overrides: + color = color_overrides[entry_key].to_html() + + text = regex.sub(text, + '[url="' + entry_key + '"]' + + '[color=' + color + ']${word}[/color]' + + '[/url]', + true + ) + + return text + + +func add_glossary(path:String) -> void: + if ResourceLoader.exists(path): + var resource: DialogicGlossary = load(path) + + if resource is DialogicGlossary: + glossaries.append(resource) + else: + printerr('[Dialogic] The glossary file "' + path + '" is missing. Make sure it exists.') + + +## Iterates over all glossaries and returns the first one that matches the +## [param entry_key]. +## +## Runtime complexity: +## O(n), where n is the number of glossaries. +func find_glossary(entry_key: String) -> DialogicGlossary: + for glossary: DialogicGlossary in glossaries: + + if glossary.entries.has(entry_key): + return glossary + + return null + + +## Returns the first match for a given entry key. +## If translation is available and enabled, it will be translated +func get_entry(entry_key: String) -> Dictionary: + var glossary: DialogicGlossary = dialogic.Glossary.find_glossary(entry_key) + + var result := { + "title": "", + "text": "", + "extra": "", + "color": Color.WHITE, + } + + if glossary == null: + return {} + + var is_translation_enabled: bool = ProjectSettings.get_setting('dialogic/translation/enabled', false) + + var entry := glossary.get_entry(entry_key) + + if entry.is_empty(): + return {} + + result.color = entry.get("color") + if result.color == null: + result.color = ProjectSettings.get_setting(SETTING_DEFAULT_COLOR, Color.POWDER_BLUE) + + if is_translation_enabled and not glossary._translation_id.is_empty(): + var translation_key: String = glossary._translation_keys.get(entry_key) + var last_slash := translation_key.rfind('/') + + if last_slash == -1: + return {} + + var tr_base := translation_key.substr(0, last_slash) + + result.title = translate(tr_base, "title", entry) + result.text = translate(tr_base, "text", entry) + result.extra = translate(tr_base, "extra", entry) + else: + result.title = entry.get("title", "") + result.text = entry.get("text", "") + result.extra = entry.get("extra", "") + + ## PARSE TEXTS FOR VARIABLES + result.title = dialogic.VAR.parse_variables(result.title) + result.text = dialogic.VAR.parse_variables(result.text) + result.extra = dialogic.VAR.parse_variables(result.extra) + + return result + + + +## Tries to translate the property with the given +func translate(tr_base: String, property: StringName, fallback_entry: Dictionary) -> String: + var tr_key := tr_base.path_join(property) + var tr_value := tr(tr_key) + + if tr_key == tr_value: + tr_value = fallback_entry.get(property, "") + + return tr_value diff --git a/addons/dialogic/Modules/Glossary/subsystem_glossary.gd.uid b/addons/dialogic/Modules/Glossary/subsystem_glossary.gd.uid new file mode 100644 index 0000000..666f800 --- /dev/null +++ b/addons/dialogic/Modules/Glossary/subsystem_glossary.gd.uid @@ -0,0 +1 @@ +uid://drwqxg5amy4u diff --git a/addons/dialogic/Modules/HighlightPortrait/highlight_portrait_thumbnail.png b/addons/dialogic/Modules/HighlightPortrait/highlight_portrait_thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..33a594c77864e15660c1281e4c173ead7f3dae2d GIT binary patch literal 5955 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 literal 0 HcmV?d00001 diff --git a/addons/dialogic/Modules/HighlightPortrait/highlight_portrait_thumbnail.png.import b/addons/dialogic/Modules/HighlightPortrait/highlight_portrait_thumbnail.png.import new file mode 100644 index 0000000..1c112db --- /dev/null +++ b/addons/dialogic/Modules/HighlightPortrait/highlight_portrait_thumbnail.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dtt0l7qbkknfx" +path="res://.godot/imported/highlight_portrait_thumbnail.png-6fa128edf7f6ec29e7a5313b9c3e7412.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Modules/HighlightPortrait/highlight_portrait_thumbnail.png" +dest_files=["res://.godot/imported/highlight_portrait_thumbnail.png-6fa128edf7f6ec29e7a5313b9c3e7412.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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/dialogic/Modules/HighlightPortrait/index.gd b/addons/dialogic/Modules/HighlightPortrait/index.gd new file mode 100644 index 0000000..ec9b315 --- /dev/null +++ b/addons/dialogic/Modules/HighlightPortrait/index.gd @@ -0,0 +1,17 @@ +@tool +extends DialogicIndexer + + +func _get_portrait_scene_presets() -> Array[Dictionary]: + return [ + { + "path": this_folder.path_join("simple_highlight_portrait.tscn"), + "name": "Simple Highlight Portrait", + "description": "A portrait scene that displays a simple image, but changes color and moves to the front when this character is speaking.", + "author":"Dialogic", + "type": "General", + "icon":"", + "preview_image":[this_folder.path_join("highlight_portrait_thumbnail.png")], + "documentation":"", + }, + ] diff --git a/addons/dialogic/Modules/HighlightPortrait/index.gd.uid b/addons/dialogic/Modules/HighlightPortrait/index.gd.uid new file mode 100644 index 0000000..46483fc --- /dev/null +++ b/addons/dialogic/Modules/HighlightPortrait/index.gd.uid @@ -0,0 +1 @@ +uid://rsqhj802vgdj diff --git a/addons/dialogic/Modules/HighlightPortrait/simple_highlight_portrait.gd b/addons/dialogic/Modules/HighlightPortrait/simple_highlight_portrait.gd new file mode 100644 index 0000000..f2d39f3 --- /dev/null +++ b/addons/dialogic/Modules/HighlightPortrait/simple_highlight_portrait.gd @@ -0,0 +1,34 @@ +@tool +extends DialogicPortrait + +@export_group('Main') +@export_file var image := "" + +var unhighlighted_color := Color.DARK_GRAY +var _prev_z_index := 0 + +## Load anything related to the given character and portrait +func _update_portrait(passed_character:DialogicCharacter, passed_portrait:String) -> void: + apply_character_and_portrait(passed_character, passed_portrait) + + apply_texture($Portrait, image) + + +func _ready() -> void: + if not Engine.is_editor_hint(): + self.modulate = unhighlighted_color + + +func _should_do_portrait_update(_character: DialogicCharacter, _portrait: String) -> bool: + return true + + +func _highlight() -> void: + create_tween().tween_property(self, 'modulate', Color.WHITE, 0.15) + _prev_z_index = DialogicUtil.autoload().Portraits.get_character_info(character).get('z_index', 0) + DialogicUtil.autoload().Portraits.change_character_z_index(character, 99) + + +func _unhighlight() -> void: + create_tween().tween_property(self, 'modulate', unhighlighted_color, 0.15) + DialogicUtil.autoload().Portraits.change_character_z_index(character, _prev_z_index) diff --git a/addons/dialogic/Modules/HighlightPortrait/simple_highlight_portrait.gd.uid b/addons/dialogic/Modules/HighlightPortrait/simple_highlight_portrait.gd.uid new file mode 100644 index 0000000..6952887 --- /dev/null +++ b/addons/dialogic/Modules/HighlightPortrait/simple_highlight_portrait.gd.uid @@ -0,0 +1 @@ +uid://24gbl2wbl1d5 diff --git a/addons/dialogic/Modules/HighlightPortrait/simple_highlight_portrait.tscn b/addons/dialogic/Modules/HighlightPortrait/simple_highlight_portrait.tscn new file mode 100644 index 0000000..4d831c0 --- /dev/null +++ b/addons/dialogic/Modules/HighlightPortrait/simple_highlight_portrait.tscn @@ -0,0 +1,9 @@ +[gd_scene load_steps=2 format=3 uid="uid://br18lgpga2y2v"] + +[ext_resource type="Script" uid="uid://24gbl2wbl1d5" path="res://addons/dialogic/Modules/HighlightPortrait/simple_highlight_portrait.gd" id="1_ceqva"] + +[node name="DefaultPortrait" type="Node2D"] +script = ExtResource("1_ceqva") + +[node name="Portrait" type="Sprite2D" parent="."] +centered = false diff --git a/addons/dialogic/Modules/History/definition.svg b/addons/dialogic/Modules/History/definition.svg new file mode 100644 index 0000000..236ca35 --- /dev/null +++ b/addons/dialogic/Modules/History/definition.svg @@ -0,0 +1,3 @@ + + + diff --git a/addons/dialogic/Modules/History/definition.svg.import b/addons/dialogic/Modules/History/definition.svg.import new file mode 100644 index 0000000..93c651a --- /dev/null +++ b/addons/dialogic/Modules/History/definition.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dlwtdexd63bxi" +path="res://.godot/imported/definition.svg-dbaabe55d84e4ad95047a50fc6c13843.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Modules/History/definition.svg" +dest_files=["res://.godot/imported/definition.svg-dbaabe55d84e4ad95047a50fc6c13843.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Modules/History/event_history.gd b/addons/dialogic/Modules/History/event_history.gd new file mode 100644 index 0000000..180d7f0 --- /dev/null +++ b/addons/dialogic/Modules/History/event_history.gd @@ -0,0 +1,76 @@ +@tool +class_name DialogicHistoryEvent +extends DialogicEvent + +## Event that allows clearing, pausing and resuming of history functionality. + +enum Actions {CLEAR, PAUSE, RESUME} + +### Settings + +## The type of action: Clear, Pause or Resume +var action := Actions.PAUSE + + +################################################################################ +## EXECUTION +################################################################################ + +func _execute() -> void: + match action: + Actions.CLEAR: + dialogic.History.simple_history_content = [] + Actions.PAUSE: + dialogic.History.simple_history_enabled = false + Actions.RESUME: + dialogic.History.simple_history_enabled = true + + finish() + + +################################################################################ +## INITIALIZE +################################################################################ + +func _init() -> void: + event_name = "History" + set_default_color('Color9') + event_category = "Other" + event_sorting_index = 20 + + +################################################################################ +## SAVING/LOADING +################################################################################ + +func get_shortcode() -> String: + return "history" + +func get_shortcode_parameters() -> Dictionary: + return { + #param_name : property_info + "action" : {"property": "action", "default": Actions.PAUSE, + "suggestions": func(): return {"Clear":{'value':0, 'text_alt':['clear']}, "Pause":{'value':1, 'text_alt':['pause']}, "Resume":{'value':2, 'text_alt':['resume', 'start']}}}, + } + +################################################################################ +## EDITOR REPRESENTATION +################################################################################ + +func build_event_editor() -> void: + add_header_edit('action', ValueType.FIXED_OPTIONS, { + 'options': [ + { + 'label': 'Pause History', + 'value': Actions.PAUSE, + }, + { + 'label': 'Resume History', + 'value': Actions.RESUME, + }, + { + 'label': 'Clear History', + 'value': Actions.CLEAR, + }, + ] + }) diff --git a/addons/dialogic/Modules/History/event_history.gd.uid b/addons/dialogic/Modules/History/event_history.gd.uid new file mode 100644 index 0000000..74dde80 --- /dev/null +++ b/addons/dialogic/Modules/History/event_history.gd.uid @@ -0,0 +1 @@ +uid://dmedm3l78l7gx diff --git a/addons/dialogic/Modules/History/icon.svg b/addons/dialogic/Modules/History/icon.svg new file mode 100644 index 0000000..19c9239 --- /dev/null +++ b/addons/dialogic/Modules/History/icon.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/addons/dialogic/Modules/History/icon.svg.import b/addons/dialogic/Modules/History/icon.svg.import new file mode 100644 index 0000000..e1faac1 --- /dev/null +++ b/addons/dialogic/Modules/History/icon.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://1n5bqdv34pmy" +path="res://.godot/imported/icon.svg-82841efe3f86e947d4f66fd24dc8f52c.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Modules/History/icon.svg" +dest_files=["res://.godot/imported/icon.svg-82841efe3f86e947d4f66fd24dc8f52c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Modules/History/index.gd b/addons/dialogic/Modules/History/index.gd new file mode 100644 index 0000000..7791b1f --- /dev/null +++ b/addons/dialogic/Modules/History/index.gd @@ -0,0 +1,13 @@ +@tool +extends DialogicIndexer + + +func _get_events() -> Array: + return [this_folder.path_join('event_history.gd')] + + +func _get_subsystems() -> Array: + return [{'name':'History', 'script':this_folder.path_join('subsystem_history.gd')}] + +func _get_settings_pages() -> Array: + return [this_folder.path_join('settings_history.tscn')] diff --git a/addons/dialogic/Modules/History/index.gd.uid b/addons/dialogic/Modules/History/index.gd.uid new file mode 100644 index 0000000..47238a4 --- /dev/null +++ b/addons/dialogic/Modules/History/index.gd.uid @@ -0,0 +1 @@ +uid://bpcgxmwxm5pif diff --git a/addons/dialogic/Modules/History/settings_history.gd b/addons/dialogic/Modules/History/settings_history.gd new file mode 100644 index 0000000..97b5cd9 --- /dev/null +++ b/addons/dialogic/Modules/History/settings_history.gd @@ -0,0 +1,29 @@ +@tool +extends DialogicSettingsPage + + +func _get_priority() -> int: + return -10 + + +func _ready() -> void: + %SimpleHistoryEnabled.toggled.connect(setting_toggled.bind('dialogic/history/simple_history_enabled')) + %SimpleHistorySave.toggled.connect(setting_toggled.bind('dialogic/history/simple_history_save')) + %FullHistoryEnabled.toggled.connect(setting_toggled.bind('dialogic/history/full_history_enabled')) + %FullHistorySave.toggled.connect(setting_toggled.bind('dialogic/history/full_history_save')) + %AlreadyReadHistoryEnabled.toggled.connect(setting_toggled.bind('dialogic/history/visited_event_history_enabled')) + %SaveOnAutoSaveToggle.toggled.connect(setting_toggled.bind('dialogic/history/save_on_autosave')) + %SaveOnSaveToggle.toggled.connect(setting_toggled.bind('dialogic/history/save_on_save')) + + +func _refresh() -> void: + %SimpleHistoryEnabled.button_pressed = ProjectSettings.get_setting('dialogic/history/simple_history_enabled', false) + %SimpleHistorySave.button_pressed = ProjectSettings.get_setting('dialogic/history/simple_history_save', false) + %FullHistoryEnabled.button_pressed = ProjectSettings.get_setting('dialogic/history/full_history_enabled', false) + %FullHistorySave.button_pressed = ProjectSettings.get_setting('dialogic/history/full_history_save', false) + %AlreadyReadHistoryEnabled.button_pressed = ProjectSettings.get_setting('dialogic/history/visited_event_history_enabled', false) + + +func setting_toggled(button_pressed: bool, setting: String) -> void: + ProjectSettings.set_setting(setting, button_pressed) + ProjectSettings.save() diff --git a/addons/dialogic/Modules/History/settings_history.gd.uid b/addons/dialogic/Modules/History/settings_history.gd.uid new file mode 100644 index 0000000..a1c9502 --- /dev/null +++ b/addons/dialogic/Modules/History/settings_history.gd.uid @@ -0,0 +1 @@ +uid://cqfmftweedlvb diff --git a/addons/dialogic/Modules/History/settings_history.tscn b/addons/dialogic/Modules/History/settings_history.tscn new file mode 100644 index 0000000..f8451d0 --- /dev/null +++ b/addons/dialogic/Modules/History/settings_history.tscn @@ -0,0 +1,176 @@ +[gd_scene load_steps=5 format=3 uid="uid://b5yq6xh412ilm"] + +[ext_resource type="Script" uid="uid://cqfmftweedlvb" path="res://addons/dialogic/Modules/History/settings_history.gd" id="1_hbhst"] +[ext_resource type="PackedScene" uid="uid://dbpkta2tjsqim" path="res://addons/dialogic/Editor/Common/hint_tooltip_icon.tscn" id="2_wefye"] + +[sub_resource type="Image" id="Image_cvlu0"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_irr0a"] +image = SubResource("Image_cvlu0") + +[node name="History" type="PanelContainer"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_type_variation = &"DialogicPanelA" +script = ExtResource("1_hbhst") + +[node name="HistoryOptions" type="VBoxContainer" parent="."] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="Title3" type="Label" parent="HistoryOptions"] +layout_mode = 2 +theme_type_variation = &"DialogicSettingsSection" +text = "Simple History" + +[node name="HBoxContainer" type="HBoxContainer" parent="HistoryOptions"] +layout_mode = 2 + +[node name="Label" type="Label" parent="HistoryOptions/HBoxContainer"] +layout_mode = 2 +text = "Enabled" + +[node name="HintTooltip" parent="HistoryOptions/HBoxContainer" instance=ExtResource("2_wefye")] +layout_mode = 2 +tooltip_text = "When enabled, some events (Text, Join, Leave, Choice) will store a log. +Also, the default layout will feature the log panel option." +texture = SubResource("ImageTexture_irr0a") +hint_text = "When enabled, some events (Text, Join, Leave, Choice) will store a log. +Also, the default layout will feature the log panel option." + +[node name="SimpleHistoryEnabled" type="CheckBox" parent="HistoryOptions/HBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="HBoxContainer2" type="HBoxContainer" parent="HistoryOptions"] +layout_mode = 2 + +[node name="Label" type="Label" parent="HistoryOptions/HBoxContainer2"] +layout_mode = 2 +text = "Save and Load" + +[node name="HintTooltip" parent="HistoryOptions/HBoxContainer2" instance=ExtResource("2_wefye")] +layout_mode = 2 +tooltip_text = "When enabled, the simple history is included in the savegame." +texture = SubResource("ImageTexture_irr0a") +hint_text = "When enabled, the simple history is included in the savegame. Also, it is reset on Dialogic.clear(FULL_CLEAR)." + +[node name="SimpleHistorySave" type="CheckBox" parent="HistoryOptions/HBoxContainer2"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="Title" type="Label" parent="HistoryOptions"] +layout_mode = 2 +theme_type_variation = &"DialogicSettingsSection" +text = "Full History" + +[node name="HBoxContainer5" type="HBoxContainer" parent="HistoryOptions"] +layout_mode = 2 + +[node name="Label" type="Label" parent="HistoryOptions/HBoxContainer5"] +layout_mode = 2 +text = "Enabled" + +[node name="HintTooltip" parent="HistoryOptions/HBoxContainer5" instance=ExtResource("2_wefye")] +layout_mode = 2 +tooltip_text = "When enabled, stores a copy of each event." +texture = SubResource("ImageTexture_irr0a") +hint_text = "When enabled, stores a copy of each event." + +[node name="FullHistoryEnabled" type="CheckBox" parent="HistoryOptions/HBoxContainer5"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="HBoxContainer6" type="HBoxContainer" parent="HistoryOptions"] +layout_mode = 2 + +[node name="Label" type="Label" parent="HistoryOptions/HBoxContainer6"] +layout_mode = 2 +text = "Save and Load" + +[node name="HintTooltip" parent="HistoryOptions/HBoxContainer6" instance=ExtResource("2_wefye")] +layout_mode = 2 +tooltip_text = "When enabled, the full history is included in the savegame." +texture = SubResource("ImageTexture_irr0a") +hint_text = "When enabled, the full history is included in the savegame. Also, it is reset on Dialogic.clear(FULL_CLEAR)." + +[node name="FullHistorySave" type="CheckBox" parent="HistoryOptions/HBoxContainer6"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="Title2" type="Label" parent="HistoryOptions"] +layout_mode = 2 +theme_type_variation = &"DialogicSettingsSection" +text = "Seen Events History" + +[node name="HBoxContainer4" type="HBoxContainer" parent="HistoryOptions"] +layout_mode = 2 + +[node name="EnabledLabel" type="Label" parent="HistoryOptions/HBoxContainer4"] +layout_mode = 2 +text = "Enabled" + +[node name="HintTooltip" parent="HistoryOptions/HBoxContainer4" instance=ExtResource("2_wefye")] +layout_mode = 2 +tooltip_text = "Remembers whether events were already met in the timeline. +When enabled the signals \"Dialogic.History.visited_event\" and \"Dialogic.History.unvisited_event\" are emitted. +" +texture = SubResource("ImageTexture_irr0a") +hint_text = "Remembers whether events were already met in the timeline. +When enabled the signals \"Dialogic.History.visited_event\" and \"Dialogic.History.unvisited_event\" are emitted. +" + +[node name="AlreadyReadHistoryEnabled" type="CheckBox" parent="HistoryOptions/HBoxContainer4"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="HBoxContainerSaveOnAutoSave" type="HBoxContainer" parent="HistoryOptions"] +layout_mode = 2 + +[node name="EnabledLabel" type="Label" parent="HistoryOptions/HBoxContainerSaveOnAutoSave"] +layout_mode = 2 +text = "Save on Auto-Save signal" + +[node name="HintTooltip" parent="HistoryOptions/HBoxContainerSaveOnAutoSave" instance=ExtResource("2_wefye")] +layout_mode = 2 +tooltip_text = "Stores the already-visited history in a global save file when an Auto-Save occurs. +The Auto-Save is part of the Save settings." +texture = SubResource("ImageTexture_irr0a") +hint_text = "Stores the already-visited history in a global save file when an Auto-Save occurs. +The Auto-Save is part of the Save settings." + +[node name="SaveOnAutoSaveToggle" type="CheckBox" parent="HistoryOptions/HBoxContainerSaveOnAutoSave"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="HBoxContainerSaveOnSave" type="HBoxContainer" parent="HistoryOptions"] +layout_mode = 2 + +[node name="EnabledLabel" type="Label" parent="HistoryOptions/HBoxContainerSaveOnSave"] +layout_mode = 2 +text = "Save on Save signal" + +[node name="HintTooltip" parent="HistoryOptions/HBoxContainerSaveOnSave" instance=ExtResource("2_wefye")] +layout_mode = 2 +tooltip_text = "Stores the already-visited history in a global save file when a normal Save occurs. +This can be done via the Dialogic.Save.save method. +This setting ignores Auto-Saves." +texture = SubResource("ImageTexture_irr0a") +hint_text = "Stores the already-visited history in a global save file when a normal Save occurs. +This can be done via the Dialogic.Save.save method. +This setting ignores Auto-Saves." + +[node name="SaveOnSaveToggle" type="CheckBox" parent="HistoryOptions/HBoxContainerSaveOnSave"] +unique_name_in_owner = true +layout_mode = 2 diff --git a/addons/dialogic/Modules/History/subsystem_history.gd b/addons/dialogic/Modules/History/subsystem_history.gd new file mode 100644 index 0000000..d1371ea --- /dev/null +++ b/addons/dialogic/Modules/History/subsystem_history.gd @@ -0,0 +1,305 @@ +extends DialogicSubsystem + +## Subsystem that manages history storing. + +signal open_requested +signal close_requested + + +## Simple history that stores limited information +## Used for the history display +var simple_history_enabled := false +var simple_history_save := false +var simple_history_content : Array[Dictionary] = [] +signal simple_history_changed + +## Whether to keep a history of every Dialogic event encountered. +var full_event_history_enabled := false +var full_event_history_save := false + +## The full history of all Dialogic events encountered. +## Requires [member full_event_history_enabled] to be true. +var full_event_history_content: Array[DialogicEvent] = [] + +## Emitted if a new event has been inserted into the full event history. +signal full_event_history_changed + +## Read text history +## Stores which text events and choices have already been visited +var visited_event_history_enabled := false + +## A history of visited Dialogic events. +var visited_event_history_content := {} + +## Whether the last event has been encountered for the first time. +var _visited_last_event := false + +## Emitted if an encountered timeline event has been inserted into the visited +## event history. +## +## This will trigger only once per unique event instance. +signal visited_event + +## Emitted if an encountered timeline event has not been visited before. +signal unvisited_event + +## Used to store [member visited_event_history_content] in the global info file. +## You can change this to a custom name if you want to use a different key +## in the global save info file. +var visited_event_save_key := "visited_event_history_content" + +## Whether to automatically save the already-visited history on auto-save. +var save_visited_history_on_autosave := false: + set(value): + save_visited_history_on_autosave = value + _update_saved_connection(value) + + +## Whether to automatically save the already-visited history on manual save. +var save_visited_history_on_save := false: + set(value): + save_visited_history_on_save = value + _update_saved_connection(value) + + +## Starts and stops the connection to the [subsystem Save] subsystem's [signal saved] signal. +func _update_saved_connection(to_connect: bool) -> void: + if to_connect: + if not DialogicUtil.autoload().Save.saved.is_connected(_on_save): + DialogicUtil.autoload().Save.saved.connect(_on_save) + + else: + if DialogicUtil.autoload().Save.saved.is_connected(_on_save): + DialogicUtil.autoload().Save.saved.disconnect(_on_save) + + +#region INITIALIZE +#################################################################################################### + +func _ready() -> void: + dialogic.event_handled.connect(store_full_event) + dialogic.event_handled.connect(_check_seen) + + simple_history_enabled = ProjectSettings.get_setting('dialogic/history/simple_history_enabled', simple_history_enabled) + simple_history_save = ProjectSettings.get_setting('dialogic/history/simple_history_save', simple_history_save) + full_event_history_enabled = ProjectSettings.get_setting('dialogic/history/full_history_enabled', full_event_history_enabled) + full_event_history_save = ProjectSettings.get_setting('dialogic/history/full_history_save', full_event_history_save) + visited_event_history_enabled = ProjectSettings.get_setting('dialogic/history/visited_event_history_enabled', visited_event_history_enabled) + + + +func _on_save(info: Dictionary) -> void: + var is_autosave: bool = info["is_autosave"] + + var save_on_autosave := save_visited_history_on_autosave and is_autosave + var save_on_save := save_visited_history_on_save and not is_autosave + + if save_on_save or save_on_autosave: + save_visited_history() + + +func post_install() -> void: + save_visited_history_on_autosave = ProjectSettings.get_setting('dialogic/history/save_on_autosave', save_visited_history_on_autosave) + save_visited_history_on_save = ProjectSettings.get_setting('dialogic/history/save_on_save', save_visited_history_on_save) + + +func clear_game_state(clear_flag := DialogicGameHandler.ClearFlags.FULL_CLEAR) -> void: + if clear_flag == DialogicGameHandler.ClearFlags.FULL_CLEAR: + if simple_history_save: + simple_history_content = [] + dialogic.current_state_info.erase("history_simple") + if full_event_history_save: + full_event_history_content = [] + dialogic.current_state_info.erase("history_full") + + +func load_game_state(load_flag := LoadFlags.FULL_LOAD) -> void: + if load_flag == LoadFlags.FULL_LOAD: + if simple_history_save and dialogic.current_state_info.has("history_simple"): + simple_history_content.assign(dialogic.current_state_info["history_simple"]) + + if full_event_history_save and dialogic.current_state_info.has("history_full"): + full_event_history_content = [] + + for event_text in dialogic.current_state_info["history_full"]: + var event: DialogicEvent + for i in DialogicResourceUtil.get_event_cache(): + if i.is_valid_event(event_text): + event = i.duplicate() + break + event.from_text(event_text) + full_event_history_content.append(event) + + +func save_game_state() -> void: + if simple_history_save: + dialogic.current_state_info["history_simple"] = Array(simple_history_content) + else: + dialogic.current_state_info.erase("history_simple") + if full_event_history_save: + dialogic.current_state_info["history_full"] = [] + for event in full_event_history_content: + dialogic.current_state_info["history_full"].append(event.to_text()) + else: + dialogic.current_state_info.erase("history_full") + + +func open_history() -> void: + open_requested.emit() + + +func close_history() -> void: + close_requested.emit() + +#endregion + + +#region SIMPLE HISTORY +#################################################################################################### + +func store_simple_history_entry(text:String, event_type:String, extra_info := {}) -> void: + if !simple_history_enabled: return + extra_info['text'] = text + extra_info['event_type'] = event_type + simple_history_content.append(extra_info) + simple_history_changed.emit() + + +func get_simple_history() -> Array: + return simple_history_content + +#endregion + + +#region FULL EVENT HISTORY +#################################################################################################### + +## Called on each event. +func store_full_event(event: DialogicEvent) -> void: + if !full_event_history_enabled: return + full_event_history_content.append(event) + full_event_history_changed.emit() + + +#region ALREADY READ HISTORY +#################################################################################################### + +## Takes the current timeline event and creates a unique key for it. +## Uses the timeline resource path as well. +func _current_event_key() -> String: + var resource_path := dialogic.current_timeline.resource_path + var event_index := dialogic.current_event_idx + var event_key := _get_event_key(event_index, resource_path) + + return event_key + +## Composes an event key from the event index and the timeline path. +## If either of these variables are in an invalid state, the resulting +## key may be wrong. +## There are no safety checks in place. +func _get_event_key(event_index: int, timeline_path: String) -> String: + var event_idx := str(event_index) + var event_key := timeline_path + event_idx + + return event_key + + +## Called if an event is marked as visited. +func mark_event_as_visited(event_index := dialogic.current_event_idx, timeline := dialogic.current_timeline) -> void: + if !visited_event_history_enabled: + return + + var event_key := _get_event_key(event_index, timeline.resource_path) + + visited_event_history_content[event_key] = event_index + + +## Called on each event, but we filter for Text events. +func _check_seen(event: DialogicEvent) -> void: + if !visited_event_history_enabled: + return + + # At this point, we only care about Text events. + # There may be a more elegant way of filtering events. + # Especially since custom events require this event name. + if event.event_name != "Text": + return + + var event_key := _current_event_key() + + if event_key in visited_event_history_content: + visited_event.emit() + _visited_last_event = true + + else: + unvisited_event.emit() + _visited_last_event = false + + +## Whether the last event has been visited for the first time or not. +## This will return `true` exactly once for each unique timeline event instance. +func has_last_event_been_visited() -> bool: + return _visited_last_event + + +## If called with with no arguments, the method will return whether +## the last encountered event was visited before. +## +## Otherwise, if [param event_index] and [param timeline] are passed, +## the method will check if the event from that given timeline has been +## visited yet. +## +## If no [param timeline] is passed, the current timeline will be used. +## If there is no current timeline, `false` will be returned. +## +## If no [param event_index] is passed, the current event index will be used. +func has_event_been_visited(event_index := dialogic.current_event_idx, timeline := dialogic.current_timeline) -> bool: + if timeline == null: + return false + + var event_key := _get_event_key(event_index, timeline.resource_path) + var visited := event_key in visited_event_history_content + + return visited + + +## Saves all seen events to the global info file. +## This can be useful when the player saves the game. +## In visual novels, callings this at the end of a route can be useful, as the +## player may not save the game. +## +## Be aware, this won't add any events but completely overwrite the already saved ones. +## +## Relies on the [subsystem Save] subsystem. +func save_visited_history() -> void: + DialogicUtil.autoload().Save.set_global_info(visited_event_save_key, visited_event_history_content) + + +## Loads the seen events from the global info save file. +## Calling this when a game gets loaded may be useful. +## +## Relies on the [subsystem Save] subsystem. +func load_visited_history() -> void: + visited_event_history_content = get_saved_visited_history() + + +## Returns the saved already-visited history from the global info save file. +## If none exist in the global info file, returns an empty dictionary. +## +## Relies on the [subsystem Save] subsystem. +func get_saved_visited_history() -> Dictionary: + return DialogicUtil.autoload().Save.get_global_info(visited_event_save_key, {}) + + +## Resets the already-visited history in the global info save file. +## If [param reset_property] is true, it will also reset the already-visited +## history in the Dialogic Autoload. +## +## Relies on the [subsystem Save] subsystem. +func reset_visited_history(reset_property := true) -> void: + DialogicUtil.autoload().Save.set_global_info(visited_event_save_key, {}) + + if reset_property: + visited_event_history_content = {} + +#endregion diff --git a/addons/dialogic/Modules/History/subsystem_history.gd.uid b/addons/dialogic/Modules/History/subsystem_history.gd.uid new file mode 100644 index 0000000..53c77cc --- /dev/null +++ b/addons/dialogic/Modules/History/subsystem_history.gd.uid @@ -0,0 +1 @@ +uid://bfcdxeqbr1by1 diff --git a/addons/dialogic/Modules/Jump/event_jump.gd b/addons/dialogic/Modules/Jump/event_jump.gd new file mode 100644 index 0000000..9566e46 --- /dev/null +++ b/addons/dialogic/Modules/Jump/event_jump.gd @@ -0,0 +1,166 @@ +@tool +class_name DialogicJumpEvent +extends DialogicEvent + +## Event that allows starting another timeline. Also can jump to a label in that or the current timeline. + + +### Settings + +## The timeline to jump to, if null then it's the current one. This setting should be a dialogic timeline resource. +var timeline: DialogicTimeline +## If not empty, the event will try to find a Label event with this set as name. Empty by default.. +var label_name := "" + + +### Helpers + +## Used to set the timeline resource from the unique name identifier and vice versa +var timeline_identifier := "": + get: + if timeline: + var identifier := timeline.get_identifier() + if not identifier.is_empty(): + return identifier + return timeline_identifier + set(value): + timeline_identifier = value + timeline = DialogicResourceUtil.get_timeline_resource(value) + if (not timeline_identifier in DialogicResourceUtil.get_label_cache().keys() + or not label_name in DialogicResourceUtil.get_label_cache()[timeline_identifier]): + label_name = "" + ui_update_needed.emit() + + +################################################################################ +## EXECUTION +################################################################################ + +func _execute() -> void: + dialogic.Jump.push_to_jump_stack() + if timeline and timeline != dialogic.current_timeline: + dialogic.Jump.switched_timeline.emit({'previous_timeline':dialogic.current_timeline, 'timeline':timeline, 'label':label_name}) + dialogic.start_timeline(timeline, label_name) + else: + if label_name: + dialogic.Jump.jump_to_label(label_name) + finish() + else: + dialogic.start_timeline(dialogic.current_timeline) + + +################################################################################ +## INITIALIZE +################################################################################ + +func _init() -> void: + event_name = "Jump" + set_default_color('Color4') + event_category = "Flow" + event_sorting_index = 4 + + +func _get_icon() -> Resource: + return load(self.get_script().get_path().get_base_dir().path_join('icon_jump.png')) + + +################################################################################ +## SAVING/LOADING +################################################################################ +func to_text() -> String: + var result := "jump " + if timeline_identifier: + result += timeline_identifier+'/' + if label_name: + result += label_name + elif label_name: + result += label_name + return result + + +func from_text(string:String) -> void: + var result := RegEx.create_from_string(r"jump (?.*\/)?(?

      A?iL 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 Vh=zn(*pUDL002ovPDHLkV1o5JwwnL| literal 0 HcmV?d00001 diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Portraits/preview.png.import b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Portraits/preview.png.import new file mode 100644 index 0000000..98f6f42 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Portraits/preview.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ypmfci4n2abt" +path="res://.godot/imported/preview.png-8a6dae1a8e205382d354326ea6961ed2.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Portraits/preview.png" +dest_files=["res://.godot/imported/preview.png-8a6dae1a8e205382d354326ea6961ed2.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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/dialogic/Modules/DefaultLayoutParts/Layer_VN_Portraits/vn_portrait_layer.gd b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Portraits/vn_portrait_layer.gd new file mode 100644 index 0000000..08576ca --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Portraits/vn_portrait_layer.gd @@ -0,0 +1,14 @@ +@tool +extends DialogicLayoutLayer + +## A layer that allows showing 5 portraits, like in a visual novel. + +## The canvas layer that the portraits are on. +@export var portrait_size_mode: DialogicNode_PortraitContainer.SizeModes = DialogicNode_PortraitContainer.SizeModes.FIT_SCALE_HEIGHT + + +func _apply_export_overrides() -> void: + # apply portrait size + for child: DialogicNode_PortraitContainer in %Portraits.get_children(): + child.size_mode = portrait_size_mode + child.update_portrait_transforms() diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Portraits/vn_portrait_layer.gd.uid b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Portraits/vn_portrait_layer.gd.uid new file mode 100644 index 0000000..a69879b --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Portraits/vn_portrait_layer.gd.uid @@ -0,0 +1 @@ +uid://cx1i44s2olq2d diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Portraits/vn_portrait_layer.tscn b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Portraits/vn_portrait_layer.tscn new file mode 100644 index 0000000..2f7ca1e --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Portraits/vn_portrait_layer.tscn @@ -0,0 +1,84 @@ +[gd_scene load_steps=3 format=3 uid="uid://cy1y14inwkplb"] + +[ext_resource type="Script" uid="uid://cx1i44s2olq2d" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Portraits/vn_portrait_layer.gd" id="1_1i7em"] +[ext_resource type="Script" uid="uid://d0ptqnbudhkyj" path="res://addons/dialogic/Modules/Character/node_portrait_container.gd" id="1_rxdcc"] + +[node name="VN_PortraitLayer" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +script = ExtResource("1_1i7em") + +[node name="Portraits" type="Control" parent="."] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 + +[node name="DialogicNode_PortraitContainer1" type="Control" parent="Portraits"] +layout_mode = 1 +anchor_right = 0.2 +anchor_bottom = 1.0 +offset_right = -1.52588e-05 +grow_vertical = 2 +pivot_offset = Vector2(115.2, 648) +mouse_filter = 2 +script = ExtResource("1_rxdcc") +container_ids = PackedStringArray("leftmost", "0") +metadata/_edit_use_anchors_ = true + +[node name="DialogicNode_PortraitContainer2" type="Control" parent="Portraits"] +layout_mode = 1 +anchor_left = 0.2 +anchor_right = 0.4 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +script = ExtResource("1_rxdcc") +container_ids = PackedStringArray("left", "1") +metadata/_edit_use_anchors_ = true + +[node name="DialogicNode_PortraitContainer3" type="Control" parent="Portraits"] +layout_mode = 1 +anchor_left = 0.4 +anchor_right = 0.6 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +script = ExtResource("1_rxdcc") +container_ids = PackedStringArray("center", "middle", "2") +metadata/_edit_use_anchors_ = true + +[node name="DialogicNode_PortraitContainer4" type="Control" parent="Portraits"] +layout_mode = 1 +anchor_left = 0.6 +anchor_right = 0.8 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +script = ExtResource("1_rxdcc") +container_ids = PackedStringArray("right", "3") +metadata/_edit_use_anchors_ = true + +[node name="DialogicNode_PortraitContainer5" type="Control" parent="Portraits"] +layout_mode = 1 +anchor_left = 0.8 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +script = ExtResource("1_rxdcc") +container_ids = PackedStringArray("rightmost", "4") +metadata/_edit_use_anchors_ = true diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/animations.gd b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/animations.gd new file mode 100644 index 0000000..c03b3ee --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/animations.gd @@ -0,0 +1,93 @@ +extends AnimationPlayer + +## A custom script/node that adds some animations to the textbox. + +# Careful: Sync these with the ones in the root script! +enum AnimationsIn {NONE, POP_IN, FADE_UP} +enum AnimationsOut {NONE, POP_OUT, FADE_DOWN} +enum AnimationsNewText {NONE, WIGGLE} + +var animation_in: AnimationsIn +var animation_out: AnimationsOut +var animation_new_text: AnimationsNewText + +var full_clear := true + + +func get_text_panel() -> PanelContainer: + return %DialogTextPanel + + +func get_dialog() -> DialogicNode_DialogText: + return %DialogicNode_DialogText + + +func _ready() -> void: + var text_system: Node = DialogicUtil.autoload().get(&'Text') + text_system.connect(&'animation_textbox_hide', _on_textbox_hide) + text_system.connect(&'animation_textbox_show', _on_textbox_show) + text_system.connect(&'animation_textbox_new_text', _on_textbox_new_text) + text_system.connect(&'about_to_show_text', _on_about_to_show_text) + var animation_system: Node = DialogicUtil.autoload().get(&'Animations') + animation_system.connect(&'animation_interrupted', _on_animation_interrupted) + + +func _on_textbox_show() -> void: + if animation_in == AnimationsIn.NONE: + return + play('RESET') + var animation_system: Node = DialogicUtil.autoload().get(&'Animations') + animation_system.call(&'start_animating') + get_text_panel().get_parent().get_parent().set(&'modulate', Color.TRANSPARENT) + get_dialog().text = "" + match animation_in: + AnimationsIn.POP_IN: + play("textbox_pop") + AnimationsIn.FADE_UP: + play("textbox_fade_up") + if not animation_finished.is_connected(Callable(animation_system, &'animation_finished')): + animation_finished.connect(Callable(animation_system, &'animation_finished'), CONNECT_ONE_SHOT) + + +func _on_textbox_hide() -> void: + if animation_out == AnimationsOut.NONE: + return + play('RESET') + var animation_system: Node = DialogicUtil.autoload().get(&'Animations') + animation_system.call(&'start_animating') + match animation_out: + AnimationsOut.POP_OUT: + play_backwards("textbox_pop") + AnimationsOut.FADE_DOWN: + play_backwards("textbox_fade_up") + + if not animation_finished.is_connected(Callable(animation_system, &'animation_finished')): + animation_finished.connect(Callable(animation_system, &'animation_finished'), CONNECT_ONE_SHOT) + + +func _on_about_to_show_text(info:Dictionary) -> void: + full_clear = !info.append + + +func _on_textbox_new_text() -> void: + if DialogicUtil.autoload().Inputs.auto_skip.enabled: + return + + if animation_new_text == AnimationsNewText.NONE: + return + + var animation_system: Node = DialogicUtil.autoload().get(&'Animations') + animation_system.call(&'start_animating') + if full_clear: + get_dialog().text = "" + match animation_new_text: + AnimationsNewText.WIGGLE: + play("new_text") + + if not animation_finished.is_connected(Callable(animation_system, &'animation_finished')): + animation_finished.connect(Callable(animation_system, &'animation_finished'), CONNECT_ONE_SHOT) + + +func _on_animation_interrupted() -> void: + if is_playing(): + stop() diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/animations.gd.uid b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/animations.gd.uid new file mode 100644 index 0000000..b19a51f --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/animations.gd.uid @@ -0,0 +1 @@ +uid://bfc03rn8slceu diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/autoadvance_indicator.gd b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/autoadvance_indicator.gd new file mode 100644 index 0000000..a4384bd --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/autoadvance_indicator.gd @@ -0,0 +1,13 @@ +extends Range + +var enabled: bool = true + +func _process(_delta : float) -> void: + if !enabled: + hide() + return + if DialogicUtil.autoload().Inputs.auto_advance.get_progress() < 0: + hide() + else: + show() + value = DialogicUtil.autoload().Inputs.auto_advance.get_progress() diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/autoadvance_indicator.gd.uid b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/autoadvance_indicator.gd.uid new file mode 100644 index 0000000..54c1e69 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/autoadvance_indicator.gd.uid @@ -0,0 +1 @@ +uid://bklme8oymw6h7 diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/next.svg b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/next.svg new file mode 100644 index 0000000..ae877a2 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/next.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/next.svg.import b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/next.svg.import new file mode 100644 index 0000000..7a3fef1 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/next.svg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b0rpqfg4fhebk" +path="res://.godot/imported/next.svg-689f85597f487815b8ddefa23d22bf6f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/next.svg" +dest_files=["res://.godot/imported/next.svg-689f85597f487815b8ddefa23d22bf6f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/part_config.cfg b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/part_config.cfg new file mode 100644 index 0000000..e94bc6f --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/part_config.cfg @@ -0,0 +1,7 @@ +[style] +type = "Layer" +name = "Visual Novel Textbox" +author = "Dialogic" +description = "A textbox in a VN style." +scene = "vn_textbox_layer.tscn" +icon = "textbox_layer_icon.svg" diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/preview.png b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/preview.png new file mode 100644 index 0000000000000000000000000000000000000000..413d09bb814336386938883c7485705d360a5892 GIT binary patch literal 3353 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 literal 0 HcmV?d00001 diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/preview.png.import b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/preview.png.import new file mode 100644 index 0000000..0a3961e --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/preview.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dd4pvssu5dlqf" +path="res://.godot/imported/preview.png-38205c265cdc5033fdb5a79a6f5d3394.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/preview.png" +dest_files=["res://.godot/imported/preview.png-38205c265cdc5033fdb5a79a6f5d3394.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/textbox_layer_icon.svg b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/textbox_layer_icon.svg new file mode 100644 index 0000000..698f5d9 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/textbox_layer_icon.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/textbox_layer_icon.svg.import b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/textbox_layer_icon.svg.import new file mode 100644 index 0000000..fdd52d2 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/textbox_layer_icon.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cgx0ejya2mtmn" +path="res://.godot/imported/textbox_layer_icon.svg-d6678fedd53dcb59cc32e1c443754ad5.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/textbox_layer_icon.svg" +dest_files=["res://.godot/imported/textbox_layer_icon.svg-d6678fedd53dcb59cc32e1c443754ad5.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=0.3 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/vn_textbox_default_panel.tres b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/vn_textbox_default_panel.tres new file mode 100644 index 0000000..07489b4 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/vn_textbox_default_panel.tres @@ -0,0 +1,12 @@ +[gd_resource type="StyleBoxFlat" format=3 uid="uid://dkv1pl1c1dq6"] + +[resource] +content_margin_left = 15.0 +content_margin_top = 15.0 +content_margin_right = 15.0 +content_margin_bottom = 15.0 +bg_color = Color(1, 1, 1, 1) +corner_radius_top_left = 5 +corner_radius_top_right = 5 +corner_radius_bottom_right = 5 +corner_radius_bottom_left = 5 diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/vn_textbox_layer.gd b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/vn_textbox_layer.gd new file mode 100644 index 0000000..95a4ce3 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/vn_textbox_layer.gd @@ -0,0 +1,278 @@ +@tool +extends DialogicLayoutLayer +## This layer's scene file contains following nodes: +## - a dialog_text node +## - a name_label node +## - a next_indicator node +## - a type_sound node +## +## As well as custom: +## - animations +## - auto-advance progress indicator +## +## If you want to customize this layer, here is a little rundown of this layer: +## The Layer Settings are divided into the `@export_group`s below. +## They get applied in [method _apply_export_overrides]. +## Each `@export_group` has its own method to apply the settings to the scene. +## If you want to change a specific part inside the scene, you can simply +## remove or add # (commenting) to the method line. + + + +enum Alignments {LEFT, CENTER, RIGHT} + +enum AnimationsIn {NONE, POP_IN, FADE_UP} +enum AnimationsOut {NONE, POP_OUT, FADE_DOWN} +enum AnimationsNewText {NONE, WIGGLE} + +@export_group("Text") + +@export_subgroup("Alignment & Size") +@export var text_alignment: Alignments= Alignments.LEFT +@export var text_use_global_size: bool = true +@export var text_size: int = 15 + +@export_subgroup("Color") +@export var text_use_global_color: bool = true +@export var text_custom_color: Color = Color.WHITE + +@export_subgroup('Font') +@export var text_use_global_font: bool = true +@export_file('*.ttf', '*.tres') var normal_font: String = "" +@export_file('*.ttf', '*.tres') var bold_font: String = "" +@export_file('*.ttf', '*.tres') var italics_font: String = "" +@export_file('*.ttf', '*.tres') var bold_italics_font: String = "" + + +@export_group("Box") + +@export_subgroup("Panel") +@export_file("*.tres") var box_panel: String = this_folder.path_join("vn_textbox_default_panel.tres") + +@export_subgroup("Color") +@export var box_color_use_global: bool = true +@export var box_color_custom: Color = Color.BLACK + +@export_subgroup("Size & Position") +@export var box_size: Vector2 = Vector2(550, 110) +@export var box_margin_bottom: int = 15 + +@export_subgroup("Animation") +@export var box_animation_in: AnimationsIn = AnimationsIn.FADE_UP +@export var box_animation_out: AnimationsOut = AnimationsOut.FADE_DOWN +@export var box_animation_new_text: AnimationsNewText = AnimationsNewText.NONE + + +@export_group("Name Label") + +@export_subgroup('Color') +@export var name_label_use_global_color: bool= true +@export var name_label_use_character_color: bool = true +@export var name_label_custom_color: Color = Color.WHITE + +@export_subgroup('Font') +@export var name_label_use_global_font: bool = true +@export_file('*.ttf', '*.tres') var name_label_font: String = "" +@export var name_label_use_global_font_size: bool = true +@export var name_label_custom_font_size: int = 15 + +@export_subgroup('Box') +@export_file("*.tres") var name_label_box_panel: String = this_folder.path_join("vn_textbox_name_label_panel.tres") +@export var name_label_box_use_global_color: bool = true +@export var name_label_box_modulate: Color = box_color_custom + +@export_subgroup('Alignment') +@export var name_label_alignment: Alignments = Alignments.LEFT +@export var name_label_box_offset: Vector2 = Vector2.ZERO + + +@export_group("Indicators") + +@export_subgroup("Next Indicator") +@export var next_indicator_enabled: bool = true +@export var next_indicator_show_on_questions: bool = true +@export var next_indicator_show_on_autoadvance: bool = false +@export_enum('bounce', 'blink', 'none') var next_indicator_animation: int = 0 +@export_file("*.png","*.svg","*.tres") var next_indicator_texture: String = '' +@export var next_indicator_size: Vector2 = Vector2(25,25) + +@export_subgroup("Autoadvance") +@export var autoadvance_progressbar: bool = true + + +@export_group('Sounds') + +@export_subgroup('Typing Sounds') +@export var typing_sounds_enabled: bool = true +@export var typing_sounds_mode: DialogicNode_TypeSounds.Modes = DialogicNode_TypeSounds.Modes.INTERRUPT +@export_dir var typing_sounds_sounds_folder: String = "res://addons/dialogic/Example Assets/sound-effects/" +@export_file("*.wav", "*.ogg", "*.mp3") var typing_sounds_end_sound: String = "" +@export_range(1, 999, 1) var typing_sounds_every_nths_character: int = 1 +@export_range(0.01, 4, 0.01) var typing_sounds_pitch: float = 1.0 +@export_range(0.0, 3.0) var typing_sounds_pitch_variance: float = 0.0 +@export_range(-80, 24, 0.01) var typing_sounds_volume: float = -10 +@export_range(0.0, 10) var typing_sounds_volume_variance: float = 0.0 +@export var typing_sounds_ignore_characters: String = " .,!?" + + +func _apply_export_overrides() -> void: + if !is_inside_tree(): + await ready + + ## FONT SETTINGS + _apply_text_settings() + + + ## BOX SETTINGS + _apply_box_settings() + + ## BOX ANIMATIONS + _apply_box_animations_settings() + + ## NAME LABEL SETTINGS + _apply_name_label_settings() + + ## NEXT INDICATOR SETTINGS + _apply_indicator_settings() + + ## OTHER + var progress_bar: ProgressBar = %AutoAdvanceProgressbar + progress_bar.set(&'enabled', autoadvance_progressbar) + + #### SOUNDS + + ## TYPING SOUNDS + _apply_sounds_settings() + + +## Applies all text box settings to the scene. +## Except the box animations. +func _apply_box_settings() -> void: + var dialog_text_panel: PanelContainer = %DialogTextPanel + if ResourceLoader.exists(box_panel): + dialog_text_panel.add_theme_stylebox_override(&'panel', load(box_panel) as StyleBox) + + if box_color_use_global: + dialog_text_panel.self_modulate = get_global_setting(&'bg_color', box_color_custom) + else: + dialog_text_panel.self_modulate = box_color_custom + + var sizer: Control = %Sizer + sizer.size = box_size + sizer.position = box_size * Vector2(-0.5, -1)+Vector2(0, -box_margin_bottom) + + +## Applies box animations settings to the scene. +func _apply_box_animations_settings() -> void: + var animations: AnimationPlayer = %Animations + animations.set(&'animation_in', box_animation_in) + animations.set(&'animation_out', box_animation_out) + animations.set(&'animation_new_text', box_animation_new_text) + + +## Applies all name label settings to the scene. +func _apply_name_label_settings() -> void: + var name_label: DialogicNode_NameLabel = %DialogicNode_NameLabel + + if name_label_use_global_font_size: + name_label.add_theme_font_size_override(&"font_size", get_global_setting(&'font_size', name_label_custom_font_size) as int) + else: + name_label.add_theme_font_size_override(&"font_size", name_label_custom_font_size) + + if name_label_use_global_font and get_global_setting(&'font', false): + name_label.add_theme_font_override(&'font', load(get_global_setting(&'font', '') as String) as Font) + elif not name_label_font.is_empty(): + name_label.add_theme_font_override(&'font', load(name_label_font) as Font) + + if name_label_use_global_color: + name_label.add_theme_color_override(&"font_color", get_global_setting(&'font_color', name_label_custom_color) as Color) + else: + name_label.add_theme_color_override(&"font_color", name_label_custom_color) + + name_label.use_character_color = name_label_use_character_color + + var name_label_panel: PanelContainer = %NameLabelPanel + if ResourceLoader.exists(name_label_box_panel): + name_label_panel.add_theme_stylebox_override(&'panel', load(name_label_box_panel) as StyleBox) + else: + name_label_panel.add_theme_stylebox_override(&'panel', load(this_folder.path_join("vn_textbox_name_label_panel.tres")) as StyleBox) + + if name_label_box_use_global_color: + name_label_panel.self_modulate = get_global_setting(&'bg_color', name_label_box_modulate) + else: + name_label_panel.self_modulate = name_label_box_modulate + var dialog_text_panel: PanelContainer = %DialogTextPanel + name_label_panel.position = name_label_box_offset+Vector2(0, -40) + name_label_panel.position -= Vector2( + dialog_text_panel.get_theme_stylebox(&'panel', &'PanelContainer').content_margin_left, + dialog_text_panel.get_theme_stylebox(&'panel', &'PanelContainer').content_margin_top) + name_label_panel.anchor_left = name_label_alignment/2.0 + name_label_panel.anchor_right = name_label_alignment/2.0 + name_label_panel.grow_horizontal = [1, 2, 0][name_label_alignment] + + +## Applies all text settings to the scene. +func _apply_text_settings() -> void: + var dialog_text: DialogicNode_DialogText = %DialogicNode_DialogText + dialog_text.alignment = text_alignment as DialogicNode_DialogText.Alignment + + if text_use_global_size: + text_size = get_global_setting(&'font_size', text_size) + dialog_text.add_theme_font_size_override(&"normal_font_size", text_size) + dialog_text.add_theme_font_size_override(&"bold_font_size", text_size) + dialog_text.add_theme_font_size_override(&"italics_font_size", text_size) + dialog_text.add_theme_font_size_override(&"bold_italics_font_size", text_size) + + if text_use_global_color: + dialog_text.add_theme_color_override(&"default_color", get_global_setting(&'font_color', text_custom_color) as Color) + else: + dialog_text.add_theme_color_override(&"default_color", text_custom_color) + + if text_use_global_font and get_global_setting(&'font', false): + dialog_text.add_theme_font_override(&"normal_font", load(get_global_setting(&'font', '') as String) as Font) + elif !normal_font.is_empty(): + dialog_text.add_theme_font_override(&"normal_font", load(normal_font) as Font) + if !bold_font.is_empty(): + dialog_text.add_theme_font_override(&"bold_font", load(bold_font) as Font) + if !italics_font.is_empty(): + dialog_text.add_theme_font_override(&"italics_font", load(italics_font) as Font) + if !bold_italics_font.is_empty(): + dialog_text.add_theme_font_override(&"bold_italics_font", load(bold_italics_font) as Font) + + +## Applies all indicator settings to the scene. +func _apply_indicator_settings() -> void: + var next_indicator: DialogicNode_NextIndicator = %NextIndicator + next_indicator.enabled = next_indicator_enabled + + if next_indicator_enabled: + next_indicator.animation = next_indicator_animation as DialogicNode_NextIndicator.Animations + if ResourceLoader.exists(next_indicator_texture): + next_indicator.texture = load(next_indicator_texture) + next_indicator.show_on_questions = next_indicator_show_on_questions + next_indicator.show_on_autoadvance = next_indicator_show_on_autoadvance + next_indicator.texture_size = next_indicator_size + + +## Applies all sound settings to the scene. +func _apply_sounds_settings() -> void: + var type_sounds: DialogicNode_TypeSounds = %DialogicNode_TypeSounds + type_sounds.enabled = typing_sounds_enabled + type_sounds.mode = typing_sounds_mode + + if not typing_sounds_sounds_folder.is_empty(): + type_sounds.sounds = DialogicNode_TypeSounds.load_sounds_from_path(typing_sounds_sounds_folder) + else: + type_sounds.sounds.clear() + + if not typing_sounds_end_sound.is_empty(): + type_sounds.end_sound = load(typing_sounds_end_sound) + else: + type_sounds.end_sound = null + + type_sounds.play_every_character = typing_sounds_every_nths_character + type_sounds.base_pitch = typing_sounds_pitch + type_sounds.base_volume = typing_sounds_volume + type_sounds.pitch_variance = typing_sounds_pitch_variance + type_sounds.volume_variance = typing_sounds_volume_variance + type_sounds.ignore_characters = typing_sounds_ignore_characters diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/vn_textbox_layer.gd.uid b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/vn_textbox_layer.gd.uid new file mode 100644 index 0000000..d7ca10e --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/vn_textbox_layer.gd.uid @@ -0,0 +1 @@ +uid://bl43m5qw8pso3 diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/vn_textbox_layer.tscn b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/vn_textbox_layer.tscn new file mode 100644 index 0000000..4621c61 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/vn_textbox_layer.tscn @@ -0,0 +1,345 @@ +[gd_scene load_steps=17 format=3 uid="uid://bquja8jyk8kbr"] + +[ext_resource type="Script" uid="uid://bl43m5qw8pso3" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/vn_textbox_layer.gd" id="1_bpydr"] +[ext_resource type="Script" uid="uid://bfc03rn8slceu" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/animations.gd" id="2_xy7a2"] +[ext_resource type="Script" uid="uid://drhfq6rmdeuri" path="res://addons/dialogic/Modules/Text/node_dialog_text.gd" id="3_4634k"] +[ext_resource type="Script" uid="uid://dpv2dfiv5dhmr" path="res://addons/dialogic/Modules/Text/node_type_sound.gd" id="4_ma5mw"] +[ext_resource type="Script" uid="uid://dve1vwse2peji" path="res://addons/dialogic/Modules/Text/node_next_indicator.gd" id="5_40a50"] +[ext_resource type="Script" uid="uid://bklme8oymw6h7" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/autoadvance_indicator.gd" id="6_07xym"] +[ext_resource type="StyleBox" uid="uid://dkv1pl1c1dq6" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/vn_textbox_default_panel.tres" id="3_ssa84"] +[ext_resource type="Texture2D" uid="uid://b0rpqfg4fhebk" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/next.svg" id="6_uch03"] +[ext_resource type="Script" uid="uid://bak74s0kcr0ao" path="res://addons/dialogic/Modules/Text/node_name_label.gd" id="7_bi7sh"] +[ext_resource type="StyleBox" uid="uid://m7gyepkysu83" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/vn_textbox_name_label_panel.tres" id="9_yg8ig"] + +[sub_resource type="Animation" id="Animation_au0a2"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Anchor/AnimationParent:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(0, 0)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Anchor/AnimationParent:rotation") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Anchor/AnimationParent:scale") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(1, 1)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Anchor/AnimationParent:modulate") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(1, 1, 1, 1)] +} +tracks/4/type = "bezier" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("Anchor/AnimationParent/Sizer/DialogTextPanel:rotation") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"handle_modes": PackedInt32Array(0), +"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0), +"times": PackedFloat32Array(0) +} + +[sub_resource type="Animation" id="Animation_6kbwc"] +resource_name = "new_text" +length = 0.4 +tracks/0/type = "bezier" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Anchor/AnimationParent/Sizer/DialogTextPanel:rotation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"handle_modes": PackedInt32Array(3, 3, 3, 3, 3), +"points": PackedFloat32Array(0, -0.025, 0, 0.025, 0, 0.005, -0.025, 0, 0.025, 0, -0.005, -0.025, 0, 0.025, 0, 0.005, -0.025, 0, 0.025, 0, 0, -0.025, 0, 0.025, 0), +"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4) +} + +[sub_resource type="Animation" id="Animation_g6k55"] +resource_name = "textbox_fade_up" +length = 0.7 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Anchor/AnimationParent:position") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.3, 0.7), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector2(0, 50), Vector2(0, 19.6793), Vector2(0, 0)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Anchor/AnimationParent:modulate") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0.1, 0.6), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Anchor/AnimationParent:rotation") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Anchor/AnimationParent:scale") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(1, 1)] +} + +[sub_resource type="Animation" id="Animation_htbgc"] +resource_name = "textbox_pop" +length = 0.3 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Anchor/AnimationParent:position") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(0, 0)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Anchor/AnimationParent:rotation") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.2, 0.3), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [-0.0899883, 0.0258223, 0.0] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Anchor/AnimationParent:scale") +tracks/2/interp = 2 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 0.2, 0.3), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector2(0.793957, 0.778082), Vector2(0.937299, 1.14248), Vector2(1, 1)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Anchor/AnimationParent:modulate") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0, 0.3), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_c14kh"] +_data = { +&"RESET": SubResource("Animation_au0a2"), +&"new_text": SubResource("Animation_6kbwc"), +&"textbox_fade_up": SubResource("Animation_g6k55"), +&"textbox_pop": SubResource("Animation_htbgc") +} + +[sub_resource type="FontVariation" id="FontVariation_v8y64"] + +[node name="VN_TextboxLayer" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +script = ExtResource("1_bpydr") +box_panel = "res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/vn_textbox_default_panel.tres" +box_size = Vector2(550, 150) +name_label_box_panel = "res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/vn_textbox_name_label_panel.tres" +name_label_box_modulate = Color(0, 0, 0, 1) + +[node name="Animations" type="AnimationPlayer" parent="."] +unique_name_in_owner = true +libraries = { +"": SubResource("AnimationLibrary_c14kh") +} +autoplay = "RESET" +script = ExtResource("2_xy7a2") + +[node name="Anchor" type="Control" parent="."] +layout_mode = 1 +anchors_preset = 7 +anchor_left = 0.5 +anchor_top = 1.0 +anchor_right = 0.5 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 0 + +[node name="AnimationParent" type="Control" parent="Anchor"] +layout_mode = 1 +anchors_preset = 7 +anchor_left = 0.5 +anchor_top = 1.0 +anchor_right = 0.5 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 0 +mouse_filter = 2 + +[node name="Sizer" type="Control" parent="Anchor/AnimationParent"] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = 7 +anchor_left = 0.5 +anchor_top = 1.0 +anchor_right = 0.5 +anchor_bottom = 1.0 +offset_left = -150.0 +offset_top = -50.0 +offset_right = 150.0 +grow_horizontal = 2 +grow_vertical = 0 +mouse_filter = 2 + +[node name="DialogTextPanel" type="PanelContainer" parent="Anchor/AnimationParent/Sizer"] +unique_name_in_owner = true +self_modulate = Color(0.00784314, 0.00784314, 0.00784314, 0.843137) +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_ssa84") +metadata/_edit_layout_mode = 1 + +[node name="DialogicNode_DialogText" type="RichTextLabel" parent="Anchor/AnimationParent/Sizer/DialogTextPanel" node_paths=PackedStringArray("textbox_root")] +unique_name_in_owner = true +layout_mode = 2 +mouse_filter = 1 +theme_override_colors/default_color = Color(1, 1, 1, 1) +theme_override_font_sizes/normal_font_size = 15 +theme_override_font_sizes/bold_font_size = 15 +theme_override_font_sizes/italics_font_size = 15 +theme_override_font_sizes/bold_italics_font_size = 15 +bbcode_enabled = true +text = "Some default text" +visible_characters_behavior = 1 +script = ExtResource("3_4634k") +textbox_root = NodePath("..") + +[node name="DialogicNode_TypeSounds" type="AudioStreamPlayer" parent="Anchor/AnimationParent/Sizer/DialogTextPanel/DialogicNode_DialogText"] +unique_name_in_owner = true +script = ExtResource("4_ma5mw") +play_every_character = 0 + +[node name="NextIndicator" type="Control" parent="Anchor/AnimationParent/Sizer/DialogTextPanel"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 8 +size_flags_vertical = 8 +mouse_filter = 2 +script = ExtResource("5_40a50") +show_on_questions = true +texture = ExtResource("6_uch03") +metadata/_edit_layout_mode = 1 + +[node name="AutoAdvanceProgressbar" type="ProgressBar" parent="Anchor/AnimationParent/Sizer/DialogTextPanel"] +unique_name_in_owner = true +modulate = Color(1, 1, 1, 0.188235) +custom_minimum_size = Vector2(0, 10) +layout_mode = 2 +size_flags_vertical = 8 +mouse_filter = 2 +max_value = 1.0 +step = 0.001 +value = 0.5 +show_percentage = false +script = ExtResource("6_07xym") + +[node name="NameLabelHolder" type="Control" parent="Anchor/AnimationParent/Sizer/DialogTextPanel"] +layout_mode = 2 +mouse_filter = 2 + +[node name="NameLabelPanel" type="PanelContainer" parent="Anchor/AnimationParent/Sizer/DialogTextPanel/NameLabelHolder"] +unique_name_in_owner = true +self_modulate = Color(0.00784314, 0.00784314, 0.00784314, 0.843137) +layout_mode = 1 +offset_top = -50.0 +offset_right = 9.0 +offset_bottom = -25.0 +mouse_filter = 2 +theme_override_styles/panel = ExtResource("9_yg8ig") +metadata/_edit_layout_mode = 1 +metadata/_edit_use_custom_anchors = true +metadata/_edit_group_ = true + +[node name="DialogicNode_NameLabel" type="Label" parent="Anchor/AnimationParent/Sizer/DialogTextPanel/NameLabelHolder/NameLabelPanel" node_paths=PackedStringArray("name_label_root")] +unique_name_in_owner = true +layout_mode = 2 +theme_override_colors/font_color = Color(1, 1, 1, 1) +theme_override_fonts/font = SubResource("FontVariation_v8y64") +theme_override_font_sizes/font_size = 15 +text = "S" +script = ExtResource("7_bi7sh") +name_label_root = NodePath("..") diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/vn_textbox_name_label_panel.tres b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/vn_textbox_name_label_panel.tres new file mode 100644 index 0000000..cc88fd9 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/vn_textbox_name_label_panel.tres @@ -0,0 +1,12 @@ +[gd_resource type="StyleBoxFlat" format=3 uid="uid://m7gyepkysu83"] + +[resource] +content_margin_left = 10.0 +content_margin_top = 5.0 +content_margin_right = 10.0 +content_margin_bottom = 5.0 +bg_color = Color(1, 1, 1, 1) +corner_radius_top_left = 5 +corner_radius_top_right = 5 +corner_radius_bottom_right = 5 +corner_radius_bottom_left = 5 diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Style_SpeakerTextbox/part_config.cfg b/addons/dialogic/Modules/DefaultLayoutParts/Style_SpeakerTextbox/part_config.cfg new file mode 100644 index 0000000..ceaac42 --- /dev/null +++ b/addons/dialogic/Modules/DefaultLayoutParts/Style_SpeakerTextbox/part_config.cfg @@ -0,0 +1,6 @@ +[style] +type = "Style" +name = "Speaker Textbox Style" +author = "Dialogic" +description = "A style with a textbox that has a speaker portrait inside of it." +style_path = "speaker_textbox_style.tres" diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Style_SpeakerTextbox/preview.png b/addons/dialogic/Modules/DefaultLayoutParts/Style_SpeakerTextbox/preview.png new file mode 100644 index 0000000000000000000000000000000000000000..0adc6daebcd8a917f4747202f38cb0c0ca7e5209 GIT binary patch literal 1094641 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