├── addons └── dialogic │ ├── Editor │ ├── ThemeEditor │ │ └── default-theme.cfg │ ├── Theme │ │ ├── MainTheme.tres │ │ └── PickerTheme.tres │ ├── Events │ │ ├── Parts │ │ │ ├── Text │ │ │ │ ├── GreyLabel.gd │ │ │ │ ├── GreyLabel.tscn │ │ │ │ ├── CustomLineEdit.gd │ │ │ │ ├── EventPart_SignalArgumentPicker.gd │ │ │ │ ├── TextAndVoiceEditor.tscn │ │ │ │ ├── SignalArgumentPicker.tscn │ │ │ │ └── CustomLineEdit.tscn │ │ │ ├── SpinBoxPreventDnD.gd │ │ │ ├── Logic │ │ │ │ ├── OperationPicker.tscn │ │ │ │ ├── ConditionTypePicker.tscn │ │ │ │ ├── GoTo Selector.tscn │ │ │ │ ├── LabelSetter.tscn │ │ │ │ ├── ConditionPickerOld.gd │ │ │ │ ├── EventPart_Save.tscn │ │ │ │ ├── ChoicePicker.tscn │ │ │ │ ├── EventPart_LabelSetter.gd │ │ │ │ └── EventPart_ChoicePicker.gd │ │ │ ├── EventPart_DummyEventDataShower.gd │ │ │ ├── DummyEventDataShower.tscn │ │ │ ├── EventBlock │ │ │ │ ├── VisibleToggle.tscn │ │ │ │ ├── PopupMenu.gd │ │ │ │ ├── ExpandControl.tscn │ │ │ │ └── ExpandControl.gd │ │ │ ├── ResourcePickers │ │ │ │ ├── Scenes │ │ │ │ │ ├── ScenePicker.tscn │ │ │ │ │ └── EventPart_ScenePicker.gd │ │ │ │ ├── Definitions │ │ │ │ │ ├── DefinitionPicker.tscn │ │ │ │ │ └── GlossaryPicker.tscn │ │ │ │ ├── Timelines │ │ │ │ │ └── TimelinePicker.tscn │ │ │ │ ├── Themes │ │ │ │ │ └── ThemePicker.tscn │ │ │ │ └── ResourcePickerMenu.gd │ │ │ ├── Audio │ │ │ │ ├── VoiceEditor.tscn │ │ │ │ ├── EventPart_AudioPickerComplex.gd │ │ │ │ └── AudioPickerComplex.tscn │ │ │ ├── Images │ │ │ │ ├── BackgroundPreview.tscn │ │ │ │ └── EventPart_BackgroundPreview.gd │ │ │ ├── Numbers │ │ │ │ ├── EventPart_TransitonLengthPicker.gd │ │ │ │ └── TransitonLengthPicker.tscn │ │ │ ├── ExampleEventPartScript.gd │ │ │ ├── NoSkip │ │ │ │ └── EventPart_NoSkip.gd │ │ │ ├── EventPart.gd │ │ │ └── Character │ │ │ │ └── CharacterAction.tscn │ │ └── styles │ │ │ ├── ResourceMenuHover.tres │ │ │ ├── selected_styleboxflat.tres │ │ │ ├── ResourceMenuNormal.tres │ │ │ ├── TextBackground.tres │ │ │ ├── SectionPanel.tres │ │ │ ├── ResourceMenuPanelBackground.tres │ │ │ ├── SimpleButtonHover.tres │ │ │ ├── SimpleButtonNormal.tres │ │ │ ├── SettingsFieldBackground.tres │ │ │ └── InputFieldsStyle.tres │ ├── TimelineEditor │ │ ├── TimelineTestingScene.tscn │ │ ├── EventButton.gd │ │ └── TimelineTestingScene.gd │ ├── Common │ │ ├── TLabel.gd │ │ ├── TLabel.tscn │ │ ├── SectionTitle.gd │ │ └── SectionTitle.tscn │ ├── SettingsEditor │ │ └── Scenes │ │ │ ├── SettingsCheckbox.tscn │ │ │ ├── HistorySettings.gd │ │ │ └── SettingsCheckbox.gd │ └── MasterTree │ │ ├── MasterTree.tscn │ │ └── DragPreview.tscn │ ├── Images │ ├── Plugin │ │ ├── placeholder.png │ │ ├── white-texture.png │ │ ├── plugin-editor-icon-dark-theme.svg │ │ ├── plugin-editor-icon-light-theme.svg │ │ ├── plugin-editor-icon-dark-theme-2.svg │ │ ├── plugin-editor-icon-light-theme-2.svg │ │ ├── plugin-editor-icon-dark-theme-0.75.svg │ │ ├── plugin-editor-icon-light-theme-0.75.svg │ │ ├── plugin-editor-icon-dark-theme-1.25.svg │ │ ├── plugin-editor-icon-dark-theme-1.svg │ │ ├── plugin-editor-icon-light-theme-1.25.svg │ │ ├── plugin-editor-icon-dark-theme-1.5.svg │ │ ├── plugin-editor-icon-light-theme-1.5.svg │ │ └── plugin-editor-icon-light-theme-1.svg │ ├── Event Icons │ │ ├── event-solid.svg │ │ ├── character.svg │ │ ├── Main Icons │ │ │ ├── set-glossary.svg │ │ │ ├── save-icon.svg │ │ │ ├── character.svg │ │ │ ├── text-event.svg │ │ │ ├── choice.svg │ │ │ ├── label.svg │ │ │ ├── end-branch.svg │ │ │ ├── close-dialog.svg │ │ │ ├── call-node.svg │ │ │ ├── change-background.svg │ │ │ ├── change-scene.svg │ │ │ ├── go-to.svg │ │ │ ├── audio-event.svg │ │ │ ├── background-music.svg │ │ │ └── emit-signal.svg │ │ ├── character-leave.svg │ │ ├── event-outline.svg │ │ ├── character-join.svg │ │ ├── label.svg │ │ ├── warning.svg │ │ └── Portrait.svg │ ├── Pieces │ │ ├── open-icon.svg │ │ ├── closed-icon.svg │ │ └── expand-icon.svg │ ├── Context Menus │ │ └── Remove.svg │ ├── Resources │ │ ├── character-1.25.svg │ │ ├── character-2.svg │ │ ├── character.svg │ │ ├── timeline-1.25.svg │ │ ├── timeline-2.svg │ │ └── timeline.svg │ ├── Toolbar │ │ ├── add-glossary-1.25.svg │ │ ├── add-glossary-2.svg │ │ ├── add-glossary.svg │ │ ├── add-character-1.25.svg │ │ ├── add-timeline-1.25.svg │ │ ├── add-character-2.svg │ │ ├── add-character.svg │ │ ├── add-timeline.svg │ │ └── add-timeline-2.svg │ └── Tutorials │ │ └── arrow-down.svg │ ├── Example Assets │ ├── portraits │ │ ├── df-1.png │ │ ├── df-2.png │ │ └── df-3.png │ ├── Sound Effects │ │ ├── Beep.wav │ │ └── Keyboard Noises │ │ │ ├── typing1.wav │ │ │ ├── typing2.wav │ │ │ ├── typing3.wav │ │ │ ├── typing4.wav │ │ │ ├── typing5.wav │ │ │ └── LICENSE.txt │ ├── backgrounds │ │ ├── background-1.png │ │ ├── background-2.png │ │ └── GlossaryBackground.tres │ ├── Fonts │ │ ├── Overlock │ │ │ ├── Overlock-Bold.ttf │ │ │ ├── Overlock-Black.ttf │ │ │ ├── Overlock-Italic.ttf │ │ │ ├── Overlock-Regular.ttf │ │ │ ├── Overlock-BlackItalic.ttf │ │ │ ├── Overlock-BoldItalic.ttf │ │ │ └── Overlock.tres │ │ ├── NameFont.tres │ │ ├── DefaultBoldFont.tres │ │ ├── DefaultFont.tres │ │ ├── GlossaryFont.tres │ │ └── DefaultItalicFont.tres │ ├── next-indicator │ │ └── next-indicator.png │ ├── History │ │ ├── HistoryButton.tscn │ │ ├── HistoryReturnButton.tscn │ │ ├── HistoryBackground.tscn │ │ └── HistoryButton-theme.tres │ └── CustomEvents │ │ ├── EventBlock.tscn │ │ ├── EventPart_Example.tscn │ │ ├── event_yourname_000.gd │ │ └── EventPart_Example.gd │ ├── Localization │ ├── dialogic.de.translation │ ├── dialogic.en.translation │ ├── dialogic.es.translation │ ├── dialogic.fr.translation │ └── dialogic.zh_CN.translation │ ├── Documentation │ ├── Theme │ │ ├── Font │ │ │ ├── NotoSans-Bold.ttf │ │ │ ├── NotoSans-Italic.ttf │ │ │ ├── NotoSans-Regular.ttf │ │ │ └── NotoSans-BoldItalic.ttf │ │ ├── DocumentationH1.tres │ │ ├── DocumentationH2.tres │ │ ├── DocumentationH3.tres │ │ ├── DocumentationH5.tres │ │ └── DocumentationH4.tres │ ├── Content │ │ ├── Events │ │ │ ├── Images │ │ │ │ ├── Call_Node.PNG │ │ │ │ ├── Event_Choice.PNG │ │ │ │ ├── audio_event.png │ │ │ │ ├── text_event_1.png │ │ │ │ ├── text_event_2.png │ │ │ │ ├── Event_Condition.PNG │ │ │ │ ├── Event_Question.PNG │ │ │ │ ├── Event_Set_Theme.PNG │ │ │ │ ├── Event_Set_Value.PNG │ │ │ │ ├── Event_Emit_Signal.PNG │ │ │ │ ├── Event_End_Branch.PNG │ │ │ │ ├── Event_Character_Join.PNG │ │ │ │ ├── Event_Close_Dialog.PNG │ │ │ │ ├── Event_Wait_Seconds.PNG │ │ │ │ ├── Event_Change_Timeline.PNG │ │ │ │ ├── Event_Character_Leave.PNG │ │ │ │ ├── Event_Character_Update.PNG │ │ │ │ ├── Event_Choice_Condition.PNG │ │ │ │ ├── Event_Condition_in_use.PNG │ │ │ │ ├── Event_Question_in_use.PNG │ │ │ │ └── Event_Set_Value_random.PNG │ │ │ ├── 013.md │ │ │ ├── CustomEvents │ │ │ │ ├── Images │ │ │ │ │ ├── EventBlock.png │ │ │ │ │ ├── CreationProcess.PNG │ │ │ │ │ ├── CustomEventsShowOff.PNG │ │ │ │ │ └── EventBlock_EventData.PNG │ │ │ │ └── ImportCustomEvents.md │ │ │ ├── 041.md │ │ │ ├── 010.md │ │ │ ├── 014.md │ │ │ ├── 011.md │ │ │ ├── 040.md │ │ │ ├── 030.md │ │ │ ├── 012.md │ │ │ └── 042.md │ │ ├── Images │ │ │ └── dialogic-hero-1.3.png │ │ ├── Tutorials │ │ │ ├── Images │ │ │ │ ├── Toolbar.PNG │ │ │ │ ├── Dialogic_Tab.PNG │ │ │ │ ├── ValueInUse.PNG │ │ │ │ ├── Value_Example1.PNG │ │ │ │ ├── Glossary_Example.PNG │ │ │ │ ├── Import_Selection.PNG │ │ │ │ ├── Empty_Character_Editor.PNG │ │ │ │ ├── Empty_Timeline_Editor.PNG │ │ │ │ ├── Glossary_ExampleLook.PNG │ │ │ │ ├── TimelineEditor_Example.PNG │ │ │ │ ├── Value_ExampleTimeline.PNG │ │ │ │ └── Character_Editor_With_Portrait.PNG │ │ │ ├── GettingStarted.md │ │ │ ├── Values.md │ │ │ ├── VoiceLines.md │ │ │ ├── Updating.md │ │ │ └── AddingNewAnimations.md │ │ ├── Reference │ │ │ ├── Images │ │ │ │ ├── history_log_margin.png │ │ │ │ ├── history_scene_tree.png │ │ │ │ ├── history_row_scene_tree.png │ │ │ │ ├── history_screen_margin.png │ │ │ │ ├── history_button_positions.png │ │ │ │ ├── history_script_variables.png │ │ │ │ ├── history_settings_explained.png │ │ │ │ ├── history_row_script_variables.png │ │ │ │ └── history_character_color_example.png │ │ │ ├── 000.md │ │ │ └── Timeline.md │ │ └── FAQ │ │ │ ├── plugin-shipped-godot.md │ │ │ ├── can-i-use-dialogic-in-my-project.md │ │ │ ├── input.md │ │ │ ├── resolution-small-dialog-big.md │ │ │ ├── portraits-not-showing.md │ │ │ ├── why-not-graph-nodes.md │ │ │ ├── custom-portraits.md │ │ │ ├── CSharp.md │ │ │ ├── how-to-make-dialog-show-up-in-game.md │ │ │ └── create-timeline-using-gdscript.md │ └── Nodes │ │ ├── DocsTreeHelper.tscn │ │ ├── DocumentationTree.tscn │ │ ├── DocumentationViewer.gd │ │ └── DocumentationTree.gd │ ├── Nodes │ ├── Anima │ │ ├── animations │ │ │ ├── entrances_and_exits │ │ │ │ ├── instant_in.gd │ │ │ │ ├── instant_out.gd │ │ │ │ ├── 1-fade_in.gd │ │ │ │ ├── 4-fade_out.gd │ │ │ │ ├── 6-fade_out_down_big.gd │ │ │ │ ├── 3-fade_in_up_big.gd │ │ │ │ ├── 5-fade_out_down.gd │ │ │ │ ├── 2-fade_in_up.gd │ │ │ │ ├── slide_out_left.gd │ │ │ │ ├── slide_out_right.gd │ │ │ │ ├── slide_in_left.gd │ │ │ │ ├── bounce_out.gd │ │ │ │ ├── back_in_up.gd │ │ │ │ ├── back_out_down.gd │ │ │ │ ├── back_out_left.gd │ │ │ │ ├── back_out_right.gd │ │ │ │ ├── back_out_up.gd │ │ │ │ ├── back_in_down.gd │ │ │ │ ├── back_in_left.gd │ │ │ │ ├── back_in_right.gd │ │ │ │ ├── slide_in_right.gd │ │ │ │ └── bouncing_in.gd │ │ │ └── attention_seeker │ │ │ │ ├── flash.gd │ │ │ │ ├── swing.gd │ │ │ │ ├── pulse.gd │ │ │ │ ├── shake_x.gd │ │ │ │ ├── shake_y.gd │ │ │ │ ├── heartbeat.gd │ │ │ │ ├── rubber_band.gd │ │ │ │ ├── tada.gd │ │ │ │ ├── headshake.gd │ │ │ │ ├── jello.gd │ │ │ │ ├── wobble.gd │ │ │ │ └── bounce.gd │ │ └── AnimaLicense.md │ ├── Background.tscn │ ├── ChoiceButton.tscn │ ├── ChoiceButton.gd │ ├── BackgroundMusic.tscn │ ├── Portrait.tscn │ ├── Background.gd │ └── CharacterVoice.gd │ ├── plugin.cfg │ ├── Dialog.tscn │ └── Other │ ├── export_plugin.gd │ └── inspector_timeline_picker.gd └── LICENSE /addons/dialogic/Editor/ThemeEditor/default-theme.cfg: -------------------------------------------------------------------------------- 1 | [settings] 2 | 3 | name="Default Theme" 4 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/Theme/MainTheme.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="Theme" format=2] 2 | 3 | [resource] 4 | -------------------------------------------------------------------------------- /addons/dialogic/Images/Plugin/placeholder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Images/Plugin/placeholder.png -------------------------------------------------------------------------------- /addons/dialogic/Images/Plugin/white-texture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Images/Plugin/white-texture.png -------------------------------------------------------------------------------- /addons/dialogic/Example Assets/portraits/df-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Example Assets/portraits/df-1.png -------------------------------------------------------------------------------- /addons/dialogic/Example Assets/portraits/df-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Example Assets/portraits/df-2.png -------------------------------------------------------------------------------- /addons/dialogic/Example Assets/portraits/df-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Example Assets/portraits/df-3.png -------------------------------------------------------------------------------- /addons/dialogic/Example Assets/Sound Effects/Beep.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Example Assets/Sound Effects/Beep.wav -------------------------------------------------------------------------------- /addons/dialogic/Localization/dialogic.de.translation: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Localization/dialogic.de.translation -------------------------------------------------------------------------------- /addons/dialogic/Localization/dialogic.en.translation: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Localization/dialogic.en.translation -------------------------------------------------------------------------------- /addons/dialogic/Localization/dialogic.es.translation: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Localization/dialogic.es.translation -------------------------------------------------------------------------------- /addons/dialogic/Localization/dialogic.fr.translation: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Localization/dialogic.fr.translation -------------------------------------------------------------------------------- /addons/dialogic/Localization/dialogic.zh_CN.translation: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Localization/dialogic.zh_CN.translation -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Theme/Font/NotoSans-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Documentation/Theme/Font/NotoSans-Bold.ttf -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Theme/Font/NotoSans-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Documentation/Theme/Font/NotoSans-Italic.ttf -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Theme/Font/NotoSans-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Documentation/Theme/Font/NotoSans-Regular.ttf -------------------------------------------------------------------------------- /addons/dialogic/Editor/Events/Parts/Text/GreyLabel.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends Label 3 | 4 | func _ready(): 5 | add_color_override("font_color", get_color("contrast_color_2", "Editor")) 6 | -------------------------------------------------------------------------------- /addons/dialogic/Example Assets/backgrounds/background-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Example Assets/backgrounds/background-1.png -------------------------------------------------------------------------------- /addons/dialogic/Example Assets/backgrounds/background-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Example Assets/backgrounds/background-2.png -------------------------------------------------------------------------------- /addons/dialogic/Example Assets/Fonts/Overlock/Overlock-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Example Assets/Fonts/Overlock/Overlock-Bold.ttf -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Events/Images/Call_Node.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Documentation/Content/Events/Images/Call_Node.PNG -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Images/dialogic-hero-1.3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Documentation/Content/Images/dialogic-hero-1.3.png -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Tutorials/Images/Toolbar.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Documentation/Content/Tutorials/Images/Toolbar.PNG -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Theme/Font/NotoSans-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Documentation/Theme/Font/NotoSans-BoldItalic.ttf -------------------------------------------------------------------------------- /addons/dialogic/Example Assets/Fonts/Overlock/Overlock-Black.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Example Assets/Fonts/Overlock/Overlock-Black.ttf -------------------------------------------------------------------------------- /addons/dialogic/Example Assets/Fonts/Overlock/Overlock-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Example Assets/Fonts/Overlock/Overlock-Italic.ttf -------------------------------------------------------------------------------- /addons/dialogic/Example Assets/Fonts/Overlock/Overlock-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Example Assets/Fonts/Overlock/Overlock-Regular.ttf -------------------------------------------------------------------------------- /addons/dialogic/Example Assets/next-indicator/next-indicator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Example Assets/next-indicator/next-indicator.png -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Events/Images/Event_Choice.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Documentation/Content/Events/Images/Event_Choice.PNG -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Events/Images/audio_event.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Documentation/Content/Events/Images/audio_event.png -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Events/Images/text_event_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Documentation/Content/Events/Images/text_event_1.png -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Events/Images/text_event_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Documentation/Content/Events/Images/text_event_2.png -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Events/Images/Event_Condition.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Documentation/Content/Events/Images/Event_Condition.PNG -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Events/Images/Event_Question.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Documentation/Content/Events/Images/Event_Question.PNG -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Events/Images/Event_Set_Theme.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Documentation/Content/Events/Images/Event_Set_Theme.PNG -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Events/Images/Event_Set_Value.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Documentation/Content/Events/Images/Event_Set_Value.PNG -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Tutorials/Images/Dialogic_Tab.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Documentation/Content/Tutorials/Images/Dialogic_Tab.PNG -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Tutorials/Images/ValueInUse.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Documentation/Content/Tutorials/Images/ValueInUse.PNG -------------------------------------------------------------------------------- /addons/dialogic/Example Assets/Fonts/Overlock/Overlock-BlackItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Example Assets/Fonts/Overlock/Overlock-BlackItalic.ttf -------------------------------------------------------------------------------- /addons/dialogic/Example Assets/Fonts/Overlock/Overlock-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Example Assets/Fonts/Overlock/Overlock-BoldItalic.ttf -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Events/Images/Event_Emit_Signal.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Documentation/Content/Events/Images/Event_Emit_Signal.PNG -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Events/Images/Event_End_Branch.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Documentation/Content/Events/Images/Event_End_Branch.PNG -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Tutorials/Images/Value_Example1.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Documentation/Content/Tutorials/Images/Value_Example1.PNG -------------------------------------------------------------------------------- /addons/dialogic/Example Assets/Sound Effects/Keyboard Noises/typing1.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Example Assets/Sound Effects/Keyboard Noises/typing1.wav -------------------------------------------------------------------------------- /addons/dialogic/Example Assets/Sound Effects/Keyboard Noises/typing2.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Example Assets/Sound Effects/Keyboard Noises/typing2.wav -------------------------------------------------------------------------------- /addons/dialogic/Example Assets/Sound Effects/Keyboard Noises/typing3.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Example Assets/Sound Effects/Keyboard Noises/typing3.wav -------------------------------------------------------------------------------- /addons/dialogic/Example Assets/Sound Effects/Keyboard Noises/typing4.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Example Assets/Sound Effects/Keyboard Noises/typing4.wav -------------------------------------------------------------------------------- /addons/dialogic/Example Assets/Sound Effects/Keyboard Noises/typing5.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Example Assets/Sound Effects/Keyboard Noises/typing5.wav -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Events/Images/Event_Character_Join.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Documentation/Content/Events/Images/Event_Character_Join.PNG -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Events/Images/Event_Close_Dialog.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Documentation/Content/Events/Images/Event_Close_Dialog.PNG -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Events/Images/Event_Wait_Seconds.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Documentation/Content/Events/Images/Event_Wait_Seconds.PNG -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Tutorials/Images/Glossary_Example.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Documentation/Content/Tutorials/Images/Glossary_Example.PNG -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Tutorials/Images/Import_Selection.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Documentation/Content/Tutorials/Images/Import_Selection.PNG -------------------------------------------------------------------------------- /addons/dialogic/Images/Event Icons/event-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Events/013.md: -------------------------------------------------------------------------------- 1 | # End Event 2 | 3 | This event adds itself when you add its parent event. Its only function is to mark the end of a [question](./010.md) or [condition](./012.md). -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Events/Images/Event_Change_Timeline.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Documentation/Content/Events/Images/Event_Change_Timeline.PNG -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Events/Images/Event_Character_Leave.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Documentation/Content/Events/Images/Event_Character_Leave.PNG -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Events/Images/Event_Character_Update.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Documentation/Content/Events/Images/Event_Character_Update.PNG -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Events/Images/Event_Choice_Condition.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Documentation/Content/Events/Images/Event_Choice_Condition.PNG -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Events/Images/Event_Condition_in_use.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Documentation/Content/Events/Images/Event_Condition_in_use.PNG -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Events/Images/Event_Question_in_use.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Documentation/Content/Events/Images/Event_Question_in_use.PNG -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Events/Images/Event_Set_Value_random.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Documentation/Content/Events/Images/Event_Set_Value_random.PNG -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Reference/Images/history_log_margin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Documentation/Content/Reference/Images/history_log_margin.png -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Reference/Images/history_scene_tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Documentation/Content/Reference/Images/history_scene_tree.png -------------------------------------------------------------------------------- /addons/dialogic/Images/Pieces/open-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Events/CustomEvents/Images/EventBlock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Documentation/Content/Events/CustomEvents/Images/EventBlock.png -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Reference/Images/history_row_scene_tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Documentation/Content/Reference/Images/history_row_scene_tree.png -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Reference/Images/history_screen_margin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Documentation/Content/Reference/Images/history_screen_margin.png -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Tutorials/Images/Empty_Character_Editor.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Documentation/Content/Tutorials/Images/Empty_Character_Editor.PNG -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Tutorials/Images/Empty_Timeline_Editor.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Documentation/Content/Tutorials/Images/Empty_Timeline_Editor.PNG -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Tutorials/Images/Glossary_ExampleLook.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Documentation/Content/Tutorials/Images/Glossary_ExampleLook.PNG -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Tutorials/Images/TimelineEditor_Example.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Documentation/Content/Tutorials/Images/TimelineEditor_Example.PNG -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Tutorials/Images/Value_ExampleTimeline.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Documentation/Content/Tutorials/Images/Value_ExampleTimeline.PNG -------------------------------------------------------------------------------- /addons/dialogic/Images/Pieces/closed-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Reference/Images/history_button_positions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Documentation/Content/Reference/Images/history_button_positions.png -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Reference/Images/history_script_variables.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Documentation/Content/Reference/Images/history_script_variables.png -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Events/CustomEvents/Images/CreationProcess.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Documentation/Content/Events/CustomEvents/Images/CreationProcess.PNG -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Reference/Images/history_settings_explained.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Documentation/Content/Reference/Images/history_settings_explained.png -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Events/CustomEvents/Images/CustomEventsShowOff.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Documentation/Content/Events/CustomEvents/Images/CustomEventsShowOff.PNG -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Reference/Images/history_row_script_variables.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Documentation/Content/Reference/Images/history_row_script_variables.png -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Events/CustomEvents/Images/EventBlock_EventData.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Documentation/Content/Events/CustomEvents/Images/EventBlock_EventData.PNG -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Reference/Images/history_character_color_example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Documentation/Content/Reference/Images/history_character_color_example.png -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Tutorials/Images/Character_Editor_With_Portrait.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dialogic-godot/dialogic-1/HEAD/addons/dialogic/Documentation/Content/Tutorials/Images/Character_Editor_With_Portrait.PNG -------------------------------------------------------------------------------- /addons/dialogic/Example Assets/Sound Effects/Keyboard Noises/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2020 Tim Krief. 2 | 3 | Typing sound effects by Tim Krief are licensed under a Creative 4 | Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) License. 5 | -------------------------------------------------------------------------------- /addons/dialogic/Nodes/Anima/animations/entrances_and_exits/instant_in.gd: -------------------------------------------------------------------------------- 1 | func generate_animation(anima_tween: Tween, data: Dictionary) -> void: 2 | var opacity_frames = [ 3 | { from = 1, to = 1 }, 4 | ] 5 | anima_tween.add_frames(data, "opacity", opacity_frames) 6 | -------------------------------------------------------------------------------- /addons/dialogic/Nodes/Anima/animations/entrances_and_exits/instant_out.gd: -------------------------------------------------------------------------------- 1 | func generate_animation(anima_tween: Tween, data: Dictionary) -> void: 2 | var opacity_frames = [ 3 | { from = 0, to = 0 }, 4 | ] 5 | anima_tween.add_frames(data, "opacity", opacity_frames) 6 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/Events/Parts/SpinBoxPreventDnD.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends SpinBox 3 | 4 | func can_drop_data(position, data): 5 | # this prevents locking the mouse 6 | # on some operating systems 7 | # due to a godot editor bug with SpinBox drag/drop 8 | return false 9 | -------------------------------------------------------------------------------- /addons/dialogic/Images/Context Menus/Remove.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Reference/000.md: -------------------------------------------------------------------------------- 1 | # Dialog Node 2 | 3 | This is the node that allows your created dialogue timelines to appear. 4 | 5 | You can either drag it into one of your scenes from `/addons/dialogic/Dialog.tscn` or create one using the `Dialogic.start()` function. -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Theme/DocumentationH1.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="DynamicFont" load_steps=2 format=2] 2 | 3 | [ext_resource path="res://addons/dialogic/Documentation/Theme/Font/NotoSans-Bold.ttf" type="DynamicFontData" id=1] 4 | 5 | [resource] 6 | size = 30 7 | font_data = ExtResource( 1 ) 8 | -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Theme/DocumentationH2.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="DynamicFont" load_steps=2 format=2] 2 | 3 | [ext_resource path="res://addons/dialogic/Documentation/Theme/Font/NotoSans-Bold.ttf" type="DynamicFontData" id=1] 4 | 5 | [resource] 6 | size = 24 7 | font_data = ExtResource( 1 ) 8 | -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Theme/DocumentationH3.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="DynamicFont" load_steps=2 format=2] 2 | 3 | [ext_resource path="res://addons/dialogic/Documentation/Theme/Font/NotoSans-Bold.ttf" type="DynamicFontData" id=1] 4 | 5 | [resource] 6 | size = 20 7 | font_data = ExtResource( 1 ) 8 | -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Theme/DocumentationH5.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="DynamicFont" load_steps=2 format=2] 2 | 3 | [ext_resource path="res://addons/dialogic/Documentation/Theme/Font/NotoSans-Italic.ttf" type="DynamicFontData" id=1] 4 | 5 | [resource] 6 | size = 18 7 | font_data = ExtResource( 1 ) 8 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/TimelineEditor/TimelineTestingScene.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=2] 2 | 3 | [ext_resource path="res://addons/dialogic/Editor/TimelineEditor/TimelineTestingScene.gd" type="Script" id=1] 4 | 5 | [node name="TimelineTestingScene" type="Node"] 6 | script = ExtResource( 1 ) 7 | -------------------------------------------------------------------------------- /addons/dialogic/Example Assets/Fonts/NameFont.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="DynamicFont" load_steps=2 format=2] 2 | 3 | [ext_resource path="res://addons/dialogic/Example Assets/Fonts/Overlock/Overlock-Black.ttf" type="DynamicFontData" id=1] 4 | 5 | [resource] 6 | size = 30 7 | font_data = ExtResource( 1 ) 8 | -------------------------------------------------------------------------------- /addons/dialogic/Nodes/Anima/animations/entrances_and_exits/1-fade_in.gd: -------------------------------------------------------------------------------- 1 | func generate_animation(anima_tween: Tween, data: Dictionary) -> void: 2 | var opacity_frames = [ 3 | { from = 0, to = 1, easing_points = [0.42, 0, 0.58, 1]}, 4 | ] 5 | anima_tween.add_frames(data, "opacity", opacity_frames) 6 | -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Theme/DocumentationH4.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="DynamicFont" load_steps=2 format=2] 2 | 3 | [ext_resource path="res://addons/dialogic/Documentation/Theme/Font/NotoSans-BoldItalic.ttf" type="DynamicFontData" id=1] 4 | 5 | [resource] 6 | size = 20 7 | font_data = ExtResource( 1 ) 8 | -------------------------------------------------------------------------------- /addons/dialogic/Example Assets/Fonts/DefaultBoldFont.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="DynamicFont" load_steps=2 format=2] 2 | 3 | [ext_resource path="res://addons/dialogic/Example Assets/Fonts/Overlock/Overlock-Black.ttf" type="DynamicFontData" id=1] 4 | 5 | [resource] 6 | size = 30 7 | font_data = ExtResource( 1 ) 8 | -------------------------------------------------------------------------------- /addons/dialogic/Example Assets/Fonts/DefaultFont.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="DynamicFont" load_steps=2 format=2] 2 | 3 | [ext_resource path="res://addons/dialogic/Example Assets/Fonts/Overlock/Overlock-Regular.ttf" type="DynamicFontData" id=1] 4 | 5 | [resource] 6 | size = 30 7 | font_data = ExtResource( 1 ) 8 | -------------------------------------------------------------------------------- /addons/dialogic/Example Assets/Fonts/GlossaryFont.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="DynamicFont" load_steps=2 format=2] 2 | 3 | [ext_resource path="res://addons/dialogic/Example Assets/Fonts/Overlock/Overlock-Black.ttf" type="DynamicFontData" id=1] 4 | 5 | [resource] 6 | size = 20 7 | font_data = ExtResource( 1 ) 8 | -------------------------------------------------------------------------------- /addons/dialogic/Nodes/Anima/animations/entrances_and_exits/4-fade_out.gd: -------------------------------------------------------------------------------- 1 | func generate_animation(anima_tween: Tween, data: Dictionary) -> void: 2 | var opacity_frames = [ 3 | { from = 1, to = 0, easing_points = [0.42, 0, 0.58, 1]}, 4 | ] 5 | 6 | anima_tween.add_frames(data, "opacity", opacity_frames) 7 | -------------------------------------------------------------------------------- /addons/dialogic/plugin.cfg: -------------------------------------------------------------------------------- 1 | [plugin] 2 | 3 | name="Dialogic" 4 | description="Create dialogs, characters and scenes to display conversations in your Godot games. 5 | https://github.com/coppolaemilio/dialogic" 6 | author="Emi, Jowan Spooner, Exelia, Zaknafean and more!" 7 | version="1.5.1" 8 | script="plugin.gd" -------------------------------------------------------------------------------- /addons/dialogic/Example Assets/Fonts/DefaultItalicFont.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="DynamicFont" load_steps=2 format=2] 2 | 3 | [ext_resource path="res://addons/dialogic/Example Assets/Fonts/Overlock/Overlock-Italic.ttf" type="DynamicFontData" id=1] 4 | 5 | [resource] 6 | size = 30 7 | font_data = ExtResource( 1 ) 8 | -------------------------------------------------------------------------------- /addons/dialogic/Example Assets/Fonts/Overlock/Overlock.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="DynamicFont" load_steps=2 format=2] 2 | 3 | [ext_resource path="res://addons/dialogic/Example Assets/Fonts/Overlock/Overlock-Black.ttf" type="DynamicFontData" id=1] 4 | 5 | [resource] 6 | size = 30 7 | font_data = ExtResource( 1 ) 8 | -------------------------------------------------------------------------------- /addons/dialogic/Images/Pieces/expand-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /addons/dialogic/Nodes/Background.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=2] 2 | 3 | [ext_resource path="res://addons/dialogic/Nodes/Background.gd" type="Script" id=1] 4 | 5 | [node name="Background" type="TextureRect"] 6 | script = ExtResource( 1 ) 7 | __meta__ = { 8 | "_edit_use_anchors_": false 9 | } 10 | -------------------------------------------------------------------------------- /addons/dialogic/Nodes/ChoiceButton.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=2] 2 | 3 | [ext_resource path="res://addons/dialogic/Nodes/ChoiceButton.gd" type="Script" id=1] 4 | 5 | [node name="ChoiceButton" type="Button"] 6 | size_flags_horizontal = 4 7 | size_flags_vertical = 4 8 | text = "Testing button " 9 | script = ExtResource( 1 ) 10 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/Common/TLabel.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends Label 3 | export var text_key : String = "" 4 | var editor_reference 5 | 6 | func set_text_from_key(value): 7 | text = editor_reference.dialogicTranslator.translate(value) 8 | 9 | func _ready(): 10 | editor_reference = find_parent('EditorView') 11 | set_text_from_key(text_key) 12 | -------------------------------------------------------------------------------- /addons/dialogic/Images/Event Icons/character.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /addons/dialogic/Nodes/ChoiceButton.gd: -------------------------------------------------------------------------------- 1 | extends Button 2 | 3 | func _process(delta): 4 | if Input.is_action_pressed(get_meta('input_next')): 5 | if has_focus(): 6 | emit_signal("button_down") 7 | if Input.is_action_just_released(get_meta('input_next')): 8 | if has_focus(): 9 | emit_signal("button_up") 10 | emit_signal("pressed") 11 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/Common/TLabel.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=2] 2 | 3 | [ext_resource path="res://addons/dialogic/Editor/Common/TLabel.gd" type="Script" id=1] 4 | 5 | [node name="TLabel" type="Label"] 6 | anchor_right = 1.0 7 | anchor_bottom = 1.0 8 | script = ExtResource( 1 ) 9 | __meta__ = { 10 | "_edit_use_anchors_": false 11 | } 12 | -------------------------------------------------------------------------------- /addons/dialogic/Images/Resources/character-1.25.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /addons/dialogic/Images/Toolbar/add-glossary-1.25.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Tutorials/GettingStarted.md: -------------------------------------------------------------------------------- 1 | # Getting started 2 | 3 | This video is a bit outdated since it was made using the previous version, but the concepts are the same as what we do now. You can watch the video [here](https://www.youtube.com/watch?v=sYjgDIgD7AY) or use the new and improved guide [here](./BeginnersGuideStepByStep.md) 4 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/Theme/PickerTheme.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="Theme" format=2] 2 | 3 | [resource] 4 | Button/colors/font_color = Color( 1, 1, 1, 1 ) 5 | Button/colors/font_color_disabled = Color( 0.901961, 0.901961, 0.901961, 0.2 ) 6 | Button/colors/font_color_hover = Color( 0.870588, 0.870588, 0.870588, 1 ) 7 | Button/colors/font_color_pressed = Color( 1, 1, 1, 1 ) 8 | -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Events/041.md: -------------------------------------------------------------------------------- 1 | # Change Scene 2 | 3 | The `Change Scene` event will stop the current scene and load the selected one. This means the dialogue will be stopped too. 4 | 5 | Be careful when using this while you your tree is set to paused! Consider adding an [Emit Signal event](./040.md) before and resume the tree with `get_tree().paused = false`. -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/FAQ/plugin-shipped-godot.md: -------------------------------------------------------------------------------- 1 | # Why a plugin? 2 | 3 | **The plugin is cool! Why is it not shipped with Godot?** 4 | I see a lot of people saying that the plugin should come with Godot, but I believe this should stay as a plugin since most of the people making games won't be using it. I'm flattered by your comments but this will remain a plugin :) -------------------------------------------------------------------------------- /addons/dialogic/Editor/Common/SectionTitle.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends Label 3 | export var text_key : String = "" 4 | var editor_reference 5 | 6 | func set_text_from_key(value): 7 | text = editor_reference.dialogicTranslator.translate(value) 8 | 9 | func _ready(): 10 | editor_reference = find_parent('EditorView') 11 | if text_key != '': 12 | set_text_from_key(text_key) 13 | -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Nodes/DocsTreeHelper.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=2] 2 | 3 | [ext_resource path="res://addons/dialogic/Documentation/Nodes/DocsTreeHelper.gd" type="Script" id=1] 4 | 5 | [node name="DocsTreeHelper" type="Control"] 6 | margin_right = 40.0 7 | margin_bottom = 40.0 8 | script = ExtResource( 1 ) 9 | __meta__ = { 10 | "_edit_use_anchors_": false 11 | } 12 | -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/FAQ/can-i-use-dialogic-in-my-project.md: -------------------------------------------------------------------------------- 1 | # What license? 2 | 3 | **May I use Dialogic in one of my projects?** 4 | Yes, you may use Dialogic to make any kind of game - even commercial ones! The project is developed under the [MIT License](https://github.com/coppolaemilio/dialogic/blob/master/LICENSE). All we ask is that you please remember to credit us in your project! -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/FAQ/input.md: -------------------------------------------------------------------------------- 1 | # How to change the input? 2 | 3 | Dialogic uses a godot `Input Action` for the so called `"action key"`. You can create a new `Input Action` in the `Project Settings` under `Input Map`. Then you can select the action key in the dialogic settings. 4 | 5 | This way you can use anything from mouse buttons to controler buttons or all of them together. -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/FAQ/resolution-small-dialog-big.md: -------------------------------------------------------------------------------- 1 | # Text box to big? 2 | 3 | **My resolution is too small and my dialog box is too big. Help!** 4 | The scale of dialogue boxes and text are set in the Theme selected for the project. If your resolution is too small, the default one may be too big. Create a new theme and make the box and text sizes smaller until it fits appropriately. -------------------------------------------------------------------------------- /addons/dialogic/Images/Event Icons/Main Icons/set-glossary.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /addons/dialogic/Nodes/Anima/animations/attention_seeker/flash.gd: -------------------------------------------------------------------------------- 1 | func generate_animation(anima_tween: Tween, data: Dictionary) -> void: 2 | var frames = [ 3 | { percentage = 0, from = 1 }, 4 | { percentage = 25, to = 0 }, 5 | { percentage = 50, to = 1 }, 6 | { percentage = 75, to = 0 }, 7 | { percentage = 100, to = 1 }, 8 | ] 9 | 10 | anima_tween.add_frames(data, "opacity", frames) 11 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/Events/styles/ResourceMenuHover.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="StyleBoxFlat" format=2] 2 | 3 | [resource] 4 | content_margin_left = 25.0 5 | content_margin_right = 10.0 6 | content_margin_top = 4.0 7 | content_margin_bottom = 4.0 8 | bg_color = Color( 0.466667, 0.466667, 0.466667, 0.141176 ) 9 | border_width_bottom = 2 10 | corner_radius_top_left = 4 11 | corner_radius_top_right = 4 12 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/Events/Parts/Text/GreyLabel.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=2] 2 | 3 | [ext_resource path="res://addons/dialogic/Editor/Events/Parts/Text/GreyLabel.gd" type="Script" id=1] 4 | 5 | [node name="Label" type="Label"] 6 | margin_top = 4.0 7 | margin_right = 78.0 8 | margin_bottom = 18.0 9 | text = "with portrait" 10 | script = ExtResource( 1 ) 11 | __meta__ = { 12 | "_edit_use_anchors_": false 13 | } 14 | -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/FAQ/portraits-not-showing.md: -------------------------------------------------------------------------------- 1 | # Show portraits? 2 | 3 | **Portraits not showing in game?** 4 | In order to make the characters show up on the screen, you need to make them join your current scene using the [Character Join](../Events/001.md). 5 | 6 | If you used the join event and still don't see them, you should try modifying the offset and scale values in your character's portrait until they do appear. -------------------------------------------------------------------------------- /addons/dialogic/Editor/Events/styles/selected_styleboxflat.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="StyleBoxFlat" format=2] 2 | 3 | [resource] 4 | content_margin_left = 16.0 5 | content_margin_right = 6.0 6 | content_margin_top = 6.0 7 | content_margin_bottom = 0.0 8 | bg_color = Color( 0.509804, 0.509804, 0.509804, 0.207843 ) 9 | border_width_left = 5 10 | border_color = Color( 1, 1, 1, 1 ) 11 | expand_margin_top = 2.0 12 | expand_margin_bottom = 2.0 13 | -------------------------------------------------------------------------------- /addons/dialogic/Example Assets/backgrounds/GlossaryBackground.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="StyleBoxFlat" format=2] 2 | 3 | [resource] 4 | bg_color = Color( 0.160784, 0.160784, 0.160784, 1 ) 5 | corner_radius_top_left = 2 6 | corner_radius_top_right = 2 7 | corner_radius_bottom_right = 2 8 | corner_radius_bottom_left = 2 9 | expand_margin_left = 5.0 10 | expand_margin_right = 5.0 11 | expand_margin_top = 5.0 12 | expand_margin_bottom = 5.0 13 | -------------------------------------------------------------------------------- /addons/dialogic/Images/Event Icons/Main Icons/save-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/Events/Parts/Text/CustomLineEdit.gd: -------------------------------------------------------------------------------- 1 | extends LineEdit 2 | 3 | 4 | # Declare member variables here. Examples: 5 | # var a = 2 6 | # var b = "text" 7 | 8 | 9 | # Called when the node enters the scene tree for the first time. 10 | func _ready(): 11 | pass # Replace with function body. 12 | 13 | 14 | # Called every frame. 'delta' is the elapsed time since the previous frame. 15 | #func _process(delta): 16 | # pass 17 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/TimelineEditor/EventButton.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends Button 3 | 4 | export (String) var EventName = '' 5 | 6 | func get_drag_data(position): 7 | var preview_label = Label.new() 8 | 9 | if (self.text != ''): 10 | preview_label.text = text 11 | else: 12 | preview_label.text = 'Add Event %s' % [ EventName ] 13 | 14 | set_drag_preview(preview_label) 15 | 16 | return { "source": "EventButton", "event_name": EventName } 17 | -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/FAQ/why-not-graph-nodes.md: -------------------------------------------------------------------------------- 1 | # Why not graph nodes? 2 | 3 | **Why doesn't Dialogic use graph nodes?** 4 | Because of how the graph nodes are arranged, the screen gets full of UI elements and it gets harder to follow. 5 | 6 | If you want to use graph based editors, you can try [Levraut's LE Dialogue Editor](https://levrault.itch.io/le-dialogue-editor) or [EXP Godot Dialog System](https://github.com/EXPWorlds/Godot-Dialog-System). -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Nodes/DocumentationTree.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=2] 2 | 3 | [ext_resource path="res://addons/dialogic/Documentation/Nodes/DocumentationTree.gd" type="Script" id=1] 4 | 5 | 6 | [node name="DocumentationTree" type="Tree"] 7 | margin_right = 506.0 8 | margin_bottom = 600.0 9 | size_flags_horizontal = 3 10 | size_flags_vertical = 3 11 | script = ExtResource( 1 ) 12 | __meta__ = { 13 | "_edit_use_anchors_": false 14 | } 15 | -------------------------------------------------------------------------------- /addons/dialogic/Nodes/Anima/animations/entrances_and_exits/6-fade_out_down_big.gd: -------------------------------------------------------------------------------- 1 | func generate_animation(anima_tween: Tween, data: Dictionary) -> void: 2 | var opacity_frames = [ 3 | { from = 1, to = 0 }, 4 | ] 5 | 6 | var position_frames = [ 7 | { percentage = 0, from = 0}, 8 | { percentage = 100, to = 2000 }, 9 | ] 10 | 11 | anima_tween.add_relative_frames(data, "y", position_frames) 12 | anima_tween.add_frames(data, "opacity", opacity_frames) 13 | -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/FAQ/custom-portraits.md: -------------------------------------------------------------------------------- 1 | # Custom portraits 2 | 3 | You can define custom portraits that are animated or have particle effects and shaders by selecting a path to a scene (*.tscn) rather than to an image in the character screen. Your custom scene can be a Control node, a sprite or an animated sprite. When selecting a Node2D Dialogic might be unable to access its intended dimensions due to the nature of Node2D not having a specific size attribute defined. -------------------------------------------------------------------------------- /addons/dialogic/Editor/Events/styles/ResourceMenuNormal.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="StyleBoxFlat" format=2] 2 | 3 | [resource] 4 | content_margin_left = 25.0 5 | content_margin_right = 10.0 6 | content_margin_top = 4.0 7 | content_margin_bottom = 4.0 8 | bg_color = Color( 0.180392, 0.180392, 0.180392, 0.219608 ) 9 | draw_center = false 10 | border_width_bottom = 2 11 | border_color = Color( 0.8, 0.8, 0.8, 0.286275 ) 12 | corner_radius_top_left = 4 13 | corner_radius_top_right = 4 14 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/SettingsEditor/Scenes/SettingsCheckbox.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=2] 2 | 3 | [ext_resource path="res://addons/dialogic/Editor/SettingsEditor/Scenes/SettingsCheckbox.gd" type="Script" id=1] 4 | 5 | [node name="SettingsCheckbox" type="HBoxContainer"] 6 | size_flags_horizontal = 3 7 | script = ExtResource( 1 ) 8 | 9 | [node name="CheckBox" type="CheckBox" parent="."] 10 | margin_right = 24.0 11 | margin_bottom = 24.0 12 | size_flags_horizontal = 3 13 | -------------------------------------------------------------------------------- /addons/dialogic/Example Assets/History/HistoryButton.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=2] 2 | 3 | [ext_resource path="res://addons/dialogic/Example Assets/History/HistoryButton-theme.tres" type="Theme" id=1] 4 | 5 | [node name="HistoryButton" type="Button"] 6 | anchor_top = 1.0 7 | anchor_bottom = 1.0 8 | margin_top = -20.0 9 | margin_right = 58.0 10 | theme = ExtResource( 1 ) 11 | disabled = true 12 | text = "History" 13 | __meta__ = { 14 | "_edit_use_anchors_": false 15 | } 16 | -------------------------------------------------------------------------------- /addons/dialogic/Example Assets/History/HistoryReturnButton.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=2] 2 | 3 | [ext_resource path="res://addons/dialogic/Example Assets/History/HistoryButton-theme.tres" type="Theme" id=1] 4 | 5 | [node name="HistoryButton" type="Button"] 6 | anchor_top = 1.0 7 | anchor_bottom = 1.0 8 | margin_top = -20.0 9 | margin_right = 58.0 10 | theme = ExtResource( 1 ) 11 | disabled = true 12 | text = "Return" 13 | __meta__ = { 14 | "_edit_use_anchors_": false 15 | } 16 | -------------------------------------------------------------------------------- /addons/dialogic/Images/Event Icons/character-leave.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /addons/dialogic/Images/Event Icons/event-outline.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /addons/dialogic/Images/Tutorials/arrow-down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/SettingsEditor/Scenes/HistorySettings.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends VBoxContainer 3 | 4 | 5 | func _ready(): 6 | var HistoryCheckbox = $"GridContainer/HistoryBox/SettingsCheckbox/CheckBox" 7 | HistoryCheckbox.connect('toggled', self, '_on_HistoryLogging_toggled') 8 | _on_HistoryLogging_toggled(HistoryCheckbox.pressed) 9 | 10 | 11 | func _on_HistoryLogging_toggled(button_pressed): 12 | for n in $GridContainer.get_children(): 13 | n.visible = button_pressed 14 | $GridContainer/HistoryBox.visible = true 15 | -------------------------------------------------------------------------------- /addons/dialogic/Images/Event Icons/character-join.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /addons/dialogic/Images/Toolbar/add-glossary-2.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /addons/dialogic/Images/Toolbar/add-glossary.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/FAQ/CSharp.md: -------------------------------------------------------------------------------- 1 | # Can I use C# with Dialogic? 2 | 3 | Yes, but it's experimental at the present time. If you want to try it out, and you find issues with the implementation, please let us know. 4 | 5 | Usage: 6 | 7 | `public override void _Ready() 8 | { 9 | var dialog = DialogicSharp.Start("Greeting"); 10 | AddChild(dialog); 11 | } 12 | ` 13 | 14 | This is the PR that added this feature: [https://github.com/coppolaemilio/dialogic/pull/217](https://github.com/coppolaemilio/dialogic/pull/217) -------------------------------------------------------------------------------- /addons/dialogic/Editor/Events/styles/TextBackground.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="StyleBoxFlat" format=2] 2 | 3 | [resource] 4 | content_margin_left = 16.0 5 | content_margin_top = 14.0 6 | bg_color = Color( 0.27451, 0.27451, 0.27451, 1 ) 7 | border_width_left = 1 8 | border_width_top = 1 9 | border_width_right = 1 10 | border_width_bottom = 1 11 | border_color = Color( 0.454902, 0.454902, 0.454902, 1 ) 12 | corner_radius_top_left = 8 13 | corner_radius_top_right = 8 14 | corner_radius_bottom_right = 8 15 | corner_radius_bottom_left = 8 16 | -------------------------------------------------------------------------------- /addons/dialogic/Images/Event Icons/Main Icons/character.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /addons/dialogic/Nodes/Anima/animations/entrances_and_exits/3-fade_in_up_big.gd: -------------------------------------------------------------------------------- 1 | func generate_animation(anima_tween: Tween, data: Dictionary) -> void: 2 | var opacity_frames = [ 3 | { from = 0, to = 1 }, 4 | ] 5 | 6 | var size = DialogicAnimaPropertiesHelper.get_size(data.node) 7 | 8 | var position_frames = [ 9 | { percentage = 0, from = 2000 }, 10 | { percentage = 100, to = -2000 }, 11 | ] 12 | 13 | anima_tween.add_relative_frames(data, "y", position_frames) 14 | anima_tween.add_frames(data, "opacity", opacity_frames) 15 | -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Events/CustomEvents/ImportCustomEvents.md: -------------------------------------------------------------------------------- 1 | # Importing custom events 2 | 3 | It's very easy to share `custom events` because they are pretty much self-contained. 4 | You will just need to get the folder from someone. If you have it, move it into `res://dialogic/custom-events/`. 5 | 6 | Then enable custom events in Dialogic's settings menu (if you haven't already). 7 | You should now find the custom event in the bottom of the event button panel on the right in the timeline editor. 8 | 9 | *Vòila! Hope it works ;)* -------------------------------------------------------------------------------- /addons/dialogic/Nodes/Anima/animations/attention_seeker/swing.gd: -------------------------------------------------------------------------------- 1 | func generate_animation(anima_tween: Tween, data: Dictionary) -> void: 2 | var frames = [ 3 | { percentage = 0, from = 0 }, 4 | { percentage = 20, to = 15 }, 5 | { percentage = 40, to = -10 }, 6 | { percentage = 60, to = 5 }, 7 | { percentage = 80, to = -5 }, 8 | { percentage = 100, to = 0 }, 9 | ] 10 | 11 | DialogicAnimaPropertiesHelper.set_2D_pivot(data.node, DialogicAnimaPropertiesHelper.PIVOT.TOP_CENTER) 12 | anima_tween.add_frames(data, "rotation", frames) 13 | -------------------------------------------------------------------------------- /addons/dialogic/Images/Event Icons/Main Icons/text-event.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /addons/dialogic/Nodes/Anima/animations/entrances_and_exits/5-fade_out_down.gd: -------------------------------------------------------------------------------- 1 | func generate_animation(anima_tween: Tween, data: Dictionary) -> void: 2 | var opacity_frames = [ 3 | { from = 1, to = 0, easing_points = [0.42, 0, 0.58, 1] }, 4 | ] 5 | 6 | var size = DialogicAnimaPropertiesHelper.get_size(data.node) 7 | 8 | var position_frames = [ 9 | { from = 0, to = size.y/16, easing_points = [0.42, 0, 0.58, 1]}, 10 | ] 11 | 12 | anima_tween.add_relative_frames(data, "y", position_frames) 13 | anima_tween.add_frames(data, "opacity", opacity_frames) 14 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/TimelineEditor/TimelineTestingScene.gd: -------------------------------------------------------------------------------- 1 | extends Node 2 | 3 | func _ready(): 4 | var dialog = Dialogic.start(DialogicResources.get_settings_value('QuickTimelineTest', 'timeline_file', '')) 5 | dialog.connect('dialogic_signal', self, '_on_DialogNode_dialogic_signal') 6 | dialog.connect('timeline_end', self, '_on_DialogNode_timeline_end') 7 | add_child(dialog) 8 | 9 | func _on_DialogNode_dialogic_signal(argument): 10 | print('Signal recieved. Argument: ', argument) 11 | 12 | func _on_DialogNode_timeline_end(timeline): 13 | get_tree().quit() 14 | -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/FAQ/how-to-make-dialog-show-up-in-game.md: -------------------------------------------------------------------------------- 1 | # Enable/start dialog? 2 | 3 | **How can I make my dialogue show up in game?** 4 | There are two ways of doing this: you can use GDScript or the Scene Editor. 5 | 6 | Using the `Dialogic` class, you can add dialog nodes from code easily: 7 | 8 | ``` 9 | var new_dialog = Dialogic.start('Your Timeline Name Here') 10 | add_child(new_dialog) 11 | ``` 12 | 13 | Using the editor, you can drag and drop the scene located at `/addons/dialogic/Dialog.tscn` and set the current timeline via the Inspector. -------------------------------------------------------------------------------- /addons/dialogic/Dialog.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=3 format=2] 2 | 3 | [ext_resource path="res://addons/dialogic/Images/Plugin/placeholder.png" type="Texture" id=1] 4 | [ext_resource path="res://addons/dialogic/Nodes/DialogProxy.gd" type="Script" id=2] 5 | 6 | [node name="Dialog" type="Control"] 7 | anchor_right = 1.0 8 | anchor_bottom = 1.0 9 | script = ExtResource( 2 ) 10 | __meta__ = { 11 | "_edit_use_anchors_": false 12 | } 13 | 14 | [node name="TextureRect" type="TextureRect" parent="."] 15 | margin_right = 40.0 16 | margin_bottom = 40.0 17 | texture = ExtResource( 1 ) 18 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/Events/styles/SectionPanel.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="StyleBoxFlat" format=2] 2 | 3 | [resource] 4 | content_margin_left = 6.0 5 | content_margin_right = 6.0 6 | content_margin_top = 5.0 7 | content_margin_bottom = 4.0 8 | bg_color = Color( 0.6, 0.6, 0.6, 0 ) 9 | border_width_left = 1 10 | border_width_top = 1 11 | border_width_right = 1 12 | border_width_bottom = 1 13 | border_color = Color( 0.2, 0.227451, 0.309804, 1 ) 14 | corner_radius_top_left = 3 15 | corner_radius_top_right = 3 16 | corner_radius_bottom_right = 3 17 | corner_radius_bottom_left = 3 18 | -------------------------------------------------------------------------------- /addons/dialogic/Images/Resources/character-2.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/Events/styles/ResourceMenuPanelBackground.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="StyleBoxFlat" format=2] 2 | 3 | [resource] 4 | content_margin_left = 10.0 5 | content_margin_right = 10.0 6 | content_margin_top = 10.0 7 | content_margin_bottom = 10.0 8 | bg_color = Color( 0, 0, 0, 1 ) 9 | border_width_left = 1 10 | border_width_top = 1 11 | border_width_right = 1 12 | border_width_bottom = 1 13 | border_color = Color( 0.8, 0.8, 0.8, 0.109804 ) 14 | corner_radius_top_left = 4 15 | corner_radius_top_right = 4 16 | corner_radius_bottom_right = 4 17 | corner_radius_bottom_left = 4 18 | -------------------------------------------------------------------------------- /addons/dialogic/Images/Resources/character.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /addons/dialogic/Nodes/BackgroundMusic.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=2] 2 | 3 | [ext_resource path="res://addons/dialogic/Nodes/BackgroundMusic.gd" type="Script" id=1] 4 | 5 | [node name="BackgroundMusic" type="Control"] 6 | margin_right = 40.0 7 | margin_bottom = 40.0 8 | script = ExtResource( 1 ) 9 | __meta__ = { 10 | "_edit_use_anchors_": false 11 | } 12 | 13 | [node name="Track1" type="AudioStreamPlayer" parent="."] 14 | volume_db = -80.0 15 | 16 | [node name="Track2" type="AudioStreamPlayer" parent="."] 17 | volume_db = -80.0 18 | 19 | [node name="Tween" type="Tween" parent="."] 20 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/Events/styles/SimpleButtonHover.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="StyleBoxFlat" format=2] 2 | 3 | [resource] 4 | content_margin_left = 3.0 5 | content_margin_right = 3.0 6 | content_margin_top = 3.0 7 | content_margin_bottom = 3.0 8 | bg_color = Color( 0.2, 0.231373, 0.309804, 0.317647 ) 9 | border_width_left = 1 10 | border_width_top = 1 11 | border_width_right = 1 12 | border_width_bottom = 1 13 | border_color = Color( 0.8, 0.8, 0.8, 0.109804 ) 14 | corner_radius_top_left = 4 15 | corner_radius_top_right = 4 16 | corner_radius_bottom_right = 4 17 | corner_radius_bottom_left = 4 18 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/Events/styles/SimpleButtonNormal.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="StyleBoxFlat" format=2] 2 | 3 | [resource] 4 | content_margin_left = 3.0 5 | content_margin_right = 3.0 6 | content_margin_top = 3.0 7 | content_margin_bottom = 3.0 8 | bg_color = Color( 0.2, 0.231373, 0.309804, 0.235294 ) 9 | border_width_left = 1 10 | border_width_top = 1 11 | border_width_right = 1 12 | border_width_bottom = 1 13 | border_color = Color( 0.8, 0.8, 0.8, 0.109804 ) 14 | corner_radius_top_left = 4 15 | corner_radius_top_right = 4 16 | corner_radius_bottom_right = 4 17 | corner_radius_bottom_left = 4 18 | -------------------------------------------------------------------------------- /addons/dialogic/Images/Event Icons/Main Icons/choice.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /addons/dialogic/Example Assets/CustomEvents/EventBlock.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=2] 2 | 3 | [ext_resource path="res://addons/dialogic/Editor/Events/Templates/EventTemplate.tscn" type="PackedScene" id=1] 4 | 5 | [node name="ExampleCustomEvent" instance=ExtResource( 1 )] 6 | 7 | [node name="OptionsControl" parent="PanelContainer/MarginContainer/VBoxContainer/Header" index="7"] 8 | items = [ "Move Up", null, 0, false, false, 0, 0, null, "", false, "Move Down", null, 0, false, false, 1, 0, null, "", false, "", null, 0, false, false, 2, 0, null, "", false, "Remove", null, 0, false, false, 3, 0, null, "", false ] 9 | -------------------------------------------------------------------------------- /addons/dialogic/Nodes/Anima/animations/attention_seeker/pulse.gd: -------------------------------------------------------------------------------- 1 | func generate_animation(anima_tween: Tween, data: Dictionary) -> void: 2 | 3 | var scale = DialogicAnimaPropertiesHelper.get_scale(data.node) 4 | var frames = [ 5 | { percentage = 0, from = scale * Vector2(1, 1) }, 6 | { percentage = 50, to = scale * Vector2(1.05, 1.05), easing = anima_tween.EASING.EASE_IN_OUT_SINE }, 7 | { percentage = 100, to = scale * Vector2(1, 1) }, 8 | ] 9 | 10 | DialogicAnimaPropertiesHelper.set_2D_pivot(data.node, DialogicAnimaPropertiesHelper.PIVOT.CENTER) 11 | 12 | anima_tween.add_frames(data, "scale", frames) 13 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/Events/styles/SettingsFieldBackground.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="StyleBoxFlat" format=2] 2 | 3 | [resource] 4 | content_margin_left = 30.0 5 | content_margin_right = 25.0 6 | content_margin_top = 5.0 7 | content_margin_bottom = 5.0 8 | bg_color = Color( 0.12549, 0.141176, 0.192157, 1 ) 9 | border_width_left = 1 10 | border_width_top = 1 11 | border_width_right = 1 12 | border_width_bottom = 1 13 | border_color = Color( 0.0980392, 0.113725, 0.152941, 1 ) 14 | border_blend = true 15 | corner_radius_top_left = 3 16 | corner_radius_top_right = 3 17 | corner_radius_bottom_right = 3 18 | corner_radius_bottom_left = 3 19 | -------------------------------------------------------------------------------- /addons/dialogic/Nodes/Anima/animations/attention_seeker/shake_x.gd: -------------------------------------------------------------------------------- 1 | func generate_animation(anima_tween: Tween, data: Dictionary) -> void: 2 | var frames = [ 3 | { percentage = 0, to = 0 }, 4 | { percentage = 10, to = -10 }, 5 | { percentage = 20, to = +20 }, 6 | { percentage = 30, to = -20 }, 7 | { percentage = 40, to = +20 }, 8 | { percentage = 50, to = -20 }, 9 | { percentage = 60, to = +20 }, 10 | { percentage = 70, to = -20 }, 11 | { percentage = 80, to = +20 }, 12 | { percentage = 90, to = -20 }, 13 | { percentage = 100, to = +10 }, 14 | ] 15 | 16 | anima_tween.add_relative_frames(data, "x", frames) 17 | -------------------------------------------------------------------------------- /addons/dialogic/Nodes/Anima/animations/attention_seeker/shake_y.gd: -------------------------------------------------------------------------------- 1 | func generate_animation(anima_tween: Tween, data: Dictionary) -> void: 2 | var frames = [ 3 | { percentage = 0, to = 0 }, 4 | { percentage = 10, to = -10 }, 5 | { percentage = 20, to = +20 }, 6 | { percentage = 30, to = -20 }, 7 | { percentage = 40, to = +20 }, 8 | { percentage = 50, to = -20 }, 9 | { percentage = 60, to = +20 }, 10 | { percentage = 70, to = -20 }, 11 | { percentage = 80, to = +20 }, 12 | { percentage = 90, to = -20 }, 13 | { percentage = 100, to = +10 }, 14 | ] 15 | 16 | anima_tween.add_relative_frames(data, "y", frames) 17 | -------------------------------------------------------------------------------- /addons/dialogic/Images/Toolbar/add-character-1.25.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/Events/Parts/Logic/OperationPicker.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=3 format=2] 2 | 3 | [ext_resource path="res://addons/dialogic/Editor/Events/Parts/Logic/EventPart_OperationPicker.gd" type="Script" id=1] 4 | [ext_resource path="res://addons/dialogic/Editor/Events/Parts/ResourcePickers/ResourcePickerMenu.tscn" type="PackedScene" id=2] 5 | 6 | [node name="OperationPicker" type="VBoxContainer"] 7 | margin_right = 40.0 8 | margin_bottom = 40.0 9 | size_flags_vertical = 4 10 | script = ExtResource( 1 ) 11 | __meta__ = { 12 | "_edit_use_anchors_": false 13 | } 14 | 15 | [node name="MenuButton" parent="." instance=ExtResource( 2 )] 16 | -------------------------------------------------------------------------------- /addons/dialogic/Nodes/Anima/animations/entrances_and_exits/2-fade_in_up.gd: -------------------------------------------------------------------------------- 1 | func generate_animation(anima_tween: Tween, data: Dictionary) -> void: 2 | var opacity_frames = [ 3 | { from = 0, to = 1, easing_points = [0.42, 0, 0.58, 1] }, 4 | ] 5 | 6 | var size = DialogicAnimaPropertiesHelper.get_size(data.node) 7 | 8 | var position_frames = [ 9 | { percentage = 0, from = size.y/16, easing_points = [0.42, 0, 0.58, 1] }, 10 | { percentage = 100, to = -size.y/16, easing_points = [0.42, 0, 0.58, 1] }, 11 | ] 12 | 13 | anima_tween.add_relative_frames(data, "y", position_frames) 14 | anima_tween.add_frames(data, "opacity", opacity_frames) 15 | -------------------------------------------------------------------------------- /addons/dialogic/Example Assets/CustomEvents/EventPart_Example.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=3 format=2] 2 | 3 | [ext_resource path="res://addons/dialogic/Editor/Events/Parts/Text/CustomLineEdit.tscn" type="PackedScene" id=1] 4 | [ext_resource path="res://addons/dialogic/Example Assets/CustomEvents/EventPart_Example.gd" type="Script" id=2] 5 | 6 | [node name="EventPart_Example" type="HBoxContainer"] 7 | margin_right = 40.0 8 | margin_bottom = 40.0 9 | script = ExtResource( 2 ) 10 | __meta__ = { 11 | "_edit_use_anchors_": false 12 | } 13 | 14 | [node name="InputField" parent="." instance=ExtResource( 1 )] 15 | margin_top = 6.0 16 | margin_bottom = 33.0 17 | -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Events/010.md: -------------------------------------------------------------------------------- 1 | # Question Event 2 | ![image](./Images/Event_Question.PNG) 3 | 4 | The `Question Event` allows your story to branch and give the player options. 5 | When you add a `Question Event`, two [Choice Events](./011.md) and an [End Event](./013.md) will be added automatically. 6 | 7 | ## The text editor 8 | The block itself works very similar to a [Text Event](./001.md) and has all the options of that event. 9 | 10 | ## The choices 11 | To add choices to your question you can add [Choice Events](./011.md). 12 | 13 | ## Ending a question 14 | After all your choices, there also needs to be an [End Event](./013.md). -------------------------------------------------------------------------------- /addons/dialogic/Editor/Common/SectionTitle.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=3 format=2] 2 | 3 | [ext_resource path="res://addons/dialogic/Editor/Common/SectionTitle.gd" type="Script" id=1] 4 | 5 | [sub_resource type="StyleBoxFlat" id=1] 6 | content_margin_left = 4.0 7 | content_margin_right = 4.0 8 | content_margin_top = 4.0 9 | content_margin_bottom = 4.0 10 | bg_color = Color( 0.252, 0.2718, 0.3246, 1 ) 11 | 12 | [node name="SectionTitle" type="Label"] 13 | margin_right = 270.0 14 | margin_bottom = 22.0 15 | custom_styles/normal = SubResource( 1 ) 16 | text = "Visuals" 17 | script = ExtResource( 1 ) 18 | __meta__ = { 19 | "_edit_use_anchors_": false 20 | } 21 | -------------------------------------------------------------------------------- /addons/dialogic/Images/Event Icons/label.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Events/014.md: -------------------------------------------------------------------------------- 1 | # Set Value 2 | ![image](./Images/Event_Set_Value.PNG) 3 | The `Set Value` event can be used to change the value of `value definitions`. 4 | 5 | ## The options 6 | You can select the `value definition` to be changed, then the `type of change`. Then you can determine the new `value` to be set. 7 | + `[to be]` will set the definition to EXACTLY the given value. 8 | + the others will use the existing value and change it in the given way. These only work with numbers. 9 | 10 | By toggling the little cube icon, you can use a random number instead of the fixed input field. 11 | ![image](./Images/Event_Set_Value_random.PNG) -------------------------------------------------------------------------------- /addons/dialogic/Example Assets/History/HistoryBackground.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=2] 2 | 3 | [ext_resource path="res://addons/dialogic/Example Assets/backgrounds/background-2.png" type="Texture" id=1] 4 | 5 | [node name="DefaultBackground" type="Panel"] 6 | self_modulate = Color( 1, 1, 1, 0 ) 7 | anchor_right = 1.0 8 | anchor_bottom = 1.0 9 | mouse_filter = 2 10 | __meta__ = { 11 | "_edit_use_anchors_": false 12 | } 13 | 14 | [node name="TextureRect" type="TextureRect" parent="."] 15 | anchor_right = 1.0 16 | anchor_bottom = 1.0 17 | texture = ExtResource( 1 ) 18 | expand = true 19 | stretch_mode = 1 20 | __meta__ = { 21 | "_edit_use_anchors_": false 22 | } 23 | -------------------------------------------------------------------------------- /addons/dialogic/Nodes/Anima/animations/entrances_and_exits/slide_out_left.gd: -------------------------------------------------------------------------------- 1 | func generate_animation(anima_tween: Tween, data: Dictionary) -> void: 2 | var x_frames = [ 3 | { percentage = 0, to = 0 }, 4 | { percentage = 20, to = 0 }, 5 | { percentage = 100, to = -2000 }, 6 | ] 7 | 8 | var opacity_frames = [ 9 | { percentage = 0, from = 1 }, 10 | { percentage = 20, to = 0.7 }, 11 | { percentage = 100, to = 0.7 }, 12 | ] 13 | 14 | DialogicAnimaPropertiesHelper.set_2D_pivot(data.node, DialogicAnimaPropertiesHelper.PIVOT.CENTER) 15 | 16 | anima_tween.add_relative_frames(data, "x", x_frames) 17 | anima_tween.add_frames(data, "opacity", opacity_frames) 18 | -------------------------------------------------------------------------------- /addons/dialogic/Nodes/Anima/animations/entrances_and_exits/slide_out_right.gd: -------------------------------------------------------------------------------- 1 | func generate_animation(anima_tween: Tween, data: Dictionary) -> void: 2 | var x_frames = [ 3 | { percentage = 0, to = 0 }, 4 | { percentage = 20, to = 0 }, 5 | { percentage = 100, to = 2000 }, 6 | ] 7 | 8 | var opacity_frames = [ 9 | { percentage = 0, from = 1 }, 10 | { percentage = 20, to = 0.7 }, 11 | { percentage = 100, to = 0.7 }, 12 | ] 13 | 14 | DialogicAnimaPropertiesHelper.set_2D_pivot(data.node, DialogicAnimaPropertiesHelper.PIVOT.CENTER) 15 | 16 | anima_tween.add_relative_frames(data, "x", x_frames) 17 | anima_tween.add_frames(data, "opacity", opacity_frames) 18 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/Events/Parts/Logic/ConditionTypePicker.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=3 format=2] 2 | 3 | [ext_resource path="res://addons/dialogic/Editor/Events/Parts/Logic/EventPart_ConditionTypePicker.gd" type="Script" id=1] 4 | [ext_resource path="res://addons/dialogic/Editor/Events/Parts/ResourcePickers/ResourcePickerMenu.tscn" type="PackedScene" id=2] 5 | 6 | [node name="ConditionTypePicker" type="VBoxContainer"] 7 | margin_right = 40.0 8 | margin_bottom = 40.0 9 | script = ExtResource( 1 ) 10 | __meta__ = { 11 | "_edit_use_anchors_": false 12 | } 13 | 14 | [node name="MenuButton" parent="." instance=ExtResource( 2 )] 15 | margin_right = 98.0 16 | margin_bottom = 24.0 17 | -------------------------------------------------------------------------------- /addons/dialogic/Images/Event Icons/Main Icons/label.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/Events/Parts/EventPart_DummyEventDataShower.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends "res://addons/dialogic/Editor/Events/Parts/EventPart.gd" 3 | 4 | # has an event_data variable that stores the current data!!! 5 | 6 | ## node references 7 | onready var text_field = $EventId 8 | 9 | # used to connect the signals 10 | func _ready(): 11 | pass 12 | 13 | # called by the event block 14 | func load_data(data:Dictionary): 15 | # First set the event_data 16 | .load_data(data) 17 | 18 | # Now update the ui nodes to display the data. 19 | text_field.text = event_data['event_id'] 20 | 21 | # has to return the wanted preview, only useful for body parts 22 | func get_preview(): 23 | return '' 24 | -------------------------------------------------------------------------------- /addons/dialogic/Images/Event Icons/Main Icons/end-branch.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/Events/Parts/DummyEventDataShower.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=2] 2 | 3 | [ext_resource path="res://addons/dialogic/Editor/Events/Parts/EventPart_DummyEventDataShower.gd" type="Script" id=1] 4 | 5 | [node name="DummyEventDataShower" type="HBoxContainer"] 6 | margin_right = 40.0 7 | margin_bottom = 40.0 8 | script = ExtResource( 1 ) 9 | __meta__ = { 10 | "_edit_use_anchors_": false 11 | } 12 | 13 | [node name="Text" type="Label" parent="."] 14 | margin_top = 13.0 15 | margin_right = 62.0 16 | margin_bottom = 27.0 17 | text = "Event ID: " 18 | 19 | [node name="EventId" type="Label" parent="."] 20 | margin_left = 66.0 21 | margin_top = 13.0 22 | margin_right = 66.0 23 | margin_bottom = 27.0 24 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/Events/Parts/EventBlock/VisibleToggle.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=4 format=2] 2 | 3 | [ext_resource path="res://addons/dialogic/Images/Pieces/open-icon.svg" type="Texture" id=1] 4 | [ext_resource path="res://addons/dialogic/Images/Pieces/closed-icon.svg" type="Texture" id=2] 5 | [ext_resource path="res://addons/dialogic/Editor/Events/Parts/EventBlock/VisibleToggle.gd" type="Script" id=3] 6 | 7 | [node name="VisibleToggle" type="CheckBox"] 8 | margin_right = 30.0 9 | margin_bottom = 30.0 10 | custom_icons/checked = ExtResource( 1 ) 11 | custom_icons/unchecked = ExtResource( 2 ) 12 | pressed = true 13 | flat = true 14 | script = ExtResource( 3 ) 15 | __meta__ = { 16 | "_edit_use_anchors_": false 17 | } 18 | -------------------------------------------------------------------------------- /addons/dialogic/Nodes/Anima/animations/attention_seeker/heartbeat.gd: -------------------------------------------------------------------------------- 1 | func generate_animation(anima_tween: Tween, data: Dictionary) -> void: 2 | var scale = DialogicAnimaPropertiesHelper.get_scale(data.node) 3 | var frames = [ 4 | { percentage = 0, from = scale * Vector2(1, 1) }, 5 | { percentage = 14, to = scale * Vector2(1.3, 1.3) }, 6 | { percentage = 28, to = scale * Vector2(1, 1) }, 7 | { percentage = 42, to = scale * Vector2(1.3, 1.3) }, 8 | { percentage = 70, to = scale * Vector2(1, 1) }, 9 | { percentage = 100, to = scale * Vector2(1, 1) }, 10 | ] 11 | 12 | DialogicAnimaPropertiesHelper.set_2D_pivot(data.node, DialogicAnimaPropertiesHelper.PIVOT.CENTER) 13 | 14 | anima_tween.add_frames(data, "scale", frames) 15 | -------------------------------------------------------------------------------- /addons/dialogic/Images/Resources/timeline-1.25.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /addons/dialogic/Nodes/Anima/animations/entrances_and_exits/slide_in_left.gd: -------------------------------------------------------------------------------- 1 | func generate_animation(anima_tween: Tween, data: Dictionary) -> void: 2 | var x_frames = [ 3 | { percentage = 0, to = -2000 }, 4 | { percentage = 80, to = +2000 }, 5 | { percentage = 100, to = 0 }, 6 | ] 7 | 8 | 9 | var opacity_frames = [ 10 | { percentage = 0, from = 0.7 }, 11 | { percentage = 80, to = 0.7 }, 12 | { percentage = 100, to = 1 }, 13 | ] 14 | 15 | DialogicAnimaPropertiesHelper.set_2D_pivot(data.node, DialogicAnimaPropertiesHelper.PIVOT.CENTER) 16 | 17 | anima_tween.add_relative_frames(data, "x", x_frames) 18 | #anima_tween.add_frames(data, "scale", scale_frames) 19 | anima_tween.add_frames(data, "opacity", opacity_frames) 20 | -------------------------------------------------------------------------------- /addons/dialogic/Example Assets/CustomEvents/event_yourname_000.gd: -------------------------------------------------------------------------------- 1 | extends Node 2 | 3 | 4 | func handle_event(event_data, dialog_node): 5 | """ 6 | If this event should wait for dialog advance to occur, uncomment the WAITING line 7 | If this event should block the dialog from continuing, uncomment the WAITINT_INPUT line 8 | While other states exist, they generally are not neccesary, but include IDLE, TYPING, and ANIMATING 9 | """ 10 | #dialog_node.set_state(dialog_node.state.WAITING) 11 | #dialog_node.set_state(dialog_node.state.WAITING_INPUT) 12 | 13 | pass # fill with event action 14 | 15 | # once you want to continue with the next event 16 | dialog_node._load_next_event() 17 | dialog_node.set_state(dialog_node.state.READY) 18 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/Events/Parts/ResourcePickers/Scenes/ScenePicker.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=3 format=2] 2 | 3 | [ext_resource path="res://addons/dialogic/Editor/Events/Parts/ResourcePickers/Scenes/EventPart_ScenePicker.gd" type="Script" id=1] 4 | [ext_resource path="res://addons/dialogic/Editor/Events/Parts/ResourcePickers/Files/FilePicker.tscn" type="PackedScene" id=2] 5 | 6 | [node name="ScenePicker" type="VBoxContainer"] 7 | margin_right = 40.0 8 | margin_bottom = 40.0 9 | size_flags_vertical = 4 10 | script = ExtResource( 1 ) 11 | __meta__ = { 12 | "_edit_use_anchors_": false 13 | } 14 | 15 | [node name="FilePicker" parent="." instance=ExtResource( 2 )] 16 | margin_top = 0.0 17 | margin_right = 199.0 18 | margin_bottom = 22.0 19 | Mode = "Scene" 20 | -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Events/011.md: -------------------------------------------------------------------------------- 1 | # Choice Event 2 | ![image](./Images/Event_Choice.PNG) 3 | 4 | The `Choice Event` marks the start of a choice branch in a [question](./010.md). 5 | 6 | ## How it works 7 | Choice Events only work if they are placed inside a "question" ([Question Event](./010.md)). Once placed, you can place all kinds of new events below that choice. These events (which will be indented) will be executed when the choice is selected in game. 8 | 9 | ## Adding a condition 10 | By checking the `Has condition` check box and setting that condition, the player will only see that choice if the result is true. 11 | The condition is made up of three parts: The `Value Definition` that will be compared, the `type of comparison` and the `value` that it will be compared to. -------------------------------------------------------------------------------- /addons/dialogic/Nodes/Portrait.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=3 format=2] 2 | 3 | [ext_resource path="res://addons/dialogic/Nodes/Anima/DialogicAnimaTween.gd" type="Script" id=1] 4 | [ext_resource path="res://addons/dialogic/Nodes/Portrait.gd" type="Script" id=2] 5 | 6 | [node name="Portrait" type="Control"] 7 | rect_scale = Vector2( 0.7, 0.7 ) 8 | script = ExtResource( 2 ) 9 | __meta__ = { 10 | "_edit_use_anchors_": false 11 | } 12 | 13 | [node name="TextureRect" type="TextureRect" parent="."] 14 | stretch_mode = 6 15 | __meta__ = { 16 | "_edit_use_anchors_": false 17 | } 18 | 19 | [node name="AnimationTween" type="Tween" parent="."] 20 | script = ExtResource( 1 ) 21 | 22 | [node name="ModulationTween" type="Tween" parent="."] 23 | 24 | [node name="TweenPosition" type="Tween" parent="."] 25 | -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Nodes/DocumentationViewer.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends Control 3 | 4 | onready var DocTree = $HSplit/VBoxContainer/DocumentationTree 5 | onready var DocPageViewer = $HSplit/DocsPageViewer 6 | 7 | 8 | func _on_DocsPageViewer_open_non_html_link(link, section): 9 | DocTree.select_item(link) 10 | DocPageViewer.scroll_to_section(section) 11 | 12 | func _on_DocumentationTree_page_selected(path): 13 | DocPageViewer.load_page(path) 14 | 15 | func _on_FilterEntry_text_changed(new_text): 16 | var child = DocTree.documentation_tree.get_children() 17 | while child: 18 | child.call_recursive("call_deferred", "free") 19 | child = child.get_next() 20 | #DocsHelper.build_documentation_tree(DocTree, DocTree.documentation_tree,{},{}, new_text) 21 | DocTree.call_deferred("update") 22 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/Events/Parts/EventBlock/PopupMenu.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends PopupMenu 3 | 4 | func _ready(): 5 | clear() 6 | add_icon_item(get_icon("Help", "EditorIcons"), "Documentation") 7 | add_separator() 8 | add_icon_item(get_icon("ArrowUp", "EditorIcons"), "Move up") 9 | add_icon_item(get_icon("ArrowDown", "EditorIcons"), "Move down") 10 | add_separator() 11 | add_icon_item(get_icon("Remove", "EditorIcons"), "Delete") 12 | 13 | var menu_background = load("res://addons/dialogic/Editor/Events/styles/ResourceMenuPanelBackground.tres") 14 | menu_background.bg_color = get_color("base_color", "Editor") 15 | add_stylebox_override('panel', menu_background) 16 | add_stylebox_override('hover', StyleBoxEmpty.new()) 17 | add_color_override('font_color_hover', get_color("accent_color", "Editor")) 18 | -------------------------------------------------------------------------------- /addons/dialogic/Nodes/Anima/animations/attention_seeker/rubber_band.gd: -------------------------------------------------------------------------------- 1 | func generate_animation(anima_tween: Tween, data: Dictionary) -> void: 2 | var scale = DialogicAnimaPropertiesHelper.get_scale(data.node) 3 | var frames = [ 4 | { percentage = 0, from = scale * Vector2(1, 1) }, 5 | { percentage = 30, to = scale * Vector2(1.25, 0.75) }, 6 | { percentage = 40, to = scale * Vector2(0.75, 1.25) }, 7 | { percentage = 50, to = scale * Vector2(1.15, 0.85) }, 8 | { percentage = 65, to = scale * Vector2(0.95, 1.05) }, 9 | { percentage = 75, to = scale * Vector2(1.05, 0.95) }, 10 | { percentage = 100, to = scale * Vector2(1, 1) }, 11 | ] 12 | 13 | DialogicAnimaPropertiesHelper.set_2D_pivot(data.node, DialogicAnimaPropertiesHelper.PIVOT.CENTER) 14 | 15 | anima_tween.add_frames(data, "scale", frames) 16 | -------------------------------------------------------------------------------- /addons/dialogic/Images/Event Icons/Main Icons/close-dialog.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /addons/dialogic/Images/Toolbar/add-timeline-1.25.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/Events/Parts/Audio/VoiceEditor.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=3 format=2] 2 | 3 | [ext_resource path="res://addons/dialogic/Editor/Events/Parts/Audio/EventPart_VoiceEditor.gd" type="Script" id=1] 4 | [ext_resource path="res://addons/dialogic/Editor/Events/Parts/Audio/AudioPicker.tscn" type="PackedScene" id=2] 5 | 6 | [node name="VoiceEditor" type="VBoxContainer"] 7 | margin_right = 40.0 8 | margin_bottom = 40.0 9 | script = ExtResource( 1 ) 10 | __meta__ = { 11 | "_edit_use_anchors_": false 12 | } 13 | audio_picker = ExtResource( 2 ) 14 | 15 | [node name="Label" type="Label" parent="."] 16 | margin_right = 86.0 17 | margin_bottom = 14.0 18 | text = "Voice Picker :" 19 | 20 | [node name="List" type="GridContainer" parent="."] 21 | margin_top = 18.0 22 | margin_right = 86.0 23 | margin_bottom = 18.0 24 | columns = 2 25 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/MasterTree/MasterTree.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=3 format=2] 2 | 3 | [ext_resource path="res://addons/dialogic/Editor/MasterTree/MasterTree.gd" type="Script" id=1] 4 | [ext_resource path="res://addons/dialogic/Documentation/Nodes/DocsTreeHelper.tscn" type="PackedScene" id=2] 5 | 6 | [node name="MasterTree" type="Tree"] 7 | anchor_right = 1.0 8 | anchor_bottom = 1.0 9 | margin_right = -874.0 10 | rect_min_size = Vector2( 150, 0 ) 11 | allow_rmb_select = true 12 | hide_root = true 13 | drop_mode_flags = 3 14 | script = ExtResource( 1 ) 15 | 16 | [node name="RenamerReset" type="Timer" parent="."] 17 | one_shot = true 18 | 19 | [node name="AutoSave" type="Timer" parent="."] 20 | 21 | [node name="DocsTreeHelper" parent="." instance=ExtResource( 2 )] 22 | margin_right = 47.0 23 | margin_bottom = 45.0 24 | mouse_filter = 2 25 | -------------------------------------------------------------------------------- /addons/dialogic/Images/Toolbar/add-character-2.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /addons/dialogic/Images/Toolbar/add-character.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/SettingsEditor/Scenes/SettingsCheckbox.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends HBoxContainer 3 | 4 | export var text : String = '' 5 | export var default : bool = false 6 | export var settings_section : String = '' 7 | export var settings_key : String = '' 8 | var editor_reference 9 | 10 | func _ready(): 11 | editor_reference = find_parent('EditorView') 12 | # This node needs a Settings Editor parent to get the current loaded settings 13 | $CheckBox.text = editor_reference.dialogicTranslator.translate(text) 14 | var settings = DialogicResources.get_settings_config() 15 | $CheckBox.pressed = settings.get_value(settings_section, settings_key, default) 16 | $CheckBox.connect("toggled", self, "_on_toggled") 17 | 18 | func _on_toggled(button_pressed): 19 | DialogicResources.set_settings_value(settings_section, settings_key, button_pressed) 20 | -------------------------------------------------------------------------------- /addons/dialogic/Images/Event Icons/warning.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/Events/Parts/ResourcePickers/Scenes/EventPart_ScenePicker.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends "res://addons/dialogic/Editor/Events/Parts/EventPart.gd" 3 | 4 | # has an event_data variable that stores the current data!!! 5 | 6 | ## node references 7 | onready var file_picker = $FilePicker 8 | 9 | # used to connect the signals 10 | func _ready(): 11 | file_picker.connect("data_changed", self, "_on_ScenePicker_data_changed") 12 | 13 | # called by the event block 14 | func load_data(data:Dictionary): 15 | # First set the event_data 16 | .load_data(data) 17 | 18 | # Now update the ui nodes to display the data. 19 | file_picker.load_data(data) 20 | 21 | # has to return the wanted preview, only useful for body parts 22 | func get_preview(): 23 | return '' 24 | 25 | func _on_ScenePicker_data_changed(data): 26 | event_data = data 27 | data_changed() 28 | 29 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/Events/Parts/ResourcePickers/Definitions/DefinitionPicker.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=3 format=2] 2 | 3 | [ext_resource path="res://addons/dialogic/Editor/Events/Parts/ResourcePickers/Definitions/EventPart_DefinitionPicker.gd" type="Script" id=1] 4 | [ext_resource path="res://addons/dialogic/Editor/Events/Parts/ResourcePickers/ResourcePickerMenu.tscn" type="PackedScene" id=2] 5 | 6 | [node name="DefinitionPicker" type="VBoxContainer"] 7 | margin_right = 83.0 8 | margin_bottom = 22.0 9 | size_flags_vertical = 4 10 | script = ExtResource( 1 ) 11 | __meta__ = { 12 | "_edit_use_anchors_": false 13 | } 14 | default_text = "Value" 15 | 16 | [node name="HBox" type="HBoxContainer" parent="."] 17 | margin_right = 98.0 18 | margin_bottom = 22.0 19 | 20 | [node name="MenuButton" parent="HBox" instance=ExtResource( 2 )] 21 | margin_right = 98.0 22 | text = "Definition" 23 | -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/FAQ/create-timeline-using-gdscript.md: -------------------------------------------------------------------------------- 1 | # Creating timeline in code? 2 | 3 | **Can I create a timeline using GDScript?** 4 | 5 | Yes! It's a bit harder since you will have to create each event yourself, and each event has to be **valid.** To get an idea for how to build one properly, open an already created timeline with a text editor and see how we set ours up as an example for yourself. We'll be adding a better tutorial and documentation on this process eventually. 6 | 7 | 8 | Here's a simple example: 9 | 10 | ``` 11 | 12 | func _ready(): 13 | 14 | var gdscript_dialog = Dialogic.start('') 15 | 16 | gdscript_dialog.dialog_node.dialog_script = { 17 | 18 | "events":[ 19 | 20 | { 'event_id':'dialogic_001', "text": "This dialog was created using GDScript!"} 21 | 22 | ] 23 | 24 | } 25 | 26 | add_child(gdscript_dialog) 27 | 28 | ``` 29 | -------------------------------------------------------------------------------- /addons/dialogic/Images/Event Icons/Portrait.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /addons/dialogic/Images/Event Icons/Main Icons/call-node.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Tutorials/Values.md: -------------------------------------------------------------------------------- 1 | # Values 2 | 3 | Values are a dialogic resource that allows to store strings and integers and easily reference them with dialogic. 4 | 5 | Once created, a value with a name (e.g. `PlayerName` or `PlayerStrength`) can be added into text events by using square brackets: 6 | ![Value is being used](./Images/ValueInUse.PNG) 7 | 8 | It can also be used in conditions (Condition Event, Choice Event). 9 | 10 | From outside values can be accessed using the DialogiClass: 11 | ``` 12 | func _ready(): 13 | Dialogic.set_variable('PlayerName', 'John') 14 | if Dialogic.get_variable('PlayerStrength') > 10: 15 | print("Wow, so strong!") 16 | ``` 17 | 18 | You can also use the whole path when referencing variables. In text this could look like `[Characters/Player/Name]`, in code like `Dialogic.set_variable('Characters/Player/Name', 'Sally')`. 19 | 20 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/Events/Parts/Images/BackgroundPreview.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=2] 2 | 3 | [ext_resource path="res://addons/dialogic/Editor/Events/Parts/Images/EventPart_BackgroundPreview.gd" type="Script" id=1] 4 | 5 | [node name="BackgroundPreview" type="VBoxContainer"] 6 | margin_right = 40.0 7 | margin_bottom = 40.0 8 | size_flags_horizontal = 0 9 | script = ExtResource( 1 ) 10 | __meta__ = { 11 | "_edit_use_anchors_": false 12 | } 13 | 14 | [node name="Box" type="CenterContainer" parent="."] 15 | margin_right = 200.0 16 | margin_bottom = 200.0 17 | mouse_filter = 1 18 | size_flags_horizontal = 3 19 | size_flags_vertical = 3 20 | __meta__ = { 21 | "_edit_use_anchors_": false 22 | } 23 | 24 | [node name="TextureRect" type="TextureRect" parent="Box"] 25 | margin_right = 200.0 26 | margin_bottom = 200.0 27 | rect_min_size = Vector2( 200, 200 ) 28 | size_flags_vertical = 5 29 | expand = true 30 | stretch_mode = 6 31 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/Events/Parts/Text/EventPart_SignalArgumentPicker.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends "res://addons/dialogic/Editor/Events/Parts/EventPart.gd" 3 | 4 | # has an event_data variable that stores the current data!!! 5 | 6 | ## node references 7 | onready var input_field = $HBox/InputField 8 | 9 | # used to connect the signals 10 | func _ready(): 11 | input_field.connect("text_changed", self, "_on_InputField_text_changed") 12 | 13 | # called by the event block 14 | func load_data(data:Dictionary): 15 | # First set the event_data 16 | .load_data(data) 17 | 18 | # Now update the ui nodes to display the data. 19 | input_field.text = event_data['emit_signal'] 20 | 21 | # has to return the wanted preview, only useful for body parts 22 | func get_preview(): 23 | return '' 24 | 25 | func _on_InputField_text_changed(text): 26 | event_data['emit_signal'] = text 27 | 28 | # informs the parent about the changes! 29 | data_changed() 30 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/Events/Parts/ResourcePickers/Timelines/TimelinePicker.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=4 format=2] 2 | 3 | [ext_resource path="res://addons/dialogic/Editor/Events/Parts/ResourcePickers/Timelines/EventPart_TimelinePicker.gd" type="Script" id=1] 4 | [ext_resource path="res://addons/dialogic/Editor/Events/Parts/ResourcePickers/ResourcePickerMenu.tscn" type="PackedScene" id=2] 5 | [ext_resource path="res://addons/dialogic/Editor/Events/Parts/Text/GreyLabel.tscn" type="PackedScene" id=3] 6 | 7 | [node name="TimelinePicker" type="HBoxContainer"] 8 | margin_right = 119.0 9 | margin_bottom = 20.0 10 | size_flags_vertical = 6 11 | script = ExtResource( 1 ) 12 | 13 | [node name="Label" parent="." instance=ExtResource( 3 )] 14 | margin_right = 87.0 15 | custom_colors/font_color = Color( 0, 0, 0, 1 ) 16 | text = "Start timeline" 17 | 18 | [node name="MenuButton" parent="." instance=ExtResource( 2 )] 19 | margin_left = 91.0 20 | margin_right = 185.0 21 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/Events/Parts/Logic/GoTo Selector.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=4 format=2] 2 | 3 | [ext_resource path="res://addons/dialogic/Editor/Events/Parts/Logic/EventPart_GoToSelector.gd" type="Script" id=1] 4 | [ext_resource path="res://addons/dialogic/Editor/Events/Parts/ResourcePickers/ResourcePickerMenu.tscn" type="PackedScene" id=2] 5 | [ext_resource path="res://addons/dialogic/Editor/Events/Parts/Text/GreyLabel.tscn" type="PackedScene" id=3] 6 | 7 | [node name="GoTo Selector" type="HBoxContainer"] 8 | margin_right = 129.0 9 | margin_bottom = 22.0 10 | size_flags_vertical = 4 11 | script = ExtResource( 1 ) 12 | __meta__ = { 13 | "_edit_use_anchors_": false 14 | } 15 | 16 | [node name="Label" parent="." instance=ExtResource( 3 )] 17 | margin_right = 31.0 18 | custom_colors/font_color = Color( 0, 0, 0, 1 ) 19 | text = "label" 20 | 21 | [node name="MenuButton" parent="." instance=ExtResource( 2 )] 22 | margin_left = 35.0 23 | margin_right = 129.0 24 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/Events/Parts/Numbers/EventPart_TransitonLengthPicker.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends "res://addons/dialogic/Editor/Events/Parts/EventPart.gd" 3 | 4 | # has an event_data variable that stores the current data!!! 5 | 6 | ## node references 7 | onready var number_box = $HBox/NumberBox 8 | 9 | # used to connect the signals 10 | func _ready(): 11 | number_box.connect("value_changed", self, "_on_NumberBox_value_changed") 12 | 13 | # called by the event block 14 | func load_data(data:Dictionary): 15 | # First set the event_data 16 | .load_data(data) 17 | 18 | # Now update the ui nodes to display the data. 19 | number_box.value = event_data['transition_duration'] 20 | 21 | # has to return the wanted preview, only useful for body parts 22 | func get_preview(): 23 | return '' 24 | 25 | func _on_NumberBox_value_changed(value): 26 | event_data['transition_duration'] = value 27 | 28 | # informs the parent about the changes! 29 | data_changed() 30 | -------------------------------------------------------------------------------- /addons/dialogic/Nodes/Anima/animations/attention_seeker/tada.gd: -------------------------------------------------------------------------------- 1 | func generate_animation(anima_tween: Tween, data: Dictionary) -> void: 2 | var rotate_frames = [ 3 | { percentage = 0, from = 0 }, 4 | ] 5 | var scale_frames = [ 6 | { percentage = 0, from = DialogicAnimaPropertiesHelper.get_scale(data.node) * Vector2(1, 1) }, 7 | ] 8 | 9 | for index in range(2, 9): 10 | var s = -1 if index % 2 == 0 else 1 11 | var percent = index * 10.0 12 | 13 | rotate_frames.push_back({ percentage = percent, to = 3 * s }) 14 | scale_frames.push_back({ percentage = percent, to = Vector2(1.1, 1.1) }) 15 | 16 | DialogicAnimaPropertiesHelper.set_2D_pivot(data.node, DialogicAnimaPropertiesHelper.PIVOT.CENTER) 17 | 18 | rotate_frames.push_back({percentage = 100, to = 0}) 19 | scale_frames.push_back({percentage = 100, to = Vector2(1, 1)}) 20 | 21 | anima_tween.add_frames(data, "rotation", rotate_frames) 22 | anima_tween.add_frames(data, "scale", scale_frames) 23 | -------------------------------------------------------------------------------- /addons/dialogic/Images/Event Icons/Main Icons/change-background.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Events/040.md: -------------------------------------------------------------------------------- 1 | # Emit Signal 2 | ![image](./Images/Event_Emit_Signal.PNG) 3 | 4 | The `Emit Signal` event will emit the signal `dialogic_signal` of the **current dialog node** and pass the given string as an **argument**. 5 | The event does NOT create a new signal! 6 | 7 | If you instance your timeline via script, use code similar to this: 8 | ```gd 9 | func start_dialog(): 10 | var dialog = Dialogic.start("my_timeline") 11 | dialog.connect("dialogic_signal", self, "dialog_listener") 12 | add_child(dialog) 13 | 14 | func dialog_listener(string): 15 | match string: 16 | "quest_point_two": 17 | # do something 18 | pass 19 | ``` 20 | 21 | If you instanced the scene using the editor, you can connect the signal like normal in Godot from the `NODE TAB > Signals`. 22 | 23 | *If you don't know about signals you should definitely learn about them. For example [here](https://docs.godotengine.org/en/3.5/getting_started/step_by_step/signals.html).* 24 | -------------------------------------------------------------------------------- /addons/dialogic/Nodes/Anima/animations/entrances_and_exits/bounce_out.gd: -------------------------------------------------------------------------------- 1 | func generate_animation(anima_tween: Tween, data: Dictionary) -> void: 2 | var scale = DialogicAnimaPropertiesHelper.get_scale(data.node) 3 | var scale_frames = [ 4 | { percentage = 0, from = scale * Vector2(1, 1) }, 5 | { percentage = 20, to = scale * Vector2(0.9, 0.9) }, 6 | { percentage = 50, to = scale * Vector2(1.1, 1.1) }, 7 | { percentage = 55, to = scale * Vector2(1.1, 1.1) }, 8 | { percentage = 100, to = scale * Vector2(0.3, 0.3) }, 9 | ] 10 | 11 | var opacity_frames = [ 12 | { percentage = 0, from = 1 }, 13 | { percentage = 20, to = 1 }, 14 | { percentage = 50, to = 1 }, 15 | { percentage = 55, to = 1 }, 16 | { percentage = 100, to = 0 }, 17 | ] 18 | 19 | DialogicAnimaPropertiesHelper.set_2D_pivot(data.node, DialogicAnimaPropertiesHelper.PIVOT.CENTER) 20 | 21 | anima_tween.add_frames(data, "scale", scale_frames) 22 | anima_tween.add_frames(data, "opacity", opacity_frames) 23 | -------------------------------------------------------------------------------- /addons/dialogic/Nodes/Anima/animations/entrances_and_exits/back_in_up.gd: -------------------------------------------------------------------------------- 1 | func generate_animation(anima_tween: Tween, data: Dictionary) -> void: 2 | var y_frames = [ 3 | { percentage = 0, to = 1200 }, 4 | { percentage = 80, to = -1200 }, 5 | { percentage = 100, to = 0 }, 6 | ] 7 | 8 | var scale = DialogicAnimaPropertiesHelper.get_scale(data.node) 9 | var scale_frames = [ 10 | { percentage = 0, from = scale * Vector2(0.7, 0.7) }, 11 | { percentage = 80, to = scale * Vector2(0.7, 0.7) }, 12 | { percentage = 100, to = scale * Vector2(1, 1) }, 13 | ] 14 | 15 | var opacity_frames = [ 16 | { percentage = 0, from = 0.7 }, 17 | { percentage = 80, to = 0.7 }, 18 | { percentage = 100, to = 1 }, 19 | ] 20 | 21 | DialogicAnimaPropertiesHelper.set_2D_pivot(data.node, DialogicAnimaPropertiesHelper.PIVOT.CENTER) 22 | 23 | anima_tween.add_relative_frames(data, "y", y_frames) 24 | anima_tween.add_frames(data, "scale", scale_frames) 25 | anima_tween.add_frames(data, "opacity", opacity_frames) 26 | -------------------------------------------------------------------------------- /addons/dialogic/Nodes/Anima/animations/entrances_and_exits/back_out_down.gd: -------------------------------------------------------------------------------- 1 | func generate_animation(anima_tween: Tween, data: Dictionary) -> void: 2 | var y_frames = [ 3 | { percentage = 0, to = 0 }, 4 | { percentage = 20, to = 0 }, 5 | { percentage = 100, to = -700 }, 6 | ] 7 | 8 | var scale = DialogicAnimaPropertiesHelper.get_scale(data.node) 9 | var scale_frames = [ 10 | { percentage = 0, from = scale * Vector2(1, 1) }, 11 | { percentage = 20, to = scale * Vector2(0.7, 0.7) }, 12 | { percentage = 100, to = scale * Vector2(0.7, 0.7) }, 13 | ] 14 | 15 | var opacity_frames = [ 16 | { percentage = 0, from = 1 }, 17 | { percentage = 20, to = 0.7 }, 18 | { percentage = 100, to = 0.7 }, 19 | ] 20 | 21 | DialogicAnimaPropertiesHelper.set_2D_pivot(data.node, DialogicAnimaPropertiesHelper.PIVOT.CENTER) 22 | 23 | anima_tween.add_relative_frames(data, "y", y_frames) 24 | anima_tween.add_frames(data, "scale", scale_frames) 25 | anima_tween.add_frames(data, "opacity", opacity_frames) 26 | -------------------------------------------------------------------------------- /addons/dialogic/Nodes/Anima/animations/entrances_and_exits/back_out_left.gd: -------------------------------------------------------------------------------- 1 | func generate_animation(anima_tween: Tween, data: Dictionary) -> void: 2 | var x_frames = [ 3 | { percentage = 0, to = 0 }, 4 | { percentage = 20, to = 0 }, 5 | { percentage = 100, to = -2000 }, 6 | ] 7 | 8 | var scale = DialogicAnimaPropertiesHelper.get_scale(data.node) 9 | var scale_frames = [ 10 | { percentage = 0, from = scale * Vector2(1, 1) }, 11 | { percentage = 20, to = scale * Vector2(0.7, 0.7) }, 12 | { percentage = 100, to = scale * Vector2(0.7, 0.7) }, 13 | ] 14 | 15 | var opacity_frames = [ 16 | { percentage = 0, from = 1 }, 17 | { percentage = 20, to = 0.7 }, 18 | { percentage = 100, to = 0.7 }, 19 | ] 20 | 21 | DialogicAnimaPropertiesHelper.set_2D_pivot(data.node, DialogicAnimaPropertiesHelper.PIVOT.CENTER) 22 | 23 | anima_tween.add_relative_frames(data, "x", x_frames) 24 | anima_tween.add_frames(data, "scale", scale_frames) 25 | anima_tween.add_frames(data, "opacity", opacity_frames) 26 | -------------------------------------------------------------------------------- /addons/dialogic/Nodes/Anima/animations/entrances_and_exits/back_out_right.gd: -------------------------------------------------------------------------------- 1 | func generate_animation(anima_tween: Tween, data: Dictionary) -> void: 2 | var x_frames = [ 3 | { percentage = 0, to = 0 }, 4 | { percentage = 20, to = 0 }, 5 | { percentage = 100, to = 2000 }, 6 | ] 7 | 8 | var scale = DialogicAnimaPropertiesHelper.get_scale(data.node) 9 | var scale_frames = [ 10 | { percentage = 0, from = scale * Vector2(1, 1) }, 11 | { percentage = 20, to = scale * Vector2(0.7, 0.7) }, 12 | { percentage = 100, to = scale * Vector2(0.7, 0.7) }, 13 | ] 14 | 15 | var opacity_frames = [ 16 | { percentage = 0, from = 1 }, 17 | { percentage = 20, to = 0.7 }, 18 | { percentage = 100, to = 0.7 }, 19 | ] 20 | 21 | DialogicAnimaPropertiesHelper.set_2D_pivot(data.node, DialogicAnimaPropertiesHelper.PIVOT.CENTER) 22 | 23 | anima_tween.add_relative_frames(data, "x", x_frames) 24 | anima_tween.add_frames(data, "scale", scale_frames) 25 | anima_tween.add_frames(data, "opacity", opacity_frames) 26 | -------------------------------------------------------------------------------- /addons/dialogic/Nodes/Anima/animations/entrances_and_exits/back_out_up.gd: -------------------------------------------------------------------------------- 1 | func generate_animation(anima_tween: Tween, data: Dictionary) -> void: 2 | var y_frames = [ 3 | { percentage = 0, to = 0 }, 4 | { percentage = 20, to = 0 }, 5 | { percentage = 100, to = 700 }, 6 | ] 7 | 8 | var scale = DialogicAnimaPropertiesHelper.get_scale(data.node) 9 | var scale_frames = [ 10 | { percentage = 0, from = scale * Vector2(1, 1) }, 11 | { percentage = 20, to = scale * Vector2(0.7, 0.7) }, 12 | { percentage = 100, to = scale * Vector2(0.7, 0.7) }, 13 | ] 14 | 15 | var opacity_frames = [ 16 | { percentage = 0, from = 1 }, 17 | { percentage = 20, to = 0.7 }, 18 | { percentage = 100, to = 0.7 }, 19 | ] 20 | 21 | DialogicAnimaPropertiesHelper.set_2D_pivot(data.node, DialogicAnimaPropertiesHelper.PIVOT.CENTER) 22 | 23 | anima_tween.add_relative_frames(data, "y", y_frames) 24 | anima_tween.add_frames(data, "scale", scale_frames) 25 | anima_tween.add_frames(data, "opacity", opacity_frames) 26 | -------------------------------------------------------------------------------- /addons/dialogic/Nodes/Anima/animations/entrances_and_exits/back_in_down.gd: -------------------------------------------------------------------------------- 1 | func generate_animation(anima_tween: Tween, data: Dictionary) -> void: 2 | var y_frames = [ 3 | { percentage = 0, to = -1200 }, 4 | { percentage = 80, to = +1200 }, 5 | { percentage = 100, to = 0 }, 6 | ] 7 | 8 | var scale = DialogicAnimaPropertiesHelper.get_scale(data.node) 9 | var scale_frames = [ 10 | { percentage = 0, from = scale * Vector2(0.7, 0.7) }, 11 | { percentage = 80, to = scale * Vector2(0.7, 0.7) }, 12 | { percentage = 100, to = scale * Vector2(1, 1) }, 13 | ] 14 | 15 | var opacity_frames = [ 16 | { percentage = 0, from = 0.7 }, 17 | { percentage = 80, to = 0.7 }, 18 | { percentage = 100, to = 1 }, 19 | ] 20 | 21 | DialogicAnimaPropertiesHelper.set_2D_pivot(data.node, DialogicAnimaPropertiesHelper.PIVOT.CENTER) 22 | 23 | anima_tween.add_relative_frames(data, "y", y_frames) 24 | anima_tween.add_frames(data, "scale", scale_frames) 25 | anima_tween.add_frames(data, "opacity", opacity_frames) 26 | -------------------------------------------------------------------------------- /addons/dialogic/Nodes/Anima/animations/entrances_and_exits/back_in_left.gd: -------------------------------------------------------------------------------- 1 | func generate_animation(anima_tween: Tween, data: Dictionary) -> void: 2 | var x_frames = [ 3 | { percentage = 0, to = -2000 }, 4 | { percentage = 80, to = +2000 }, 5 | { percentage = 100, to = 0 }, 6 | ] 7 | 8 | var scale = DialogicAnimaPropertiesHelper.get_scale(data.node) 9 | var scale_frames = [ 10 | { percentage = 0, from = scale * Vector2(0.7, 0.7) }, 11 | { percentage = 80, to = scale * Vector2(0.7, 0.7) }, 12 | { percentage = 100, to = scale * Vector2(1, 1) }, 13 | ] 14 | 15 | var opacity_frames = [ 16 | { percentage = 0, from = 0.7 }, 17 | { percentage = 80, to = 0.7 }, 18 | { percentage = 100, to = 1 }, 19 | ] 20 | 21 | DialogicAnimaPropertiesHelper.set_2D_pivot(data.node, DialogicAnimaPropertiesHelper.PIVOT.CENTER) 22 | 23 | anima_tween.add_relative_frames(data, "x", x_frames) 24 | anima_tween.add_frames(data, "scale", scale_frames) 25 | anima_tween.add_frames(data, "opacity", opacity_frames) 26 | -------------------------------------------------------------------------------- /addons/dialogic/Nodes/Anima/animations/entrances_and_exits/back_in_right.gd: -------------------------------------------------------------------------------- 1 | func generate_animation(anima_tween: Tween, data: Dictionary) -> void: 2 | var x_frames = [ 3 | { percentage = 0, to = 2000 }, 4 | { percentage = 80, to = -2000 }, 5 | { percentage = 100, to = 0 }, 6 | ] 7 | 8 | var scale = DialogicAnimaPropertiesHelper.get_scale(data.node) 9 | var scale_frames = [ 10 | { percentage = 0, from = scale * Vector2(0.7, 0.7) }, 11 | { percentage = 80, to = scale * Vector2(0.7, 0.7) }, 12 | { percentage = 100, to = scale * Vector2(1, 1) }, 13 | ] 14 | 15 | var opacity_frames = [ 16 | { percentage = 0, from = 0.7 }, 17 | { percentage = 80, to = 0.7 }, 18 | { percentage = 100, to = 1 }, 19 | ] 20 | 21 | DialogicAnimaPropertiesHelper.set_2D_pivot(data.node, DialogicAnimaPropertiesHelper.PIVOT.CENTER) 22 | 23 | anima_tween.add_relative_frames(data, "x", x_frames) 24 | anima_tween.add_frames(data, "scale", scale_frames) 25 | anima_tween.add_frames(data, "opacity", opacity_frames) 26 | -------------------------------------------------------------------------------- /addons/dialogic/Nodes/Anima/animations/entrances_and_exits/slide_in_right.gd: -------------------------------------------------------------------------------- 1 | func generate_animation(anima_tween: Tween, data: Dictionary) -> void: 2 | var x_frames = [ 3 | { percentage = 0, to = 2000 }, 4 | { percentage = 80, to = -2000 }, 5 | { percentage = 100, to = 0 }, 6 | ] 7 | 8 | var scale = DialogicAnimaPropertiesHelper.get_scale(data.node) 9 | var scale_frames = [ 10 | { percentage = 0, from = scale * Vector2(0.7, 0.7) }, 11 | { percentage = 80, to = scale * Vector2(0.7, 0.7) }, 12 | { percentage = 100, to = scale * Vector2(1, 1) }, 13 | ] 14 | 15 | var opacity_frames = [ 16 | { percentage = 0, from = 0.7 }, 17 | { percentage = 80, to = 0.7 }, 18 | { percentage = 100, to = 1 }, 19 | ] 20 | 21 | DialogicAnimaPropertiesHelper.set_2D_pivot(data.node, DialogicAnimaPropertiesHelper.PIVOT.CENTER) 22 | 23 | anima_tween.add_relative_frames(data, "x", x_frames) 24 | anima_tween.add_frames(data, "scale", scale_frames) 25 | anima_tween.add_frames(data, "opacity", opacity_frames) 26 | -------------------------------------------------------------------------------- /addons/dialogic/Example Assets/CustomEvents/EventPart_Example.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends "res://addons/dialogic/Editor/Events/Parts/EventPart.gd" 3 | # has an event_data variable that stores the current data!!! 4 | 5 | ## node references 6 | # e.g. 7 | onready var input_field = $InputField 8 | 9 | # used to connect the signals 10 | func _ready(): 11 | # e.g. 12 | input_field.connect("text_changed", self, "_on_InputField_text_changed") 13 | pass 14 | 15 | # called by the event block 16 | func load_data(data:Dictionary): 17 | # First set the event_data 18 | .load_data(data) 19 | 20 | # Now update the ui nodes to display the data. 21 | # e.g. 22 | input_field.text = event_data['my_text_key'] 23 | 24 | # has to return the wanted preview, only useful for body parts 25 | func get_preview(): 26 | return '' 27 | 28 | ## EXAMPLE CHANGE IN ONE OF THE NODES 29 | func _on_InputField_text_changed(text): 30 | event_data['my_text_key'] = text 31 | 32 | # informs the parent about the changes! 33 | data_changed() 34 | -------------------------------------------------------------------------------- /addons/dialogic/Nodes/Anima/animations/attention_seeker/headshake.gd: -------------------------------------------------------------------------------- 1 | func generate_animation(anima_tween: Tween, data: Dictionary) -> void: 2 | var start = DialogicAnimaPropertiesHelper.get_position(data.node) 3 | 4 | var shake_frames = [ 5 | { percentage = 0, from = 0 }, 6 | { percentage = 6.5, to = -6 }, 7 | { percentage = 18.5, to = +5 }, 8 | { percentage = 31.5, to = -3 }, 9 | { percentage = 43.5, to = +2 }, 10 | { percentage = 50, to = 0 }, 11 | { percentage = 100, to = 0 }, 12 | ] 13 | 14 | var rotate_frames = [ 15 | { percentage = 0, to = 0 }, 16 | { percentage = 6.5, to = -9 }, 17 | { percentage = 18.5, to = +7 }, 18 | { percentage = 31.5, to = -5 }, 19 | { percentage = 43.5, to = +3 }, 20 | { percentage = 50, to = 0 }, 21 | { percentage = 100, to = 0 }, 22 | ] 23 | 24 | DialogicAnimaPropertiesHelper.set_2D_pivot(data.node, DialogicAnimaPropertiesHelper.PIVOT.CENTER) 25 | 26 | anima_tween.add_relative_frames(data, "x", shake_frames) 27 | anima_tween.add_frames(data, "rotation", rotate_frames) 28 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/Events/Parts/Text/TextAndVoiceEditor.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=4 format=2] 2 | 3 | [ext_resource path="res://addons/dialogic/Editor/Events/Parts/Text/EventPart_TextAndVoicePicker.gd" type="Script" id=1] 4 | [ext_resource path="res://addons/dialogic/Editor/Events/Parts/Audio/VoiceEditor.tscn" type="PackedScene" id=2] 5 | [ext_resource path="res://addons/dialogic/Editor/Events/Parts/Text/TextEditor.tscn" type="PackedScene" id=3] 6 | 7 | [node name="TextAndVoiceEditor" type="VBoxContainer"] 8 | margin_right = 40.0 9 | margin_bottom = 40.0 10 | script = ExtResource( 1 ) 11 | __meta__ = { 12 | "_edit_use_anchors_": false 13 | } 14 | 15 | [node name="VBoxContainer" type="VBoxContainer" parent="."] 16 | margin_right = 40.0 17 | margin_bottom = 15.0 18 | 19 | [node name="TextEditor" parent="VBoxContainer" instance=ExtResource( 3 )] 20 | margin_bottom = 15.0 21 | 22 | [node name="VoiceEditor" parent="VBoxContainer" instance=ExtResource( 2 )] 23 | visible = false 24 | margin_top = 4.0 25 | margin_right = 358.0 26 | margin_bottom = 44.0 27 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/Events/Parts/ExampleEventPartScript.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends "res://addons/dialogic/Editor/Events/Parts/EventPart.gd" 3 | 4 | ## BEFORE EDITING THIS MAKE SURE YOU HAVE CREATED A UNIQUE SCRIPT!!! 5 | 6 | # has an event_data variable that stores the current data!!! 7 | 8 | ## node references 9 | # e.g. 10 | onready var input_field = $Box/InputField 11 | 12 | # used to connect the signals 13 | func _ready(): 14 | # e.g. 15 | input_field.connect("text_changed", self, "_on_InputField_text_changed") 16 | pass 17 | 18 | # called by the event block 19 | func load_data(data:Dictionary): 20 | # First set the event_data 21 | .load_data(data) 22 | 23 | # Now update the ui nodes to display the data. 24 | # e.g. 25 | input_field.text = event_data['my_text_key'] 26 | 27 | # has to return the wanted preview, only useful for body parts 28 | func get_preview(): 29 | return '' 30 | 31 | ## EXAMPLE CHANGE IN ONE OF THE NODES 32 | func _on_InputField_text_changed(text): 33 | event_data['my_text_key'] = text 34 | 35 | # informs the parent about the changes! 36 | data_changed() 37 | -------------------------------------------------------------------------------- /addons/dialogic/Nodes/Anima/AnimaLicense.md: -------------------------------------------------------------------------------- 1 | Copyright © 2021 Alessandro Senese (ceceppa) 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 4 | 5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 6 | 7 | THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /addons/dialogic/Other/export_plugin.gd: -------------------------------------------------------------------------------- 1 | extends EditorExportPlugin 2 | 3 | func _export_begin(features: PoolStringArray, is_debug: bool, path: String, flags: int) -> void: 4 | # This fixes the android export 'multiple file in zip' bug 5 | for feature in features: 6 | if feature == "Android": 7 | return 8 | 9 | var file = File.new() 10 | var directory = Directory.new() 11 | 12 | var paths = DialogicResources.get_working_directories() 13 | 14 | # Loops through every file in the working directories 15 | # and adds it as a custom export file 16 | for dir in paths: 17 | if directory.open(paths[dir]) == OK: 18 | directory.list_dir_begin() 19 | var file_name = directory.get_next() 20 | while file_name != "": 21 | if not directory.current_is_dir(): 22 | var file_lower = file_name.to_lower() 23 | if '.json' in file_lower or '.cfg' in file_lower: 24 | var file_path = paths[dir] + "/" + file_name 25 | if file.open(file_path, File.READ) == OK: 26 | add_file(file_path, file.get_buffer(file.get_len()), false) 27 | file.close() 28 | file_name = directory.get_next() 29 | -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Tutorials/VoiceLines.md: -------------------------------------------------------------------------------- 1 | # Voice Line Support 2 | 3 | You can add audio to your text events! Here's what you have to do: 4 | 5 | ## 1. Settings 6 | In Dialogic's `Settings` window, enable audio for Text events. 7 | 8 | I recommend also creating a `new audio bus` for your voice lines. 9 | If you do this correctly now and select it as the default bus (the next setting), you wont have to select it every time. 10 | Having a seperate bus allows you to control the volume and effects of the voice lines seperately from your other audio. 11 | 12 | ## 2. Adding audio to your Text events 13 | Now when you see a Text or Question event, you should find that it has a new section called 'Audio Pickers'. 14 | For each line (except if "New lines create extra messages" is off) you will find an Audio picker. 15 | You can select the `audio file` you want to play while that line is shown. 16 | 17 | You can also change `volume`, `audiobus`, and an `audio region` (the second to begin at and the one where to end). 18 | Leave both audio-regions at 0 to play the whole file. 19 | 20 | Great! That's all you need to know. -------------------------------------------------------------------------------- /addons/dialogic/Editor/Events/Parts/Numbers/TransitonLengthPicker.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=3 format=2] 2 | 3 | [ext_resource path="res://addons/dialogic/Editor/Events/Parts/SpinBoxPreventDnD.gd" type="Script" id=1] 4 | [ext_resource path="res://addons/dialogic/Editor/Events/Parts/Numbers/EventPart_TransitonLengthPicker.gd" type="Script" id=2] 5 | 6 | [node name="TransitonLengthPicker" type="VBoxContainer"] 7 | margin_right = 195.0 8 | margin_bottom = 24.0 9 | size_flags_vertical = 3 10 | script = ExtResource( 2 ) 11 | __meta__ = { 12 | "_edit_use_anchors_": false 13 | } 14 | 15 | [node name="HBox" type="HBoxContainer" parent="."] 16 | margin_right = 195.0 17 | margin_bottom = 24.0 18 | size_flags_vertical = 3 19 | 20 | [node name="NameLabel" type="Label" parent="HBox"] 21 | margin_top = 5.0 22 | margin_right = 117.0 23 | margin_bottom = 19.0 24 | text = "Fade-out duration:" 25 | 26 | [node name="NumberBox" type="SpinBox" parent="HBox"] 27 | margin_left = 121.0 28 | margin_right = 195.0 29 | margin_bottom = 24.0 30 | size_flags_vertical = 6 31 | step = 0.1 32 | value = 1.0 33 | allow_greater = true 34 | align = 1 35 | script = ExtResource( 1 ) 36 | -------------------------------------------------------------------------------- /addons/dialogic/Images/Event Icons/Main Icons/change-scene.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 - 2022 Emilio Coppola 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Events/030.md: -------------------------------------------------------------------------------- 1 | # Audio Events 2 | *The Audio Event and Background Music Event are very similar, so they are explained together* 3 | ![image](./Images/audio_event.png) 4 | 5 | The `Audio Event` can be used to play sounds. In contrast, the `Background Music Event` is supposed to play long pieces. Only one background music file can be played, but it can fade from one to the next. 6 | 7 | ## Options 8 | Select the audio file that should be played. You can clear this selection with the garbage icon. 9 | 10 | Then you can set a `AudioBus` to use and a preferred `volume` level. More about AudioBus' [here](https://docs.godotengine.org/en/stable/tutorials/audio/audio_buses.html). 11 | 12 | The `Background Music Event` additionally has a option for the fade length. 13 | 14 | ## Is the audio looping when you don't want it to? 15 | The `Audio Event` doesn't loop by itself. In Godot, looping of audio is mostly due to how you imported it (default for .ogg files). 16 | 17 | To solve this: 18 | 1. Select your audio file. 19 | 2. Go to the import tab (it's next to the scene tree tab by default) 20 | 3. Uncheck the loop checkbox. 21 | 4. Hit re-import. -------------------------------------------------------------------------------- /addons/dialogic/Editor/Events/Parts/ResourcePickers/Themes/ThemePicker.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=4 format=2] 2 | 3 | [ext_resource path="res://addons/dialogic/Editor/Events/Parts/ResourcePickers/Themes/EventPart_ThemePicker.gd" type="Script" id=1] 4 | [ext_resource path="res://addons/dialogic/Editor/Events/Parts/ResourcePickers/ResourcePickerMenu.tscn" type="PackedScene" id=2] 5 | [ext_resource path="res://addons/dialogic/Editor/Events/Parts/Text/GreyLabel.tscn" type="PackedScene" id=3] 6 | 7 | [node name="ThemePicker" type="HBoxContainer"] 8 | margin_right = 157.0 9 | margin_bottom = 27.0 10 | size_flags_vertical = 4 11 | script = ExtResource( 1 ) 12 | __meta__ = { 13 | "_edit_use_anchors_": false 14 | } 15 | show_text = true 16 | 17 | [node name="Label" parent="." instance=ExtResource( 3 )] 18 | margin_top = 6.0 19 | margin_right = 59.0 20 | margin_bottom = 20.0 21 | custom_colors/font_color = Color( 0, 0, 0, 1 ) 22 | text = "to theme" 23 | 24 | [node name="MenuButton" parent="." instance=ExtResource( 2 )] 25 | margin_left = 63.0 26 | margin_top = 1.0 27 | margin_right = 177.0 28 | margin_bottom = 25.0 29 | custom_colors/font_color = Color( 0.8, 0.807843, 0.827451, 1 ) 30 | -------------------------------------------------------------------------------- /addons/dialogic/Nodes/Anima/animations/entrances_and_exits/bouncing_in.gd: -------------------------------------------------------------------------------- 1 | func generate_animation(anima_tween: Tween, data: Dictionary) -> void: 2 | var scale = DialogicAnimaPropertiesHelper.get_scale(data.node) 3 | var scale_frames = [ 4 | { percentage = 0, from = scale * Vector2(0.3, 0.3), easing_points = [0.215, 0.61, 0.355, 1] }, 5 | { percentage = 20, to = scale * Vector2(1, 1), easing_points = [0.215, 0.61, 0.355, 1] }, 6 | { percentage = 40, to = scale * Vector2(0.9, 0.9), easing_points = [0.215, 0.61, 0.355, 1] }, 7 | { percentage = 60, to = scale * Vector2(1.03, 1.03), easing_points = [0.215, 0.61, 0.355, 1] }, 8 | { percentage = 80, to = scale * Vector2(0.97, 0.97), easing_points = [0.215, 0.61, 0.355, 1] }, 9 | { percentage = 100, to = scale * Vector2(1, 1) }, 10 | ] 11 | 12 | var opacity_frames = [ 13 | { percentage = 0, from = 0 }, 14 | { percentage = 60, to = 1 }, 15 | { percentage = 100, to = 1 }, 16 | ] 17 | 18 | DialogicAnimaPropertiesHelper.set_2D_pivot(data.node, DialogicAnimaPropertiesHelper.PIVOT.CENTER) 19 | 20 | anima_tween.add_frames(data, "scale", scale_frames) 21 | anima_tween.add_frames(data, "opacity", opacity_frames) 22 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/Events/Parts/EventBlock/ExpandControl.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=3 format=2] 2 | 3 | [ext_resource path="res://addons/dialogic/Editor/Events/Parts/EventBlock/ExpandControl.gd" type="Script" id=1] 4 | [ext_resource path="res://addons/dialogic/Editor/Events/Parts/EventBlock/VisibleToggle.tscn" type="PackedScene" id=4] 5 | 6 | [node name="ExpandControl" type="HBoxContainer"] 7 | visible = false 8 | margin_right = 62.0 9 | margin_bottom = 30.0 10 | size_flags_vertical = 4 11 | script = ExtResource( 1 ) 12 | __meta__ = { 13 | "_edit_use_anchors_": false 14 | } 15 | 16 | [node name="VisibleToggle" parent="." instance=ExtResource( 4 )] 17 | margin_left = 8.0 18 | margin_right = 38.0 19 | pressed = false 20 | script = null 21 | 22 | [node name="MarginContainer" type="MarginContainer" parent="."] 23 | margin_left = 42.0 24 | margin_right = 64.0 25 | margin_bottom = 30.0 26 | mouse_filter = 1 27 | custom_constants/margin_left = 10 28 | 29 | [node name="Preview" type="Label" parent="MarginContainer"] 30 | margin_left = 10.0 31 | margin_top = 8.0 32 | margin_right = 22.0 33 | margin_bottom = 22.0 34 | custom_colors/font_color = Color( 0, 0, 0, 1 ) 35 | text = "..." 36 | -------------------------------------------------------------------------------- /addons/dialogic/Images/Event Icons/Main Icons/go-to.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Tutorials/Updating.md: -------------------------------------------------------------------------------- 1 | # Updating to 1.4 2 | 3 | 1.4 has brought some big changes, and a few changed the behavior in a way that might break some older code of yours. 4 | This assumes you are upgrading from version 1.3. 5 | 6 | Here is everything you need to do to successfully updated (as far as we know): 7 | 8 | ## 1. Make a backup of your project 9 | - Close your project/Godot 10 | - Make a full project backup just in case you lose some data while upgrading 11 | - Remove the `/addons/dialogic` folder from your project 12 | - Paste the new Dialogic 1.4 into the addons folder 13 | - Open your project/Godot again 14 | - Enable the new Dialogic from the plugin menu (Project Settings/Plugins) 15 | 16 | ## Update the call node events target functions 17 | - The `Call Node Event` now sends arguments instead of a single array. If you were using it in one of your timelines you will need to update the functions you are calling to accommodate this. So if the function you were calling before was something like `func hello(Array)` now it should be `func hello(argument1, argument2, argument3, ...)` with as many arguments as you have in the event settings. -------------------------------------------------------------------------------- /addons/dialogic/Editor/Events/Parts/ResourcePickers/Definitions/GlossaryPicker.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=4 format=2] 2 | 3 | [ext_resource path="res://addons/dialogic/Editor/Events/Parts/ResourcePickers/Definitions/EventPart_GlossaryPicker.gd" type="Script" id=1] 4 | [ext_resource path="res://addons/dialogic/Editor/Events/Parts/ResourcePickers/ResourcePickerMenu.tscn" type="PackedScene" id=2] 5 | [ext_resource path="res://addons/dialogic/Editor/Events/Parts/Text/GreyLabel.tscn" type="PackedScene" id=3] 6 | 7 | [node name="GlossaryPicker" type="HBoxContainer"] 8 | margin_right = 40.0 9 | margin_bottom = 40.0 10 | size_flags_vertical = 4 11 | script = ExtResource( 1 ) 12 | default_text = "Glossary item" 13 | 14 | [node name="Label" parent="." instance=ExtResource( 3 )] 15 | margin_top = 13.0 16 | margin_right = 93.0 17 | margin_bottom = 27.0 18 | custom_colors/font_color = Color( 0, 0, 0, 1 ) 19 | text = "Set content of " 20 | 21 | [node name="MenuButton" parent="." instance=ExtResource( 2 )] 22 | margin_left = 97.0 23 | margin_top = 8.0 24 | margin_right = 285.0 25 | margin_bottom = 32.0 26 | custom_colors/font_color = Color( 0.8, 0.807843, 0.827451, 1 ) 27 | text = "Select Glossary Item" 28 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/Events/Parts/NoSkip/EventPart_NoSkip.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends "res://addons/dialogic/Editor/Events/Parts/EventPart.gd" 3 | 4 | # has an event_data variable that stores the current data!!! 5 | 6 | ## node references 7 | onready var noskip_selector = $HBoxContainer/NoSkipCheckbox 8 | onready var autoadvance_time = $HBoxContainer2/AutoAdvanceTime 9 | 10 | # used to connect the signals 11 | func _ready(): 12 | autoadvance_time.connect("value_changed", self, "_on_SecondsSelector_value_changed") 13 | noskip_selector.connect("toggled", self, "_on_HideDialogBox_toggled") 14 | 15 | # called by the event block 16 | func load_data(data:Dictionary): 17 | # First set the event_data 18 | .load_data(data) 19 | 20 | autoadvance_time.value = event_data['wait_time'] 21 | noskip_selector.pressed = event_data.get('block_input', true) 22 | 23 | 24 | func _on_SecondsSelector_value_changed(value): 25 | event_data['wait_time'] = value 26 | data_changed() 27 | 28 | 29 | func _on_HideDialogBox_toggled(checkbox_value): 30 | event_data['block_input'] = checkbox_value 31 | data_changed() 32 | 33 | # has to return the wanted preview, only useful for body parts 34 | func get_preview(): 35 | return '' 36 | -------------------------------------------------------------------------------- /addons/dialogic/Images/Resources/timeline-2.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /addons/dialogic/Images/Resources/timeline.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/Events/Parts/EventPart.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends Control 3 | 4 | # has to be set by the parent before adding it to the tree 5 | var editor_reference 6 | 7 | var event_data = {} 8 | 9 | signal data_changed 10 | 11 | # emit this to set the enabling of the body 12 | signal request_set_body_enabled(enabled) 13 | 14 | # emit these if you want the body to be closed/opened 15 | signal request_open_body 16 | signal request_close_body 17 | 18 | # emit these if you want the event to be selected 19 | signal request_selection 20 | 21 | # emit this if you want a warning to be displayed/hidden 22 | signal set_warning(text) 23 | signal remove_warning() 24 | 25 | 26 | # when the node is ready 27 | func _ready(): 28 | pass 29 | 30 | # to be overwritten by the subclasses 31 | func load_data(data:Dictionary): 32 | event_data = data 33 | 34 | 35 | # to be overwritten by body-parts that provide a preview 36 | func get_preview_text(): 37 | return '' 38 | 39 | # to be overwritten by the body-parts if some kind of focus (on event creation) is wanted 40 | func focus(): 41 | pass 42 | 43 | # has to be called everytime the data got changed 44 | func data_changed(): 45 | emit_signal("data_changed", event_data) 46 | 47 | -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Nodes/DocumentationTree.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends Tree 3 | 4 | var documentation_tree 5 | 6 | # emited when an item is selceted 7 | signal _page_selected(path) 8 | 9 | ################################################################################ 10 | ## PUBLIC FUNCTIONS ## 11 | ################################################################################ 12 | 13 | func select_item(path): 14 | #DocsHelper.search_and_select_docs(documentation_tree, path) 15 | pass 16 | 17 | ################################################################################ 18 | ## PRIVATE FUNCTIONS ## 19 | ################################################################################ 20 | 21 | func _ready(): 22 | connect('item_selected', self, '_on_item_selected') 23 | #documentation_tree = DocsHelper.build_documentation_tree(self) 24 | # have to do this here, because the DocsHelpe has no access to the theme... 25 | documentation_tree.set_icon(0, get_icon("Folder", "EditorIcons")) 26 | 27 | 28 | func _on_item_selected(): 29 | var item = get_selected() 30 | var metadata = item.get_metadata(0) 31 | if metadata.has('path'): 32 | emit_signal("_page_selected", metadata['path']) 33 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/Events/Parts/Text/SignalArgumentPicker.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=4 format=2] 2 | 3 | [ext_resource path="res://addons/dialogic/Editor/Events/Parts/Text/CustomLineEdit.tscn" type="PackedScene" id=1] 4 | [ext_resource path="res://addons/dialogic/Editor/Events/Parts/Text/EventPart_SignalArgumentPicker.gd" type="Script" id=2] 5 | [ext_resource path="res://addons/dialogic/Editor/Events/Parts/Text/GreyLabel.tscn" type="PackedScene" id=3] 6 | 7 | [node name="SignalArgumentPicker" type="VBoxContainer"] 8 | margin_right = 40.0 9 | margin_bottom = 40.0 10 | size_flags_vertical = 6 11 | script = ExtResource( 2 ) 12 | __meta__ = { 13 | "_edit_use_anchors_": false 14 | } 15 | 16 | [node name="HBox" type="HBoxContainer" parent="."] 17 | margin_top = 6.0 18 | margin_right = 361.0 19 | margin_bottom = 33.0 20 | size_flags_vertical = 6 21 | 22 | [node name="Label" parent="HBox" instance=ExtResource( 3 )] 23 | margin_top = 6.0 24 | margin_right = 227.0 25 | margin_bottom = 20.0 26 | custom_colors/font_color = Color( 0, 0, 0, 1 ) 27 | text = "'dialogic_signal' with the argument " 28 | 29 | [node name="InputField" parent="HBox" instance=ExtResource( 1 )] 30 | margin_left = 231.0 31 | margin_right = 361.0 32 | margin_bottom = 27.0 33 | -------------------------------------------------------------------------------- /addons/dialogic/Images/Event Icons/Main Icons/audio-event.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /addons/dialogic/Nodes/Anima/animations/attention_seeker/jello.gd: -------------------------------------------------------------------------------- 1 | func generate_animation(anima_tween: Tween, data: Dictionary) -> void: 2 | var start_x = data.node.get_global_transform().y.x 3 | var start_y = data.node.get_global_transform().x.y 4 | 5 | var skew_x := [] 6 | var skew_y := [] 7 | 8 | var values = [ 9 | { percentage = 0, add = 0 }, 10 | { percentage = 11.1, add = 0 }, 11 | { percentage = 22.2, add = - 0.3 }, 12 | { percentage = 33.3, add = + 0.265 }, 13 | { percentage = 44.4, add = - 0.1325 }, 14 | { percentage = 55.5, add = + 0.06625 }, 15 | { percentage = 66.6, add = - 0.033125 }, 16 | { percentage = 77.7, add = + 0.0165625 }, 17 | { percentage = 88.8, add = - 0.00828125}, 18 | { percentage = 100, add = 0 }, 19 | ] 20 | 21 | for value in values: 22 | skew_x.push_back({ percentage = value.percentage, to = start_x + value.add }) 23 | skew_y.push_back({ percentage = value.percentage, to = start_y + value.add }) 24 | 25 | DialogicAnimaPropertiesHelper.set_2D_pivot(data.node, DialogicAnimaPropertiesHelper.PIVOT.CENTER) 26 | 27 | # Skew works only with Node2D 28 | if not data.node is Node2D: 29 | return 30 | 31 | anima_tween.add_frames(data, "skew:x", skew_x) 32 | anima_tween.add_frames(data, "skew:y", skew_y) 33 | -------------------------------------------------------------------------------- /addons/dialogic/Nodes/Anima/animations/attention_seeker/wobble.gd: -------------------------------------------------------------------------------- 1 | func generate_animation(anima_tween: Tween, data: Dictionary) -> void: 2 | var node = data.node 3 | var start_position = DialogicAnimaPropertiesHelper.get_position(node) 4 | var size = DialogicAnimaPropertiesHelper.get_size(node) 5 | 6 | var x_frames = [ 7 | { percentage = 0, from = start_position.x }, 8 | { percentage = 15, to = start_position.x + size.x * -0.25 }, 9 | { percentage = 30, to = start_position.x + size.x * 0.2 }, 10 | { percentage = 45, to = start_position.x + size.x * -0.15 }, 11 | { percentage = 60, to = start_position.x + size.x * 0.1 }, 12 | { percentage = 75, to = start_position.x + size.x * -0.05 }, 13 | { percentage = 100, to = start_position.x }, 14 | ] 15 | 16 | var rotation_frames = [ 17 | { percentage = 0, from = 0 }, 18 | { percentage = 15, to = -5 }, 19 | { percentage = 30, to = 3 }, 20 | { percentage = 45, to = -3 }, 21 | { percentage = 60, to = 2 }, 22 | { percentage = 75, to = -1 }, 23 | { percentage = 100, to = 0 }, 24 | ] 25 | 26 | DialogicAnimaPropertiesHelper.set_2D_pivot(data.node, DialogicAnimaPropertiesHelper.PIVOT.TOP_CENTER) 27 | anima_tween.add_frames(data, "x", x_frames) 28 | anima_tween.add_frames(data, "rotation", rotation_frames) 29 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/Events/Parts/Logic/LabelSetter.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=4 format=2] 2 | 3 | [ext_resource path="res://addons/dialogic/Editor/Events/Parts/Text/CustomLineEdit.tscn" type="PackedScene" id=1] 4 | [ext_resource path="res://addons/dialogic/Editor/Events/Parts/Logic/EventPart_LabelSetter.gd" type="Script" id=2] 5 | [ext_resource path="res://addons/dialogic/Editor/Events/Parts/Text/GreyLabel.tscn" type="PackedScene" id=3] 6 | 7 | [node name="AnchorSetter" type="HBoxContainer"] 8 | anchor_right = 1.0 9 | anchor_bottom = 1.0 10 | margin_right = -723.0 11 | margin_bottom = -573.0 12 | script = ExtResource( 2 ) 13 | __meta__ = { 14 | "_edit_use_anchors_": false 15 | } 16 | 17 | [node name="NameInput" parent="." instance=ExtResource( 1 )] 18 | margin_right = 130.0 19 | margin_bottom = 27.0 20 | 21 | [node name="Label" parent="." instance=ExtResource( 3 )] 22 | margin_left = 134.0 23 | margin_top = 6.0 24 | margin_right = 182.0 25 | margin_bottom = 20.0 26 | custom_colors/font_color = Color( 0, 0, 0, 1 ) 27 | text = " is here" 28 | 29 | [node name="NewIdButton" type="ToolButton" parent="."] 30 | margin_left = 186.0 31 | margin_right = 198.0 32 | margin_bottom = 27.0 33 | hint_tooltip = "Change to a new unique ID. Only do this if you have a duplicate id in this timeline!" 34 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/Events/Parts/Character/CharacterAction.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=5 format=2] 2 | 3 | [ext_resource path="res://addons/dialogic/Editor/Events/Parts/ResourcePickers/ResourcePickerMenu.tscn" type="PackedScene" id=1] 4 | [ext_resource path="res://addons/dialogic/Editor/Events/Parts/Character/EventPart_CharacterAction.gd" type="Script" id=2] 5 | [ext_resource path="res://addons/dialogic/Editor/Events/Parts/ResourcePickers/Characters/CharacterAndPortraitPicker.tscn" type="PackedScene" id=3] 6 | [ext_resource path="res://addons/dialogic/Editor/Events/Parts/Character/PositionPicker.tscn" type="PackedScene" id=4] 7 | 8 | [node name="CharacterAction" type="HBoxContainer"] 9 | margin_right = 454.0 10 | margin_bottom = 30.0 11 | script = ExtResource( 2 ) 12 | __meta__ = { 13 | "_edit_use_anchors_": false 14 | } 15 | 16 | [node name="ActionTypePicker" parent="." instance=ExtResource( 1 )] 17 | margin_top = 4.0 18 | margin_bottom = 26.0 19 | 20 | [node name="CharacterAndPortraitPicker" parent="." instance=ExtResource( 3 )] 21 | margin_left = 98.0 22 | margin_right = 193.0 23 | margin_bottom = 30.0 24 | size_flags_vertical = 4 25 | 26 | [node name="PositionPicker" parent="." instance=ExtResource( 4 )] 27 | margin_left = 197.0 28 | margin_right = 471.0 29 | size_flags_vertical = 4 30 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/Events/Parts/EventBlock/ExpandControl.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends HBoxContainer 3 | 4 | onready var visible_toggle = $VisibleToggle 5 | onready var preview = $MarginContainer/Preview 6 | 7 | var enabled : bool 8 | var expanded: bool 9 | 10 | var max_preview_characters = 50 11 | 12 | signal state_changed(expanded) 13 | 14 | func _ready(): 15 | $MarginContainer/Preview.set("custom_colors/font_color", get_color("disabled_font_color", "Editor")) 16 | set_enabled(false) 17 | visible_toggle.connect("toggled", self, "_on_VisibleToggle_toggled") 18 | 19 | 20 | func set_preview(text: String): 21 | if len(text) > 50: 22 | text = text.substr(0, 50) 23 | text += "..." 24 | preview.text = text 25 | 26 | 27 | func set_enabled(enabled: bool): 28 | self.enabled = enabled 29 | set_expanded(enabled) 30 | if enabled: 31 | show() 32 | else: 33 | hide() 34 | 35 | 36 | func set_expanded(expanded: bool): 37 | if not enabled: 38 | return 39 | self.expanded = expanded 40 | visible_toggle.pressed = expanded 41 | if expanded: 42 | preview.hide() 43 | else: 44 | preview.show() 45 | visible_toggle.release_focus() 46 | emit_signal("state_changed", expanded) 47 | 48 | 49 | func _on_VisibleToggle_toggled(button_pressed: bool): 50 | if enabled: 51 | set_expanded(button_pressed) 52 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/Events/styles/InputFieldsStyle.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="Theme" load_steps=2 format=2] 2 | 3 | [sub_resource type="StyleBoxFlat" id=1] 4 | content_margin_left = 11.0 5 | content_margin_right = 9.0 6 | content_margin_top = 5.0 7 | content_margin_bottom = 5.0 8 | bg_color = Color( 0.12549, 0.141176, 0.192157, 1 ) 9 | border_width_left = 1 10 | border_width_top = 1 11 | border_width_right = 1 12 | border_width_bottom = 1 13 | border_color = Color( 0.0980392, 0.113725, 0.152941, 1 ) 14 | corner_radius_top_left = 3 15 | corner_radius_top_right = 3 16 | corner_radius_bottom_right = 3 17 | corner_radius_bottom_left = 3 18 | 19 | [resource] 20 | LineEdit/colors/clear_button_color = Color( 0, 0, 0, 1 ) 21 | LineEdit/colors/clear_button_color_pressed = Color( 0, 0, 0, 1 ) 22 | LineEdit/colors/cursor_color = Color( 1, 1, 1, 1 ) 23 | LineEdit/colors/font_color = Color( 1, 1, 1, 1 ) 24 | LineEdit/colors/font_color_selected = Color( 1, 1, 1, 1 ) 25 | LineEdit/colors/font_color_uneditable = Color( 1, 1, 1, 1 ) 26 | LineEdit/colors/selection_color = Color( 1, 1, 1, 0.235294 ) 27 | LineEdit/constants/minimum_spaces = 10 28 | LineEdit/fonts/font = null 29 | LineEdit/icons/clear = null 30 | LineEdit/styles/focus = SubResource( 1 ) 31 | LineEdit/styles/normal = SubResource( 1 ) 32 | LineEdit/styles/read_only = SubResource( 1 ) 33 | -------------------------------------------------------------------------------- /addons/dialogic/Images/Plugin/plugin-editor-icon-dark-theme.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /addons/dialogic/Images/Plugin/plugin-editor-icon-light-theme.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /addons/dialogic/Nodes/Background.gd: -------------------------------------------------------------------------------- 1 | extends TextureRect 2 | 3 | var native_dialogic_background = true 4 | var tween 5 | 6 | func _ready(): 7 | expand = true 8 | name = 'Background' 9 | anchor_right = 1 10 | anchor_bottom = 1 11 | if DialogicResources.get_settings_value('dialog', 'stretch_backgrounds', true): 12 | stretch_mode = TextureRect.STRETCH_SCALE 13 | else: 14 | stretch_mode = TextureRect.STRETCH_KEEP_ASPECT_COVERED 15 | show_behind_parent = true 16 | mouse_filter = Control.MOUSE_FILTER_IGNORE 17 | 18 | func _init(): 19 | tween = Tween.new() 20 | add_child(tween) 21 | 22 | 23 | func fade_in(time = 1): 24 | modulate = Color(1, 1,1,0) 25 | tween.interpolate_property(self, "modulate", 26 | null, Color(1,1,1,1), time, 27 | Tween.TRANS_LINEAR, Tween.EASE_IN_OUT) 28 | tween.start() 29 | 30 | 31 | func fade_out(time = 1): 32 | if tween: 33 | tween.connect('tween_all_completed', self, '_on_tween_over') 34 | tween.interpolate_property(self, "modulate", 35 | Color(1,1,1,1), Color(1,1,1,0), time, 36 | Tween.TRANS_LINEAR, Tween.EASE_IN_OUT) 37 | tween.start() 38 | else: 39 | _on_tween_over() 40 | 41 | func remove_with_delay(time =1): 42 | var timer = Timer.new() 43 | timer.connect("timeout", self, "queue_free") 44 | add_child(timer) 45 | timer.start(time+0.1) 46 | 47 | func _on_tween_over(): 48 | queue_free() 49 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/Events/Parts/Logic/ConditionPickerOld.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends MenuButton 3 | 4 | var options = [ 5 | { 6 | "text": "[ Equal to ]", 7 | "condition": "==" 8 | }, 9 | { 10 | "text": "[ Different from ]", 11 | "condition": "!=" 12 | }, 13 | { 14 | "text": "[ Greater than ]", 15 | "condition": ">" 16 | }, 17 | { 18 | "text": "[ Greater or equal to ]", 19 | "condition": ">=" 20 | }, 21 | { 22 | "text": "[ Less than ]", 23 | "condition": "<" 24 | }, 25 | { 26 | "text": "[ Less or equal to ]", 27 | "condition": "<=" 28 | } 29 | ] 30 | 31 | func _ready(): 32 | get_popup().connect("index_pressed", self, '_on_entry_selected') 33 | get_popup().clear() 34 | connect("about_to_show", self, "_on_MenuButton_about_to_show") 35 | 36 | 37 | func _on_MenuButton_about_to_show(): 38 | get_popup().clear() 39 | var index = 0 40 | for o in options: 41 | get_popup().add_item(o['text']) 42 | get_popup().set_item_metadata(index, o) 43 | index += 1 44 | 45 | 46 | func _on_entry_selected(index): 47 | var _text = get_popup().get_item_text(index) 48 | var metadata = get_popup().get_item_metadata(index) 49 | text = _text 50 | 51 | 52 | func load_condition(condition): 53 | if condition != '': 54 | for o in options: 55 | if (o['condition'] == condition): 56 | text = o['text'] 57 | else: 58 | text = options[0]['text'] 59 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/MasterTree/DragPreview.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=2] 2 | 3 | [sub_resource type="StyleBoxFlat" id=1] 4 | bg_color = Color( 1, 1, 1, 1 ) 5 | border_width_left = 4 6 | border_width_top = 4 7 | border_width_right = 4 8 | border_width_bottom = 4 9 | border_color = Color( 0.568627, 0.568627, 0.568627, 1 ) 10 | corner_radius_top_left = 5 11 | corner_radius_top_right = 5 12 | corner_radius_bottom_right = 5 13 | corner_radius_bottom_left = 5 14 | 15 | [node name="DragPreview" type="CenterContainer"] 16 | margin_right = 38.0 17 | margin_bottom = 34.0 18 | __meta__ = { 19 | "_edit_use_anchors_": false 20 | } 21 | 22 | [node name="Panel" type="PanelContainer" parent="."] 23 | margin_left = 3.0 24 | margin_top = 3.0 25 | margin_right = 35.0 26 | margin_bottom = 31.0 27 | custom_styles/panel = SubResource( 1 ) 28 | 29 | [node name="HBox" type="HBoxContainer" parent="Panel"] 30 | margin_left = 4.0 31 | margin_top = 4.0 32 | margin_right = 28.0 33 | margin_bottom = 24.0 34 | 35 | [node name="Icon" type="TextureRect" parent="Panel/HBox"] 36 | margin_right = 20.0 37 | margin_bottom = 20.0 38 | rect_min_size = Vector2( 20, 20 ) 39 | expand = true 40 | stretch_mode = 4 41 | 42 | [node name="Label" type="Label" parent="Panel/HBox"] 43 | margin_left = 24.0 44 | margin_top = 3.0 45 | margin_right = 24.0 46 | margin_bottom = 17.0 47 | size_flags_horizontal = 3 48 | -------------------------------------------------------------------------------- /addons/dialogic/Images/Toolbar/add-timeline.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/Events/Parts/ResourcePickers/ResourcePickerMenu.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends MenuButton 3 | 4 | export (Texture) var custom_icon setget set_custom_icon 5 | var custom_icon_modulation setget set_custom_icon_modulation 6 | var menu_background 7 | 8 | # until we change the background color of the pickers, the color should ignore the theme 9 | var default_color = Color('ccced3') 10 | 11 | func _ready(): 12 | menu_background = load("res://addons/dialogic/Editor/Events/styles/ResourceMenuPanelBackground.tres") 13 | menu_background.bg_color = get_color("base_color", "Editor") 14 | add_color_override("font_color", default_color) #get_color("mono_color", "Editor")) 15 | update_submenu_style(get_popup()) 16 | reset_modulation() 17 | $Icon2.texture = get_icon("Collapse", "EditorIcons") 18 | 19 | func update_submenu_style(submenu): 20 | submenu.add_stylebox_override('panel', menu_background) 21 | submenu.add_stylebox_override('hover', StyleBoxEmpty.new()) 22 | submenu.add_color_override('font_color_hover', get_color("accent_color", "Editor")) 23 | 24 | func set_custom_icon(texture:Texture): 25 | $Icon.texture = texture 26 | 27 | func set_custom_icon_modulation(color:Color): 28 | $Icon.modulate = color 29 | 30 | func reset_modulation(): 31 | $Icon.modulate = default_color#get_color("font_color", "Editor") 32 | $Icon2.modulate = default_color#get_color("font_color", "Editor") 33 | -------------------------------------------------------------------------------- /addons/dialogic/Images/Toolbar/add-timeline-2.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/Events/Parts/Images/EventPart_BackgroundPreview.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends "res://addons/dialogic/Editor/Events/Parts/EventPart.gd" 3 | 4 | # has an event_data variable that stores the current data!!! 5 | 6 | ## node references 7 | onready var texture_rect = $Box/TextureRect 8 | 9 | # used to connect the signals 10 | func _ready(): 11 | pass 12 | 13 | # called by the event block 14 | func load_data(data:Dictionary): 15 | # First set the event_data 16 | .load_data(data) 17 | 18 | # Now update the ui nodes to display the data. 19 | if event_data['background']: 20 | if not event_data['background'].ends_with('.tscn'): 21 | emit_signal("request_set_body_enabled", true) 22 | texture_rect.texture = load(event_data['background']) 23 | else: 24 | emit_signal("request_set_body_enabled", false) 25 | if editor_reference and editor_reference.editor_interface: 26 | editor_reference.editor_interface.get_resource_previewer().queue_resource_preview(event_data['background'], self, "show_scene_preview", null) 27 | else: 28 | emit_signal("request_set_body_enabled", false) 29 | 30 | # has to return the wanted preview, only useful for body parts 31 | func get_preview(): 32 | return '' 33 | 34 | func show_scene_preview(path:String, preview:Texture, user_data): 35 | if preview: 36 | texture_rect.texture = preview 37 | emit_signal("request_set_body_enabled", true) 38 | 39 | 40 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/Events/Parts/Audio/EventPart_AudioPickerComplex.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends "res://addons/dialogic/Editor/Events/Parts/EventPart.gd" 3 | 4 | # has an event_data variable that stores the current data!!! 5 | 6 | ## node references 7 | onready var audio_picker = $VBox/AudioPicker 8 | onready var fade_length_input = $VBox/Fade/FadeLength 9 | 10 | # used to connect the signals 11 | func _ready(): 12 | audio_picker.connect("data_changed", self, "_on_AudioPicker_data_changed") 13 | fade_length_input.connect("value_changed", self, "_on_FadeLength_value_changed") 14 | 15 | # called by the event block 16 | func load_data(data:Dictionary): 17 | # First set the event_data 18 | .load_data(data) 19 | 20 | # Now update the ui nodes to display the data. 21 | audio_picker.editor_reference = editor_reference 22 | audio_picker.load_data(event_data) 23 | 24 | fade_length_input.value = event_data['fade_length'] 25 | 26 | # has to return the wanted preview, only useful for body parts 27 | func get_preview(): 28 | return audio_picker.get_preview() 29 | 30 | func _on_AudioPicker_data_changed(data): 31 | event_data = data 32 | 33 | # informs the parent about the changes! 34 | data_changed() 35 | 36 | func _on_FadeLength_value_changed(value): 37 | event_data['fade_length'] = value 38 | audio_picker.load_data(event_data) 39 | 40 | # informs the parent about the changes! 41 | data_changed() 42 | 43 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/Events/Parts/Logic/EventPart_Save.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=5 format=2] 2 | 3 | [ext_resource path="res://addons/dialogic/Editor/Events/Parts/Text/CustomLineEdit.tscn" type="PackedScene" id=1] 4 | [ext_resource path="res://addons/dialogic/Editor/Events/Parts/Logic/EventPart_Save.gd" type="Script" id=2] 5 | [ext_resource path="res://addons/dialogic/Editor/Events/Parts/ResourcePickers/ResourcePickerMenu.tscn" type="PackedScene" id=3] 6 | [ext_resource path="res://addons/dialogic/Editor/Events/Parts/Text/GreyLabel.tscn" type="PackedScene" id=4] 7 | 8 | [node name="EventPart_Save" type="HBoxContainer"] 9 | margin_right = 40.0 10 | margin_bottom = 40.0 11 | custom_constants/separation = 9 12 | script = ExtResource( 2 ) 13 | __meta__ = { 14 | "_edit_use_anchors_": false 15 | } 16 | 17 | [node name="Label2" parent="." instance=ExtResource( 4 )] 18 | margin_top = 13.0 19 | margin_right = 13.0 20 | margin_bottom = 27.0 21 | custom_colors/font_color = Color( 0, 0, 0, 1 ) 22 | text = "to" 23 | 24 | [node name="MenuButton" parent="." instance=ExtResource( 3 )] 25 | margin_left = 22.0 26 | margin_top = 9.0 27 | margin_right = 116.0 28 | margin_bottom = 31.0 29 | 30 | [node name="CustomSlot" parent="." instance=ExtResource( 1 )] 31 | margin_left = 125.0 32 | margin_top = 6.0 33 | margin_right = 255.0 34 | margin_bottom = 33.0 35 | hint_tooltip = "Also allows for value definitions like this: [my_value_name]" 36 | -------------------------------------------------------------------------------- /addons/dialogic/Images/Event Icons/Main Icons/background-music.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /addons/dialogic/Example Assets/History/HistoryButton-theme.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="Theme" load_steps=7 format=2] 2 | 3 | [ext_resource path="res://addons/dialogic/Example Assets/backgrounds/background-2.png" type="Texture" id=1] 4 | [ext_resource path="res://addons/dialogic/Example Assets/Fonts/Overlock/Overlock-Black.ttf" type="DynamicFontData" id=2] 5 | 6 | [sub_resource type="DynamicFont" id=5] 7 | font_data = ExtResource( 2 ) 8 | 9 | [sub_resource type="StyleBoxTexture" id=4] 10 | texture = ExtResource( 1 ) 11 | region_rect = Rect2( 0, 0, 1175, 263 ) 12 | margin_left = 5.0 13 | margin_right = 5.0 14 | margin_top = 5.0 15 | margin_bottom = 5.0 16 | modulate_color = Color( 1, 1, 1, 0.572549 ) 17 | 18 | [sub_resource type="StyleBoxTexture" id=1] 19 | texture = ExtResource( 1 ) 20 | region_rect = Rect2( 0, 0, 1175, 263 ) 21 | margin_left = 5.0 22 | margin_right = 5.0 23 | margin_top = 5.0 24 | margin_bottom = 5.0 25 | 26 | [sub_resource type="StyleBoxTexture" id=3] 27 | texture = ExtResource( 1 ) 28 | region_rect = Rect2( 0, 0, 1175, 263 ) 29 | margin_left = 5.0 30 | margin_right = 5.0 31 | margin_top = 5.0 32 | margin_bottom = 5.0 33 | modulate_color = Color( 0.113725, 0.105882, 0.105882, 0.764706 ) 34 | 35 | [resource] 36 | Button/colors/font_color = Color( 1, 1, 1, 1 ) 37 | Button/fonts/font = SubResource( 5 ) 38 | Button/styles/hover = SubResource( 4 ) 39 | Button/styles/normal = SubResource( 1 ) 40 | Button/styles/pressed = SubResource( 3 ) 41 | -------------------------------------------------------------------------------- /addons/dialogic/Nodes/Anima/animations/attention_seeker/bounce.gd: -------------------------------------------------------------------------------- 1 | func generate_animation(anima_tween: Tween, data: Dictionary) -> void: 2 | #var delay: float = data._wait_time 3 | var bounce_frames = [ 4 | { percentage = 0, to = 0 }, 5 | { percentage = 20, to = 0 }, 6 | { percentage = 40, to = -30, easing_points = [0.7555, 0.5, 0.8555, 0.06] }, 7 | { percentage = 43, to = 0, easing_points = [0.7555, 0.5, 0.8555, 0.06] }, 8 | { percentage = 53, to = +30 }, 9 | { percentage = 70, to = -15, easing_points = [0.755, 0.05, 0.855, 0.06] }, 10 | { percentage = 80, to = +15 }, 11 | { percentage = 90, to = -4 }, 12 | { percentage = 100, to = +4 }, 13 | ] 14 | 15 | var scale = DialogicAnimaPropertiesHelper.get_scale(data.node) 16 | var scale_frames = [ 17 | { percentage = 0, to = 1 * scale.y }, 18 | { percentage = 20, to = 1 * scale.y }, 19 | { percentage = 40, to = 1.1 * scale.y, easing_points = [0.7555, 0.5, 0.8555, 0.06] }, 20 | { percentage = 43, to = 1.1 * scale.y, easing_points = [0.7555, 0.5, 0.8555, 0.06] }, 21 | { percentage = 53, to = 1 * scale.y }, 22 | { percentage = 70, to = 1.05 * scale.y, easing_points = [0.755, 0.05, 0.855, 0.06] }, 23 | { percentage = 80, to = 0.95 * scale.y }, 24 | { percentage = 90, to = 1.02 * scale.y }, 25 | { percentage = 100, to = 1 * scale.y }, 26 | ] 27 | 28 | anima_tween.add_relative_frames(data, "Y", bounce_frames) 29 | anima_tween.add_frames(data, "scale:y", scale_frames) 30 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/Events/Parts/Logic/ChoicePicker.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=4 format=2] 2 | 3 | [ext_resource path="res://addons/dialogic/Editor/Events/Parts/Logic/ConditionPicker.tscn" type="PackedScene" id=1] 4 | [ext_resource path="res://addons/dialogic/Editor/Events/Parts/Text/CustomLineEdit.tscn" type="PackedScene" id=2] 5 | [ext_resource path="res://addons/dialogic/Editor/Events/Parts/Logic/EventPart_ChoicePicker.gd" type="Script" id=3] 6 | 7 | [node name="ChoicePicker" type="HBoxContainer"] 8 | margin_right = 437.0 9 | margin_bottom = 24.0 10 | script = ExtResource( 3 ) 11 | __meta__ = { 12 | "_edit_use_anchors_": false 13 | } 14 | 15 | [node name="HBox" type="HBoxContainer" parent="."] 16 | margin_right = 158.0 17 | margin_bottom = 27.0 18 | size_flags_vertical = 3 19 | 20 | [node name="Spacer2" type="Control" parent="HBox"] 21 | margin_right = 10.0 22 | margin_bottom = 27.0 23 | rect_min_size = Vector2( 10, 0 ) 24 | __meta__ = { 25 | "_edit_use_anchors_": false 26 | } 27 | 28 | [node name="ChoiceText" parent="HBox" instance=ExtResource( 2 )] 29 | margin_left = 14.0 30 | margin_right = 144.0 31 | margin_bottom = 27.0 32 | 33 | [node name="Spacer" type="Control" parent="HBox"] 34 | margin_left = 148.0 35 | margin_right = 158.0 36 | margin_bottom = 27.0 37 | rect_min_size = Vector2( 10, 0 ) 38 | 39 | [node name="ConditionPicker" parent="." instance=ExtResource( 1 )] 40 | margin_left = 162.0 41 | margin_right = 635.0 42 | margin_bottom = 27.0 43 | -------------------------------------------------------------------------------- /addons/dialogic/Images/Event Icons/Main Icons/emit-signal.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /addons/dialogic/Other/inspector_timeline_picker.gd: -------------------------------------------------------------------------------- 1 | extends EditorInspectorPlugin 2 | 3 | var TimelinePicker = preload("res://addons/dialogic/Other/timeline_picker.gd") 4 | var dialogic_editor_plugin = null 5 | var dialogic_editor_view = null 6 | 7 | 8 | func can_handle(object): 9 | # We support all objects in this example. 10 | return true 11 | 12 | 13 | func parse_property(object, type, path, hint, hint_text, usage): 14 | # We check for this hint text. It would look like: export(String, "TimelineDropdown") 15 | if hint_text == "TimelineDropdown": 16 | # We handle properties of type string. 17 | if type == TYPE_STRING: 18 | # Create an instance of the custom property editor and register 19 | # it to a specific property path. 20 | var picker = TimelinePicker.new() 21 | picker.editor_inspector_plugin = self 22 | add_property_editor(path, picker) 23 | # Inform the editor to remove the default property editor for 24 | # this property type. 25 | return true 26 | return false 27 | 28 | 29 | func switch_to_dialogic_timeline(timeline: String): 30 | if (dialogic_editor_plugin != null): 31 | var master_tree = dialogic_editor_view.get_node('MainPanel/MasterTreeContainer/MasterTree') 32 | dialogic_editor_plugin.get_editor_interface().set_main_screen_editor("Dialogic") 33 | 34 | master_tree.timeline_editor.batches.clear() 35 | master_tree.timeline_editor.load_timeline(timeline) 36 | master_tree.show_timeline_editor() 37 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/Events/Parts/Logic/EventPart_LabelSetter.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends "res://addons/dialogic/Editor/Events/Parts/EventPart.gd" 3 | 4 | # has an event_data variable that stores the current data!!! 5 | 6 | ## node references 7 | onready var input_field = $NameInput 8 | onready var new_id = $NewIdButton 9 | 10 | # used to connect the signals 11 | func _ready(): 12 | input_field.connect("text_changed", self, "_on_InputField_text_changed") 13 | new_id.icon = get_icon("RotateRight", "EditorIcons") 14 | new_id.connect("pressed", self, "new_id") 15 | 16 | # called by the event block 17 | func load_data(data:Dictionary): 18 | # First set the event_data 19 | .load_data(data) 20 | 21 | # Now update the ui nodes to display the data. 22 | if data['id'] == null or data['id'] == "": 23 | new_id() 24 | input_field.text = event_data['name'] 25 | 26 | new_id.hint_tooltip = "Change to a new unique ID. \nOnly do this if you have a duplicate id in this timeline! \nWill break existing links. \n\nCurrent ID: "+data['id'] 27 | 28 | func new_id(): 29 | event_data['id'] = 'anchor-' + str(OS.get_unix_time()) 30 | 31 | new_id.hint_tooltip = "Change to a new unique ID. \nOnly do this if you have a duplicate id in this timeline! \nWill break existing links. \n\nCurrent ID: "+event_data['id'] 32 | data_changed() 33 | 34 | func _on_InputField_text_changed(text): 35 | event_data['name'] = text 36 | 37 | # informs the parent about the changes! 38 | data_changed() 39 | -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Reference/Timeline.md: -------------------------------------------------------------------------------- 1 | # Timeline Editor 2 | 3 | The `timeline editor` is one of the central parts of Dialogic, allowing you create your dialogue tree using the Events system. 4 | 5 | This editor consists of two parts: the main area, and the event bar on the side. The event bar allows you to add events to the main area, and the main area is where you write your text and arrange the events to create your timeline tree. 6 | 7 | ## Building a timeline 8 | Begin by pressing an event button or dragging it onto the main area in a desired location. 9 | 10 | Once in the timeline tree, you can move events by dragging and dropping them. 11 | 12 | 13 | ## Shortcuts 14 | By holding CTRL, you can select multiple events by clicking on them. By holding SHIFT, you can select a range of events from the one initially selected to the one you click on. 15 | 16 | The editor supports the following short-cuts: 17 | ` 18 | CRTL+C copy selected events 19 | CRTL+P paste selected events 20 | CRTL+X cut selected events 21 | DEL delete selected events 22 | DOWN/UP select the next/previous event 23 | ALT+UP/DOWN move the selected event up or down (only works with one event) 24 | CRTL+A select all events 25 | CRTL+SHIFT+A deselect all events 26 | CRTL+Z undo the last event action 27 | CRTL+Y or CRTL+SHIFT+Z redo the last undone action 28 | 29 | CRTL+T add a new Text event 30 | ` 31 | 32 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/Events/Parts/Audio/AudioPickerComplex.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=4 format=2] 2 | 3 | [ext_resource path="res://addons/dialogic/Editor/Events/Parts/Audio/EventPart_AudioPickerComplex.gd" type="Script" id=1] 4 | [ext_resource path="res://addons/dialogic/Editor/Events/Parts/Audio/AudioPicker.tscn" type="PackedScene" id=2] 5 | [ext_resource path="res://addons/dialogic/Editor/Events/styles/InputFieldsStyle.tres" type="Theme" id=3] 6 | 7 | [node name="AudioPickerComplex" type="VBoxContainer"] 8 | margin_right = 40.0 9 | margin_bottom = 40.0 10 | theme = ExtResource( 3 ) 11 | script = ExtResource( 1 ) 12 | __meta__ = { 13 | "_edit_use_anchors_": false 14 | } 15 | 16 | [node name="VBox" type="VBoxContainer" parent="."] 17 | margin_right = 193.0 18 | margin_bottom = 108.0 19 | 20 | [node name="Fade" type="HBoxContainer" parent="VBox"] 21 | margin_right = 193.0 22 | margin_bottom = 34.0 23 | 24 | [node name="FadeLengthLabel" type="Label" parent="VBox/Fade"] 25 | margin_top = 10.0 26 | margin_right = 87.0 27 | margin_bottom = 24.0 28 | text = " Fade-length:" 29 | 30 | [node name="FadeLength" type="SpinBox" parent="VBox/Fade"] 31 | margin_left = 91.0 32 | margin_right = 167.0 33 | margin_bottom = 34.0 34 | step = 0.01 35 | suffix = "s" 36 | 37 | [node name="AudioPicker" parent="VBox" instance=ExtResource( 2 )] 38 | anchor_right = 0.0 39 | anchor_bottom = 0.0 40 | margin_top = 38.0 41 | margin_right = 193.0 42 | margin_bottom = 108.0 43 | event_name = "Background Music" 44 | -------------------------------------------------------------------------------- /addons/dialogic/Nodes/CharacterVoice.gd: -------------------------------------------------------------------------------- 1 | extends AudioStreamPlayer 2 | 3 | var stop_time:float 4 | 5 | func play_voice(data:Dictionary) -> void: 6 | if data == {}: 7 | stop_voice() 8 | return 9 | 10 | if data.has('volume'): 11 | volume_db = data['volume'] 12 | 13 | if data.has('audio_bus'): 14 | bus = data['audio_bus'] 15 | 16 | if data.has('file'): 17 | if data['file'] == '': 18 | stop_voice() 19 | return 20 | var s:AudioStream = load(data['file']) 21 | if s != null: 22 | stream = s 23 | #Will play from start_time when possible 24 | if data.has('start_time'): 25 | play(data['start_time']) 26 | else: 27 | play() 28 | #Stop time will fall back to length of audiostream minus 0.1 secund 29 | #if not defined otherwise. This should allow _process to stop the 30 | #audio before it autorepeats 31 | if data.has('stop_time'): 32 | stop_time = data['stop_time'] 33 | if stop_time <= 0: 34 | stop_time = s.get_length() - 0.1 35 | else: 36 | stop_time = s.get_length() - 0.1 37 | else: 38 | stop_voice() 39 | func stop_voice(): 40 | stop() 41 | #this is part of a hack, and could be replaced with something more elegant. - KvaGram 42 | func remaining_time(): 43 | if !playing: 44 | return 0 45 | return stop_time - get_playback_position() 46 | 47 | 48 | func _process(_delta): 49 | #Will automatically stop playing when reaching stop_time 50 | if(playing && get_playback_position() >= stop_time): 51 | stop_voice() 52 | -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Events/012.md: -------------------------------------------------------------------------------- 1 | # Condition Event 2 | ![image](./Images/Event_Condition.PNG) 3 | 4 | The `Condition Event` allows you to set certain parts of your timelines to only play under certain conditions. 5 | 6 | ## What's a condition? 7 | In programming and games, a condition is mostly described by variables (in Dialogic, these are called `definitions`). 8 | This means that you can check for a definition to have a certain `value` and only play the following events if it matches. 9 | 10 | ## The settings 11 | You can set your condition by first selecting the `value definition` that should be compared, then selecting the `type of comparison`, and finally the `value` that should be compared to. 12 | Only the comparison types `Equal to` and `Different from` work with Strings, the rest work with integers (aka, whole numbers). 13 | You can also enter the name of a `value definition` in the input field. This will compare to the current value of that `value definition`. 14 | 15 | ## Adding events 16 | You can then add new events below the Condition Event, and they will be indented and only be played when the condition is true. 17 | 18 | ## Ending a condition 19 | Every condition needs to have an [End Event](./013.md). After that event, all following events will ignore the condition again. 20 | When creating a Condition Event a End Event will be added too. 21 | 22 | *Note: You can of course have conditions inside conditions. Just make sure to have the same amount of End Events* -------------------------------------------------------------------------------- /addons/dialogic/Editor/Events/Parts/Logic/EventPart_ChoicePicker.gd: -------------------------------------------------------------------------------- 1 | tool 2 | extends "res://addons/dialogic/Editor/Events/Parts/EventPart.gd" 3 | 4 | # has an event_data variable that stores the current data!!! 5 | 6 | ## node references 7 | onready var input_field = $HBox/ChoiceText 8 | onready var condition_picker = $ConditionPicker 9 | 10 | # used to connect the signals 11 | func _ready(): 12 | # e.g. 13 | input_field.connect("text_changed", self, "_on_ChoiceText_text_changed") 14 | condition_picker.connect("data_changed", self, "_on_ConditionPicker_data_changed") 15 | condition_picker.connect("remove_warning", self, "emit_signal", ["remove_warning"]) 16 | condition_picker.connect("set_warning", self, "set_warning") 17 | 18 | # called by the event block 19 | func load_data(data:Dictionary): 20 | # First set the event_data 21 | .load_data(data) 22 | 23 | # Now update the ui nodes to display the data. 24 | input_field.text = event_data['choice'] 25 | 26 | # Loading the data on the selectors 27 | condition_picker.load_data(event_data) 28 | 29 | 30 | # has to return the wanted preview, only useful for body parts 31 | func get_preview(): 32 | return '' 33 | 34 | 35 | func _on_ChoiceText_text_changed(text): 36 | event_data['choice'] = text 37 | 38 | # informs the parent about the changes! 39 | data_changed() 40 | 41 | func _on_ConditionPicker_data_changed(data): 42 | event_data = data 43 | 44 | data_changed() 45 | 46 | func set_warning(text): 47 | emit_signal("set_warning", text) 48 | -------------------------------------------------------------------------------- /addons/dialogic/Editor/Events/Parts/Text/CustomLineEdit.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=2] 2 | 3 | [sub_resource type="StyleBoxFlat" id=1] 4 | content_margin_left = 11.0 5 | content_margin_right = 9.0 6 | content_margin_top = 5.0 7 | content_margin_bottom = 5.0 8 | bg_color = Color( 0.12549, 0.141176, 0.192157, 1 ) 9 | border_width_left = 1 10 | border_width_top = 1 11 | border_width_right = 1 12 | border_width_bottom = 1 13 | border_color = Color( 0.0980392, 0.113725, 0.152941, 1 ) 14 | corner_radius_top_left = 3 15 | corner_radius_top_right = 3 16 | corner_radius_bottom_right = 3 17 | corner_radius_bottom_left = 3 18 | 19 | [node name="CustomLineEdit" type="LineEdit"] 20 | margin_right = 48.0 21 | margin_bottom = 30.0 22 | rect_min_size = Vector2( 130, 27 ) 23 | size_flags_vertical = 6 24 | custom_colors/selection_color = Color( 0.345098, 0.345098, 0.345098, 1 ) 25 | custom_colors/cursor_color = Color( 1, 1, 1, 1 ) 26 | custom_colors/clear_button_color_pressed = Color( 0.960784, 0.960784, 0.960784, 1 ) 27 | custom_colors/font_color_selected = Color( 1, 1, 1, 1 ) 28 | custom_colors/font_color = Color( 1, 1, 1, 1 ) 29 | custom_colors/clear_button_color = Color( 0, 0, 0, 1 ) 30 | custom_colors/font_color_uneditable = Color( 0, 0, 0, 1 ) 31 | custom_styles/read_only = SubResource( 1 ) 32 | custom_styles/focus = SubResource( 1 ) 33 | custom_styles/normal = SubResource( 1 ) 34 | expand_to_text_length = true 35 | caret_blink = true 36 | caret_blink_speed = 0.5 37 | __meta__ = { 38 | "_edit_use_anchors_": false 39 | } 40 | -------------------------------------------------------------------------------- /addons/dialogic/Images/Plugin/plugin-editor-icon-dark-theme-2.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /addons/dialogic/Images/Plugin/plugin-editor-icon-light-theme-2.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Events/042.md: -------------------------------------------------------------------------------- 1 | # Call Node 2 | ![image](./Images/Call_Node.PNG) 3 | 4 | This event allows to call a function in a node or autoload and pass arguments to that function. 5 | 6 | Many people struggle on first setting the node. You will have to either put in a full path (starting from root) or a relative path. 7 | 8 | #### Using a relative path 9 | *You need to have a basic knowledge of relative paths. You can learn a bit about them [here](https://docs.godotengine.org/en/stable/classes/class_nodepath.html).* 10 | The path needs to be relative to your DialogNode. This means you need to consider where it will be added to. 11 | Let's for now imagine an example scene tree like this: 12 | 13 | ``` 14 | - World 15 | -- Temple 16 | -- NPC` 17 | ``` 18 | 19 | Now in the NPC's script the dialog node is added as a child of the NPC node. When getting instanced, there will be a canvas layer inbetween resulting in an actual tree like this: 20 | 21 | ``` 22 | - World 23 | -- Temple 24 | -- NPC 25 | --- CanvasLayer 26 | ---- DialogNode 27 | ``` 28 | 29 | But we want to call a function in the Temple scene with our Call Node Event. From the structure above we can see that we need to go up three times and then down one time to get from the DialogNode to the temple, so this is the resulting path: 30 | `'../../../Temple'` 31 | 32 | *Of course if you have canvas_layer set to false in Dialogic.start() you need on '..' less.* 33 | 34 | #### Using the name of an autoload 35 | If you use an autoload instead, it's wonderfully easy. You can just use the name of the autoload! 36 | -------------------------------------------------------------------------------- /addons/dialogic/Images/Plugin/plugin-editor-icon-dark-theme-0.75.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /addons/dialogic/Images/Plugin/plugin-editor-icon-light-theme-0.75.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /addons/dialogic/Images/Plugin/plugin-editor-icon-dark-theme-1.25.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /addons/dialogic/Images/Plugin/plugin-editor-icon-dark-theme-1.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /addons/dialogic/Images/Plugin/plugin-editor-icon-light-theme-1.25.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /addons/dialogic/Documentation/Content/Tutorials/AddingNewAnimations.md: -------------------------------------------------------------------------------- 1 | # Adding character animations 2 | 3 | Dialogic 1.4 introduced a new animation system ([Anima by Alessandro Senese](https://github.com/ceceppa/anima)). 4 | The files for the animations are stored in the `/dialogic/addons/dialogic/Nodes/Anima/animations` folder. 5 | 6 | There are two different kind of animations: Entrances and exits and attention seekers. 7 | You can add your custom animations by creating new `.gd` files in the `animations/entrances_and_exists` or `animations/attention_seeker` folder. 8 | 9 | ## Entrances and exits 10 | These are used when you have a character showing up or leaving a scene using the character event. 11 | A regular fade in animation looks something like this: 12 | 13 | ``` 14 | func generate_animation(anima_tween: Tween, data: Dictionary) -> void: 15 | var opacity_frames = [ 16 | { from = 0, to = 1, easing_points = [0.42, 0, 0.58, 1]}, 17 | ] 18 | anima_tween.add_frames(data, "opacity", opacity_frames) 19 | ``` 20 | 21 | ## Attention seekers 22 | These are used when you when using the Character event and the Update setting. 23 | They can be used to make a character shake, bounce or any other one to emphasize the character. 24 | 25 | They look something like this: 26 | ``` 27 | func generate_animation(anima_tween: Tween, data: Dictionary) -> void: 28 | var frames = [ 29 | { percentage = 0, from = 1 }, 30 | { percentage = 25, to = 0 }, 31 | { percentage = 50, to = 1 }, 32 | { percentage = 75, to = 0 }, 33 | { percentage = 100, to = 1 }, 34 | ] 35 | 36 | anima_tween.add_frames(data, "opacity", frames) 37 | ``` -------------------------------------------------------------------------------- /addons/dialogic/Images/Plugin/plugin-editor-icon-dark-theme-1.5.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /addons/dialogic/Images/Plugin/plugin-editor-icon-light-theme-1.5.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /addons/dialogic/Images/Plugin/plugin-editor-icon-light-theme-1.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | --------------------------------------------------------------------------------