rework first dilemma

This commit is contained in:
Arnaud Vergnet 2021-04-20 12:37:32 +02:00
parent a36a9b8a09
commit 767bf24a51
44 changed files with 436 additions and 256 deletions

View file

@ -6,10 +6,10 @@
[ext_resource path="res://addons/dialogic/Nodes/dialog_node.gd" type="Script" id=6]
[ext_resource path="res://addons/dialogic/Nodes/BackgroundMusic.tscn" type="PackedScene" id=7]
[sub_resource type="StyleBoxFlat" id=2]
[sub_resource type="StyleBoxFlat" id=1]
bg_color = Color( 0.196078, 0.196078, 0.196078, 0 )
[sub_resource type="StyleBoxFlat" id=1]
[sub_resource type="StyleBoxFlat" id=2]
bg_color = Color( 1, 1, 1, 0 )
expand_margin_left = 10.0
@ -31,12 +31,12 @@ __meta__ = {
}
[node name="TextBubble" parent="." instance=ExtResource( 1 )]
margin_left = -321.5
margin_top = -264.0
margin_right = 321.5
margin_bottom = -60.0
[node name="Options" type="VBoxContainer" parent="."]
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
grow_horizontal = 2
grow_vertical = 2
alignment = 1
@ -62,7 +62,7 @@ margin_right = 208.0
mouse_filter = 1
size_flags_horizontal = 3
size_flags_vertical = 3
custom_styles/panel = SubResource( 2 )
custom_styles/panel = SubResource( 1 )
script = ExtResource( 5 )
__meta__ = {
"_edit_group_": true,
@ -92,7 +92,7 @@ margin_right = 208.0
margin_bottom = 27.0
size_flags_horizontal = 3
size_flags_vertical = 4
custom_styles/normal = SubResource( 1 )
custom_styles/normal = SubResource( 2 )
custom_fonts/normal_font = ExtResource( 4 )
bbcode_text = "This is the title"
text = "This is the title"
@ -104,7 +104,7 @@ margin_top = 31.0
margin_right = 208.0
margin_bottom = 112.0
size_flags_horizontal = 3
custom_styles/normal = SubResource( 1 )
custom_styles/normal = SubResource( 2 )
custom_fonts/normal_font = ExtResource( 4 )
text = "This is the main copy. Here you write the relevant"
fit_content_height = true
@ -119,7 +119,7 @@ margin_top = 116.0
margin_right = 208.0
margin_bottom = 143.0
size_flags_horizontal = 3
custom_styles/normal = SubResource( 1 )
custom_styles/normal = SubResource( 2 )
custom_fonts/normal_font = ExtResource( 4 )
text = "Una linea extra"
fit_content_height = true
@ -129,4 +129,5 @@ __meta__ = {
}
[node name="Timer" type="Timer" parent="DefinitionInfo"]
[connection signal="timeout" from="DefinitionInfo/Timer" to="." method="_on_Definition_Timer_timeout"]

View file

@ -34,10 +34,11 @@ func _on_focus_entered():
func update_preview(path):
var l_path = path.to_lower()
if path == '':
image_node.texture = null
else:
if '.png' in path or '.svg' in path:
if '.png' in l_path or '.svg' in l_path:
image_node.texture = load(path)
return true
return false

View file

@ -1,13 +1,9 @@
tool
extends Control
extends "res://addons/dialogic/Editor/Events/Templates/EventTemplate.gd"
var preview_scene = preload("res://addons/dialogic/Editor/Events/Common/Images/ImagePreview.tscn")
var editor_reference
var preview = "..."
var preview_scene = preload("res://addons/dialogic/Editor/Events/Common/ImagePreview.tscn")
onready var event_template = $EventTemplate
var image_picker
# This is the information of this event and it will get parsed and saved to the JSON file.
@ -16,7 +12,7 @@ var event_data = {
}
func _ready():
image_picker = event_template.get_header()
image_picker = get_header()
# Needed to open the file dialog
image_picker.editor_reference = editor_reference
image_picker.connect("file_selected", self, "_on_file_selected")
@ -31,16 +27,16 @@ func load_data(data):
func load_image(img_src: String):
event_data['background'] = img_src
if not img_src.empty() and not img_src.ends_with('.tscn'):
event_template.set_preview("...")
event_template.set_body(preview_scene)
event_template.get_body().set_image(load(img_src))
set_preview("...")
set_body(preview_scene)
get_body().set_image(load(img_src))
image_picker.set_image(img_src)
elif img_src.ends_with('.tscn'):
event_template.set_preview("...")
set_preview("...")
image_picker.set_image(img_src)
event_template.set_body(null)
set_body(null)
else:
event_template.set_body(null)
set_body(null)
image_picker.clear_image()

View file

@ -4,23 +4,46 @@
[ext_resource path="res://addons/dialogic/Editor/Events/styles/ChangeBackground.tres" type="StyleBox" id=3]
[ext_resource path="res://addons/dialogic/Editor/Events/Templates/EventTemplate.tscn" type="PackedScene" id=4]
[ext_resource path="res://addons/dialogic/Images/Event Icons/Main Icons/change-background.svg" type="Texture" id=6]
[ext_resource path="res://addons/dialogic/Editor/Events/Common/ImagePicker.tscn" type="PackedScene" id=7]
[ext_resource path="res://addons/dialogic/Editor/Events/Common/Images/ImagePicker.tscn" type="PackedScene" id=7]
[node name="ChangeBackground" type="HBoxContainer"]
anchor_right = 1.0
margin_bottom = 44.0
size_flags_horizontal = 3
size_flags_vertical = 9
[node name="ChangeBackground" instance=ExtResource( 4 )]
script = ExtResource( 2 )
__meta__ = {
"_edit_use_anchors_": false
}
[node name="EventTemplate" parent="." instance=ExtResource( 4 )]
anchor_right = 0.0
margin_right = 1024.0
margin_bottom = 46.0
event_style = ExtResource( 3 )
event_icon = ExtResource( 6 )
event_name = "Change Background"
header_scene = ExtResource( 7 )
[node name="PanelContainer" parent="." index="1"]
custom_styles/panel = ExtResource( 3 )
[node name="IconMarginContainer" parent="PanelContainer/MarginContainer/VBoxContainer/Header" index="0"]
margin_right = 37.0
[node name="IconTexture" parent="PanelContainer/MarginContainer/VBoxContainer/Header/IconMarginContainer" index="0"]
margin_right = 32.0
texture = ExtResource( 6 )
[node name="TitleHBoxContainer" parent="PanelContainer/MarginContainer/VBoxContainer/Header" index="1"]
margin_left = 41.0
margin_right = 191.0
[node name="TitleMarginContainer" parent="PanelContainer/MarginContainer/VBoxContainer/Header/TitleHBoxContainer" index="1"]
margin_right = 142.0
[node name="TitleLabel" parent="PanelContainer/MarginContainer/VBoxContainer/Header/TitleHBoxContainer/TitleMarginContainer" index="0"]
margin_right = 129.0
text = "Change Background"
[node name="VSeparator2" parent="PanelContainer/MarginContainer/VBoxContainer/Header/TitleHBoxContainer" index="2"]
margin_left = 146.0
margin_right = 150.0
[node name="Content" parent="PanelContainer/MarginContainer/VBoxContainer/Header" index="2"]
margin_left = 195.0
margin_right = 536.0
[node name="Spacer" parent="PanelContainer/MarginContainer/VBoxContainer/Header" index="4"]
margin_left = 540.0
[node name="OptionsControl" parent="PanelContainer/MarginContainer/VBoxContainer/Header" index="6"]
items = [ "Move Up", null, 0, false, false, 0, 0, null, "", false, "Move Down", null, 0, false, false, 1, 0, null, "", false, "", null, 0, false, false, 2, 0, null, "", false, "Remove", null, 0, false, false, 3, 0, null, "", false ]

View file

@ -1,7 +1,8 @@
[gd_scene load_steps=3 format=2]
[ext_resource path="res://addons/dialogic/Images/Context Menus/Remove.svg" type="Texture" id=1]
[ext_resource path="res://addons/dialogic/Editor/Events/Common/ImagePicker.gd" type="Script" id=2]
[ext_resource path="res://addons/dialogic/Editor/Events/Common/Images/ImagePicker.gd" type="Script" id=2]
[node name="ImagePicker" type="HBoxContainer"]
margin_left = 154.0

View file

@ -1,6 +1,6 @@
[gd_scene load_steps=2 format=2]
[ext_resource path="res://addons/dialogic/Editor/Events/Common/ImagePreview.gd" type="Script" id=1]
[ext_resource path="res://addons/dialogic/Editor/Events/Common/Images/ImagePreview.gd" type="Script" id=1]
[node name="ImagePreview" type="CenterContainer"]
anchor_right = 1.0

View file

@ -8,7 +8,6 @@ export(PackedScene) var header_scene : PackedScene
export(PackedScene) var body_scene : PackedScene
signal option_action(action_name)
signal selected()
onready var panel = $PanelContainer
onready var title_container = $PanelContainer/MarginContainer/VBoxContainer/Header/TitleHBoxContainer
@ -21,11 +20,16 @@ onready var body_container = $PanelContainer/MarginContainer/VBoxContainer/Body
onready var body_content_container = $PanelContainer/MarginContainer/VBoxContainer/Body/Content
onready var indent_node = $Indent
var editor_reference
var header_node
var body_node
var indent_size = 25
# Setting this to true will ignore the event while saving
# Useful for making placeholder events in drag and drop
var ignore_save = false
## *****************************************************************************
## PUBLIC METHODS
## *****************************************************************************
@ -77,8 +81,9 @@ func set_indent(indent: int):
indent_node.visible = indent != 0
func on_timeline_selected():
emit_signal("selected")
# Override in inherited class
func on_timeline_selected(selected: bool):
pass
func set_expanded(expanded: bool):

View file

@ -1,6 +1,5 @@
[gd_scene load_steps=7 format=2]
[gd_scene load_steps=6 format=2]
[ext_resource path="res://addons/dialogic/Editor/Events/Templates/EventTemplate.gd" type="Script" id=1]
[ext_resource path="res://addons/dialogic/Editor/Events/Templates/ExpandControl.tscn" type="PackedScene" id=2]
[ext_resource path="res://addons/dialogic/Editor/Events/Common/Spacer.tscn" type="PackedScene" id=4]
[ext_resource path="res://addons/dialogic/Editor/Events/Templates/OptionsControl.tscn" type="PackedScene" id=5]
@ -23,13 +22,9 @@ margin_bottom = 44.0
rect_min_size = Vector2( 0, 44 )
size_flags_horizontal = 3
size_flags_vertical = 9
script = ExtResource( 1 )
__meta__ = {
"_edit_use_anchors_": false
}
event_style = SubResource( 1 )
event_icon = ExtResource( 6 )
event_name = "Event Template"
[node name="Indent" type="Control" parent="."]
visible = false

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=8 format=2]
[gd_scene load_steps=7 format=2]
[ext_resource path="res://addons/dialogic/Images/Event Icons/Main Icons/wait-seconds.svg" type="Texture" id=1]
[ext_resource path="res://addons/dialogic/Editor/Events/WaitSeconds.gd" type="Script" id=2]
@ -6,9 +6,6 @@
[ext_resource path="res://addons/dialogic/Editor/Events/Common/PieceExtraSettings.tscn" type="PackedScene" id=4]
[ext_resource path="res://addons/dialogic/Editor/Events/Common/SpinBoxPreventDnD.gd" type="Script" id=6]
[sub_resource type="StyleBoxFlat" id=1]
content_margin_left = 16.0
content_margin_right = 6.0
@ -79,7 +76,8 @@ margin_left = 79.0
margin_right = 153.0
margin_bottom = 28.0
min_value = 0.1
value = 0.1
step = 0.1
value = 1.0
allow_greater = true
align = 1
script = ExtResource( 6 )
@ -108,4 +106,5 @@ margin_left = 945.0
margin_right = 982.0
margin_bottom = 28.0
items = [ "Move Up", null, 0, false, false, 0, 0, null, "", false, "Move Down", null, 0, false, false, 1, 0, null, "", false, "", null, 0, false, false, 2, 0, null, "", true, "Remove", null, 0, false, false, 3, 0, null, "", false ]
[connection signal="value_changed" from="PanelContainer/VBoxContainer/Header/SpinBox" to="." method="_on_SpinBox_value_changed"]

