Browse Source

add basic dialog for alistair

pull/1/head
Joseph Surin 3 years ago
parent
commit
9732ef60bd
  1. 13
      Scenes/InteractiveDialog.tscn
  2. 38
      Scenes/Player.tscn
  3. 38
      Scripts/InteractiveDialog.gd
  4. 41
      Scripts/Player.gd
  5. 14
      Story/Ch1S2.tscn
  6. 11
      addons/dialogic/Dialog.tscn
  7. 439
      addons/dialogic/Documentation/Content/Changelog.md
  8. 33
      addons/dialogic/Documentation/Content/Events/000.md
  9. 18
      addons/dialogic/Documentation/Content/Events/001.md
  10. 6
      addons/dialogic/Documentation/Content/Events/002.md
  11. 14
      addons/dialogic/Documentation/Content/Events/010.md
  12. 11
      addons/dialogic/Documentation/Content/Events/011.md
  13. 22
      addons/dialogic/Documentation/Content/Events/012.md
  14. 3
      addons/dialogic/Documentation/Content/Events/013.md
  15. 11
      addons/dialogic/Documentation/Content/Events/014.md
  16. 21
      addons/dialogic/Documentation/Content/Events/030.md
  17. 22
      addons/dialogic/Documentation/Content/Events/040.md
  18. 5
      addons/dialogic/Documentation/Content/Events/041.md
  19. 31
      addons/dialogic/Documentation/Content/Events/042.md
  20. 122
      addons/dialogic/Documentation/Content/Events/Custom Events/CreateCustomEvents.md
  21. BIN
      addons/dialogic/Documentation/Content/Events/Custom Events/Images/CreationProcess.PNG
  22. 35
      addons/dialogic/Documentation/Content/Events/Custom Events/Images/CreationProcess.PNG.import
  23. BIN
      addons/dialogic/Documentation/Content/Events/Custom Events/Images/CustomEventsShowOff.PNG
  24. 35
      addons/dialogic/Documentation/Content/Events/Custom Events/Images/CustomEventsShowOff.PNG.import
  25. BIN
      addons/dialogic/Documentation/Content/Events/Custom Events/Images/EventBlock.png
  26. 35
      addons/dialogic/Documentation/Content/Events/Custom Events/Images/EventBlock.png.import
  27. BIN
      addons/dialogic/Documentation/Content/Events/Custom Events/Images/EventBlock_EventData.PNG
  28. 35
      addons/dialogic/Documentation/Content/Events/Custom Events/Images/EventBlock_EventData.PNG.import
  29. 9
      addons/dialogic/Documentation/Content/Events/Custom Events/ImportCustomEvents.md
  30. BIN
      addons/dialogic/Documentation/Content/Events/Images/Call_Node.PNG
  31. 35
      addons/dialogic/Documentation/Content/Events/Images/Call_Node.PNG.import
  32. BIN
      addons/dialogic/Documentation/Content/Events/Images/Event_Change_Timeline.PNG
  33. 35
      addons/dialogic/Documentation/Content/Events/Images/Event_Change_Timeline.PNG.import
  34. BIN
      addons/dialogic/Documentation/Content/Events/Images/Event_Character_Join.PNG
  35. 35
      addons/dialogic/Documentation/Content/Events/Images/Event_Character_Join.PNG.import
  36. BIN
      addons/dialogic/Documentation/Content/Events/Images/Event_Character_Leave.PNG
  37. 35
      addons/dialogic/Documentation/Content/Events/Images/Event_Character_Leave.PNG.import
  38. BIN
      addons/dialogic/Documentation/Content/Events/Images/Event_Choice.PNG
  39. 35
      addons/dialogic/Documentation/Content/Events/Images/Event_Choice.PNG.import
  40. BIN
      addons/dialogic/Documentation/Content/Events/Images/Event_Choice_Condition.PNG
  41. 35
      addons/dialogic/Documentation/Content/Events/Images/Event_Choice_Condition.PNG.import
  42. BIN
      addons/dialogic/Documentation/Content/Events/Images/Event_Close_Dialog.PNG
  43. 35
      addons/dialogic/Documentation/Content/Events/Images/Event_Close_Dialog.PNG.import
  44. BIN
      addons/dialogic/Documentation/Content/Events/Images/Event_Condition.PNG
  45. 35
      addons/dialogic/Documentation/Content/Events/Images/Event_Condition.PNG.import
  46. BIN
      addons/dialogic/Documentation/Content/Events/Images/Event_Condition_in_use.PNG
  47. 35
      addons/dialogic/Documentation/Content/Events/Images/Event_Condition_in_use.PNG.import
  48. BIN
      addons/dialogic/Documentation/Content/Events/Images/Event_Emit_Signal.PNG
  49. 35
      addons/dialogic/Documentation/Content/Events/Images/Event_Emit_Signal.PNG.import
  50. BIN
      addons/dialogic/Documentation/Content/Events/Images/Event_End_Branch.PNG
  51. 35
      addons/dialogic/Documentation/Content/Events/Images/Event_End_Branch.PNG.import
  52. BIN
      addons/dialogic/Documentation/Content/Events/Images/Event_Question.PNG
  53. 35
      addons/dialogic/Documentation/Content/Events/Images/Event_Question.PNG.import
  54. BIN
      addons/dialogic/Documentation/Content/Events/Images/Event_Question_in_use.PNG
  55. 35
      addons/dialogic/Documentation/Content/Events/Images/Event_Question_in_use.PNG.import
  56. BIN
      addons/dialogic/Documentation/Content/Events/Images/Event_Set_Theme.PNG
  57. 35
      addons/dialogic/Documentation/Content/Events/Images/Event_Set_Theme.PNG.import
  58. BIN
      addons/dialogic/Documentation/Content/Events/Images/Event_Set_Value.PNG
  59. 35
      addons/dialogic/Documentation/Content/Events/Images/Event_Set_Value.PNG.import
  60. BIN
      addons/dialogic/Documentation/Content/Events/Images/Event_Set_Value_random.PNG
  61. 35
      addons/dialogic/Documentation/Content/Events/Images/Event_Set_Value_random.PNG.import
  62. BIN
      addons/dialogic/Documentation/Content/Events/Images/Event_Wait_Seconds.PNG
  63. 35
      addons/dialogic/Documentation/Content/Events/Images/Event_Wait_Seconds.PNG.import
  64. BIN
      addons/dialogic/Documentation/Content/Events/Images/audio_event.png
  65. 35
      addons/dialogic/Documentation/Content/Events/Images/audio_event.png.import
  66. BIN
      addons/dialogic/Documentation/Content/Events/Images/text_event_1.png
  67. 35
      addons/dialogic/Documentation/Content/Events/Images/text_event_1.png.import
  68. BIN
      addons/dialogic/Documentation/Content/Events/Images/text_event_2.png
  69. 35
      addons/dialogic/Documentation/Content/Events/Images/text_event_2.png.import
  70. 11
      addons/dialogic/Documentation/Content/FAQ/CSharp.md
  71. 5
      addons/dialogic/Documentation/Content/FAQ/Portraits.md
  72. 17
      addons/dialogic/Documentation/Content/FAQ/Signals.md
  73. 3
      addons/dialogic/Documentation/Content/FAQ/can-i-use-dialogic-in-my-project.md
  74. 26
      addons/dialogic/Documentation/Content/FAQ/create-timeline-using-gdscript.md
  75. 12
      addons/dialogic/Documentation/Content/FAQ/how-to-make-dialog-show-up-in-game.md
  76. 3
      addons/dialogic/Documentation/Content/FAQ/plugin-shipped-godot.md
  77. 3
      addons/dialogic/Documentation/Content/FAQ/resolution-small-dialog-big.md
  78. 5
      addons/dialogic/Documentation/Content/FAQ/why-not-graph-nodes.md
  79. BIN
      addons/dialogic/Documentation/Content/Images/dialogic-hero-1.3.png
  80. 35
      addons/dialogic/Documentation/Content/Images/dialogic-hero-1.3.png.import
  81. 5
      addons/dialogic/Documentation/Content/Reference/000.md
  82. 50
      addons/dialogic/Documentation/Content/Reference/001.md
  83. 42
      addons/dialogic/Documentation/Content/Reference/Character.md
  84. 93
      addons/dialogic/Documentation/Content/Reference/Theme.md
  85. 31
      addons/dialogic/Documentation/Content/Reference/Timeline.md
  86. 170
      addons/dialogic/Documentation/Content/Tutorials/BeginnersGuideStepByStep.md
  87. 3
      addons/dialogic/Documentation/Content/Tutorials/GettingStarted.md
  88. BIN
      addons/dialogic/Documentation/Content/Tutorials/Images/Character_Editor_With_Portrait.PNG
  89. 35
      addons/dialogic/Documentation/Content/Tutorials/Images/Character_Editor_With_Portrait.PNG.import
  90. BIN
      addons/dialogic/Documentation/Content/Tutorials/Images/Dialogic_Tab.PNG
  91. 35
      addons/dialogic/Documentation/Content/Tutorials/Images/Dialogic_Tab.PNG.import
  92. BIN
      addons/dialogic/Documentation/Content/Tutorials/Images/Empty_Character_Editor.PNG
  93. 35
      addons/dialogic/Documentation/Content/Tutorials/Images/Empty_Character_Editor.PNG.import
  94. BIN
      addons/dialogic/Documentation/Content/Tutorials/Images/Empty_Timeline_Editor.PNG
  95. 35
      addons/dialogic/Documentation/Content/Tutorials/Images/Empty_Timeline_Editor.PNG.import
  96. BIN
      addons/dialogic/Documentation/Content/Tutorials/Images/Glossary_Example.PNG
  97. 35
      addons/dialogic/Documentation/Content/Tutorials/Images/Glossary_Example.PNG.import
  98. BIN
      addons/dialogic/Documentation/Content/Tutorials/Images/Glossary_ExampleLook.PNG
  99. 35
      addons/dialogic/Documentation/Content/Tutorials/Images/Glossary_ExampleLook.PNG.import
  100. BIN
      addons/dialogic/Documentation/Content/Tutorials/Images/Import_Selection.PNG
  101. Some files were not shown because too many files have changed in this diff Show More

13
Scenes/InteractiveDialog.tscn