View file

@ -82,6 +82,7 @@ onready var n : Dictionary = {
# Glossary
'glossary_font': $VBoxContainer/TabContainer/Glossary/Column/GridContainer/FontButton,
'glossary_color': $VBoxContainer/TabContainer/Glossary/Column/GridContainer/ColorPickerButton,
'glossary_enabled': $VBoxContainer/TabContainer/Glossary/Column/GridContainer/ShowGlossaryCheckBox,
# Text preview
'text_preview': $VBoxContainer/HBoxContainer3/TextEdit,
@ -155,6 +156,7 @@ func load_theme(filename):
# Definitions
n['glossary_color'].color = Color(theme.get_value('definitions', 'color', "#ffffffff"))
n['glossary_font'].text = DialogicResources.get_filename_from_path(theme.get_value('definitions', 'font', "res://addons/dialogic/Example Assets/Fonts/GlossaryFont.tres"))
n['glossary_enabled'].pressed = theme.get_value('definitions', 'show_glossary', true)
# Text
n['theme_text_speed'].value = theme.get_value('text','speed', 2)
@ -495,6 +497,14 @@ func _on_Glossary_Font_selected(path, target) -> void:
_on_PreviewButton_pressed() # Refreshing the preview
func _on_ShowGlossaryCheckBox_toggled(button_pressed):
if loading:
return
DialogicResources.set_theme_value(current_theme, 'definitions','show_glossary', button_pressed)
_on_PreviewButton_pressed() # Refreshing the preview
func _on_visibility_changed() -> void:
if visible:
# Refreshing the dialog
@ -683,3 +693,4 @@ func _on_ButtonSize_value_changed(value):
return
DialogicResources.set_theme_value(current_theme, 'buttons','fixed_size', Vector2(n['button_fixed_x'].value,n['button_fixed_y'].value))
_on_PreviewButton_pressed() # Refreshing the preview

View file

@ -8,7 +8,7 @@ content_margin_left = 4.0
content_margin_right = 4.0
content_margin_top = 4.0
content_margin_bottom = 4.0
bg_color = Color( 0.252, 0.2718, 0.3246, 1 )
bg_color = Color( 0.2652, 0.2784, 0.3114, 1 )
[node name="ThemeEditor" type="ScrollContainer"]
anchor_right = 1.0
@ -29,13 +29,13 @@ custom_constants/separation = 15
[node name="Panel" type="Panel" parent="VBoxContainer"]
margin_right = 1018.0
margin_bottom = 460.0
rect_min_size = Vector2( 0, 460 )
margin_bottom = 297.0
rect_min_size = Vector2( 0, 297 )
[node name="HBoxContainer3" type="HBoxContainer" parent="VBoxContainer"]
margin_top = 475.0
margin_top = 312.0
margin_right = 1018.0
margin_bottom = 535.0
margin_bottom = 372.0
custom_constants/separation = 10
[node name="TextEdit" type="TextEdit" parent="VBoxContainer/HBoxContainer3"]
@ -55,7 +55,7 @@ text = " Preview changes "
icon = ExtResource( 1 )
[node name="TabContainer" type="TabContainer" parent="VBoxContainer"]
margin_top = 550.0
margin_top = 387.0
margin_right = 1018.0
margin_bottom = 911.0
size_flags_horizontal = 3
@ -74,7 +74,7 @@ custom_constants/separation = 10
[node name="Column" type="VBoxContainer" parent="VBoxContainer/TabContainer/Dialog Text"]
margin_right = 270.0
margin_bottom = 325.0
margin_bottom = 488.0
rect_min_size = Vector2( 270, 0 )
size_flags_vertical = 3
__meta__ = {
@ -200,12 +200,12 @@ prefix = "Y"
[node name="VSeparator" type="VSeparator" parent="VBoxContainer/TabContainer/Dialog Text"]
margin_left = 280.0
margin_right = 284.0
margin_bottom = 325.0
margin_bottom = 488.0
[node name="Column2" type="VBoxContainer" parent="VBoxContainer/TabContainer/Dialog Text"]
margin_left = 294.0
margin_right = 564.0
margin_bottom = 325.0
margin_bottom = 488.0
rect_min_size = Vector2( 270, 0 )
size_flags_vertical = 3
__meta__ = {
@ -824,6 +824,7 @@ allow_greater = true
allow_lesser = true
[node name="Choice Buttons" type="HBoxContainer" parent="VBoxContainer/TabContainer"]
visible = false
anchor_right = 1.0
anchor_bottom = 1.0
margin_left = 4.0
@ -834,7 +835,7 @@ custom_constants/separation = 10
[node name="Column" type="VBoxContainer" parent="VBoxContainer/TabContainer/Choice Buttons"]
margin_right = 270.0
margin_bottom = 325.0
margin_bottom = 488.0
rect_min_size = Vector2( 270, 0 )
size_flags_vertical = 3
__meta__ = {
@ -965,12 +966,12 @@ margin_bottom = 136.0
[node name="VSeparator" type="VSeparator" parent="VBoxContainer/TabContainer/Choice Buttons"]
margin_left = 280.0
margin_right = 284.0
margin_bottom = 325.0
margin_bottom = 488.0
[node name="Column2" type="VBoxContainer" parent="VBoxContainer/TabContainer/Choice Buttons"]
margin_left = 294.0
margin_right = 603.0
margin_bottom = 325.0
margin_bottom = 488.0
rect_min_size = Vector2( 270, 0 )
size_flags_vertical = 3
__meta__ = {
@ -1068,7 +1069,6 @@ allow_greater = true
allow_lesser = true
[node name="Glossary" type="HBoxContainer" parent="VBoxContainer/TabContainer"]
visible = false
anchor_right = 1.0
anchor_bottom = 1.0
margin_left = 4.0
@ -1079,7 +1079,7 @@ custom_constants/separation = 10
[node name="Column" type="VBoxContainer" parent="VBoxContainer/TabContainer/Glossary"]
margin_right = 270.0
margin_bottom = 157.0
margin_bottom = 488.0
rect_min_size = Vector2( 270, 0 )
[node name="SectionTitle" type="Label" parent="VBoxContainer/TabContainer/Glossary/Column"]
@ -1091,7 +1091,7 @@ text = "Visuals"
[node name="GridContainer" type="GridContainer" parent="VBoxContainer/TabContainer/Glossary/Column"]
margin_top = 26.0
margin_right = 270.0
margin_bottom = 80.0
margin_bottom = 108.0
size_flags_horizontal = 3
custom_constants/hseparation = 10
columns = 2
@ -1124,17 +1124,36 @@ margin_bottom = 54.0
rect_min_size = Vector2( 50, 30 )
color = Color( 0.215686, 0.654902, 0.67451, 1 )
[node name="Label2" type="Label" parent="VBoxContainer/TabContainer/Glossary/Column/GridContainer"]
margin_top = 63.0
margin_right = 165.0
margin_bottom = 77.0
text = "Show"
__meta__ = {
"_edit_use_anchors_": false
}
[node name="ShowGlossaryCheckBox" type="CheckBox" parent="VBoxContainer/TabContainer/Glossary/Column/GridContainer"]
margin_left = 175.0
margin_top = 58.0
margin_right = 270.0
margin_bottom = 82.0
__meta__ = {
"_edit_use_anchors_": false
}
[node name="Label" type="Label" parent="VBoxContainer/TabContainer/Glossary/Column/GridContainer"]
visible = false
margin_top = 66.0
margin_right = 141.0
margin_bottom = 80.0
margin_top = 58.0
margin_right = 165.0
margin_bottom = 72.0
text = "Shadow"
[node name="HBoxContainer2" type="HBoxContainer" parent="VBoxContainer/TabContainer/Glossary/Column/GridContainer"]
visible = false
margin_left = 175.0
margin_top = 58.0
margin_right = 213.0
margin_right = 270.0
margin_bottom = 88.0
[node name="CheckBoxShadow" type="CheckBox" parent="VBoxContainer/TabContainer/Glossary/Column/GridContainer/HBoxContainer2"]
@ -1143,7 +1162,7 @@ margin_bottom = 30.0
[node name="ColorPickerButtonShadow" type="ColorPickerButton" parent="VBoxContainer/TabContainer/Glossary/Column/GridContainer/HBoxContainer2"]
margin_left = 28.0
margin_right = 213.0
margin_right = 95.0
margin_bottom = 30.0
rect_min_size = Vector2( 50, 30 )
size_flags_horizontal = 3
@ -1159,7 +1178,7 @@ text = "S, Offset"
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/TabContainer/Glossary/Column/GridContainer"]
visible = false
margin_top = 58.0
margin_right = 213.0
margin_right = 165.0
margin_bottom = 82.0
custom_constants/separation = 10
@ -1182,7 +1201,6 @@ prefix = "Y"
[node name="DelayPreviewTimer" type="Timer" parent="."]
one_shot = true
[connection signal="text_changed" from="VBoxContainer/HBoxContainer3/TextEdit" to="." method="_on_Preview_text_changed"]
[connection signal="pressed" from="VBoxContainer/HBoxContainer3/PreviewButton" to="." method="_on_PreviewButton_pressed"]
[connection signal="pressed" from="VBoxContainer/TabContainer/Dialog Text/Column/GridContainer/FontButton" to="." method="_on_FontButton_pressed"]
@ -1240,6 +1258,7 @@ one_shot = true
[connection signal="value_changed" from="VBoxContainer/TabContainer/Choice Buttons/Column2/GridContainer/HBoxContainer2/ButtonSizeY" to="." method="_on_ButtonSize_value_changed"]
[connection signal="pressed" from="VBoxContainer/TabContainer/Glossary/Column/GridContainer/FontButton" to="." method="_on_GlossaryFontButton_pressed"]
[connection signal="color_changed" from="VBoxContainer/TabContainer/Glossary/Column/GridContainer/ColorPickerButton" to="." method="_on_GlossaryColorPicker_color_changed"]
[connection signal="toggled" from="VBoxContainer/TabContainer/Glossary/Column/GridContainer/ShowGlossaryCheckBox" to="." method="_on_ShowGlossaryCheckBox_toggled"]
[connection signal="toggled" from="VBoxContainer/TabContainer/Glossary/Column/GridContainer/HBoxContainer2/CheckBoxShadow" to="." method="_on_CheckBoxShadow_toggled"]
[connection signal="color_changed" from="VBoxContainer/TabContainer/Glossary/Column/GridContainer/HBoxContainer2/ColorPickerButtonShadow" to="." method="_on_ColorPickerButtonShadow_color_changed"]
[connection signal="value_changed" from="VBoxContainer/TabContainer/Glossary/Column/GridContainer/HBoxContainer/ShadowOffsetX" to="." method="_on_ShadowOffset_value_changed"]

View file

@ -1,12 +1,14 @@
tool
extends ScrollContainer
var _drag_drop_indicator = null
# store last attempts since godot sometimes misses drop events
var _is_drag_receiving = false
var _last_event_button_drop_attempt = ''
var _mouse_exited = false
# todo, getting timeline like this is prone to fail someday
onready var timeline_editor = get_parent()
func _ready():
connect("mouse_entered", self, '_on_mouse_entered')
connect("mouse_exited", self, '_on_mouse_exited')
@ -14,53 +16,43 @@ func _ready():
func can_drop_data(position, data):
if (data != null and data is Dictionary and data.has("source")):
if (data["source"] == "EventButton"):
# position drop indicator
_set_indicator_position(position)
if data != null and data is Dictionary and data.has("source"):
if data["source"] == "EventButton":
if _last_event_button_drop_attempt.empty():
timeline_editor.create_drag_and_drop_event(data["event_name"])
_is_drag_receiving = true
_last_event_button_drop_attempt = data["event_name"]
return true
_remove_drop_indicator()
return false
func cancel_drop():
_is_drag_receiving = false
_last_event_button_drop_attempt = ''
_remove_drop_indicator()
pass
timeline_editor.cancel_drop_event()
func drop_data(position, data):
# todo, getting timeline like this is prone to fail someday
var timeline_editor = get_parent()
# add event
if (data["source"] == "EventButton"):
var piece = timeline_editor.create_event(data["event_name"])
if (piece != null and _drag_drop_indicator != null):
var parent = piece.get_parent()
if (parent != null):
parent.remove_child(piece)
parent.add_child_below_node(_drag_drop_indicator, piece)
timeline_editor.indent_events()
# @todo _select_item seems to be a "private" function
# maybe expose it as "public" or add a public helper function
# to TimelineEditor.gd
timeline_editor._select_item(piece)
timeline_editor.drop_event()
_is_drag_receiving = false
_last_event_button_drop_attempt = ''
_remove_drop_indicator()
func _on_mouse_exited():
if _is_drag_receiving and not _mouse_exited:
var preview_label = Label.new()
preview_label.text = "Cancel"
set_drag_preview(preview_label)
_mouse_exited = true
func _on_mouse_entered():
if _is_drag_receiving and _mouse_exited:
var preview_label = Label.new()
preview_label.text = "Insert Event"
set_drag_preview(preview_label)
_mouse_exited = false
@ -68,8 +60,8 @@ func _input(event):
if (event is InputEventMouseButton and is_visible_in_tree() and event.button_index == BUTTON_LEFT):
if (_mouse_exited and _is_drag_receiving):
cancel_drop()
func _on_gui_input(event):
# godot sometimes misses drop events
if (event is InputEventMouseButton and event.button_index == BUTTON_LEFT):
@ -77,63 +69,3 @@ func _on_gui_input(event):
if (_last_event_button_drop_attempt != ''):
drop_data(Vector2.ZERO, { "source": "EventButton", "event_name": _last_event_button_drop_attempt} )
_is_drag_receiving = false
_remove_drop_indicator()
pass
func _create_drop_indicator():
_remove_drop_indicator()
var timeline = get_child(0)
if (timeline == null):
return
var indicator = ColorRect.new()
indicator.name = "DropIndicator"
indicator.rect_size.y = 100
indicator.rect_min_size.y = 100
indicator.color = Color(0.35, 0.37, 0.44) # default editor light blue
indicator.mouse_filter = MOUSE_FILTER_IGNORE
# add indent node like the other scene nodes have
var indent = Control.new()
indent.rect_min_size.x = 25
indent.visible = false
indent.name = "Indent"
indicator.add_child(indent)
var label = Label.new()
label.text = "Drop here"
indicator.add_child(label)
timeline.add_child(indicator)
_drag_drop_indicator = indicator
func _remove_drop_indicator():
if (_drag_drop_indicator != null):
_drag_drop_indicator.get_parent().remove_child(_drag_drop_indicator)
_drag_drop_indicator.queue_free()
_drag_drop_indicator = null
func _set_indicator_position(position):
var timeline = get_child(0)
if (timeline == null):
return
if (_drag_drop_indicator == null):
_create_drop_indicator()
var highest_index = 0
var index = 0
for child in timeline.get_children():
if child.get_local_mouse_position().y > 0 and index > highest_index:
highest_index = index
index += 1
if (_drag_drop_indicator.is_inside_tree()):
timeline.move_child(_drag_drop_indicator, max(0, highest_index))
pass

View file

@ -213,7 +213,8 @@ func _clear_selection():
if selected_panel != null:
selected_panel.set('custom_styles/panel', saved_style)
else:
selected_item.event_template.set_event_style(saved_style)
selected_item.set_event_style(saved_style)
selected_item.on_timeline_selected(false)
selected_item = null
saved_style = null
@ -238,9 +239,9 @@ func _select_item(item: Node):
if (selected_item.has_method("on_timeline_selected")):
selected_item.on_timeline_selected()
else:
saved_style = item.event_template.get_event_style()
item.event_template.set_event_style(selected_style_template)
selected_item.event_template.on_timeline_selected()
saved_style = item.get_event_style()
item.set_event_style(selected_style_template)
selected_item.on_timeline_selected(true)
else:
_clear_selection()
@ -304,6 +305,34 @@ func _on_ButtonCondition_pressed() -> void:
create_event("EndBranch", {'no-data': true}, true)
# Creates a ghost event for drag and drop
func create_drag_and_drop_event(scene: String):
var index = get_index_under_cursor()
var piece = create_event(scene)
timeline.move_child(piece, index)
moving_piece = piece
piece_was_dragged = true
set_event_ignore_save(piece, true)
_select_item(piece)
return piece
func drop_event():
if moving_piece != null:
set_event_ignore_save(moving_piece, false)
moving_piece = null
piece_was_dragged = false
indent_events()
func cancel_drop_event():
if moving_piece != null:
moving_piece = null
piece_was_dragged = false
delete_event()
_clear_selection()
# Adding an event to the timeline
func create_event(scene: String, data: Dictionary = {'no-data': true} , indent: bool = false):
var piece = load("res://addons/dialogic/Editor/Events/" + scene + ".tscn").instance()
@ -316,7 +345,7 @@ func create_event(scene: String, data: Dictionary = {'no-data': true} , indent:
piece.load_data(data)
if _has_template(piece):
piece.event_template.connect("option_action", self, '_on_event_options_action', [piece])
piece.connect("option_action", self, '_on_event_options_action', [piece])
piece.connect("gui_input", self, '_on_gui_input', [piece])
events_warning.visible = false
@ -343,7 +372,7 @@ func indent_events() -> void:
indent_node = event.get_node("Indent")
indent_node.visible = false
else:
event.event_template.set_indent(0)
event.set_indent(0)
# Adding new indents
for event in event_list:
@ -382,9 +411,9 @@ func indent_events() -> void:
indent_node.visible = false
else:
if starter:
event.event_template.set_indent(indent - 1)
event.set_indent(indent - 1)
else:
event.event_template.set_indent(indent)
event.set_indent(indent)
starter = false
@ -481,6 +510,16 @@ func get_block_height(block):
return null
func get_index_under_cursor():
var current_position = get_global_mouse_position()
var top_pos = 0
for i in range(timeline.get_child_count()):
var c = timeline.get_child(i)
if c.rect_global_position.y < current_position.y:
top_pos = i
return top_pos
# ordering blocks in timeline
func move_block(block, direction):
var block_index = block.get_index()
@ -523,14 +562,30 @@ func generate_save_data():
'events': []
}
for event in timeline.get_children():
# check that event has event_data (e.g. drag drop indicators)
if (not "event_data" in event):
continue
if event.is_queued_for_deletion() == false: # Checking that the event is not waiting to be removed
# Checking that the event is not waiting to be removed
# or that it is not a drag and drop placeholder
if not get_event_ignore_save(event) and event.is_queued_for_deletion() == false:
info_to_save['events'].append(event.event_data)
return info_to_save
func set_event_ignore_save(event: Node, ignore: bool):
if _has_template(event):
event.ignore_save = ignore
else:
if ignore:
event.event_data["_ignore_save"] = true
else:
event.event_data.erase("_ignore_save")
func get_event_ignore_save(event: Node) -> bool:
if _has_template(event):
return event.ignore_save
else:
return event.event_data.has("_ignore_save") and event.event_data["_ignore_save"]
func save_timeline() -> void:
if timeline_file != '':
var info_to_save = generate_save_data()
@ -544,7 +599,7 @@ func fold_all_nodes():
if event.has_node("PanelContainer/VBoxContainer/Header/VisibleToggle"):
event.get_node("PanelContainer/VBoxContainer/Header/VisibleToggle").set_pressed(false)
elif _has_template(event):
event.event_template.set_expanded(false)
event.set_expanded(false)
func unfold_all_nodes():
@ -552,4 +607,4 @@ func unfold_all_nodes():
if event.has_node("PanelContainer/VBoxContainer/Header/VisibleToggle"):
event.get_node("PanelContainer/VBoxContainer/Header/VisibleToggle").set_pressed(true)
elif _has_template(event):
event.event_template.set_expanded(true)
event.set_expanded(true)

View file

@ -23,8 +23,13 @@ export(bool) var reset_saves = true
## Should we show debug information when running?
export(bool) var debug_mode = true
# Event end/start
signal event_start(type, event)
signal event_end(type)
# Timeline end/start
signal timeline_start(timeline_name)
signal timeline_end(timeline_name)
# Custom user signal
signal dialogic_signal(value)
var dialog_resource
@ -91,10 +96,16 @@ func resize_main():
set_global_position(Vector2(0,0))
reference = get_viewport().get_visible_rect().size
$Options.rect_position.x = (reference.x / 2) - ($Options.rect_size.x / 2)
$Options.rect_position.y = (reference.y / 2) - ($Options.rect_size.y / 2)
$TextBubble.rect_position.x = (reference.x / 2) - ($TextBubble.rect_size.x / 2)
if current_theme != null:
$TextBubble.rect_position.y = (reference.y) - ($TextBubble.rect_size.y) - current_theme.get_value('box', 'bottom_gap', 40)
var background = get_node_or_null('Background')
if background != null:
background.rect_size = reference
func set_current_dialog(dialog_path: String):
@ -244,11 +255,17 @@ func parse_branches(dialog_script: Dictionary) -> Dictionary:
return dialog_script
func _should_show_glossary():
if current_theme != null:
return current_theme.get_value('definitions', 'show_glossary', true)
return true
func parse_definitions(text: String, variables: bool = true, glossary: bool = true):
var final_text: String = text
if variables:
final_text = _insert_variable_definitions(text)
if glossary:
if glossary and _should_show_glossary():
final_text = _insert_glossary_definitions(final_text)
return final_text
@ -328,14 +345,18 @@ func on_timeline_start():
if not Engine.is_editor_hint():
DialogicSingleton.save_definitions()
DialogicSingleton.set_current_timeline(current_timeline)
# TODO remove event_start in 2.0
emit_signal("event_start", "timeline", current_timeline)
emit_signal("timeline_start", current_timeline)
func on_timeline_end():
if not Engine.is_editor_hint():
DialogicSingleton.save_definitions()
DialogicSingleton.set_current_timeline('')
# TODO remove event_end in 2.0
emit_signal("event_end", "timeline")
emit_signal("timeline_end", current_timeline)
dprint('[D] Timeline End')
@ -476,6 +497,8 @@ func event_handler(event: Dictionary):
background.stretch_mode = TextureRect.STRETCH_SCALE
background.show_behind_parent = true
background.mouse_filter = Control.MOUSE_FILTER_IGNORE
call_deferred('resize_main') # Executing the resize main to update the background size
add_child(background)
background.texture = null
if (background.get_child_count() > 0):

View file

@ -77,7 +77,22 @@ static func get_definitions() -> Dictionary:
##
## @returns Error status, OK if all went well
static func save_definitions():
return DialogicSingleton.save_definitions()
# Always try to save as much as possible.
var err1 = DialogicSingleton.save_definitions()
var err2 = DialogicSingleton.save_state()
# Try to combine the two error states in a way that makes sense.
return err1 if err1 != OK else err2
## Sets whether to use Dialogic's built-in autosave functionality.
static func set_autosave(save: bool) -> void:
DialogicSingleton.set_autosave(save);
## Gets whether to use Dialogic's built-in autosave functionality.
static func get_autosave() -> bool:
return DialogicSingleton.get_autosave();
## Resets data to default values. This is the same as calling start with reset_saves to true
@ -135,3 +150,21 @@ static func set_glossary(name: String, title: String, text: String, extra: Strin
## @returns The current timeline filename, or an empty string if none was saved.
static func get_current_timeline() -> String:
return DialogicSingleton.get_current_timeline()
## Export the current Dialogic state.
## This can be used as part of your own saving mechanism if you have one. If you use this,
## you should also disable autosaving.
##
## @return A dictionary of data that can be later provided to import().
static func export() -> Dictionary:
return DialogicSingleton.export()
## Import a Dialogic state.
## This can be used as part of your own saving mechanism if you have one. If you use this,
## you should also disable autosaving.
##
## @param data A dictionary of data as created by export().
static func import(data: Dictionary) -> void:
DialogicSingleton.import(data)

View file

@ -65,13 +65,13 @@ static func get_config_files_paths() -> Dictionary:
}
static func init_saves(overwrite: bool=true):
static func init_saves():
var err = init_working_dir()
var paths := get_config_files_paths()
if err == OK:
init_state_saves(overwrite)
init_definitions_saves(overwrite)
init_state_saves()
init_definitions_saves()
else:
print('[Dialogic] Error creating working directory: ' + str(err))
@ -81,44 +81,37 @@ static func init_working_dir():
return directory.make_dir_recursive(get_working_directories()['WORKING_DIR'])
static func init_state_saves(overwrite: bool=true):
static func init_state_saves():
var file := File.new()
var paths := get_config_files_paths()
if not file.file_exists(paths["SAVED_STATE_FILE"]) or overwrite:
var err = file.open(paths["SAVED_STATE_FILE"], File.WRITE)
if err == OK:
file.store_string('')
file.close()
else:
print('[Dialogic] Error opening saved state file: ' + str(err))
var err = file.open(paths["SAVED_STATE_FILE"], File.WRITE)
if err == OK:
file.store_string('')
file.close()
else:
print('[Dialogic] Error opening saved state file: ' + str(err))
static func init_definitions_saves(overwrite: bool=true):
static func init_definitions_saves():
var directory := Directory.new()
var source := File.new()
var sink := File.new()
var paths := get_config_files_paths()
var err
if not directory.file_exists(paths["SAVED_DEFINITIONS_FILE"]):
err = sink.open(paths["SAVED_DEFINITIONS_FILE"], File.WRITE)
print('[Dialogic] Saved definitions not present, creating file: ' + str(err))
if err == OK:
sink.store_string('')
sink.close()
else:
print('[Dialogic] Error opening saved definitions file: ' + str(err))
var err = sink.open(paths["SAVED_DEFINITIONS_FILE"], File.WRITE)
print('[Dialogic] Saved definitions not present, creating file: ' + str(err))
if err == OK:
sink.store_string('')
sink.close()
else:
print('[Dialogic] Error opening saved definitions file: ' + str(err))
err = sink.open(paths["SAVED_DEFINITIONS_FILE"], File.READ_WRITE)
if err == OK:
if overwrite or sink.get_len() == 0:
err = source.open(paths["DEFAULT_DEFINITIONS_FILE"], File.READ)
if err == OK:
sink.store_string(source.get_as_text())
else:
print('[Dialogic] Error opening default definitions file: ' + str(err))
err = source.open(paths["DEFAULT_DEFINITIONS_FILE"], File.READ)
if err == OK:
sink.store_string(source.get_as_text())
else:
print('[Dialogic] Did not overwrite previous saved definitions')
print('[Dialogic] Error opening default definitions file: ' + str(err))
else:
print('[Dialogic] Error opening saved definitions file: ' + str(err))
@ -323,23 +316,10 @@ static func get_saved_state() -> Dictionary:
static func save_saved_state_config(data: Dictionary):
init_working_dir()
set_json(get_config_files_paths()['SAVED_STATE_FILE'], data)
static func get_saved_state_general_key(key: String) -> String:
var data = get_saved_state()
if key in data['general'].keys():
return data['general'][key]
else:
return ''
static func set_saved_state_general_key(key: String, value):
var data = get_saved_state()
data['general'][key] = str(value)
save_saved_state_config(data)
# DEFAULT DEFINITIONS
# Can only be edited in the editor
@ -382,9 +362,10 @@ static func delete_default_definition(id: String):
# Can be edited at runtime, and will persist across runs
static func get_saved_definitions() -> Dictionary:
return load_json(get_config_files_paths()['SAVED_DEFINITIONS_FILE'], {'variables': [], 'glossary': []})
static func get_saved_definitions(default: Dictionary = {'variables': [], 'glossary': []}) -> Dictionary:
return load_json(get_config_files_paths()['SAVED_DEFINITIONS_FILE'], default)
static func save_saved_definitions(data: Dictionary):
init_working_dir()
return set_json(get_config_files_paths()['SAVED_DEFINITIONS_FILE'], data)

View file

@ -35,6 +35,18 @@ public static class DialogicSharp
}
}
public static bool Autosave
{
get
{
return (bool)_dialogic.Call("get_autosave");
}
set
{
_dialogic.Call("set_autosave", value);
}
}
public static Node Start(String timeline, bool resetSaves = true, bool debugMode = false)
{
return Start<Node>(timeline, DEFAULT_DIALOG_RESOURCE, resetSaves, debugMode);
@ -74,4 +86,24 @@ public static class DialogicSharp
{
_dialogic.Call("set_glossary", name, title, text, extra);
}
public static void ResetSaves()
{
_dialogic.Call("reset_saves");
}
public static Error SaveDefinitions()
{
return (Error)_dialogic.Call("save_definitions");
}
public static GC.Dictionary Export()
{
return (GC.Dictionary)_dialogic.Call("export");
}
public static void Import(GC.Dictionary data)
{
_dialogic.Call("import", data);
}
}

View file

@ -2,6 +2,8 @@ extends Node
var current_definitions := {}
var default_definitions := {}
var current_state := {}
var autosave := true
var current_timeline := ''
@ -11,11 +13,13 @@ func _init() -> void:
func init(reset: bool=false) -> void:
# Loads saved definitions into memory
DialogicResources.init_saves(reset)
current_definitions = DialogicResources.get_saved_definitions()
if reset and autosave:
# Loads saved definitions into memory
DialogicResources.init_saves()
default_definitions = DialogicResources.get_default_definitions()
current_timeline = DialogicResources.get_saved_state_general_key('timeline')
current_definitions = DialogicResources.get_saved_definitions(default_definitions)
current_state = DialogicResources.get_saved_state()
current_timeline = get_saved_state_general_key('timeline')
func get_definitions_list() -> Array:
@ -35,7 +39,16 @@ func get_default_definitions_list() -> Array:
func save_definitions():
return DialogicResources.save_saved_definitions(current_definitions)
if autosave:
return DialogicResources.save_saved_definitions(current_definitions)
else:
return OK
func save_state():
if autosave:
return DialogicResources.save_saved_state_config(current_state)
else:
return OK
func get_variable(name: String) -> String:
@ -103,10 +116,41 @@ func set_glossary(name: String, title: String, text: String, extra: String) -> v
func set_current_timeline(timeline: String):
current_timeline = timeline
DialogicResources.set_saved_state_general_key('timeline', timeline)
set_saved_state_general_key('timeline', timeline)
func get_current_timeline() -> String:
return current_timeline
func get_saved_state_general_key(key: String) -> String:
if key in current_state['general'].keys():
return current_state['general'][key]
else:
return ''
func set_saved_state_general_key(key: String, value) -> void:
current_state['general'][key] = str(value)
save_state()
func get_autosave() -> bool:
return autosave;
func set_autosave(save: bool):
autosave = save;
func export() -> Dictionary:
return {
'definitions': current_definitions,
'state': current_state,
}
func import(data: Dictionary) -> void:
init(false);
current_definitions = data['definitions'];
current_state = data['state'];
current_timeline = get_saved_state_general_key('timeline')

View file

@ -1 +1 @@
{"color":"#ff07b99c","default_speaker":false,"description":"Les notifications de partout","display_name":"","display_name_bool":false,"id":"character-1616660196.json","name":"Téléphone","offset_x":0,"offset_y":-100,"portraits":[{"name":"Default","path":"res://characters/phone.png"}],"scale":100}
{"color":"#ff0766b9","default_speaker":false,"description":"Les notifications de partout","display_name":"","display_name_bool":false,"id":"character-1616660196.json","mirror_portraits":false,"name":"Téléphone","offset_x":0,"offset_y":-100,"portraits":[{"name":"Default","path":"res://characters/phone.png"}],"scale":100}

View file

@ -0,0 +1 @@
{"color":"#ff03c6ab","default_speaker":false,"description":"","display_name":"","display_name_bool":false,"id":"character-1618911589.json","mirror_portraits":false,"name":"Narrateur","offset_x":0,"offset_y":0,"portraits":[{"name":"Default","path":""}],"scale":100}

View file

@ -1 +1 @@
{"glossary":[],"variables":[{"id":"1616657225-648","name":"tel_ouvert","type":0,"value":"0"}]}
{"glossary":[{"extra":"","id":"1618913698-364","name":"fermer","text":"Utilisateur habitué à cette fonctionnalité. Il nest pas déboussolé face à une nouveauté.","title":"Téléphone verrouillé","type":1},{"extra":"","id":"1618913732-731","name":"ouvert","text":"Donne à lentreprise une image moderne et éco-responsable. Possibilité de fidéliser des clients qui dépensent plus habituellement.","title":"Téléphone déverrouillé","type":1}],"variables":[{"id":"1616657225-648","name":"tel_ouvert","type":0,"value":"0"}]}

View file

@ -22,6 +22,7 @@ shadow=false
[definitions]
color="#ffffffff"
show_glossary=false
[name]

View file

@ -0,0 +1,31 @@
[settings]
name="theme_question"
[buttons]
use_background_color=false
background_color="#ff3c7c11"
text_color="#ff30c3f0"
use_native=true
[box]
size=Vector2( 1800, 200 )
[text]
margin=Vector2( 40, 20 )
alignment="Left"
shadow=false
[definitions]
color="#ffffffff"
[name]
image_visible=true
auto_color=true
shadow_visible=true
modulation=false

View file

@ -1 +0,0 @@
{"events":[{"background":"res://backgrounds/bureauGroupe-2.jpg"},{"set_theme":"theme-1616657657.cfg"},{"options":[],"question":"Il est 10 heures, ce ne serait pas l'heure de la pause ?"},{"choice":"oui, j'ai soif !"},{"choice":"un petit café ne me ferait pas de mal"},{"choice":"Je vais voir mes merveilleux collègues !"},{"endbranch":""},{"change_timeline":"timeline-1616657347.json"}],"metadata":{"dialogic-version":"1.1","file":"timeline-1616656510.json","name":"question-cafe"}}

View file

@ -1 +1 @@
{"events":[{"background":"res://backgrounds/coffeeRoom.jpg"},{"action":"join","character":"character-1616658373.json","portrait":"","position":{"0":false,"1":true,"2":false,"3":false,"4":false}},{"character":"","portrait":"","text":"Vous arrivez à la machine à café, Evelyne est déjà là"},{"definition":"1616657225-648","set_value":"5"},{"emit_signal":"value increment 10"},{"character":"character-1616658373.json","portrait":"","text":"Coucou !\nMoi cest Evelyne, je suis dans ton service!\nJai hâte de travailler avec toi, nous allons faire de belles choses ensemble !\nJai entendu que le boss tavais mis sur le projet du nouveau téléphone.\nCest un gros projet pour commencer."},{"character":"character-1616658355.json","portrait":"","text":"Ouais cest super mais ça me met la pression.\nEn plus je dois essayer de me démarquer des téléphones des autres entreprises en ajoutant de nouvelles fonctionnalités."},{"character":"character-1616658373.json","portrait":"","text":"Justement je voulais te parler dun truc que jai en tête depuis un moment, je nai jamais eu loccasion de le mettre en application, mais ton projet est parfait pour ça.\nAs-tu déjà entendu parlé du recyclage de pièces de téléphone ?"},{"options":[],"question":"Le recyclage, ça vous dit quelquechose ?"},{"choice":"Très brièvement…"},{"choice":"On m'en a parlé un peu"},{"character":"character-1616658355.json","portrait":"","text":"Quelquun men a parlé il y a longtemps mais je ne men souviens pas vraiment … "},{"endbranch":""},{"character":"character-1616658373.json","portrait":"","text":"En gros, contrairement aux derniers modèles de téléphones, le principe est que ton téléphone est démontable.\nDu coup, si tu as un problème sur une certaine pièce, comme la batterie, tu peux simplement la changer.\nÇa évite de devoir faire réparer ton téléphone entier ou den racheter un nouveau.\nTu peux imaginer léconomie que tu fais non seulement pour ton porte-monnaie, mais aussi pour la planète.\nSi tu lappliques pour ton projet ça permettrait de donner une image éco-responsable de lentreprise mais aussi de te démarquer de toutes ces marques qui poussent à la surconsommation."},{"options":[],"question":"Qu'en pensez vous ?"},{"choice":"Cest vrai que cest intéressant je vais y réfléchir!"},{"character":"character-1616658373.json","portrait":"","text":"Super !"},{"choice":"Mouais…"},{"character":"character-1616658373.json","portrait":"","text":"Réfléchis-y, c'est important !"},{"endbranch":""},{"character":"character-1616658373.json","portrait":"","text":"Bon courage et à une prochaine pause café !"},{"action":"leaveall","character":"[All]"},{"wait_seconds":0},{"change_timeline":"timeline-1616659153.json"}],"metadata":{"dialogic-version":"1.1","file":"timeline-1616657347.json","name":"info-evelyne"}}
{"events":[{"background":"res://backgrounds/coffeeRoom.jpg"},{"action":"join","character":"character-1616658373.json","portrait":"","position":{"0":false,"1":true,"2":false,"3":false,"4":false}},{"character":"character-1616658373.json","portrait":"","text":"Coucou ! Moi cest Evelyne, je suis dans ton service!\nJai hâte de travailler avec toi, nous allons faire de belles choses ensemble !\nJai entendu que le boss tavais mis sur le projet du nouveau téléphone. Cest un gros projet pour commencer."},{"character":"character-1616658355.json","portrait":"","text":"Oui cest super mais ça me met la pression. En plus je dois essayer de me démarquer des téléphones des autres entreprises en ajoutant de nouvelles fonctionnalités."},{"character":"character-1616658373.json","portrait":"","text":"Justement , tu pourrais laisser la possibilité à lutilisateur de pouvoir ouvrir le téléphone. "},{"character":"character-1616658373.json","options":[],"portrait":"","question":"Si tu veux je peux te donner plus dinformations, je connais bien ce sujet."},{"choice":"Pourquoi pas","condition":"","definition":"","value":""},{"character":"character-1616658355.json","portrait":"","text":"Dis moi tout !"},{"character":"character-1616658373.json","portrait":"","text":"Si tu as un problème sur une certaine pièce, comme la batterie, tu peux simplement la changer au lieu den racheter un nouveau. \nTu peux imaginer léconomie que tu fais non seulement pour ton porte-monnaie, mais aussi pour la planète. \nSi tu lappliques pour ton projet ça permettrait de donner une image éco-responsable à lentreprise mais aussi de te démarquer de toutes ces marques qui poussent à la surconsommation."},{"choice":"Jai du travail","condition":"","definition":"","value":""},{"character":"character-1616658355.json","portrait":"","text":"Je nai pas vraiment le temps, il faut que je retourne travailler."},{"character":"character-1616658373.json","options":[],"portrait":"","question":"Ça ne durera pas longtemps, promis !"},{"choice":"Je técoute !","condition":"","definition":"","value":""},{"character":"character-1616658355.json","portrait":"","text":"Ok, dis-moi tout."},{"character":"character-1616658373.json","portrait":"","text":"Si tu as un problème sur une certaine pièce, comme la batterie, tu peux simplement la changer au lieu den racheter un nouveau. \nTu peux imaginer léconomie que tu fais non seulement pour ton porte-monnaie, mais aussi pour la planète. "},{"choice":"Je nai vraiment pas le temps.","condition":"","definition":"","value":""},{"character":"character-1616658355.json","portrait":"","text":"Excuse moi, mais je nai vraiment pas le temps. Je retourne travailler, à la prochaine."},{"character":"character-1616658373.json","portrait":"","text":"Daccord, bon courage."},{"endbranch":""},{"endbranch":""},{"action":"join","character":"character-1616658435.json","mirror":false,"portrait":"Default","position":{"0":false,"1":false,"2":false,"3":true,"4":false}},{"character":"character-1616658435.json","portrait":"","text":"Salut toi ! Bienvenue parmi nous. Tu viens doù mon ami ?"},{"character":"character-1616658355.json","portrait":"","text":"Oh rien doriginal jarrive tout droit de la région parisienne et toi ?"},{"character":"character-1616658435.json","portrait":"","text":"Alors … Cest compliqué … Je crois que je suis suisse."},{"character":"character-1616658355.json","portrait":"","text":"Tu crois ?"},{"character":"character-1616658435.json","portrait":"","text":"Je ne suis pas sûr… Bienvenue parmi nous !"},{"action":"leaveall","character":"[All]"},{"wait_seconds":1},{"change_timeline":"timeline-1618912317.json"}],"metadata":{"dialogic-version":"1.1","file":"timeline-1616657347.json","name":"1_1_info-cafe"}}

View file

@ -1 +0,0 @@
{"events":[{"background":"res://backgrounds/bureauGroupe-2.jpg"},{"character":"","portrait":"","text":"Vous vous dirigez vers votre bureau"},{"action":"join","character":"character-1616658435.json","portrait":"","position":{"0":false,"1":false,"2":false,"3":true,"4":false}},{"character":"character-1616658435.json","portrait":"","text":"Salut toi ! Bienvenue parmi nous. Tu viens doù mon ami ?"},{"character":"character-1616658355.json","portrait":"","text":"Oh rien doriginal je viens de région parisienne et toi ?"},{"character":"character-1616658435.json","portrait":"","text":"Alors … Cest compliqué … Je crois que je suis suisse."},{"character":"character-1616658355.json","portrait":"","text":"Tu crois ?"},{"character":"character-1616658435.json","portrait":"","text":"Je ne suis pas sûr … Bisous ! Bienvenue parmi nous"},{"action":"leaveall","character":"[All]"},{"change_timeline":"timeline-1616659608.json"}],"metadata":{"dialogic-version":"1.1","file":"timeline-1616659153.json","name":"merde-patrick-1"}}

View file

@ -1 +1 @@
{"events":[{"change_timeline":"timeline-1617871263.json"}],"metadata":{"dialogic-version":"1.1","file":"timeline-1616659306.json","name":"_start"}}
{"events":[{"change_timeline":"timeline-1618911641.json"}],"metadata":{"dialogic-version":"1.1","file":"timeline-1616659306.json","name":"0_start"}}

View file

@ -1 +0,0 @@
{"events":[{"background":"res://backgrounds/bureauPerso.jpg"},{"character":"","portrait":"","text":"Vous arrivez à votre bureau."},{"action":"join","character":"character-1616658471.json","portrait":"","position":{"0":false,"1":false,"2":true,"3":false,"4":false}},{"character":"","portrait":"","text":"Vous avez reçu un mail du Boss !"},{"options":[],"question":"Le lire ?"},{"choice":"oui"},{"choice":"non"},{"character":"","portrait":"","text":"C'est un mail du Boss, il faudrait le lire quand même."},{"endbranch":""},{"character":"character-1616658471.json","portrait":"","text":"Bonjour\nJespère que tout se passe bien pour vous au sein de notre entreprise.\nJe viens vers vous pour vous rappeler que votre premier projet est le développement dun nouveau téléphone portable.\nCe projet est dune très grande importance pour lentreprise et représente un très grand investissement.\nEn effet, il sera difficile pour lentreprise de survivre à un échec commercial de ce produit. \nCest pourquoi, il est vital que le projet soit non seulement un succès, mais également quil nous crée une clientèle nombreuse et fidèle.\nSi nous arrivons à fidéliser nos clients à notre téléphone, nous nous assurons un succès pour de possibles futures nouvelles versions de ce dernier.\nDès lors quil deviendra obsolète, ou encore si ses composants sabîment, ces mêmes clients n'hésiteront pas à acheter la nouvelle version.\nJespère que vous mesurez donc limportance de la réussite de ce projet et des impacts que cela pourrait avoir sur le chiffre d'affaires de lentreprise.\nCordialement, The boss."},{"action":"leaveall","character":"[All]"},{"change_timeline":"timeline-1616659917.json"}],"metadata":{"dialogic-version":"1.1","file":"timeline-1616659608.json","name":"mail-ouverture"}}

View file

@ -1 +1 @@
{"events":[{"background":"res://backgrounds/bureauPerso.jpg"},{"action":"join","character":"character-1616658435.json","portrait":"","position":{"0":false,"1":true,"2":false,"3":false,"4":false}},{"character":"character-1616658435.json","portrait":"","text":"Tu savais que lescargot le plus gros du monde peut peser jusquà 1,5 kg ?"},{"character":"character-1616658355.json","portrait":"","text":"Oh cest toi ! Tu mas fait peur... Mais non je ne savais pas cest impressionnant !"},{"character":"character-1616658435.json","portrait":"","text":"Tu te coucheras moins bête ce soir !\nBisous !\nÀ plus dans le bus !"},{"action":"leaveall","character":"[All]"},{"wait_seconds":1},{"character":"character-1616658355.json","portrait":"","text":"Étrange collègue ce Patrick."},{"change_timeline":"timeline-1616660188.json"}],"metadata":{"dialogic-version":"1.1","file":"timeline-1616659917.json","name":"merde-patrick-2"}}
{"events":[{"background":"res://backgrounds/bureauPerso.jpg"},{"action":"join","character":"character-1616658435.json","portrait":"","position":{"0":false,"1":true,"2":false,"3":false,"4":false}},{"character":"character-1616658435.json","portrait":"","text":"Tu savais que lescargot le plus gros du monde peut peser jusquà 1,5 kg ?"},{"character":"character-1616658355.json","portrait":"","text":"Oh cest toi ! Tu mas fait peur... Mais non je ne savais pas cest impressionnant !"},{"character":"character-1616658435.json","portrait":"","text":"Tu te coucheras moins bête ce soir !"},{"action":"leaveall","character":"[All]"},{"wait_seconds":1},{"change_timeline":"timeline-1616660188.json"}],"metadata":{"dialogic-version":"1.1","file":"timeline-1616659917.json","name":"1_1_patrick_1"}}

View file

@ -1 +1 @@
{"events":[{"background":"res://backgrounds/bureauPerso.jpg"},{"action":"join","character":"character-1616660196.json","portrait":"","position":{"0":false,"1":false,"2":true,"3":false,"4":false}},{"character":"","portrait":"","text":"Vous avez reçu une notification dun article parlant du recyclage des pièces en cas de panne des téléphones."},{"character":"character-1616660196.json","portrait":"","text":"Le dépannage représente également une alternative idéale au gaspillage généré par la consommation excessive dappareils électroniques.\nDe plus en plus denseignes se consacrent à la réparation de smartphones et/ou commercialisent des pièces de rechange.\n Si auparavant, la plupart des utilisateurs de smartphones laissaient leur appareil à labandon suite à une panne quelconque, le constat nest plus le même aujourdhui.\nEn effet, les pièces de rechange, majoritairement issus du processus de recyclage, sont vendues à des prix très abordables.\nFace à la concurrence grandissante dans le domaine du dépannage de mobile, le coût des services est à la baisse.\nAu plus grand profit des utilisateurs de smartphones.\nFaire réparer son smartphone constitue une alternative plus économique que dinvestir dans lacquisition dun nouvel appareil. "},{"action":"leaveall","character":"[All]"},{"change_timeline":"timeline-1616660446.json"}],"metadata":{"dialogic-version":"1.1","file":"timeline-1616660188.json","name":"notification-1"}}
{"events":[{"background":"res://backgrounds/bureauPerso.jpg"},{"action":"join","character":"character-1616660196.json","portrait":"","position":{"0":false,"1":false,"2":true,"3":false,"4":false}},{"character":"character-1616660196.json","portrait":"","text":"Vous avez reçu une notification dun article parlant du recyclage des pièces en cas de panne des téléphones."},{"character":"character-1616660196.json","portrait":"","text":"Le dépannage représente une alternative idéale au gaspillage généré par la consommation excessive dappareils électroniques. \nDe plus en plus denseignes se consacrent à la réparation de smartphones et/ou commercialisent des pièces de rechange. "},{"character":"character-1616660196.json","options":[],"portrait":"","question":"Ces dernières, majoritairement issues du processus de recyclage, sont vendues à des prix très abordables. "},{"choice":"Je ny avais pas pensé","condition":"","definition":"","value":""},{"character":"character-1616660196.json","portrait":"","text":"Face à la concurrence grandissante dans le domaine du dépannage de mobile, le coût des services est à la baisse. \nFaire réparer son smartphone constitue donc une alternative plus économique que dinvestir dans lacquisition dun nouvel appareil. "},{"choice":"Pas très utile","condition":"","definition":"","value":""},{"character":"character-1616658355.json","portrait":"","text":"Ça ne me sert à rien, jarrête de lire."},{"endbranch":""},{"action":"leaveall","character":"[All]"},{"wait_seconds":1},{"change_timeline":"timeline-1616660446.json"}],"metadata":{"dialogic-version":"1.1","file":"timeline-1616660188.json","name":"1_1_notification_1"}}

View file

@ -1 +1 @@
{"events":[{"background":"res://backgrounds/bureauPerso.jpg"},{"action":"join","character":"character-1616658403.json","portrait":"","position":{"0":false,"1":true,"2":false,"3":false,"4":false}},{"character":"","portrait":"","text":"Une personne rentre dans votre bureau..."},{"character":"character-1616658403.json","portrait":"","text":"Salut ça va ?\n Bienvenue !\nJe mappelle Jean-Michel.\nDis moi, t'as déjà une idée de design pour le téléphone ?"},{"options":[],"question":"Avez vous une idée ?"},{"choice":"Pas vraiment"},{"choice":"Quelques unes"},{"endbranch":""},{"character":"character-1616658403.json","portrait":"","text":"De mon côté jai plein didées de designs vraiment cools qui pourraient plaire à tout le monde.\nEn plus, ça prendrait en compte toutes les fonctionnalités que le téléphone aura, comme un lecteur dempreintes digitales."},{"character":"character-1616658355.json","portrait":"","text":"Super !\nPar contre, Evelyne ma parlé dune idée qui me plait et je sais pas si ça serait compatible avec tes designs."},{"character":"character-1616658403.json","portrait":"","text":"Houla !\nCest quoi cette idée encore ?"},{"character":"character-1616658355.json","portrait":"","text":"Elle ma parlé du fait de pouvoir ouvrir le téléphone et donc que la coque soit amovible..."},{"character":"character-1616658403.json","portrait":"","text":"Mais tu ne peux pas faire ça !\nLes designs différents cest ce qui fera que le téléphone se distinguera des autres.\nPareil pour les fonctionnalités !\nToutes les marques concurrentes ont un lecteur dempreintes.\nAvec cette modification, impossible de faire ça, et les utilisateurs diront que nous sommes à la traîne au niveau des technologies utilisées."},{"options":[],"question":"Qu'en pensez vous ?"},{"choice":"Tu nas pas tord"},{"choice":"Je ny ai pas encore réfléchi"},{"endbranch":""},{"character":"character-1616658403.json","portrait":"","text":"Fais attention des décisions comme celles-ci pourraient avoir de grandes conséquences pour lentreprise…\nBonnes ou mauvaises !"},{"action":"leaveall","character":"[All]"},{"wait_seconds":0},{"change_timeline":"timeline-1616660984.json"}],"metadata":{"dialogic-version":"1.1","file":"timeline-1616660446.json","name":"info-jm"}}
{"events":[{"background":"res://backgrounds/bureauPerso.jpg"},{"action":"join","character":"character-1616658403.json","portrait":"","position":{"0":false,"1":true,"2":false,"3":false,"4":false}},{"character":"character-1616658403.json","portrait":"","text":"Salut ça va ?\nBienvenue ! Je mappelle Jean-Michel. "},{"character":"character-1616658403.json","options":[],"portrait":"","question":"Dis-moi, t'as déjà une idée de design pour le téléphone ?"},{"choice":"Pas vraiment","condition":"","definition":"","value":""},{"character":"character-1616658403.json","portrait":"","text":"Ben jai plein didées de designs vraiment cools qui pourraient plaire à tout le monde.\nEn plus, ça prendrait en compte toutes les fonctionnalités du téléphone, comme un lecteur dempreintes digitales."},{"choice":"Jai quelques idées","condition":"","definition":"","value":""},{"character":"character-1616658355.json","portrait":"","text":"Javais pensé à une coque transparente, je pense que ça pourrait plaire aux utilisateurs.\nOu bien faire une gamme de différentes couleurs, afin que chacun y trouve son compte.\nMais bon, rien nest fixé pour le moment."},{"character":"character-1616658403.json","portrait":"","text":"Ok cest intéressant, de mon côté, jai aussi plein didées de designs vraiment cools qui pourraient plaire à tout le monde. \nEn plus, ça prendrait en compte toutes les fonctionnalités du téléphone, comme un lecteur dempreintes digitales."},{"endbranch":""},{"character":"character-1616658355.json","portrait":"","text":"Ah ben écoute super ! \nPar contre, jai discuté avec Evelyne de la possibilité douvrir le téléphone, et donc que la coque soit amovible.\nJe ne sais pas si ça serait compatible avec tes designs."},{"character":"character-1616658403.json","portrait":"","text":"Mais tu peux pas faire ça ! "},{"character":"character-1616658355.json","portrait":"","text":"Pourquoi pas ?"},{"character":"character-1616658403.json","portrait":"","text":"Les designs différents cest ce qui fera que le téléphone se distinguera des autres. \nPareil pour les fonctionnalités ! \nToutes les marques concurrentes ont un lecteur dempreintes. \nAvec cette modification, impossible de faire ça, et les utilisateurs diront que nous sommes à la traîne au niveau des technologies utilisées."},{"character":"","options":[],"portrait":"","question":"Qu'en pensez vous ?"},{"choice":"Tu nas pas tord","condition":"","definition":"","value":""},{"character":"character-1616658403.json","portrait":"","text":"Ravi de constater que nous sommes sur la même longueur donde."},{"choice":"Cest une bonne idée pourtant.","condition":"","definition":"","value":""},{"choice":"Je dois y réfléchir...","condition":"","definition":"","value":""},{"endbranch":""},{"character":"character-1616658403.json","portrait":"","text":"Fais attention des décisions comme celles-ci pourraient avoir de grandes conséquences pour lentreprise… Bonnes ou mauvaises !"},{"action":"leaveall","character":"[All]"},{"wait_seconds":1},{"change_timeline":"timeline-1616660984.json"}],"metadata":{"dialogic-version":"1.1","file":"timeline-1616660446.json","name":"1_1_info_jm"}}

View file

@ -1 +1 @@
{"events":[{"background":"res://backgrounds/bureauPerso.jpg"},{"action":"join","character":"character-1616658471.json","portrait":"","position":{"0":false,"1":false,"2":true,"3":false,"4":false}},{"character":"","portrait":"","text":"Vous avez reçu un mail !"},{"character":"character-1616658471.json","portrait":"","text":"Bravo !\nVous êtes le gagnant de la tombola de lécole maternelle des coquelicots en fleurs !\nVous avez gagné un jambon entier félicitations ! \nPour récupérer votre prix, veuillez vous présenter au bureau de la directrice.\nLassociation des parents délèves des coquelicots."},{"options":[],"question":"..."},{"choice":"C'est dommage je suis végétarien..."},{"character":"character-1616658355.json","portrait":"","text":"J'en parlerai à la directrice."},{"choice":"Miam !"},{"character":"character-1616658355.json","portrait":"","text":"Tous ces apéros en perspective !\nJe vais me régaler."},{"endbranch":""},{"action":"leaveall","character":"[All]"},{"wait_seconds":1},{"change_timeline":"timeline-1616661304.json"}],"metadata":{"dialogic-version":"1.1","file":"timeline-1616660984.json","name":"merde-mail-1"}}
{"events":[{"background":"res://backgrounds/bureauPerso.jpg"},{"action":"join","character":"character-1616658471.json","portrait":"","position":{"0":false,"1":false,"2":true,"3":false,"4":false}},{"character":"","options":[],"portrait":"","question":"Nouveau mail de lécole maternelle des coquelicots en fleurs ! Le lire ?"},{"choice":"Oui","condition":"","definition":"","value":""},{"character":"character-1616658471.json","portrait":"","text":"Tu es le gagnant de la tombola de lécole maternelle des coquelicots en fleurs ! \nTu as gagné un jambon entier, félicitations ! \nPour récupérer votre prix, veuillez vous présenter au bureau de la directrice."},{"character":"character-1616658471.json","options":[],"portrait":"","question":"Lassociation des parents délèves des coquelicots."},{"choice":"C'est dommage je suis végétarien...","condition":"","definition":"","value":""},{"character":"character-1616658355.json","portrait":"","text":"J'en parlerai à la directrice."},{"choice":"Miam !","condition":"","definition":"","value":""},{"character":"character-1616658355.json","portrait":"","text":"Tous ces apéros en perspective!"},{"endbranch":""},{"choice":"Non","condition":"","definition":"","value":""},{"endbranch":""},{"action":"leaveall","character":"[All]"},{"wait_seconds":1},{"change_timeline":"timeline-1616661304.json"}],"metadata":{"dialogic-version":"1.1","file":"timeline-1616660984.json","name":"1_1_junk_mail_1"}}

View file

@ -1 +1 @@
{"events":[{"background":"res://backgrounds/bureauPerso.jpg"},{"character":"","portrait":"","text":"C'est l'heure de passer au travail !\nIl est temps de décider du design du téléphone.\nVoulez vous permettre l'ouverture du téléphone ?\nOu plutot le verrouiller ? "},{"options":[],"question":"Téléphone verrouillé ou ouvert ?"},{"choice":"Ouvert"},{"character":"character-1616658355.json","portrait":"","text":"Un téléphone ouvert me semble être la meilleure solution.\nJe vais voir ce que mes collègues en pensent, je suis sûr qu'Evelyne me soutiendra !"},{"definition":"1616657225-648","set_value":"1"},{"choice":"Verrouillé"},{"character":"character-1616658355.json","portrait":"","text":"Un téléphone verrouillé me semble être la meilleure solution.\nJe vais voir ce que mes collègues en pensent, je suis sûr que Jean-Michel sera ravi !"},{"definition":"1616657225-648","set_value":"0"},{"endbranch":""},{"character":"","portrait":"","text":"Vous annoncez votre décision par mail à vos collègues.\nVous les rejoignez ensuite dans la salle de réunion."},{"wait_seconds":1},{"condition":"==","definition":"1616657225-648","value":"1"},{"change_timeline":"timeline-1616661658.json"},{"endbranch":""},{"condition":"==","definition":"1616657225-648","value":"0"},{"change_timeline":"timeline-1616661685.json"},{"endbranch":""}],"metadata":{"dialogic-version":"1.1","file":"timeline-1616661304.json","name":"question-tel-ouvert"}}
{"events":[{"background":"res://backgrounds/bureauPerso.jpg"},{"action":"join","character":"character-1618911589.json","mirror":false,"portrait":"Default","position":{"0":false,"1":false,"2":true,"3":false,"4":false}},{"character":"character-1618911589.json","portrait":"","text":"C'est l'heure de faire un choix ! Vous devez décider si le prochain modèle de téléphone laissera la possibilité à l'utilisateur de l'ouvrir, ou sera verrouillé."},{"set_theme":"theme-1618913551.cfg"},{"character":"character-1618911589.json","options":[],"portrait":"","question":"Souhaitez-vous fermer le téléphone à l'utilisateur ou le laisser ouvert ?"},{"choice":"Ouvert","condition":"","definition":"","value":""},{"character":"character-1616658355.json","portrait":"","text":"Un téléphone ouvert me semble être la meilleure solution.\nJe vais voir ce que mes collègues en pensent, je suis sûr qu'Evelyne me soutiendra !"},{"definition":"1616657225-648","set_value":"1"},{"choice":"Verrouillé","condition":"","definition":"","value":""},{"character":"character-1616658355.json","portrait":"","text":"Un téléphone verrouillé me semble être la meilleure solution.\nJe vais voir ce que mes collègues en pensent, je suis sûr que Jean-Michel sera ravi !"},{"definition":"1616657225-648","set_value":"0"},{"endbranch":""},{"character":"character-1618911589.json","portrait":"","text":"Vous annoncez votre décision par mail à vos collègues.\nVous les rejoignez ensuite dans la salle de réunion."},{"wait_seconds":1},{"set_theme":"theme-1616657657.cfg"},{"condition":"==","definition":"1616657225-648","value":"1"},{"change_timeline":"timeline-1616661658.json"},{"endbranch":""},{"condition":"==","definition":"1616657225-648","value":"0"},{"change_timeline":"timeline-1616661685.json"},{"endbranch":""}],"metadata":{"dialogic-version":"1.1","file":"timeline-1616661304.json","name":"1_1_question_tel_ouvert"}}

View file

@ -1 +1 @@
{"events":[{"background":"res://backgrounds/meetingRoom.jpg"},{"action":"join","character":"character-1616658403.json","portrait":"","position":{"0":false,"1":true,"2":false,"3":false,"4":false}},{"character":"","portrait":"","text":"Test"},{"character":"character-1616658403.json","portrait":"","text":"On peut discuter une minute ?"},{"character":"character-1616658355.json","portrait":"","text":"Euh oui pas de soucis quest ce quil se passe ?"},{"character":"character-1616658403.json","portrait":"","text":"Je viens dapprendre que ton projet vient dêtre validé mais que cest le projet de développer un téléphone que lutilisateur peut ouvrir !\nTu as une idée des répercussions sur lentreprise que cela va avoir ?\nLentreprise va perdre beaucoup dargent à laisser la possibilité aux gens de réparer leurs téléphones en leur laissant laccès aux composants !\nEt toutes les idées dont je tavais parlé de technologies innovantes et de designs incroyables sont réduits à néant !\nFranchement je ne sais pas ce qui tes passé par la tête mais ça me laisse sans voix …\nSur ce je nai plus rien à dire au revoir."},{"action":"join","character":"character-1616658373.json","portrait":"","position":{"0":false,"1":false,"2":false,"3":true,"4":false}},{"character":"character-1616658373.json","portrait":"","text":"Re-bonjour ! Quelle belle journée aujourdhui !\nJai appris que tu avais repris mon idée de pouvoir ouvrir le téléphone dans ton projet de développement.\nCest une sage décision qui va engendrer tellement de choses positives pour lentreprise.\nCest le début dune nouvelle ère technologique responsable, crois moi !\nOui au recyclage et oui à la seconde vie des appareils !"},{"character":"character-1616658355.json","portrait":"","text":"Je suis content que ce projet provoque un tel enthousiasme en toi !"},{"action":"join","character":"character-1616658435.json","portrait":"","position":{"0":true,"1":false,"2":false,"3":false,"4":false}},{"character":"character-1616658435.json","portrait":"","text":"Il se passe quoi ici ?"},{"character":"character-1616658355.json","portrait":"","text":"Tu n'as pas vu mon mail ?"},{"character":"character-1616658435.json","portrait":"","text":"Ah non.."},{"wait_seconds":1},{"character":"character-1616658435.json","portrait":"","text":"J'ai perdu mon mot de passe\n...\n..."},{"wait_seconds":1},{"action":"leaveall","character":"character-1616658435.json"},{"character":"character-1616658373.json","portrait":"","text":"...\nBon\nEn tout cas je suis ravie de ton choix !\nJe te laisse jai une réunion dans 10 min à bientôt !"},{"action":"leaveall","character":"[All]"},{"change_timeline":"timeline-1616662258.json"}],"metadata":{"dialogic-version":"1.1","file":"timeline-1616661658.json","name":"conseq-tel-ouvert-1"}}
{"events":[{"background":"res://backgrounds/meetingRoom.jpg"},{"action":"join","character":"character-1616658403.json","portrait":"","position":{"0":false,"1":true,"2":false,"3":false,"4":false}},{"character":"character-1616658403.json","portrait":"","text":"On peut discuter une minute ?"},{"character":"character-1616658355.json","portrait":"","text":"Euh oui pas de soucis quest ce quil se passe ?"},{"character":"character-1616658403.json","portrait":"","text":"Je viens dapprendre que ton projet vient dêtre validé mais que tu as gardé loption de développer un téléphone que lutilisateur peut ouvrir ! \nTu as une idée des répercussions sur lentreprise que cela va avoir ? \nOn va perdre beaucoup dargent cette année à laisser la possibilité aux clients de réparer leur téléphone sils ont accès aux composants ! "},{"character":"character-1616658355.json","portrait":"","text":"Pas forcément, lentreprise peut élargir son activité à la fabrication de ces composants."},{"character":"character-1616658403.json","portrait":"","text":"Et tu crois que ça ne va pas coûter cher ?\nEt toutes les idées de design dont je tavais parlé sont réduites à néant ! \nFranchement je ne sais pas ce qui test passé par la tête mais ça me laisse sans voix … \nSur ce je nai plus rien à dire au revoir."},{"action":"leaveall","character":"character-1616658403.json"},{"wait_seconds":0.1},{"action":"join","character":"character-1616658373.json","portrait":"","position":{"0":false,"1":false,"2":false,"3":true,"4":false}},{"character":"character-1616658373.json","portrait":"","text":"Bonjour ! Quelle belle journée aujourdhui !"},{"character":"character-1616658355.json","portrait":"","text":"Bonjour !"},{"character":"character-1616658373.json","portrait":"","text":"Jai appris que tu avais choisi de pouvoir ouvrir le téléphone dans ton projet de développement. \nCest une sage décision qui va engendrer tellement de choses positives pour lentreprise. \nCest le début dune nouvelle ère technologique responsable, crois moi !\nOui au recyclage et oui à la seconde vie des appareils !"},{"character":"character-1616658355.json","portrait":"","text":"Je suis content que ce projet provoque un tel enthousiasme en toi !"},{"character":"character-1616658373.json","portrait":"","text":"Je suis ravie ! Je te laisse jai une réunion dans 10 minutes à bientôt !"},{"action":"leaveall","character":"[All]"},{"wait_seconds":1},{"change_timeline":"timeline-1616662258.json"}],"metadata":{"dialogic-version":"1.1","file":"timeline-1616661658.json","name":"1_1_tel_ouvert_1"}}

View file

@ -1 +1 @@
{"events":[{"background":"res://backgrounds/meetingRoom.jpg"},{"action":"join","character":"character-1616658471.json","portrait":"","position":{"0":false,"1":false,"2":true,"3":false,"4":false}},{"character":"","portrait":"","text":"Vous avez reçu un mail du Boss !"},{"character":"character-1616658471.json","portrait":"","text":"Bonjour,\nJe souhaitais vous féliciter concernant votre projet de téléphone.\nJai récemment appris que vous aviez hésité concernant la possibilité douvrir le téléphone ou non.\nSachez que je suis plus que satisfait de votre choix.\nEn effet, le fait davoir fermé le téléphone nous permettra daugmenter notre chiffre daffaires de manière significative.\nDune part grâce à de nouveaux designs innovants et attractifs, mais également grâce à une fidélisation de la clientèle, je ne peux quapprouver votre choix.\nContinuez sur cette lancée !\nEn vous souhaitant une bonne journée.\nCordialement, The boss"},{"action":"leaveall","character":"character-1616658471.json"},{"wait_seconds":1},{"action":"join","character":"character-1616658373.json","portrait":"","position":{"0":false,"1":true,"2":false,"3":false,"4":false}},{"character":"character-1616658373.json","portrait":"","text":"Re\nJe croyais que tu avais compris ce que je tavais dit concernant le recyclage des composants des téléphones.\nEn fermant le téléphone, tu condamnes les utilisateurs à devoir changer leur téléphone au moindre problème.\nEn faisant ceci, tu deviens partisan de la surconsommation et donc de la pollution de notre planète.\nTu crois que le chiffre daffaires de lentreprise importera quand nous naurons même plus un endroit où vivre ?"},{"action":"join","character":"character-1616658403.json","portrait":"","position":{"0":false,"1":false,"2":false,"3":true,"4":false}},{"character":"character-1616658403.json","portrait":"","text":"Hey !\nUn petit golf samedi ?"},{"character":"character-1616658373.json","portrait":"","text":"Tu permets ?\nNous sommes en pleine discussion."},{"character":"character-1616658403.json","portrait":"","text":"Okay, faut pas être tendue comme ça..."},{"action":"leaveall","character":"character-1616658403.json"},{"character":"character-1616658373.json","portrait":"","text":"Bref\nJe te laisse réfléchir à ça je dois y aller il me reste 1h de pause je vais aller courir un peu…"},{"action":"leaveall","character":"[All]"},{"change_timeline":"timeline-1616662258.json"}],"metadata":{"dialogic-version":"1.1","file":"timeline-1616661685.json","name":"conseq-tel-ouvert-2"}}
{"events":[{"background":"res://backgrounds/meetingRoom.jpg"},{"action":"join","character":"character-1616658471.json","portrait":"","position":{"0":false,"1":false,"2":true,"3":false,"4":false}},{"character":"character-1616658471.json","portrait":"","text":"Vous avez reçu un mail du Boss !\nBonjour, je souhaitais vous féliciter concernant votre projet de téléphone. \nSachez que je suis plus que satisfait de votre choix. \nEn effet, le fait davoir fermé le téléphone nous permettra daugmenter notre chiffre d'affaires de manière significative dans les mois à venir. \nContinuez sur cette lancée !\nEn vous souhaitant une bonne journée. Cordialement, The boss"},{"action":"leaveall","character":"character-1616658471.json"},{"wait_seconds":1},{"action":"join","character":"character-1616658373.json","portrait":"","position":{"0":false,"1":true,"2":false,"3":false,"4":false}},{"character":"character-1616658373.json","portrait":"","text":"Salut, tas deux minutes ?"},{"character":"character-1616658355.json","portrait":"","text":"Euh …"},{"character":"character-1616658373.json","portrait":"","text":"Je croyais que tu avais compris ce que je tavais dit concernant le recyclage des composants. \nEn fermant le téléphone, tu condamnes les utilisateurs à devoir le changer au moindre problème.\nEn faisant ceci, tu deviens partisan de la surconsommation et donc de la pollution de notre planète. "},{"character":"character-1616658355.json","portrait":"","text":"Peut être, mais cela va permettre de nettement augmenter le chiffre d'affaires de lentreprise."},{"character":"character-1616658373.json","portrait":"","text":"Tu crois que notre chiffre d'affaires importera quand nous naurons même plus dendroit décent pour vivre ? \nJe te laisse réfléchir à ça je dois y aller il me reste une heure de pause je vais aller courir un peu…"},{"action":"leaveall","character":"[All]"},{"wait_seconds":1},{"change_timeline":"timeline-1616662258.json"}],"metadata":{"dialogic-version":"1.1","file":"timeline-1616661685.json","name":"1_1_tel_ouvert_2"}}

View file

@ -1 +1 @@
{"events":[{"wait_seconds":1},{"character":"","portrait":"","text":"Fin de la démo, merci d'avoir joué !"},{"action":"join","character":"character-1616658435.json","portrait":"","position":{"0":false,"1":false,"2":false,"3":false,"4":true}},{"character":"character-1616658435.json","portrait":"","text":"À bientôt dans l'métro !"},{"action":"leaveall","character":"[All]"}],"metadata":{"dialogic-version":"1.1","file":"timeline-1616662258.json","name":"_end"}}
{"events":[{"wait_seconds":1},{"character":"","portrait":"","text":"Fin de la démo, merci d'avoir joué !"},{"action":"leaveall","character":"[All]"}],"metadata":{"dialogic-version":"1.1","file":"timeline-1616662258.json","name":"0_end"}}

View file

@ -1 +0,0 @@
{"events":[{"background":"res://backgrounds/bureauGroupe-2.jpg"},{"action":"join","character":"character-1616658373.json","portrait":"","position":{"0":false,"1":true,"2":false,"3":false,"4":false}},{"character":"character-1616658373.json","portrait":"","text":"Hello"},{"emit_signal":"setup_minigame score _test_minigame_end _test_minigame_end2"},{"background":""},{"character":"character-1616658373.json","portrait":"","text":"I explain stuff"},{"emit_signal":"start_minigame"}],"metadata":{"dialogic-version":"1.1","file":"timeline-1617871263.json","name":"_test_minigame_start"}}

View file

@ -1 +0,0 @@
{"events":[{"action":"join","character":"character-1616658373.json","portrait":"","position":{"0":false,"1":false,"2":false,"3":true,"4":false}},{"character":"character-1616658373.json","portrait":"","text":"you lost"},{"character":"character-1616658373.json","options":[],"portrait":"","question":"Tu veux réessayer?"},{"choice":"Oui !","condition":"","definition":"","value":""},{"emit_signal":"setup_minigame score _test_minigame_end _test_minigame_end2"},{"background":""},{"emit_signal":"start_minigame"},{"choice":"Non","condition":"","definition":"","value":""},{"change_timeline":"timeline-1616661658.json"},{"endbranch":""}],"metadata":{"dialogic-version":"1.1","file":"timeline-1617874348.json","name":"_test_minigame_end"}}

View file

@ -1 +0,0 @@
{"events":[{"action":"join","character":"character-1616658435.json","mirror":false,"portrait":"Default","position":{"0":true,"1":false,"2":false,"3":false,"4":false}},{"character":"","portrait":"","text":"T'as gagné! Enfin je crois..."},{"action":"leaveall","character":"[All]"},{"change_timeline":"timeline-1616656510.json"}],"metadata":{"dialogic-version":"1.1","file":"timeline-1618851520.json","name":"_test_minigame_end2"}}

View file

@ -0,0 +1 @@
{"events":[{"background":"res://backgrounds/bureauGroupe-2.jpg"},{"character":"character-1618911589.json","portrait":"","text":"Votre entretien sest bien passé et vous avez eu le poste dans lentreprise.\nLe premier projet que votre patron vous confie est de participer à la création dun nouveau téléphone. \nVous allez travailler en collaboration avec trois de vos collègues : Jean-Michel, Evelyne et Patrick. "},{"character":"character-1616658355.json","portrait":"","text":"Il est 10h cest lheure de la pause !"},{"change_timeline":"timeline-1616657347.json"}],"metadata":{"dialogic-version":"1.1","file":"timeline-1618911641.json","name":"1_1_intro"}}

View file

@ -0,0 +1 @@
{"events":[{"background":"res://backgrounds/bureauPerso.jpg"},{"action":"join","character":"character-1616658471.json","mirror":false,"portrait":"Default","position":{"0":false,"1":false,"2":true,"3":false,"4":false}},{"character":"character-1616658471.json","options":[],"portrait":"","question":"Nouveau mail du Boss ! Le lire ?"},{"choice":"Oui","condition":"","definition":"","value":""},{"character":"character-1616658471.json","portrait":"","text":"Bonjour, Jespère que tout se passe bien pour vous au sein de notre entreprise. \nJe viens vers vous pour vous rappeler que votre premier projet est le développement dun nouveau téléphone portable. \nCe projet est dune très grande importance et représente un gros investissement."},{"character":"character-1616658471.json","options":[],"portrait":"","question":"En effet, il sera difficile pour lentreprise de survivre à léchec commercial de ce produit. "},{"choice":"Super, déjà des responsabilités !","condition":"","definition":"","value":""},{"character":"character-1616658471.json","portrait":"","text":"Ainsi, dès lors que le téléphone deviendra obsolète, ou si ses composants sabîment, nos clients n'hésiteront pas à racheter nos produits. \nJespère que vous mesurez limportance de la réussite de ce projet et de limpact que cela pourrait avoir sur le chiffre d'affaires de lentreprise.\nCordialement, The boss."},{"choice":"La pression... mieux vaut arrêter de lire","condition":"","definition":"","value":""},{"character":"character-1616658355.json","portrait":"","text":"Plus tard les mails"},{"endbranch":""},{"choice":"Non","condition":"","definition":"","value":""},{"character":"character-1616658355.json","options":[],"portrait":"","question":"C'est quand même un mail du boss..."},{"choice":"Oui mieux vaut le lire","condition":"","definition":"","value":""},{"character":"character-1616658471.json","portrait":"","text":"Bonjour, Jespère que tout se passe bien pour vous au sein de notre entreprise. \nJe viens vers vous pour vous rappeler que votre premier projet est le développement dun nouveau téléphone portable. \nCe projet est dune très grande importance et représente un gros investissement."},{"character":"character-1616658471.json","options":[],"portrait":"","question":"En effet, il sera difficile pour lentreprise de survivre à léchec commercial de ce produit. "},{"choice":"Super, déjà des responsabilités !","condition":"","definition":"","value":""},{"character":"character-1616658471.json","portrait":"","text":"Ainsi, dès lors que le téléphone deviendra obsolète, ou si ses composants sabîment, nos clients n'hésiteront pas à racheter nos produits. \nJespère que vous mesurez limportance de la réussite de ce projet et de limpact que cela pourrait avoir sur le chiffre d'affaires de lentreprise.\nCordialement, The boss."},{"choice":"La pression... mieux vaut arrêter de lire","condition":"","definition":"","value":""},{"character":"character-1616658355.json","portrait":"","text":"Plus tard les mails"},{"endbranch":""},{"choice":"Ce nest pas le moment","condition":"","definition":"","value":""},{"character":"character-1616658355.json","portrait":"","text":"Plus tard les mails"},{"endbranch":""},{"endbranch":""},{"change_timeline":"timeline-1616659917.json"}],"metadata":{"dialogic-version":"1.1","file":"timeline-1618912317.json","name":"1_1_mail_boss"}}

View file

@ -5,7 +5,7 @@ onready var mini_game = $MiniGame;
var dialogic_node;
func _ready():
dialogic_node = Dialogic.start('_start')
dialogic_node = Dialogic.start('0_start')
add_child_below_node($MiniGame, dialogic_node)
dialogic_node.connect('dialogic_signal', self, "_on_Dialogic_signal_received")