@ -0,0 +1,13 @@ @@ -0,0 +1,13 @@
[gd_scene load_steps=3 format=2]
[ext_resource path="res://Scripts/InteractiveDialog.gd" type="Script" id=1]
[sub_resource type="CircleShape2D" id=1]
[node name="Node2D" type="Node2D"]
[node name="Area2D" type="Area2D" parent="."]
script = ExtResource( 1 )
[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"]
shape = SubResource( 1 )

38
Scenes/Player.tscn

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
[gd_scene load_steps=16 format=2]
[gd_scene load_steps=17 format=2]
[ext_resource path="res://Scripts/Player.gd" type="Script" id=1]
[ext_resource path="res://Sprites/mc/front.png" type="Texture" id=2]
@ -16,9 +16,14 @@ @@ -16,9 +16,14 @@
[sub_resource type="SpriteFrames" id=2]
animations = [ {
"frames": [ ExtResource( 4 ) ],
"frames": [ ExtResource( 5 ) ],
"loop": true,
"name": "IdleLeft",
"name": "IdleUp",
"speed": 5.0
}, {
"frames": [ ExtResource( 3 ), ExtResource( 10 ), ExtResource( 3 ), ExtResource( 12 ) ],
"loop": true,
"name": "MoveRight",
"speed": 5.0
}, {
"frames": [ ExtResource( 4 ), ExtResource( 13 ), ExtResource( 4 ), ExtResource( 8 ) ],
@ -31,19 +36,14 @@ animations = [ { @@ -31,19 +36,14 @@ animations = [ {
"name": "MoveUp",
"speed": 5.0
}, {
"frames": [ ExtResource( 3 ), ExtResource( 10 ), ExtResource( 3 ), ExtResource( 12 ) ],
"loop": true,
"name": "MoveRight",
"speed": 5.0
}, {
"frames": [ ExtResource( 2 ), ExtResource( 6 ), ExtResource( 2 ), ExtResource( 7 ) ],
"loop": true,
"name": "MoveDown",
"speed": 5.0
}, {
"frames": [ ExtResource( 5 ) ],
"frames": [ ExtResource( 3 ) ],
"loop": true,
"name": "IdleUp",
"name": "IdleRight",
"speed": 5.0
}, {
"frames": [ ExtResource( 2 ) ],
@ -51,14 +51,17 @@ animations = [ { @@ -51,14 +51,17 @@ animations = [ {
"name": "IdleDown",
"speed": 5.0
}, {
"frames": [ ExtResource( 3 ) ],
"frames": [ ExtResource( 4 ) ],
"loop": true,
"name": "IdleRight",
"name": "IdleLeft",
"speed": 5.0
} ]
[sub_resource type="RectangleShape2D" id=1]
extents = Vector2( 22, 4.5 )
extents = Vector2( 21, 1 )
[sub_resource type="RectangleShape2D" id=3]
extents = Vector2( 21, 17.5 )
[node name="Player" type="KinematicBody2D"]
position = Vector2( 4, 4 )
@ -71,8 +74,15 @@ animation = "IdleDown" @@ -71,8 +74,15 @@ animation = "IdleDown"
playing = true
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
position = Vector2( -4, 28 )
position = Vector2( -4, 31 )
shape = SubResource( 1 )
one_way_collision = true
[node name="Area2D" type="Area2D" parent="."]
[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"]
position = Vector2( -4, 11.5 )
shape = SubResource( 3 )
[node name="RayCast2D" type="RayCast2D" parent="."]
position = Vector2( -4, -4 )

38
Scripts/InteractiveDialog.gd

@ -0,0 +1,38 @@ @@ -0,0 +1,38 @@
extends Area2D
## The timeline to load when starting the scene
export(String, "TimelineDropdown") var timeline: String
export(bool) var add_canvas = true
export(bool) var reset_saves = true
export(bool) var debug_mode = false
export(bool) var show_immediately = false
# used prevent the dialogue from appearing if the
# player hits space multiple times
var is_dialogue_showing = false
var dialogue = null
func _ready():
if show_immediately:
show_dialogue()
func show_dialogue():
if is_dialogue_showing:
return
dialogue = Dialogic.start(timeline, '', "res://addons/dialogic/Nodes/DialogNode.tscn", debug_mode, add_canvas)
dialogue.connect("timeline_end", self, "after_dialog")
add_child(dialogue)
is_dialogue_showing = true
func hide_dialogue():
if is_dialogue_showing:
remove_child(dialogue)
is_dialogue_showing = false
func after_dialog(s):
is_dialogue_showing = false
func _on_Area2D_area_exited(area):
if area.get_parent().name == "Player":
hide_dialogue()

41
Scripts/Player.gd

@ -1,44 +1,41 @@ @@ -1,44 +1,41 @@
extends KinematicBody2D
# Declare member variables here. Examples:
# var a = 2
# var b = "text"
var curHp : int = 10
var maxHp : int = 10
var moveSpeed : int = 180
var damage : int = 1
var gold : int = 0
var curLevel : int = 0
var curXp : int = 0
var xpToNextLevel : int = 50
var xpToLevelIncreaseRate : float = 1.2
var interactDist : int = 70
var vel = Vector2()
var facingDir = Vector2()
onready var rayCast = $RayCast2D
onready var anim = $AnimatedSprite
# Called when the node enters the scene tree for the first time.
func _ready():
pass # Replace with function body.
pass
func _physics_process (delta):
func _physics_process(delta):
handle_interactions()
handle_movements()
func handle_interactions():
if Input.is_action_just_pressed("ui_accept"):
for body in $Area2D.get_overlapping_areas():
if body.has_method("show_dialogue"):
body.show_dialogue()
return
func handle_movements():
vel = Vector2()
# inputs
if Input.is_action_pressed("move_up"):
vel.y -= 1
vel.y = -1
facingDir = Vector2(0, -1)
if Input.is_action_pressed("move_down"):
vel.y += 1
vel.y = 1
facingDir = Vector2(0, 1)
if Input.is_action_pressed("move_left"):
vel.x -= 1
vel.x = -1
facingDir = Vector2(-1, 0)
if Input.is_action_pressed("move_right"):
vel.x += 1
vel.x = 1
facingDir = Vector2(1, 0)
# normalize the velocity to prevent faster diagonal movement
@ -47,14 +44,12 @@ func _physics_process (delta): @@ -47,14 +44,12 @@ func _physics_process (delta):
# move the player
move_and_slide(vel * moveSpeed, Vector2.ZERO)
manage_animations()
func play_animation (anim_name):
if anim.animation != anim_name:
anim.play(anim_name)
func manage_animations ():
if vel.x > 0:
play_animation("MoveRight")
elif vel.x < 0:

14
Story/Ch1S2.tscn

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
[gd_scene load_steps=13 format=2]
[gd_scene load_steps=14 format=2]
[ext_resource path="res://Resources/lodge.tres" type="TileSet" id=1]
[ext_resource path="res://Sprites/sak/Sak.tscn" type="PackedScene" id=2]
@ -12,6 +12,7 @@ @@ -12,6 +12,7 @@
[ext_resource path="res://Scenes/Player.tscn" type="PackedScene" id=10]
[ext_resource path="res://Sprites/richal/Richal.tscn" type="PackedScene" id=11]
[ext_resource path="res://Scripts/CameraFollow.gd" type="Script" id=12]
[ext_resource path="res://Scenes/InteractiveDialog.tscn" type="PackedScene" id=13]
[node name="Ch1S2" type="Node2D"]
@ -97,6 +98,13 @@ position = Vector2( 380, 380 ) @@ -97,6 +98,13 @@ position = Vector2( 380, 380 )
[node name="Alistair" parent="FG" instance=ExtResource( 3 )]
position = Vector2( 165, 150 )
[node name="dialog" parent="FG/Alistair" instance=ExtResource( 13 )]
position = Vector2( 0, 27 )
scale = Vector2( 4, 2 )
[node name="Area2D" parent="FG/Alistair/dialog" index="0"]
timeline = "timeline-1642498159.json"
[node name="Kettle" type="Sprite" parent="FG"]
position = Vector2( 653, 156 )
texture = ExtResource( 4 )
@ -114,3 +122,7 @@ tile_set = ExtResource( 1 ) @@ -114,3 +122,7 @@ tile_set = ExtResource( 1 )
cell_size = Vector2( 30, 30 )
format = 1
tile_data = PoolIntArray( 458755, 52, 0 )
[connection signal="area_exited" from="FG/Alistair/dialog/Area2D" to="FG/Alistair/dialog/Area2D" method="_on_Area2D_area_exited"]
[editable path="FG/Alistair/dialog"]

11
addons/dialogic/Dialog.tscn

@ -0,0 +1,11 @@ @@ -0,0 +1,11 @@
[gd_scene load_steps=2 format=2]
[ext_resource path="res://addons/dialogic/Nodes/DialogProxy.gd" type="Script" id=2]
[node name="Dialog" type="Control"]
anchor_right = 1.0
anchor_bottom = 1.0
script = ExtResource( 2 )
__meta__ = {
"_edit_use_anchors_": false
}

439
addons/dialogic/Documentation/Content/Changelog.md

@ -0,0 +1,439 @@ @@ -0,0 +1,439 @@
# Changelog
## v1.3 - (WIP)
#### General Editor Stuff
- **Builtin documentation** [[Jowan-Spooner](https://github.com/Jowan-Spooner)]
- Added a button to open the documentation from the nav bar
- The plugin has now **Editor-translation support** and some labels are translated to Chinese [[magian1127](https://github.com/magian1127)]
- Added some initial Spanish translations
- Replaced the default `/addons/dialogic/Dialog.tscn` node with a proxy that creates a dialog using the `Dialogic.start` function instead of the raw node. This will make it easier to update from version to version since the instantiated node will not be changing a lot from version to version. This also moved and renamed the previous `/addons/dialogic/Dialog.tscn` to `/addons/dialogic/Nodes/DialogNode.tscn` and the `dialog_node.gd` is now called `DialogNode.gd` to be more in line with the rest of the project
- CanvasLayer Argument (Dialogic.start()) added to the CSharp Class
- Creating new resources will automatically start the renaming of it
- New plugin icon! It should now display at its proper scale depending on your rendering scale
#### Timeline Editor:
- A modular **Custom events** implementation [[Jowan-Spooner](https://github.com/Jowan-Spooner)]. Learn about them [here](./Events/Custom Events/CreateCustomEvents.md).
- Added a **preview image on the portrait picker**, so it is easy to know what sprite or scene you are selecting. Thanks to [EmmaH](https://www.youtube.com/channel/UC4y59CMiLxWQQVqVFBYLa3Q) for the idea and [Jowan-Spooner](https://github.com/Jowan-Spooner) for the implementation
- Added **Voice Line support** for Text and Question Events [[RedXGames](https://github.com/RedXGames)]. Learn how to use it [here](./Tutorials/VoiceLines.md).
- Added option to use a certain region of the audio files [[KvaGram](https://github.com/KvaGram)]
- Partial support for **undo and redo** [[Jowan-Spooner](https://github.com/Jowan-Spooner)]
- Better **light/custom theme support** for the timeline editor [[Jowan-Spooner](https://github.com/Jowan-Spooner)]
- Changed the Selected Event Style to only have blue borders and not change event color [[Jowan-Spooner](https://github.com/Jowan-Spooner)]
- Adding an extra space at the end of the timelines so it is easier to drag and drop new events
- After selecting a conditional, the input field of that event will be selected
- Updated UI of the AudioPickers [[Jowan-Spooner]](https://github.com/Jowan-Spooner)
- Automatically scrolling to newly created events when you click on a create event button [[Jowan-Spooner](https://github.com/Jowan-Spooner)]
- If no characters are present in the current project the character picker is hidden and a prompt was added in the Character join and Character leave events to create one [[zaknafean](https://github.com/zaknafean)]
- Copy Timeline Name will now return the full path to that timeline
#### Theme Editor:
- **Updated Audio Settings** [[Tim Krief](https://github.com/timkrief)]:
- you can now select audio for typing, text completed, next event, button hover and button selecting
- Attention: Old typing audio will have to be redone!
- You can now set the **position of the buttons relative to the screen** (Top, Bottom, Center, Left, Right)
- You can now set the choice buttons to be **aligned horizontally or vertically**
- More range for dialog text speed [[zaknafean](https://github.com/zaknafean)]
- A default theme is created on new projects [[zaknafean](https://github.com/zaknafean)]
#### Ingame Behaviour
- `ATTENTION`: Rework and improvement of the **saving system**.
This includes some breaking changes. Learn all about the new system and how to transition [here](./Tutorials/Saving.md).
- A **visual novel template** with a working menu is being made. You can find it [here](https://github.com/Dialogic-Godot/visual-novel-template).
- `Dialogic.start()` will now use paths for specific timelines. A fallback is in place, but specificity is preferred. For instance: `Dialogic.start('my-timeline')` will search any timeline with that name; `Dialogic.start('/chapter-1/my-timeline')` will open the timeline namde `my-timeline` inside the folder `chapter-1`.
- If the text is too big for your dialog and you see a scrolling bar, you can use the `up` and `down` keys to scroll [[Jowan-Spooner](https://github.com/Jowan-Spooner)]
- Rework of the character name coloring (using Regex now) [[Jowan-Spooner](https://github.com/Jowan-Spooner)]
- Regex name compiler now properly escapes special characters [[zaknafean](https://github.com/zaknafean)]
#### Export
- Removing requirement to manually configure resource export (No need to add `.cfg`, `.json` to your export settings anymore) [[LuRomao](https://github.com/LuRomao)]
#### Other Stuff:
- Renamed the plugin entry point script from `dialogic.gd` to `plugin.gd` so it better describes what that file does
- Removed the need to use a DialogicSingleton. This causes some slight changes to saving and loading. Learn all about the new system and how to transition [here](./Tutorials/Saving.md).
- Deleted some legacy documentation files
- Adding a warning if you are trying to set or get a variable that wasn't defined
#### Bug-fixes
##### Editor
- Fixed the `DialogNode` Inspector Timeline Open button issue
- Fixed a reference bug that prevent the duplication of Themes
##### Game
- Changed the default cursor shape that was weird in MacOS
- Dialogs only start typing after the fade-in animation happened
- Fixed a bug that performed the fade-in animation before setting the proper theme
- Fixed a bug that prevented to use the global input setting when selecting option buttons
## v1.2.5 - Possibly breaking eveything. We will never know.
- Loading timeline events on batches to speedup big timelines
- Reduced the amount of nodes inside events to improve loading times
- Fixing the "first time running" bug where you had to reboot dialogic after enabling it for the first time
- Fixing a bug where if you had a node selected in the editor you couldn't open any resource picker
- Fixed a bug when trying to add a new resource after removing one
- Fixed the issue that allowed you to keep loading messages after a dialog close event
- Enabling bbcode to glossary entries
- Simplified some internal code
- Adding new setting to the Set Background event to add fade-in time
- Fixed an issue that caused nested timelines to be deleted whem moving directories [[zaknafean]](https://github.com/zaknafean)
- Settings Editor
- Added a default action key selector so you don't have to set it per theme. The theme action key settings will overwrite the one set in settings.
- Added new setting to select Dialogic's Canvas Layer [[RedXGames]](https://github.com/RedXGames)
## v1.2.4 - Gotta go fast
- Fixed an issue with the default scale of the portraits
- Trying to simplify and remove legacy code:
- EditorView.gd: Unified the remove resource confirmation dialogs and removed pointless variable definitions
## v1.2.3 - Two releases in one day?
- Hopefully, final attempt to fix the weird event creation bug [[Jowan-Spooner](https://github.com/Jowan-Spooner)] Thanks [[Drawsi](https://github.com/Drawsi)] for the report and testing!
## v1.2.2 - Here we go again :')
- Set Value Event: There is now a dice symbol that (when toggled) will reveal to boxes for a minimum and a maximum random number to choose from [[Jowan-Spooner](https://github.com/Jowan-Spooner)]
- Making a small delay on choices to prevent the people that spam "next" to accidentally select the first option
- Fixed some issues when creating new events in the timeline
## v1.2.1 - Get them while they're hot!
- You can now specify for how long to wait in `[nw]` events. `[nw=3]` or whatever number of seconds you want it to wait
- Fixed some issues with the CanvasLayer
- Fixed some issues when creating dialogs using GDScript
- Fixed an issue when changing the current timeline
- Improved the internals of `MasterTree.gd` [[Jowan-Spooner](https://github.com/Jowan-Spooner)]
- Fixed some issues with the `[nw]` command [[Jowan-Spooner](https://github.com/Jowan-Spooner)]
- Improved the Timeline Editor performance when loading timelines
- Removed the `focus_mode` warning
- Added a new page to the docs about the [Text Events](https://github.com/coppolaemilio/dialogic/blob/main/docs/events/TextEvent.md)
- Fixed a bug when trying to skip fade-in dialog animations [[idontkillcoyotes](https://github.com/idontkillcoyotes)]
- Fixed an issue with typing sounds in exported projects
- Fixed an issue when selecting folders for typing sounds in exporting projects; Thank you [AnidemDex](https://github.com/AnidemDex)!
## v1.2 - Organize it!
- Functionality
- Added extra options to allow the user to disable/enable saving of definitions and current timeline [[Arnaud](https://github.com/arnaudvergnet)]
- `Dialogic.start()` will add a CanvasLayer by default to avoid the confusion of not seeing Dialogic when using a camera. [[AnidemDex](https://github.com/AnidemDex)]
- Fixed many issues with portraits fading in and out
- Fixed a bug that prevented the BackgroundMusic event to work correctly [[Jowan-Spooner](https://github.com/Jowan-Spooner)]
- Experimental translation added! (This change simply adds a new setting to always treat text as a translation key, instead of displaying it directly. When on, text is sent through tr() before any additional checks are performed on it) [[bojjenclon]](https://github.com/bojjenclon)
- Editor
- Added sub-folders to all the resources to better organize your project [[Jowan-Spooner](https://github.com/Jowan-Spooner)]
- Improved resource picker aware of sub-folders [[Jowan-Spooner](https://github.com/Jowan-Spooner)]
- Dialog
- Adding `[nw]` commands to automatically skip the text after 2 seconds without user input (Will be improved in future versions)
- Choices can now print the definition values using the regular `[definition]` syntax
- Next indicator is no longer visible when there are options to select
- You can now use `[speed=3]` or any number to change the speed of an individual event text speed
- Theme Editor
- Added new fonts selector for italics, bold, and names [[Jowan-Spooner](https://github.com/Jowan-Spooner)]
- Added new Box Padding settings to the name label.
- Added a new option to make the dialog backgrounds full width
- You can now set a character for the preview message
- Three positions for the name label: Left, Center and Right
- You can set the vertical and horizontal offset of the name label
- Added a new option to enable single portrait mode. In this mode, once the characters join the dialog, only one of them will be visible without the need of making them join and leave every time
- Added a simple fade in animation for dialogs. You can change how long it takes in the `Dialog Box` tab
- New tab added: Audio
- In the audio tab, you can select a sound or set of sounds to play while the text is being typed in the dialog. [[Tim Krief](https://github.com/timkrief)]
- Character Editor
- You can now add a scene as a portrait, so you can now use AnimatedSprite or whatever you might need
- You can set nicknames to characters [[zakary93](https://github.com/zakary93)]
- Fixed a bug when coloring the names of characters in text [[zakary93](https://github.com/zakary93)]
- Added the resolution of the selected portrait image on the preview box
- You can now import a folder to automatically add all the images inside as portraits
- Removed the legacy "Default Speaker" option. I might revisit something like this in the future
- Timeline Editor
- You can now select multiple events (`CRTL` for adding/removing an event, `SHIFT` for range select) [[Jowan-Spooner](https://github.com/Jowan-Spooner)]
- You can now use `CRTL+C`, `CRTL+X` and `CRTL+V` to copy, cut and paste events [[Jowan-Spooner](https://github.com/Jowan-Spooner)]
- You can use `CRTL+D` to duplicate the selection [[Jowan-Spooner](https://github.com/Jowan-Spooner)]
- You can use `CRTL+A` and `CRTL+SHIFT+A` to select/deselect all events [[Jowan-Spooner](https://github.com/Jowan-Spooner)]
- Some shortcuts where redone: Remove events with `DEL`, move selection up/down with the `UP` and `DOWN` arrow keys [[Jowan-Spooner](https://github.com/Jowan-Spooner)]
- A SetGlossary event was added that allows to change the info of a glossary item during the game [[Jowan-Spooner](https://github.com/Jowan-Spooner)]
- You can now set the portrait of a character based on a definition [[bojjenclon]](https://github.com/bojjenclon)
- New resource picker styles
- Modified the label on the emit signal event so it is easier to understand [[Jowan-Spooner](https://github.com/Jowan-Spooner)]
- Updated the look of some events and added some useful event warnings
- Other stuff
- Events have id's now. Nothing should change for the user, but it will be easier to manage the inclusion of new events or modifying existing ones [[Jowan-Spooner](https://github.com/Jowan-Spooner)]
- Fixed a non-breaking bug that printed some errors on the terminal
- And many more! (kinda hate not listing all the changes, but don't remember all of them)
## v1.1 - With a little help from my friends
- Improved event dragging and selection [[Arnaud Vergnet](https://github.com/arnaudvergnet)]
- Fixed a bug that prevented the deletion of Characters [[AnidemDex](https://github.com/AnidemDex)]
- Fixed a bug that allowed you to overwrite the event on the theme preview dialog
- Added a folder icon to each section of the resource tree
- Greatly improved how the plugin is displayed in different display scales
- You can now filter resources from the main view [[ellogwen](https://github.com/ellogwen)]
- You can now duplicate themes (from the context menu) [[ellogwen](https://github.com/ellogwen)]
- Organized the images and other assets into a tidier structure [[Jowan-Spooner](https://github.com/Jowan-Spooner)] _**Warning!** If you were using the example portrait assets you will have to load them again manually on the character editor_
- You can now create resources by right clicking the section and selecting "+ New" [[Tim Krief](https://github.com/timkrief)]
- Remade all the PopupMenu items in gdscript and replaced the icons with native editor theme ones.
- Experimental: Added a static proxy for C# projects. _Testing wanted!_ [[mscharley](https://github.com/mscharley)]
- Timeline:
- New event `Call Node`: Call a Godot NodePath and a method name. In addition you can add arguments as well. The Timeline will execute those methods and wait for completion, if the method in question is async and/or yielding [[ellogwen](https://github.com/ellogwen)]
- You now can drag and drop events into the timeline! [[ellogwen](https://github.com/ellogwen)]
- You can un select a selected event by clicking it [[ellogwen](https://github.com/ellogwen)]
- The `Scene Event` can now take other Scenes (`.tscn`) files as backgrounds. [[ellogwen](https://github.com/ellogwen)]
- The `If Condition` event can now use definition variables as values to compare against [[ellogwen](https://github.com/ellogwen)]
- You can now hide `Choice events` if a definition doesn't meet some requirements [[Arnaud](https://github.com/arnaudvergnet)]
- You can now select a character to ask a question in the `Question Event` [[Tim Krief](https://github.com/timkrief)]
- Added very basic syntax highlighting to the `Text Event` editor
- Fixed an indenting bug when removing events
- The `Character Join` event now has a mirror option [[Jowan-Spooner](https://github.com/Jowan-Spooner)]
- The `Close Dialog` has a new setting for the duration of the fade-out animation. [[Tim Krief](https://github.com/timkrief)]
- `Scene Event` renamed to `Change Background` to better represent what it does. [[Jowan-Spooner](https://github.com/Jowan-Spooner)]
- Both `Audio Event` and `Background Music` got more settings (audio Bus, volume, fade-length) [[Jowan-Spooner](https://github.com/Jowan-Spooner)]
- Shortcuts added! [[ellogwen](https://github.com/ellogwen)]
- Selecting previous and next event in the timeline with `CTRL + UP` and `CTRL + DOWN`
- Moving currently selected event up and down the timeline `ALT + UP` and `ALT + DOWN`
- Remove the currently selected event node and selects the next/last event node `CTRL DELETE`
- Create a new text event node below the currently selected and focus it's textbox to continue writing `CTRL T`
- Character Editor
- There is an option `mirror portraits` below the portrait preview now, that will mirror all portraits when they appear in the game [[Jowan-Spooner](https://github.com/Jowan-Spooner)]
- Fixed a bug that prevented portrait previews to display if the extension was in capital letters.
- Theme Editor
- Refreshed the UI to make room for more properties for each section
- A reload of the preview dialog is performed when you change a property so you don't have to click the "preview changes" all the time
- Removed the limitation of only 100px for the padding of the dialog box
- Added a new option for changing the color modulation of the dialog background image
- Added new customization options (scale, and offset) to the next indicator image
- Added modulation settings to the name label background texture and the choices buttons background textures [[Jowan-Spooner](https://github.com/Jowan-Spooner)]
- Added an option to use native buttons styles for choices [[Tim Krief](https://github.com/timkrief)]
- Added an advanced option to use a custom scene as a button for choices [[Arnaud Vergnet](https://github.com/arnaudvergnet)]
- Added new settings to set a fixed size for choice buttons (This is used to prevent premade texture stretching)
- Fixed a bug where the text alignment wasn't being shown on the preview
- Fixed a bug with the name label shadow
- Fixed a bug with the "auto color" option in game
- Dialog node
- You can now use [br] to insert line breaks
- Questions now properly show the theme text alignment
- Options now show up when the question text finished displaying [[Arnaud Vergnet](https://github.com/arnaudvergnet)]
- The close dialog now performs a fade-out animation
- Fixed a bug where Glossary Definitions plain text was being added to the name label
- Fixed an issue when trying to display small sprites as characters portraits
- Fixed a bug where portraits didn't come to the front when being focused [[AnidemDex](https://github.com/AnidemDex)]
- Fixed a bug when the display stretch was set to `2D`
- Fixed a bug where empty text lines were not removed properly [[Arnaud Vergnet](https://github.com/arnaudvergnet)]
- Settings
- Added a new option to enable advanced theme settings [[Arnaud Vergnet](https://github.com/arnaudvergnet)]
- Added a new option to toggle the character "focus"/"dim" while speaking
- Added a button in timeline inspector plugin to open the selected timeline in the editor [[ellogwen](https://github.com/ellogwen)]
- Special thanks to [Jowan-Spooner](https://github.com/Jowan-Spooner) for the QA and the facelift on the theme editor
To view previous changes [click here](https://github.com/coppolaemilio/dialogic/blob/main/CHANGELOG.md).
## v1.0 - We made it! 🎉
- When upgrading from 0.9 to the current version things might not work as expected:
- ⚠ **PLEASE MAKE A BACKUP OF YOUR PROJECT BEFORE UPGRADING**
- Glossary variables will be lost
- Glossary related events will not be loaded (`If condition Event` and `Set Value Event`)
- The theme you made in the 0.9 theme editor will be lost. You will have to remake it.
- Video [https://youtu.be/MeaS3zZxpbA](https://youtu.be/MeaS3zZxpbA)
- New layout:
- All editors in the same screen. Say goodbye to tabs!
- You can now rename resources by double clicking them
- New Settings panel for advanced properties
- Settings:
- Re-added the auto color for character names in text messages
- Removing empty Text Event from timelines
- New lines to create new Text Event messages
- Propagation of input to the rest of the Tree
- Character Editor:
- Set the scale of your character's portrait
- Add offset to the portrait
- Timeline Editor:
- New `Theme event` to change the theme in the middle of a timeline
- New `Background Music Event` to play music in your dialog. Music can crossfade when changing track and fade in/out when starting/stopping.
- Re-enabled the `Scene Event`
- Allow making basic calculations such as `+`, `-`, `*`, `/` in `Set value events`.
- Theme Editor:
- You can now add multiple themes.
- Moved the preview button to the left side so it is never hidden by default in small screens.
- New section to edit how the character names are displayed.
- New properties:
- `Box size` set the width and height of the dialogue box in pixels
- `Alignment` you can now align the text displayed (Left, Center, Right)
- `Bottom Gap` The distance between the bottom of the screen and the start of the dialog box.
- `Next animation` Set an animation for the "Next Dialog Indicator"
- Glossary was renamed to Definitions. I feel like the word `Definitions` cover both "variables" and "lore" a bit better.
- Definitions:
- Dynamic types! All variables are just dynamic, so they can be ints, floats or strings.
- The name of a character can be set to be a definition.
- You can display definition values in a Text Event by doing: `[definition name here]`.
- Fixed many resource issues with exported games
- New icons all around.
- Added some basic light theme support. This is not finished, but it is on a much better state than before.
- The events now emit signals. Thank you [Jesse Lieberg](https://github.com/GammaGames) for your first contribution!
- Special thanks to [Arnaud Vergnet](https://github.com/arnaudvergnet) for all your work in improving Definitions, conditional events and many more! 🙇
## v0.9 - House keeping
- Video: [https://youtu.be/pL0RWVmlM6g](https://youtu.be/pL0RWVmlM6g)
- Moved `Dialog.tscn` to the root of the addon so it is easier to find.
- Added a link to the documentation from the editor
- Refactored a lot of the code and continued splitting the main plugin code into smaller pieces.
- Rewrote most of the saving and branching systems.
- New tool: Glossary Editor
- You are now able to write extra lore for any word and Dialogic will create a hover card with that extra information.
- You can create `strings` and `number` variables.
- You can access to those variables from the `Dialogic` Class: `Dialogic.get_var('variable_name')`
- In game:
- Portraits changes are reflected in-game.
- Many small improvements.
- Theme Editor:
- New default asset: Glossary Font
- Added new options to customize the glossary popup
- Timeline Editor:
- Added categories for the events.
- Color coded some of the events in the same category to avoid having a distracting rainbow in the timelines.
- Conditional event working, but only with "equal to". More conditions coming later.
- Renamed the `End Branch` file names to match the name of the event. This will break the conditionals you have, but this is the time for making breaking changes. Sorry!
- New `Set Value` event. Change the current value of a glossary variable inside a timeline. This will reset when you close the game, so a saving system will have to be added on the next version.
- New `Emit Signal` event. This event will make the Dialog node emit a signal called `dialogic_signal`. You can connect this in a moment of your timeline with other scripts.
- New `Change Scene` event. You can change the current Scene to whatever `.tscn` you pick. This will happen instantly, but in the future I'll add some transition effects so it is not that abrupt.
- New `Wait Seconds` event. This will hide the dialog and wait X seconds until continuing with the rest of the timeline.
- Created independent Character and Portrait picker for reusing in event nodes.
- Portrait picker added to `Text Events` and `Character Join` events.
- `Text Events` text editor vertical size grows witch each line added.
- `Text Events` now properly create a new message for each line inside the text editor.
- `Text Events` Line count are now displayed next to the preview text when folded.
- Re-adding the `End Branch` event just in case you removed the end and you want to add it again in the timeline.
- Renamed the `Copy Timeline ID` right click menu option to `Copy Timeline Name` since you now have to use that to set the current timeline from code instead of the ID.
- Fixed several bugs that corrupted saved files
- Thanks to [mindtonix](https://github.com/mindtonix) and [Crystalwarrior](https://github.com/Crystalwarrior) for your first contribution on the choice buttons
- New `Dialogic` class. With this new class you can add dialogs from code easily:
```
var new_dialog = Dialogic.start('Your Timeline Name Here')
add_child(new_dialog)
```
To connect signals you can also do:
```swift
func _ready():
var new_dialog = Dialogic.start('Your Timeline Name Here')
add_child(new_dialog)
new_dialog.connect("dialogic_signal", self, 'signal_from_dialogic')
func signal_from_dialogic(value):
print(value)
```
## v0.8 - Dialog enters the game
- Video: [https://youtu.be/NfTyRrsdB1I](https://youtu.be/NfTyRrsdB1I)
- Moved the theme editor tool icon to the left
- Theme Editor:
- Added a color background as an option
- Reduced the vertical size needed to show all options
- Style your choice buttons! (Color, background, etc...)
- Better default support for unchanged styles
- Timeline Editor:
- Moved the event buttons to a new column
- When creating a `Question` two `Choice` events and a `End Branch` event will be added automatically
- Added a warning for `Choice` events on the root level of indentation
- Disabled unfinished events
- The Change Timeline event tells you your current timeline (this is for going back to the start)
- New `Close Dialog` event. This event closes the dialog whenever it is called.
- When renaming a dialog the popup's text field is already selected and focused.
- In game dialog:
- You can now select the current timeline from the inspector without manually copying the timeline id.
- Change timeline event is now working
- Audio event can play sounds
- Character join (left, center and right) working
- Focus in and out of portraits when speaking
- Character leave events working
- Basic question/answers support
- Better scene resizing and position
- Button styles
## v0.7 - Looking good
- Video: [https://youtu.be/wREIVj55eBM](https://youtu.be/wREIVj55eBM)
- New plugin tab icon
- Removed legacy files
- From the theme tab you can now:
- Pick the default text color
- Set the shadows and shadow offset
- Select your own fonts (.tres)
- Set background and next indicator images
- Choose an action to trigger the "next" event
- Preview changes in a dialog
- Change text speed
- Set text margins
- Characters tab
- Added context menu
- Moved the Remove Character button to a context menu
- You can open the working directory
- Timeline tab
- Added context menu
- You can remove timelines now
- Right click no longer renames timelines, to do so you have to use the new menu
- You can open the working directory
- You can copy the timeline ID
## v0.6 - Character portraits
- Video: [https://youtu.be/okWYt_yGKNI](https://youtu.be/okWYt_yGKNI)
- Splitting the main script into smaller pieces
- Characters
- Characters welcome screen when there are 0
- Different display name
- Autosave enabled on characters
- Character portraits
- Added Default Speaker setting
- Events:
- Text block now has a portrait dropdown
## v0.5 - Indentation Magic
- Video: [https://youtu.be/mrTyWy2TJOM](https://youtu.be/mrTyWy2TJOM)
- Added new events:
- Choice
- End branch
- Change Timeline
- You can now drag and drop events in a timeline
- Made new icons for the editor tabs
- Added some tooltips
- Restructured the events node structure to add indentation
- Changed event default colors
## v0.4 - Dialogic
- Video: [https://youtu.be/Hf_gywa6vZE](https://youtu.be/Hf_gywa6vZE)
- Changed how the main editor works, instead of being a graphedit it is now an event timeline.
- Renamed the plugin to Dialogic. Thanks to Òscar for always knowing how to name things.
- Moved all data to .json files
- Broke the addon for working. Nice :)
## v0.3 - Using Resources
- Video: [https://youtu.be/PzzOE4LbGAo](https://youtu.be/PzzOE4LbGAo)
- Removed requirement for `global.gd` and `characters.gd` autoload scripts.
- Added `DialogResource` and `DialogCharacterResource` resources to create a cleaner way of specifying dialog content
- Added icon to the existing dialog node.
## v0.2 - Adding Characters:
- Changed text speed to fixed per character instead of total time span
- New character support
- Added portrait to characters
- Created the `fade-in` effect
- Curly brackets introduced for character names.
## v0.1 - Release
- You can watch the presentation video here [https://youtu.be/TXmf4FP8OCA](https://youtu.be/TXmf4FP8OCA)

33
addons/dialogic/Documentation/Content/Events/000.md

@ -0,0 +1,33 @@ @@ -0,0 +1,33 @@
# Text Event
![image](./Images/text_event_1.png)
The text event is one of the most important ones since this will be containing most of your text.
## The header
![image](./Images/text_event_2.png)
You have up to tree different types of options here:
- **Character** - This is who will be saying the text written inside the text editor.
- **Portrait** - If you picked a **Character** the different portraits will show up here. If that **Character** doesn't have any special portraits the default one will be used. If you pick the `(Don't change)` option, it will continue using the previous text event portrait set. If you pick the `[Definition]` option, a new picker will show up.
- **Definition** - You can select any of your **Definitions** and it will try to match that string with available portraits. This can be used to dynamically show different portraits depending of previous player input.
## The Text Editor
Inside the text editor you have special features that might not be obvious to everyone:
- Each line will create a new text message. This will help you to make longer monologues without having to add a new **Text Event** for each message. If you want to disable this, you can do so in the Dialogic settings pannel: `Settings -> Dialog -> New lines will create extra messages`.
- When writing a **Character** name, Dialogic will automatically color the text of that **Character**
- `[br]` This will add a line break in the position of the tag
- `[nw]` The *no wait* command will tell Dialogic to automatically skip the current text after it finished displaying without any user input. The default time for skipping to the next text is 2 seconds, but you can change how many seconds by setting a number to it. For instance, if you want it to wait 5 seconds you can add `[nw=5]` and 5 seconds after the dialogue finished it will go to the next event.
- `[speed=X]` You can use the *speed* tag to change change the speed of an individual text event speed. You can set for instance `[speed=10]` to show the text at a very slow pace. If you want the text to be instant for one message you can do `[speed=0]` and it will show up automatically. After the event containing the *speed* tag is over, it will go back to whatever value you have set on the current theme. Remember that the number is the interval between each letter, so the bigger the number the slower the text will be.
- `[definition]` If you have a **Definition** and you want to display its value on inside your text you can use the `[` and `]` characters and the name of your **Definition** to print it. Let's say we have a **Definition** called `Money` with the value of `5`. we can write: `You have [Money] left` and Dialogic will replace the `[Money]` tag with the value `You have 5 left`.
- Beside these dialogic specific options, there are the default `BBCode` options that every `RichTextLabel` has like [b]bold[/b] or [i]italic[/i] text, [color=red]colored text[/color] and [wave]using effects[/wave]! More about that [here](https://docs.godotengine.org/en/stable/tutorials/gui/bbcode_in_richtextlabel.html).
## Voice Line Support
You can find a tutorial on how to use the voice line feature in the tutorials folder!

18
addons/dialogic/Documentation/Content/Events/001.md

@ -0,0 +1,18 @@ @@ -0,0 +1,18 @@
# Character Join
![Event](./Images/Event_Character_Join.PNG)
The character join event is used to make character portraits appear during a dialogue.
Select the **character** to show on the screen.
If that **character** has more than 1 **portrait** you can select one. You can change that character portrait using the portrait selector on the [Text event](./000) or by making the character join in the same position and selecting a new starting **portrait**.
TODO: Positions image
You can select one of the five positions. If you want to change the current position of a character you would need to add a new join event and pick a new position.
The current 5 positions are the only ones available at the moment, but more customization will come in future versions.
TODO: Mirror icon image and same portrait both regular and mirrored
By clicking on this icon, you can mirror the current character's portrait.

6
addons/dialogic/Documentation/Content/Events/002.md

@ -0,0 +1,6 @@ @@ -0,0 +1,6 @@
# Character Leave
![image](./Images/Event_Character_Leave.PNG)
This events allows to make characters that previously joined with the [Character Join Event](./001.md) leave the screen.
You can choose to make all joined characters leave or choose one. If that character isn't on screen, the event will be ignored.

14
addons/dialogic/Documentation/Content/Events/010.md

@ -0,0 +1,14 @@ @@ -0,0 +1,14 @@
# Question Event
![image](./Images/Event_Question.PNG)
The `Question Event` allows your story to branch and give the player options.
When you adding a `Question Event`, two [Choice Events](./011.md) and an [End Event](./013.md) will be added automatically.
## The text editor
The block itself works very similar to a [Text Event](./000.md) and has all the options of that event.
## The choices
To add choices to your question you can add [Choice Events](./011.md).
## Ending a question
After all your choices, there also needs to be an [End Event](./013.md).

11
addons/dialogic/Documentation/Content/Events/011.md

@ -0,0 +1,11 @@ @@ -0,0 +1,11 @@
# Choice Event
![image](./Images/Event_Choice.PNG)
The `Choice Event` marks the start of a choice branch in a [question](./010.md).
## How it works
Choice Events only work if they are placed inside a "question" ([Question Event](./010.md)). Then you can place all kinds of events below that choice. These events (which will be indented) will be executed when the choice is selected in game.
## Adding a condition
By checking the `Has condition` check box and setting that condition, the player will only see that choice if the result is true.
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.

22
addons/dialogic/Documentation/Content/Events/012.md

@ -0,0 +1,22 @@ @@ -0,0 +1,22 @@
# Condition Event
![image](./Images/Event_Condition.PNG)
The `Condition Event` allows you to have certain parts of your timelines only played under certain conditions.
## What's a condition?
In programming and games a condition is mostly described by variables (in dialogic called `definitions`).
This means that you can check for a definition to have a certain `value` and only then play the following events.
## The settings
You can set your condition by first selecting the `value definition` that should be compared, then selecting the `type of comparison` and lastly the `value` that should be compared to.
Only the comparison types `Equal to` and `Differnt from` work with strings, the rest is supposed to work with integers (whole numbers).
You can also enter the name of a `value definition` in the input field. This it will compare to the current value of that `value definition`.
## Adding events
You can then add new events below the Condition Event and they will be indented and only be played when the condition is true.
## Ending a condition
Every condition needs to have an [End Event](./013.md). After that event, all following events will ignore the condition again.
When creating a Condition Event a End Event will be added too.
*Note: You can of course have conditions inside conditions. Just make sure to have the same amount of End Events*

3
addons/dialogic/Documentation/Content/Events/013.md

@ -0,0 +1,3 @@ @@ -0,0 +1,3 @@
# End Event
This event does by itself. Its only function is to mark the end of a [question](./010.md) or [condition](./012.md).

11
addons/dialogic/Documentation/Content/Events/014.md

@ -0,0 +1,11 @@ @@ -0,0 +1,11 @@
# Set Value
![image](./Images/Event_Set_Value.PNG)
The `Set Value` event can be used to change the value of `value definitions`.
## The options
You can select the `value definition` to be changed, then the `type of change`. Lastly the new `value` to set.
+ `[to be]` will set the definition to EXACTLY the given value.
+ the others will use the existing value and change it in the given way. These only work with numbers.
By toggling the little cube icon, you can use a random number instead of the fixed input field.
![image](./Images/Event_Set_Value_random.PNG)

21
addons/dialogic/Documentation/Content/Events/030.md

@ -0,0 +1,21 @@ @@ -0,0 +1,21 @@
# Audio Events
*The Audio Event and Background Music Event are very similar, so they are explained together*
![image](./Images/audio_event.png)
The `Audio Event` can be used to play sounds. In contrast, the `Background Music Event` is supposed to play long pieces. There can always be only one background music, but it can fade from one to the next.
## Options
First of all you can select the audio file that should be played. You can clear this selection with the garbage icon.
Then you can set a `AudioBus` to use and a preferred `volume`. More about AudioBus' [here](https://docs.godotengine.org/en/stable/tutorials/audio/audio_buses.html).
The `Background Music Event` additionally has a option for the fade length.
## Looping Audio?
Actually the `Audio Event` doesn't loop. In godot looping of audio is mostly due to how you imported it (default for .ogg files).
To solve this:
1. Select your audio file.
2. Go to the import tab (it's next to the scene tree tab by default)
3. Uncheck the loop checkbox.
4. Hit re-import.

22
addons/dialogic/Documentation/Content/Events/040.md

@ -0,0 +1,22 @@ @@ -0,0 +1,22 @@
# Emit Signal
![image](./Images/Event_Emit_Signal.PNG)
The `Emit Signal` event will emit the signal `dialogic_signal` of the **current dialog node** and pass the given string as an **argument**.
The event does NOT create a new signal!
If you instance your dialog via script, use a code similar to this:
`func start_dialog():
var dialog = Dialogic.start("my_timeline")
dialog.connect("dialogic_signal", self, "dialog_listener")
add_node(dialog)
func dialog_listener(string):
match string:
"quest_point_two":
# do something
pass
`
If you instanced the scene using the editor you can connect the signal like you would always do in Godot from the `NODE TAB > Signals`.
*If you don't know about signals you should definitely learn about them. For example [here](https://docs.godotengine.org/en/stable/getting_started/step_by_step/signals.html).*

5
addons/dialogic/Documentation/Content/Events/041.md

@ -0,0 +1,5 @@ @@ -0,0 +1,5 @@
# Change Scene
The `Change Scene` event will stop the current scene and load the selected one. This means the dialog will be stopped too.
Be careful when using this while you your tree is set to paused! Consider adding an [Emit Signal event](./040.md) before and resuming the tree with `get_tree().paused = false`.

31
addons/dialogic/Documentation/Content/Events/042.md

@ -0,0 +1,31 @@ @@ -0,0 +1,31 @@
# Call Node
![image](./Images/Call_Node.PNG)
This event allows to call a function in a node or an autoload and pass an array to that function.
Many people struggle with the first setting the node. You will have to either put in a full path (starting from root) or a relative path.
#### Using a relative path
*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).*
The path needs to be relative to your DialogNode. This means you need to consider where it will be added to.
Let's for now imagine an example scene tree like this:
`- World
-- Temple
-- NPC`
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:
`- World
-- Temple
-- NPC
--- CanvasLayer
---- DialogNode`
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:
`'../../../Temple'`
*Of course if you have canvas_layer set to false in Dialogic.start() you need on '..' less.*
#### Using the name of an autoload
If you have instead an autoload it's wonderfully easy. You can just use the name of the autoload!

122
addons/dialogic/Documentation/Content/Events/Custom Events/CreateCustomEvents.md

@ -0,0 +1,122 @@ @@ -0,0 +1,122 @@
# Creating custom events
![HeaderImage](./Images/CustomEventsShowOff.PNG)
# Introduction
### What are Dialogic events?
Events are visual representation of data. Whenever you create one event in your timeline, you are modifying a dictionary with a lot of keys and values. Each pair will contain all the information needed to perform an action during the game.
### What makes a custom event?
A custom event is made up of a two main parts: the **Event Block** and the **Event Handling Script**.
The **Event Block** is the scene that will be shown in the timeline editor. It needs to inherit Dialogic's `EventTemplate.tscn` scene.
In most cases you will additionally need scenes that have all the setting controls in them. These will be the "content" of your event block. This kind of scenes will have to extend the `EventPart.gd` script.
Here is a very simple example of an `EventBlock`:
![EventBlock](./Images/EventBlock.png)
It contains two **EventParts**, a **header** and a **body**.
The **Event Handling Script** is what contains the logic and what will happen when your event happens in the game. This script will need the `handle_event()` function that will be called if the event is reached.
All of the files that are used for creating a custom Event Block and Handling Script should be in this directory: `res://dialogic/custom-events`. That way Dialogic can recognize it and show it in your timeline editor.
# Making your first custom event in 6 steps
Let's now create a simple event that will print some text to the Output panel in Godot.
## Create the event
Go to the `settings page` and in the `custom events section` hit the `New` button.
Fill in a name for your event, a folder name and an id. For the id's I recommend using your name or a string unique to you followed by a number.
**The id has to be different for every event!!!**
This is why I recommend the unique string, because it will enable you to share the event with others without breaking their games.
![Creating](./Images/CreationProcess.PNG)
When you are ready, hit `Create`. You will see the folder appear in the `FileSystem` under `res://dialogic/custom-events/`.
If you go to the `timeline editor` now, you should already be able to see your event in the event list.
### What happened
This little menu already created a number of things for you:
- The `EventBlock` (EventBlock.tscn)
- An example `EventPart` (EventPart_Example.gd/.tscn)
- The `event handling script` (event_+EVENTID+.gd)
- A `stylebox` for your event (Stylebox.tres)
## What next
The automatic process already setup a lot. But it didn't know the purpose of our event.
So we will have to add that.
### | Adding the data
First we want to open the `EventBlock.tscn` scene. (Do not rename this scene!)
Select its root node and look at it's exported variables in the inspector.
We will need to add all the data, that our event can have to the `event_data`.
You can see, that it alread contains your event id. This needs to be there, do not delete it!
I want to be able to set a text that will be printed, when my event is activated, so I'll add an information slot for that:
![EventData](./Images/EventBlock_EventData.PNG)
### | Icon and Stylebox
You can also change your events icon in the inspector. Just drag an image into the `Event Icon`.
Below that, you can open the Stylebox and change its background color, to give your event a unique look.
### | The Event Blocks Content (EventParts)
Right now your event block will be empty so let's change that (if you want to).
The content of an EventBlock is separated as `EventParts`. This allows for some reuse.
There are two places EventParts can be in an EventBlock: The Header (always visible) and the Body (can be hidden).
*An EventBlock does not have to have a body nor a header EventPart. For example the End Branch event has none.*
There is already a simple example `EventPart` (Script and Scene) included. You can change it as much as you want.
#### | Loading the data
In `load_data()` you will need to set the values of your control nodes. This function is called when the event is added to the timeline editor.
#### | Saving changes to the data
When the values get changed (listen to it via signals) set the according value in the `event_data` dictionary and call `data_changed()`.
This is pretty much all you need to know.
*If you want to find more examples you can go to `res://addons/dialogic/Editor/Events/Parts/` and look at the EventParts that shape Dialogic's default blocks.*
### | Using the EventPart
Once you finished everything in your EventPart(s) you need to go into the `EventBlock` scene and set the `header`/`body` variable in the inspector to the new scene(s).
### | The event handler script (event_yourname_000.gd)
Once you have your `EventBlock` finished, you need to add the event handling logic.
#### | The handle_event() function
If you open the script you will see, that there is only one function by default, the `handle_event()` function.
It comes with two usefull pieces of information: the `event_data` and a reference to the `dialog_node`.
For me I'll just add
`print(event_data['print_text']`
there. But of course you can do a lot more.
Some more stuff is already explained in the script:
##### Continue
Use `dialog_node.load_next_event()` to continue with the next event.
##### Waiting
If you don't want the player to interrupt your event, set `dialog_node.waiting` to `true` while your event is handled.
Don't forget to set it back to `false`.
## And done!
Great, you've created your first custom event for dialogic.
*Make sure to check Emilio's Discord server just in case someone has already created the custom event that you need. They are super easy to [import](./ImportCustomEvents.md)!*

BIN
addons/dialogic/Documentation/Content/Events/Custom Events/Images/CreationProcess.PNG

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

35
addons/dialogic/Documentation/Content/Events/Custom Events/Images/CreationProcess.PNG.import

@ -0,0 +1,35 @@ @@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/CreationProcess.PNG-355f2912bdbee7a7f8a61573c5cd89c3.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/dialogic/Documentation/Content/Events/Custom Events/Images/CreationProcess.PNG"
dest_files=[ "res://.import/CreationProcess.PNG-355f2912bdbee7a7f8a61573c5cd89c3.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

BIN
addons/dialogic/Documentation/Content/Events/Custom Events/Images/CustomEventsShowOff.PNG

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

35
addons/dialogic/Documentation/Content/Events/Custom Events/Images/CustomEventsShowOff.PNG.import

@ -0,0 +1,35 @@ @@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/CustomEventsShowOff.PNG-8259387892650b073ac490070dac7fc2.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/dialogic/Documentation/Content/Events/Custom Events/Images/CustomEventsShowOff.PNG"
dest_files=[ "res://.import/CustomEventsShowOff.PNG-8259387892650b073ac490070dac7fc2.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

BIN
addons/dialogic/Documentation/Content/Events/Custom Events/Images/EventBlock.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

35
addons/dialogic/Documentation/Content/Events/Custom Events/Images/EventBlock.png.import

@ -0,0 +1,35 @@ @@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/EventBlock.png-2b24655050114017e0bf923099aa0714.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/dialogic/Documentation/Content/Events/Custom Events/Images/EventBlock.png"
dest_files=[ "res://.import/EventBlock.png-2b24655050114017e0bf923099aa0714.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

BIN
addons/dialogic/Documentation/Content/Events/Custom Events/Images/EventBlock_EventData.PNG

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

35
addons/dialogic/Documentation/Content/Events/Custom Events/Images/EventBlock_EventData.PNG.import

@ -0,0 +1,35 @@ @@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/EventBlock_EventData.PNG-61942483b373332db327bcf3e23e37d4.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/dialogic/Documentation/Content/Events/Custom Events/Images/EventBlock_EventData.PNG"
dest_files=[ "res://.import/EventBlock_EventData.PNG-61942483b373332db327bcf3e23e37d4.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

9
addons/dialogic/Documentation/Content/Events/Custom Events/ImportCustomEvents.md

@ -0,0 +1,9 @@ @@ -0,0 +1,9 @@
# Importing custom events
It's very easy to share `custom events` because they are pretty much self-contained.
You will just need to get the folder from someone. If you have it, move it into `res://dialogic/custom-events/`.
Then enable custom events in Dialogic's settings menu (if you haven't already).
You should now find the custom event in the bottom of the event button panel on the right in the timeline editor.
*Vòila! Hope it works ;)*

BIN
addons/dialogic/Documentation/Content/Events/Images/Call_Node.PNG

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

35
addons/dialogic/Documentation/Content/Events/Images/Call_Node.PNG.import

@ -0,0 +1,35 @@ @@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Call_Node.PNG-f719aeb3b34d67d458b47384bffd26dd.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/dialogic/Documentation/Content/Events/Images/Call_Node.PNG"
dest_files=[ "res://.import/Call_Node.PNG-f719aeb3b34d67d458b47384bffd26dd.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

BIN
addons/dialogic/Documentation/Content/Events/Images/Event_Change_Timeline.PNG

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

35
addons/dialogic/Documentation/Content/Events/Images/Event_Change_Timeline.PNG.import

@ -0,0 +1,35 @@ @@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Event_Change_Timeline.PNG-3613b62ffaabe4ec350f5c6f97611565.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/dialogic/Documentation/Content/Events/Images/Event_Change_Timeline.PNG"
dest_files=[ "res://.import/Event_Change_Timeline.PNG-3613b62ffaabe4ec350f5c6f97611565.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

BIN
addons/dialogic/Documentation/Content/Events/Images/Event_Character_Join.PNG

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

35
addons/dialogic/Documentation/Content/Events/Images/Event_Character_Join.PNG.import

@ -0,0 +1,35 @@ @@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Event_Character_Join.PNG-c00e395692cca58b463fed8c9531c914.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/dialogic/Documentation/Content/Events/Images/Event_Character_Join.PNG"
dest_files=[ "res://.import/Event_Character_Join.PNG-c00e395692cca58b463fed8c9531c914.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

BIN
addons/dialogic/Documentation/Content/Events/Images/Event_Character_Leave.PNG

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

35
addons/dialogic/Documentation/Content/Events/Images/Event_Character_Leave.PNG.import

@ -0,0 +1,35 @@ @@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Event_Character_Leave.PNG-6bd42ebbbe4c9f56973b0c4c0d706b93.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/dialogic/Documentation/Content/Events/Images/Event_Character_Leave.PNG"
dest_files=[ "res://.import/Event_Character_Leave.PNG-6bd42ebbbe4c9f56973b0c4c0d706b93.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

BIN
addons/dialogic/Documentation/Content/Events/Images/Event_Choice.PNG

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

35
addons/dialogic/Documentation/Content/Events/Images/Event_Choice.PNG.import

@ -0,0 +1,35 @@ @@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Event_Choice.PNG-298ca290c2de63f7b8f94abfe35b45f0.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/dialogic/Documentation/Content/Events/Images/Event_Choice.PNG"
dest_files=[ "res://.import/Event_Choice.PNG-298ca290c2de63f7b8f94abfe35b45f0.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

BIN
addons/dialogic/Documentation/Content/Events/Images/Event_Choice_Condition.PNG

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

35
addons/dialogic/Documentation/Content/Events/Images/Event_Choice_Condition.PNG.import

@ -0,0 +1,35 @@ @@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Event_Choice_Condition.PNG-47064c87073a3b92a27167e9940f8c31.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/dialogic/Documentation/Content/Events/Images/Event_Choice_Condition.PNG"
dest_files=[ "res://.import/Event_Choice_Condition.PNG-47064c87073a3b92a27167e9940f8c31.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

BIN
addons/dialogic/Documentation/Content/Events/Images/Event_Close_Dialog.PNG

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

35
addons/dialogic/Documentation/Content/Events/Images/Event_Close_Dialog.PNG.import

@ -0,0 +1,35 @@ @@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Event_Close_Dialog.PNG-3654b068ff053b245b5a111cf97e619f.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/dialogic/Documentation/Content/Events/Images/Event_Close_Dialog.PNG"
dest_files=[ "res://.import/Event_Close_Dialog.PNG-3654b068ff053b245b5a111cf97e619f.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

BIN
addons/dialogic/Documentation/Content/Events/Images/Event_Condition.PNG

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

35
addons/dialogic/Documentation/Content/Events/Images/Event_Condition.PNG.import

@ -0,0 +1,35 @@ @@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Event_Condition.PNG-7f4a2dbe15404fc55c0fdda27cd6fe3d.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/dialogic/Documentation/Content/Events/Images/Event_Condition.PNG"
dest_files=[ "res://.import/Event_Condition.PNG-7f4a2dbe15404fc55c0fdda27cd6fe3d.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

BIN
addons/dialogic/Documentation/Content/Events/Images/Event_Condition_in_use.PNG

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

35
addons/dialogic/Documentation/Content/Events/Images/Event_Condition_in_use.PNG.import

@ -0,0 +1,35 @@ @@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Event_Condition_in_use.PNG-86b74676182e6c775eae710456cbe8d4.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/dialogic/Documentation/Content/Events/Images/Event_Condition_in_use.PNG"
dest_files=[ "res://.import/Event_Condition_in_use.PNG-86b74676182e6c775eae710456cbe8d4.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

BIN
addons/dialogic/Documentation/Content/Events/Images/Event_Emit_Signal.PNG

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

35
addons/dialogic/Documentation/Content/Events/Images/Event_Emit_Signal.PNG.import

@ -0,0 +1,35 @@ @@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Event_Emit_Signal.PNG-29a3fcdd35b5592c3ff1adca2227eaec.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/dialogic/Documentation/Content/Events/Images/Event_Emit_Signal.PNG"
dest_files=[ "res://.import/Event_Emit_Signal.PNG-29a3fcdd35b5592c3ff1adca2227eaec.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

BIN
addons/dialogic/Documentation/Content/Events/Images/Event_End_Branch.PNG

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

35
addons/dialogic/Documentation/Content/Events/Images/Event_End_Branch.PNG.import

@ -0,0 +1,35 @@ @@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Event_End_Branch.PNG-081876dfa5df74f8bd1922b91957d0f7.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/dialogic/Documentation/Content/Events/Images/Event_End_Branch.PNG"
dest_files=[ "res://.import/Event_End_Branch.PNG-081876dfa5df74f8bd1922b91957d0f7.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

BIN
addons/dialogic/Documentation/Content/Events/Images/Event_Question.PNG

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

35
addons/dialogic/Documentation/Content/Events/Images/Event_Question.PNG.import

@ -0,0 +1,35 @@ @@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Event_Question.PNG-03cb0b2c1bd44f6b99ae19336e724884.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/dialogic/Documentation/Content/Events/Images/Event_Question.PNG"
dest_files=[ "res://.import/Event_Question.PNG-03cb0b2c1bd44f6b99ae19336e724884.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

BIN
addons/dialogic/Documentation/Content/Events/Images/Event_Question_in_use.PNG

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

35
addons/dialogic/Documentation/Content/Events/Images/Event_Question_in_use.PNG.import

@ -0,0 +1,35 @@ @@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Event_Question_in_use.PNG-373002c26425df47606663984f025574.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/dialogic/Documentation/Content/Events/Images/Event_Question_in_use.PNG"
dest_files=[ "res://.import/Event_Question_in_use.PNG-373002c26425df47606663984f025574.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

BIN
addons/dialogic/Documentation/Content/Events/Images/Event_Set_Theme.PNG

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

35
addons/dialogic/Documentation/Content/Events/Images/Event_Set_Theme.PNG.import

@ -0,0 +1,35 @@ @@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Event_Set_Theme.PNG-73f2c9d713bc2975932401717f981883.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/dialogic/Documentation/Content/Events/Images/Event_Set_Theme.PNG"
dest_files=[ "res://.import/Event_Set_Theme.PNG-73f2c9d713bc2975932401717f981883.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

BIN
addons/dialogic/Documentation/Content/Events/Images/Event_Set_Value.PNG

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

35
addons/dialogic/Documentation/Content/Events/Images/Event_Set_Value.PNG.import

@ -0,0 +1,35 @@ @@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Event_Set_Value.PNG-b2672955798f7f97c72e2c4f3f23f42d.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/dialogic/Documentation/Content/Events/Images/Event_Set_Value.PNG"
dest_files=[ "res://.import/Event_Set_Value.PNG-b2672955798f7f97c72e2c4f3f23f42d.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

BIN
addons/dialogic/Documentation/Content/Events/Images/Event_Set_Value_random.PNG

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

35
addons/dialogic/Documentation/Content/Events/Images/Event_Set_Value_random.PNG.import

@ -0,0 +1,35 @@ @@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Event_Set_Value_random.PNG-46d4b8d8ff67af47afb6137a22fa0790.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/dialogic/Documentation/Content/Events/Images/Event_Set_Value_random.PNG"
dest_files=[ "res://.import/Event_Set_Value_random.PNG-46d4b8d8ff67af47afb6137a22fa0790.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

BIN
addons/dialogic/Documentation/Content/Events/Images/Event_Wait_Seconds.PNG

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

35
addons/dialogic/Documentation/Content/Events/Images/Event_Wait_Seconds.PNG.import

@ -0,0 +1,35 @@ @@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Event_Wait_Seconds.PNG-8023c213d12ebc598f48204427f06be2.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/dialogic/Documentation/Content/Events/Images/Event_Wait_Seconds.PNG"
dest_files=[ "res://.import/Event_Wait_Seconds.PNG-8023c213d12ebc598f48204427f06be2.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

BIN
addons/dialogic/Documentation/Content/Events/Images/audio_event.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

35
addons/dialogic/Documentation/Content/Events/Images/audio_event.png.import

@ -0,0 +1,35 @@ @@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/audio_event.png-abe3ddd1bd4a041a15bf5b182b4dc2c6.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/dialogic/Documentation/Content/Events/Images/audio_event.png"
dest_files=[ "res://.import/audio_event.png-abe3ddd1bd4a041a15bf5b182b4dc2c6.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

BIN
addons/dialogic/Documentation/Content/Events/Images/text_event_1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

35
addons/dialogic/Documentation/Content/Events/Images/text_event_1.png.import

@ -0,0 +1,35 @@ @@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/text_event_1.png-c1ef7be33362776ee815070c9be95e63.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/dialogic/Documentation/Content/Events/Images/text_event_1.png"
dest_files=[ "res://.import/text_event_1.png-c1ef7be33362776ee815070c9be95e63.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

BIN
addons/dialogic/Documentation/Content/Events/Images/text_event_2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

35
addons/dialogic/Documentation/Content/Events/Images/text_event_2.png.import

@ -0,0 +1,35 @@ @@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/text_event_2.png-d8c291379c3bc509219959a9270f0754.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/dialogic/Documentation/Content/Events/Images/text_event_2.png"
dest_files=[ "res://.import/text_event_2.png-d8c291379c3bc509219959a9270f0754.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

11
addons/dialogic/Documentation/Content/FAQ/CSharp.md

@ -0,0 +1,11 @@ @@ -0,0 +1,11 @@
# Can I use C# with Dialogic?
It is experimental! So if you want to try it out and you find issues, let us know. Usage:
`public override void _Ready()
{
var dialog = DialogicSharp.Start("Greeting", false);
AddChild(dialog);
}
`
This is the PR that added this feature: [https://github.com/coppolaemilio/dialogic/pull/217](https://github.com/coppolaemilio/dialogic/pull/217)

5
addons/dialogic/Documentation/Content/FAQ/Portraits.md

@ -0,0 +1,5 @@ @@ -0,0 +1,5 @@
# Portraits not showing in game?
Before the characters show up on screen, you need to make them join your current scene using the [Character Join](../Events/001.md).
If you used the join event and you still don't see them, you should try modifying the offset and scale values in your character's portrait.

17
addons/dialogic/Documentation/Content/FAQ/Signals.md

@ -0,0 +1,17 @@ @@ -0,0 +1,17 @@
# Using signals?
## Emit Signal event
You can learn more about how to use this event in it's own documentation page (in the Events folder).
## Other signals
You can also listen to Dialogic using the four other signals:
- **event_end** and **event_start** are emitted for each event in your timeline
- **timeline_end** and **timeline_start** are emitted when a timeline starts and ends.
You can connect signals using the editor or via code:
`func start_dialog():
var dialog = Dialogic.start("my_timeline")
dialog.connect("timeline_end", self, "dialog_ended")
add_node(dialog)
`

3
addons/dialogic/Documentation/Content/FAQ/can-i-use-dialogic-in-my-project.md

@ -0,0 +1,3 @@ @@ -0,0 +1,3 @@
# Can I use Dialogic in one of my projects?
Yes, you can 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). Please remember to credit!

26
addons/dialogic/Documentation/Content/FAQ/create-timeline-using-gdscript.md

@ -0,0 +1,26 @@ @@ -0,0 +1,26 @@
# Can I create a timeline using GDScript?
Yes! it is a bit harder since you will have to create each event yourself, and to do that they have to be **valid**. You can check already created timelines with a text editor and see how an event should look like. A better tutorial and improvements will come soon.
A simple example:
```gdscript
func _ready():
var gdscript_dialog = Dialogic.start('')
gdscript_dialog.set_dialog_script( {
"events":[
{ 'event_id':'dialogic_001', "text": "This dialog was created using GDScript!"}
]
})
add_child(gdscript_dialog)
```

12
addons/dialogic/Documentation/Content/FAQ/how-to-make-dialog-show-up-in-game.md

@ -0,0 +1,12 @@ @@ -0,0 +1,12 @@
# How can I make a dialog show up in game?
There are two ways of doing this; using gdscript or the scene editor.
Using the `Dialogic` class you can add dialogs from code easily:
```
var new_dialog = Dialogic.start('Your Timeline Name Here')
add_child(new_dialog)
```
And using the editor, you can drag and drop the scene located at `/addons/dialogic/Dialog.tscn` and set the current timeline via the inspector.

3
addons/dialogic/Documentation/Content/FAQ/plugin-shipped-godot.md

@ -0,0 +1,3 @@ @@ -0,0 +1,3 @@
# The plugin is cool! Why is it not shipped with Godot?
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 :)

3
addons/dialogic/Documentation/Content/FAQ/resolution-small-dialog-big.md

@ -0,0 +1,3 @@ @@ -0,0 +1,3 @@
# My resolution is too small and the dialog is too big. Help!
If you are setting the resolution of your game to a very small value, you will have to create a theme in Dialogic and pick a smaller font and make the box size of the Dialog Box smaller as well.

5
addons/dialogic/Documentation/Content/FAQ/why-not-graph-nodes.md

@ -0,0 +1,5 @@ @@ -0,0 +1,5 @@
# Why are you not using graph nodes?
Because of how the graph nodes are, the screen gets full of UI elements and it gets harder to follow.
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).

BIN
addons/dialogic/Documentation/Content/Images/dialogic-hero-1.3.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

35
addons/dialogic/Documentation/Content/Images/dialogic-hero-1.3.png.import

@ -0,0 +1,35 @@ @@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/dialogic-hero-1.3.png-7a281002dc7b4ec8e79698bd2ada9b48.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/dialogic/Documentation/Content/Images/dialogic-hero-1.3.png"
dest_files=[ "res://.import/dialogic-hero-1.3.png-7a281002dc7b4ec8e79698bd2ada9b48.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

5
addons/dialogic/Documentation/Content/Reference/000.md

@ -0,0 +1,5 @@ @@ -0,0 +1,5 @@
# Dialog Node
This node is what makes your dialogues appear.
You can either drag it into one of your scenes from `/addons/dialogic/Dialog.tscn`, or create one using the `Dialogic.start()` function.

50
addons/dialogic/Documentation/Content/Reference/001.md

@ -0,0 +1,50 @@ @@ -0,0 +1,50 @@
# Dialog Class
### Methods:
#### start()
`start(timeline: String, reset_saves: bool=true, dialog_scene_path: String="res://addons/dialogic/Nodes/DialogNode.tscn", debug_mode: bool=false, use_canvas_instead=true)`
Starts the dialog for the given timeline and returns a Dialog node.
You must then add it manually to the scene to display the dialog.
Example:
var new_dialog = Dialogic.start('Your Timeline Name Here')
add_child(new_dialog)
This is exactly the same as using the editor:
you can drag and drop the scene located at /addons/dialogic/Dialog.tscn
and set the current timeline via the inspector.
@param timeline The timeline to load. You can provide the timeline name or the filename.
@param reset_saves True to reset dialogic saved data such as definitions.
@param dialog_scene_path If you made a custom Dialog scene or moved it from its default path, you can specify its new path here.
@param debug_mode Debug is disabled by default but can be enabled if needed.
@param use_canvas_instead Create the Dialog inside a canvas layer to make it show up regardless of the camera 2D/3D situation.
@returns A Dialog node to be added into the scene tree.
#### start_from_save()
`start_from_save(timeline: String, initial_timeline: String, dialog_scene_path: String="res://addons/dialogic/Nodes/DialogNode.tscn", debug_mode: bool=false)`
Same as the start method above, but using the last timeline saved.
@param timeline The current timeline to load
@param initial_timeline The timeline to load in case no save is found.
@param dialog_scene_path If you made a custom Dialog scene or moved it from its default path, you can specify its new path here.
@param debug_mode Debug is disabled by default but can be enabled if needed.
@returns A Dialog node to be added into the scene tree.
## Previously on the Dialogic Singleton (RIP - rest in pain)
#### set_current_timeline()
#### get_current_timeline()
#### get_definitions()
#### set_definitions()
#### set_variable()
#### get_variable()
#### set_glossary_from_id()
#### set_variable_from_id()
#### save_defintions()

42
addons/dialogic/Documentation/Content/Reference/Character.md

@ -0,0 +1,42 @@ @@ -0,0 +1,42 @@
# Character Editor
The `Character Editor` is used to setup the characters of your story. Here you can learn more about the editors settings.
## Names
### Name
The first setting is the characters name. This is the name that you will see in all the menus and by default it's the one displayed when the character is speaking.
### Display Name
You can change what name is shown when the character speaks by enabeling and setting the `Display Name`.
### Nicknames
By default all occurrences of the characters name in texts are colored in the characters color.
*This can be disabeled in the settings.*
By using the `Nicknames` feature you can add additional names that will also be colored. Just enable the Nicknames box and then add all Names that should be colored as a `,`-seperated list.
## Color
Here you can set the characters color. This is the color that the characters name will be colored in texts (if not disabled).
You can also use this color to be used in themes for the `Name Label`.
*Can be found as 'Use character color', in the Name Label section*
## Description
This is just for you to take notes. It has no effect on your game.
## Portraits / Expressions
This is probably the most important section. Here you can load in all the images of your character. Give them useful names as it will make it easier to use them!
You can also import a whole folder of images with the **`Import images from folder`** button.
## Preview
On the right you can see a preview of the currently selected portrait.
## IMPORTANT nearly hidden settings
Below the preview there are three easy to miss, but very usefull settings:
### Scale
Changing this allows you to scale the portraits down. Do this is the portraits turn up way to big in your game.
### Offset
Allows to add some basic offset that will be added to your character.
### Mirror portraits
This will mirror all of your portraits. You can then use the mirror option of the `Character Join Event`.

93
addons/dialogic/Documentation/Content/Reference/Theme.md

@ -0,0 +1,93 @@ @@ -0,0 +1,93 @@
# Theme Editor
Themes allow you to set how the dialog looks, sounds and behaves.
At the top of the Theme Editor you have a **preview field**, where you can also set the text to be previewed, the speaker of the preview and force a preview refresh.
The settings are sorted into different sections. Most of the settings are self-explanatory but some are explained a bit further.
## Dialog Text
Here you can set the look and behaviour of the text inside the dialog box.
##### Behaviour>Speed
Using this setting you can change the speed at which the text is shown, where bigger values will result in a slower speed.
Setting this to 0 will result in the text being shown instantly.
##### Behaviour>Single Portrait Mode
If you enable this mode, there will always only be one portrait visible, the one of the character currently speaking.
## Dialog Box
### Visuals
For the background of the box you will have to choose between a solid color or a texture. For the texture you can also change it's modulation.
##### Visuals>Full width
If you enable this setting the box will be stretched from left to right.
##### Visuals>Box padding
The padding between the border of the box and the text inside the box.
##### Visuals>Bottom gap
How far the box is from the bottom.
### Next indicator
The next indicator is the little icon that appears once the text is completed.
### Behaviour
##### Behaviour>Action Key
If you do not want to use the same action as the default one (in the settings) for advancing the dialog, you can select a different one for the current theme.
##### Behaviour>Fade in time
This sets how long the theme takes to fade in. Fading only happens on dialog load and is not triggered by the `Set Theme` event.
## Name Label
The `Name label` is the section above the text box that displays the name of the currently speaking character.
##### Text>Use character Color
If you enable this, the name label will always use the color of the currently speaking character. The characters color can be edited in the [Character Editor](./Character.md).
### Box
As for the text box, you can choose between a solid color or a texture.
##### Box>Box Padding
The padding between the texture border and the text.
### Placement
Here you can set the alignment of the `Name label` as well as setting some additional offset.
## Choice Buttons
#####Advanced>Use Custom Buttons
If you enable this, you can select a scene that will be used as the buttons. Make sure the scene has a 'pressed', 'focus_entered' and 'mouse_entered' signal.
##### Advanced>Use Native Buttons
ToDo: Find out if this works in any way.
## Glossary
Here you can define how the box looks, that appears when you hover a glossary entry.
##### Visuals>Word color
This is the color, that glossary entries have in the text.
##### Behaviour>Show
If this is disabled, the glossary info box won't be shown and glossary entries won't be colored.
## Audio
This sections allows you to set audio that plays at different moments. Each of the sections works the same, so the settings will only be explained once. Dialogic uses the [RandomAudioPlayer by TimKrief](https://gitlab.com/timkrief/godot-random-audio-stream-player).
You can decide to select a single audio file or a folder where one file will be picked.
You can set a range for the `volume` (a random one in that range will be picked each time). Likewise you can set a range for the `pitch`. `Allow interrupt` decides whether the sound can be interrupted by a new sound of that type.
##### Typing Sound Effects
This sound will be played for each appearing character.
##### Next Sound Effects>Waiting
This is played once the text is completed.
##### Next Sound Effects>Passing
This is played when the player continues.
##### Choice Sound Effects>Hovered
When a choice button is hovered.
##### Choice Sound Effects>Selecting
When a choice is selected.

31
addons/dialogic/Documentation/Content/Reference/Timeline.md

@ -0,0 +1,31 @@ @@ -0,0 +1,31 @@
# Timeline Editor
The `timeline editor` is one of the central parts of Dialogic: here you can create your story using the Events.
This editor consists of two parts, the main area and the event bar on the side, where you can find all events.
## Building a timeline
You can press one of the event buttons to add the event below the selected one, or you can drag and drop them to where you want.
You move events by clicking and dragging them.
## Shortcuts
Select multiple events by holding CRTL. Range select with SHIFT.
The editor supports the following short-cuts:
`
CRTL+C copy selected events
CRTL+P paste selected events
CRTL+X cut selected events
DEL delete selected events
DOWN/UP select the next/previous event
ALT+UP/DOWN move the selected event up or down (only works with one event)
CRTL+A select all events
CRTL+SHIFT+A deselect all events
CRTL+Z undo the last event action
CRTL+Y or CRTL+SHIFT+Z redo the last undone action
CRTL+T add a new Text event
`

170
addons/dialogic/Documentation/Content/Tutorials/BeginnersGuideStepByStep.md

@ -0,0 +1,170 @@ @@ -0,0 +1,170 @@
# Beginners Guide
Let's begin creating your first dialog with Dialogic!
## 1. Meeting the Dialogic tab
All the things related to your dialogue will be done in the Dialogic tab. You can access it like the 2D and 3D tab on the very top of the editor.
![Dialogic Tab](https://github.com/Jowan-Spooner/dialogic/blob/plugin-docs/addons/dialogic/Documentation/Content/Tutorials/Images/Dialogic_Tab.PNG)
Let's have a look into the `toolbar` at the top.
![Toolbar](https://github.com/Jowan-Spooner/dialogic/blob/plugin-docs/addons/dialogic/Documentation/Content/Tutorials/Images/Toolbar.PNG)
### | The resources
Here you can create Dialogic's five **resources**. You will hear more on each of them later.
**Timelines** represent a list of events. Show characters, make them talk, change the background, ask questions, emit signals, and more!
**Characters** can have name, a special color, and different images for expressions.
**Value Definitions** that can be used as variables to branch your story or be used inside the texts.
**Glossary Entries** that can contain information that is shown in a popup when the player hovers over the word.
**Themes** that specify how your dialogue is looking. There are many settings you can tweak to suit your need.
### | The master tree
All your resources are shown in the big `master tree` on the left. You can select on which you want to work there, create sub folders and move the items by dragging them.
*Let's continue! What is the most important thing for a dialogue? Someone to talk to. So we will create our first character.*
--------------------
## 2. Creating your first character
Click the little character icon in the toolbar to create a new character. You will see the `character editor` now.
### | Name
You can instantly type in the `name`, the character should have. Hit enter to set the name.
![Empty Character Editor](./Images/Empty_Character_Editor.PNG)
### | Color
Go ahead and also set a `color`, by clicking on the color block.
### | A default portrait/expression
Next let's add a default `portrait` for them. You can select a file by clicking the tree dots.
If you do not have a image to use right now, you can use the example dwarf from the `Example Assets folder` inside the Dialogic folder (res://addons/dialogic/Example Assets/portraits).
![grafik](./Images/Character_Editor_With_Portrait.PNG)
This is all for now. You can create as many characters as your story needs.
*Now let's create our first dialogue!*
--------------------
## 3. Creating your first timeline
Timelines specify what events happen in which order. Create a new timeline with the icon in the toolbar.
You can now see the `timeline editor`.
### | Name
Go ahead and give it a `name`. You can do so right after creating or double-click the item in the tree.
### | Adding your first event
You can find all possible `events` on the right.
![Empty Timeline](./Images/Empty_Timeline_Editor.PNG)
Go ahead and add a `Text` event (the very first, grey button), by clicking it or dragging it into the timeline area.
The `Text` event is what will make text appear on the dialog box.
You can select a character that will say the text. Go ahead and let your character say something!
### | More events!
Now we also want our character to be visible in the scene. For that, we use the `Character Join` event (the second, green event).
Select what character should appear and at which of the 5 available positions.
Make sure the new event is above the Text event. If it's not, you can drag it up (alternatively you can select the event and use `ALT+UP`/`ALT+DOWN`).
### | Create your dialog
Now go ahead and try out the other events. If you want to learn more about them, click the little help button on them!
FYI: new events get added below the currently selected one.
If you want to delete an event use `DEL` key.
After some time your dialogue might look something like this:
![TimelineExample](./Images/TimelineEditor_Example.PNG)
*Now your dialog is ready to be played! But how? Let's find out!*
--------------------
## 4. Adding your first DialogNode to a scene
There are two ways of doing this, using gdscript or the scene editor.
### | Instancing the scene using gdscript
Using the `Dialogic` class you can add dialogs from code easily:
`
var new_dialog = Dialogic.start('Your Timeline Name Here')
add_child(new_dialog)
`
### | Instancing the scene using the editor
Using the editor, you can drag and drop the scene located at `/addons/dialogic/Dialog.tscn` and set the current timeline via the inspector.
### | Run, game, run!
If you have done one of the previous steps, run your game (F5). I hope you will see your dialog appear. If not check if you missed something. You can also always ask for help on the discord.
*Before you start to make your own dialog, let us introduce some more cool things!*
--------------------
## 5. Making your first value and glossary entry
This is already pretty cool, but let's make things more complex. We mentioned them earlier but here they are: `values` and `glossary entries`.
### | Make a value
Create a new `value` by clicking the X-icon in the toolbar. You will now see the definition editor.
Here you can give your value a name and a default value.
Now you can use that value in your dialogues. You can:
- change it with the Set Value event
- use it to have conditions (Condition event)
- add conditions to choices
- display it in texts by writing [MyValue]
#### Example value
Here an example value ...
![ValueExample](./Images/Value_Example1.PNG)
... and how it might be used in a timeline.
![ValueExampleTimeline](./Images/Value_ExampleTimeline.PNG)
### | Make a glossary entry
An `glossary entry` is used for extra information. If the name of this is used in a text or question event, the player can hover it and it will show a popup with the given information. You can also change the information during the game with the `Set Glossary` event.
#### Example glossary entry
Here is an example glossary entry...
![GlossaryExample](./Images/Glossary_Example.PNG)
... and how it looks in the game.
![GlossaryExampleLook](./Images/Glossary_ExampleLook.PNG)
*If you don't like the look of this box, don't worry. The next section is about customizing the look of your dialogue!*
--------------------
## 6. Create your first dialog theme
Themes are used to change the look. By default you already have a theme. Let's start by clicking it.
You will now see the `theme editor`.
It has a preview at the top, and all the settings - grouped into multiple tabs - at the bottom.
I won't explain all the settings here. You can open the `Theme Editor Reference` if you wonder about one of the settings.
The most important one is the Dialog Box's `Box Size`. If you are making a pixel-art game with a small resolution you will have to change it to be much smaller. Also change the font size to fit your games size.
--------------------
## Behind the scenes
If you wonder how all of this works, here is some (very) short explanation.
All the resources are saved as `.json` or `.cfg` in a Dialogic folder in your games root directory `res://dialogic/`.
Boom. There you go :). I'm to lazy to explain more.

3
addons/dialogic/Documentation/Content/Tutorials/GettingStarted.md

@ -0,0 +1,3 @@ @@ -0,0 +1,3 @@
# Getting started
The video is a bit outdated since it was made using the previous version, but the concepts are the same. You can watch the video [here](https://www.youtube.com/watch?v=sYjgDIgD7AY) or use the new and improved guide [here](./BeginnersGuideStepByStep)

BIN
addons/dialogic/Documentation/Content/Tutorials/Images/Character_Editor_With_Portrait.PNG

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 KiB

35
addons/dialogic/Documentation/Content/Tutorials/Images/Character_Editor_With_Portrait.PNG.import

@ -0,0 +1,35 @@ @@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Character_Editor_With_Portrait.PNG-88588c77d89d8a1c2f15f9be07073a87.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/dialogic/Documentation/Content/Tutorials/Images/Character_Editor_With_Portrait.PNG"
dest_files=[ "res://.import/Character_Editor_With_Portrait.PNG-88588c77d89d8a1c2f15f9be07073a87.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

BIN
addons/dialogic/Documentation/Content/Tutorials/Images/Dialogic_Tab.PNG

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

35
addons/dialogic/Documentation/Content/Tutorials/Images/Dialogic_Tab.PNG.import

@ -0,0 +1,35 @@ @@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Dialogic_Tab.PNG-3a868bb7f47fb141608e40d56ba89603.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/dialogic/Documentation/Content/Tutorials/Images/Dialogic_Tab.PNG"
dest_files=[ "res://.import/Dialogic_Tab.PNG-3a868bb7f47fb141608e40d56ba89603.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

BIN
addons/dialogic/Documentation/Content/Tutorials/Images/Empty_Character_Editor.PNG

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

35
addons/dialogic/Documentation/Content/Tutorials/Images/Empty_Character_Editor.PNG.import

@ -0,0 +1,35 @@ @@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Empty_Character_Editor.PNG-b81e9a25b7190089d68ae8c2351d5ed6.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/dialogic/Documentation/Content/Tutorials/Images/Empty_Character_Editor.PNG"
dest_files=[ "res://.import/Empty_Character_Editor.PNG-b81e9a25b7190089d68ae8c2351d5ed6.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

BIN
addons/dialogic/Documentation/Content/Tutorials/Images/Empty_Timeline_Editor.PNG

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

35
addons/dialogic/Documentation/Content/Tutorials/Images/Empty_Timeline_Editor.PNG.import

@ -0,0 +1,35 @@ @@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Empty_Timeline_Editor.PNG-508a5eb2b419ec35635764d597b0d17f.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/dialogic/Documentation/Content/Tutorials/Images/Empty_Timeline_Editor.PNG"
dest_files=[ "res://.import/Empty_Timeline_Editor.PNG-508a5eb2b419ec35635764d597b0d17f.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

BIN
addons/dialogic/Documentation/Content/Tutorials/Images/Glossary_Example.PNG

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

35
addons/dialogic/Documentation/Content/Tutorials/Images/Glossary_Example.PNG.import

@ -0,0 +1,35 @@ @@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Glossary_Example.PNG-c2cbcb58bda208cde5fff6ba9306fe10.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/dialogic/Documentation/Content/Tutorials/Images/Glossary_Example.PNG"
dest_files=[ "res://.import/Glossary_Example.PNG-c2cbcb58bda208cde5fff6ba9306fe10.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

BIN
addons/dialogic/Documentation/Content/Tutorials/Images/Glossary_ExampleLook.PNG

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

35
addons/dialogic/Documentation/Content/Tutorials/Images/Glossary_ExampleLook.PNG.import

@ -0,0 +1,35 @@ @@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Glossary_ExampleLook.PNG-7b274bf4b5547fb36a98967673b795df.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/dialogic/Documentation/Content/Tutorials/Images/Glossary_ExampleLook.PNG"
dest_files=[ "res://.import/Glossary_ExampleLook.PNG-7b274bf4b5547fb36a98967673b795df.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

BIN
addons/dialogic/Documentation/Content/Tutorials/Images/Import_Selection.PNG

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save