update dialogic
This commit is contained in:
parent
4cc560cb1c
commit
a79c4ba65b
12 changed files with 167 additions and 135 deletions
|
@ -6,10 +6,6 @@ var preview_scene = preload("res://addons/dialogic/Editor/Events/Common/Images/I
|
|||
var preview = "..."
|
||||
var image_picker
|
||||
|
||||
# This is the information of this event and it will get parsed and saved to the JSON file.
|
||||
var event_data = {
|
||||
'background': ''
|
||||
}
|
||||
|
||||
func _ready():
|
||||
image_picker = get_header()
|
||||
|
@ -17,10 +13,14 @@ func _ready():
|
|||
image_picker.editor_reference = editor_reference
|
||||
image_picker.connect("file_selected", self, "_on_file_selected")
|
||||
image_picker.connect("clear_pressed", self, "_on_clear_pressed")
|
||||
# Init the data
|
||||
event_data = {
|
||||
'background': ''
|
||||
}
|
||||
|
||||
|
||||
func load_data(data):
|
||||
event_data = data
|
||||
.load_data(data)
|
||||
load_image(event_data['background'])
|
||||
|
||||
|
||||
|
|
13
addons/dialogic/Editor/Events/Common/SecondsSelector.gd
Normal file
13
addons/dialogic/Editor/Events/Common/SecondsSelector.gd
Normal file
|
@ -0,0 +1,13 @@
|
|||
tool
|
||||
extends HBoxContainer
|
||||
|
||||
onready var spinbox := $SpinBox
|
||||
|
||||
signal value_changed(value)
|
||||
|
||||
func set_value(val: float):
|
||||
spinbox.value = val
|
||||
|
||||
|
||||
func _on_SpinBox_value_changed(value):
|
||||
emit_signal("value_changed", value)
|
37
addons/dialogic/Editor/Events/Common/SecondsSelector.tscn
Normal file
37
addons/dialogic/Editor/Events/Common/SecondsSelector.tscn
Normal file
|
@ -0,0 +1,37 @@
|
|||
[gd_scene load_steps=3 format=2]
|
||||
|
||||
[ext_resource path="res://addons/dialogic/Editor/Events/Common/SpinBoxPreventDnD.gd" type="Script" id=1]
|
||||
[ext_resource path="res://addons/dialogic/Editor/Events/Common/SecondsSelector.gd" type="Script" id=2]
|
||||
|
||||
[node name="SecondsSelector" type="HBoxContainer"]
|
||||
margin_right = 139.0
|
||||
margin_bottom = 28.0
|
||||
script = ExtResource( 2 )
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="SpinBox" type="SpinBox" parent="."]
|
||||
margin_right = 74.0
|
||||
margin_bottom = 28.0
|
||||
min_value = 0.1
|
||||
step = 0.1
|
||||
value = 1.0
|
||||
allow_greater = true
|
||||
align = 1
|
||||
script = ExtResource( 1 )
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="."]
|
||||
margin_left = 78.0
|
||||
margin_right = 141.0
|
||||
margin_bottom = 28.0
|
||||
mouse_filter = 1
|
||||
custom_constants/margin_left = 10
|
||||
|
||||
[node name="Title" type="Label" parent="MarginContainer"]
|
||||
margin_left = 10.0
|
||||
margin_top = 7.0
|
||||
margin_right = 63.0
|
||||
margin_bottom = 21.0
|
||||
text = "Seconds"
|
||||
[connection signal="value_changed" from="SpinBox" to="." method="_on_SpinBox_value_changed"]
|
|
@ -30,10 +30,17 @@ var indent_size = 25
|
|||
# Useful for making placeholder events in drag and drop
|
||||
var ignore_save = false
|
||||
|
||||
# This is the data that is going to be saved to json
|
||||
var event_data := {}
|
||||
|
||||
## *****************************************************************************
|
||||
## PUBLIC METHODS
|
||||
## *****************************************************************************
|
||||
|
||||
# Called when timeline editor loads
|
||||
func load_data(data):
|
||||
event_data = data
|
||||
|
||||
|
||||
func set_event_style(style: StyleBoxFlat):
|
||||
panel.set('custom_styles/panel', style)
|
||||
|
|
|
@ -6,6 +6,10 @@
|
|||
[ext_resource path="res://addons/dialogic/Images/Plugin/plugin-editor-icon-dark-theme.svg" type="Texture" id=6]
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id=1]
|
||||
content_margin_left = 0.0
|
||||
content_margin_right = 0.0
|
||||
content_margin_top = 0.0
|
||||
content_margin_bottom = 0.0
|
||||
bg_color = Color( 0.262745, 0.262745, 0.262745, 1 )
|
||||
border_width_left = 2
|
||||
border_width_top = 2
|
||||
|
@ -18,8 +22,8 @@ corner_radius_bottom_left = 6
|
|||
|
||||
[node name="EventTemplate" type="HBoxContainer"]
|
||||
anchor_right = 1.0
|
||||
margin_bottom = 44.0
|
||||
rect_min_size = Vector2( 0, 44 )
|
||||
margin_bottom = 42.0
|
||||
rect_min_size = Vector2( 0, 42 )
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 9
|
||||
__meta__ = {
|
||||
|
@ -32,7 +36,7 @@ margin_bottom = 64.0
|
|||
|
||||
[node name="PanelContainer" type="PanelContainer" parent="."]
|
||||
margin_right = 1024.0
|
||||
margin_bottom = 46.0
|
||||
margin_bottom = 42.0
|
||||
mouse_filter = 1
|
||||
mouse_default_cursor_shape = 6
|
||||
size_flags_horizontal = 3
|
||||
|
@ -40,10 +44,8 @@ size_flags_vertical = 3
|
|||
custom_styles/panel = SubResource( 1 )
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="PanelContainer"]
|
||||
margin_left = 2.0
|
||||
margin_top = 2.0
|
||||
margin_right = 1022.0
|
||||
margin_bottom = 44.0
|
||||
margin_right = 1024.0
|
||||
margin_bottom = 42.0
|
||||
mouse_filter = 1
|
||||
custom_constants/margin_right = 6
|
||||
custom_constants/margin_top = 6
|
||||
|
@ -53,13 +55,13 @@ custom_constants/margin_bottom = 6
|
|||
[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer/MarginContainer"]
|
||||
margin_left = 6.0
|
||||
margin_top = 6.0
|
||||
margin_right = 1014.0
|
||||
margin_right = 1018.0
|
||||
margin_bottom = 36.0
|
||||
rect_min_size = Vector2( 0, 30 )
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="Header" type="HBoxContainer" parent="PanelContainer/MarginContainer/VBoxContainer"]
|
||||
margin_right = 1008.0
|
||||
margin_right = 1012.0
|
||||
margin_bottom = 30.0
|
||||
rect_min_size = Vector2( 0, 30 )
|
||||
size_flags_horizontal = 3
|
||||
|
@ -126,18 +128,18 @@ margin_right = 230.0
|
|||
|
||||
[node name="Spacer" parent="PanelContainer/MarginContainer/VBoxContainer/Header" instance=ExtResource( 4 )]
|
||||
margin_left = 178.0
|
||||
margin_right = 962.0
|
||||
margin_right = 966.0
|
||||
margin_bottom = 30.0
|
||||
|
||||
[node name="VSeparator3" type="VSeparator" parent="PanelContainer/MarginContainer/VBoxContainer/Header"]
|
||||
margin_left = 966.0
|
||||
margin_right = 970.0
|
||||
margin_left = 970.0
|
||||
margin_right = 974.0
|
||||
margin_bottom = 30.0
|
||||
mouse_filter = 1
|
||||
|
||||
[node name="OptionsControl" parent="PanelContainer/MarginContainer/VBoxContainer/Header" instance=ExtResource( 5 )]
|
||||
margin_left = 974.0
|
||||
margin_right = 1008.0
|
||||
margin_left = 978.0
|
||||
margin_right = 1012.0
|
||||
margin_bottom = 30.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, "", false, "Remove", null, 0, false, false, 3, 0, null, "", false ]
|
||||
|
||||
|
|
|
@ -1,18 +1,19 @@
|
|||
tool
|
||||
extends Control
|
||||
extends "res://addons/dialogic/Editor/Events/Templates/EventTemplate.gd"
|
||||
|
||||
var editor_reference
|
||||
|
||||
# This is the information of this event and it will get parsed and saved to the JSON file.
|
||||
var event_data = {
|
||||
'wait_seconds': 0
|
||||
func _ready():
|
||||
event_data = {
|
||||
'wait_seconds': 1
|
||||
}
|
||||
get_header().set_value(float(event_data['wait_seconds']))
|
||||
get_header().connect("value_changed", self, "_on_Selector_value_changed")
|
||||
|
||||
|
||||
func load_data(data):
|
||||
event_data = data
|
||||
$PanelContainer/VBoxContainer/Header/SpinBox.value = event_data['wait_seconds']
|
||||
.load_data(data)
|
||||
get_header().set_value(float(event_data['wait_seconds']))
|
||||
|
||||
|
||||
func _on_SpinBox_value_changed(value):
|
||||
func _on_Selector_value_changed(value):
|
||||
event_data['wait_seconds'] = value
|
||||
|
|
|
@ -1,110 +1,50 @@
|
|||
[gd_scene load_steps=7 format=2]
|
||||
[gd_scene load_steps=6 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]
|
||||
[ext_resource path="res://addons/dialogic/Editor/Events/Common/Spacer.tscn" type="PackedScene" id=3]
|
||||
[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]
|
||||
[ext_resource path="res://addons/dialogic/Editor/Events/Common/SecondsSelector.tscn" type="PackedScene" id=3]
|
||||
[ext_resource path="res://addons/dialogic/Editor/Events/Templates/EventTemplate.tscn" type="PackedScene" id=4]
|
||||
[ext_resource path="res://addons/dialogic/Editor/Events/styles/WaitSeconds.tres" type="StyleBox" id=5]
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id=1]
|
||||
content_margin_left = 16.0
|
||||
content_margin_right = 6.0
|
||||
content_margin_top = 6.0
|
||||
content_margin_bottom = 6.0
|
||||
bg_color = Color( 0.435294, 0.301961, 0.603922, 0.192157 )
|
||||
border_width_left = 2
|
||||
border_width_top = 2
|
||||
border_width_right = 2
|
||||
border_width_bottom = 2
|
||||
border_color = Color( 0.12549, 0.12549, 0.12549, 1 )
|
||||
corner_radius_top_left = 6
|
||||
corner_radius_top_right = 6
|
||||
corner_radius_bottom_right = 6
|
||||
corner_radius_bottom_left = 6
|
||||
|
||||
[node name="WaitSeconds" type="HBoxContainer"]
|
||||
margin_right = 1004.0
|
||||
margin_bottom = 42.0
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 9
|
||||
[node name="EventTemplate" instance=ExtResource( 4 )]
|
||||
margin_bottom = 46.0
|
||||
script = ExtResource( 2 )
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
event_style = ExtResource( 5 )
|
||||
event_icon = ExtResource( 1 )
|
||||
event_name = "Wait"
|
||||
header_scene = ExtResource( 3 )
|
||||
|
||||
[node name="Indent" type="Control" parent="."]
|
||||
visible = false
|
||||
margin_bottom = 42.0
|
||||
[node name="PanelContainer" parent="." index="1"]
|
||||
custom_styles/panel = ExtResource( 5 )
|
||||
|
||||
[node name="PanelContainer" type="PanelContainer" parent="."]
|
||||
margin_right = 1004.0
|
||||
margin_bottom = 42.0
|
||||
mouse_filter = 1
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
custom_styles/panel = SubResource( 1 )
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
[node name="IconMarginContainer" parent="PanelContainer/MarginContainer/VBoxContainer/Header" index="0"]
|
||||
margin_right = 37.0
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer"]
|
||||
margin_left = 16.0
|
||||
margin_top = 6.0
|
||||
margin_right = 998.0
|
||||
margin_bottom = 36.0
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="Header" type="HBoxContainer" parent="PanelContainer/VBoxContainer"]
|
||||
margin_right = 982.0
|
||||
margin_bottom = 28.0
|
||||
|
||||
[node name="TextureRect" type="TextureRect" parent="PanelContainer/VBoxContainer/Header"]
|
||||
margin_right = 22.0
|
||||
margin_bottom = 28.0
|
||||
[node name="IconTexture" parent="PanelContainer/MarginContainer/VBoxContainer/Header/IconMarginContainer" index="0"]
|
||||
margin_right = 32.0
|
||||
texture = ExtResource( 1 )
|
||||
stretch_mode = 6
|
||||
|
||||
[node name="Title" type="Label" parent="PanelContainer/VBoxContainer/Header"]
|
||||
margin_left = 26.0
|
||||
margin_top = 7.0
|
||||
margin_right = 75.0
|
||||
margin_bottom = 21.0
|
||||
[node name="TitleHBoxContainer" parent="PanelContainer/MarginContainer/VBoxContainer/Header" index="1"]
|
||||
margin_left = 41.0
|
||||
margin_right = 96.0
|
||||
|
||||
[node name="TitleMarginContainer" parent="PanelContainer/MarginContainer/VBoxContainer/Header/TitleHBoxContainer" index="1"]
|
||||
margin_right = 47.0
|
||||
|
||||
[node name="TitleLabel" parent="PanelContainer/MarginContainer/VBoxContainer/Header/TitleHBoxContainer/TitleMarginContainer" index="0"]
|
||||
margin_right = 34.0
|
||||
text = "Wait"
|
||||
|
||||
[node name="SpinBox" type="SpinBox" parent="PanelContainer/VBoxContainer/Header"]
|
||||
margin_left = 79.0
|
||||
margin_right = 153.0
|
||||
margin_bottom = 28.0
|
||||
min_value = 0.1
|
||||
step = 0.1
|
||||
value = 1.0
|
||||
allow_greater = true
|
||||
align = 1
|
||||
script = ExtResource( 6 )
|
||||
[node name="VSeparator2" parent="PanelContainer/MarginContainer/VBoxContainer/Header/TitleHBoxContainer" index="2"]
|
||||
margin_left = 51.0
|
||||
margin_right = 55.0
|
||||
|
||||
[node name="Title2" type="Label" parent="PanelContainer/VBoxContainer/Header"]
|
||||
margin_left = 157.0
|
||||
margin_top = 7.0
|
||||
margin_right = 218.0
|
||||
margin_bottom = 21.0
|
||||
text = " Seconds"
|
||||
[node name="Content" parent="PanelContainer/MarginContainer/VBoxContainer/Header" index="2"]
|
||||
margin_left = 100.0
|
||||
margin_right = 249.0
|
||||
|
||||
[node name="Preview" type="Label" parent="PanelContainer/VBoxContainer/Header"]
|
||||
margin_left = 222.0
|
||||
margin_top = 7.0
|
||||
margin_right = 222.0
|
||||
margin_bottom = 21.0
|
||||
custom_colors/font_color = Color( 1, 1, 1, 0.513726 )
|
||||
[node name="Spacer" parent="PanelContainer/MarginContainer/VBoxContainer/Header" index="4"]
|
||||
margin_left = 253.0
|
||||
|
||||
[node name="Spacer" parent="PanelContainer/VBoxContainer/Header" instance=ExtResource( 3 )]
|
||||
margin_left = 226.0
|
||||
margin_right = 941.0
|
||||
margin_bottom = 28.0
|
||||
|
||||
[node name="OptionButton" parent="PanelContainer/VBoxContainer/Header" instance=ExtResource( 4 )]
|
||||
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"]
|
||||
[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 ]
|
||||
|
|
|
@ -1,6 +1,10 @@
|
|||
[gd_resource type="StyleBoxFlat" format=2]
|
||||
|
||||
[resource]
|
||||
content_margin_left = 0.0
|
||||
content_margin_right = 0.0
|
||||
content_margin_top = 0.0
|
||||
content_margin_bottom = 0.0
|
||||
bg_color = Color( 0.219608, 0.34902, 0.701961, 0.443137 )
|
||||
border_width_left = 2
|
||||
border_width_top = 2
|
||||
|
|
17
addons/dialogic/Editor/Events/styles/WaitSeconds.tres
Normal file
17
addons/dialogic/Editor/Events/styles/WaitSeconds.tres
Normal file
|
@ -0,0 +1,17 @@
|
|||
[gd_resource type="StyleBoxFlat" format=2]
|
||||
|
||||
[resource]
|
||||
content_margin_left = 0.0
|
||||
content_margin_right = 0.0
|
||||
content_margin_top = 0.0
|
||||
content_margin_bottom = 0.0
|
||||
bg_color = Color( 0.435294, 0.301961, 0.603922, 0.192157 )
|
||||
border_width_left = 2
|
||||
border_width_top = 2
|
||||
border_width_right = 2
|
||||
border_width_bottom = 2
|
||||
border_color = Color( 0.12549, 0.12549, 0.12549, 1 )
|
||||
corner_radius_top_left = 6
|
||||
corner_radius_top_right = 6
|
||||
corner_radius_bottom_right = 6
|
||||
corner_radius_bottom_left = 6
|
|
@ -1,6 +1,10 @@
|
|||
[gd_resource type="StyleBoxFlat" format=2]
|
||||
|
||||
[resource]
|
||||
content_margin_left = 0.0
|
||||
content_margin_right = 0.0
|
||||
content_margin_top = 0.0
|
||||
content_margin_bottom = 0.0
|
||||
bg_color = Color( 0.0980392, 0.329412, 0.509804, 1 )
|
||||
border_width_left = 2
|
||||
border_width_top = 2
|
||||
|
|
|
@ -22,7 +22,7 @@ var moving_piece = null
|
|||
var piece_was_dragged = false
|
||||
|
||||
func _has_template(event):
|
||||
return event.event_data.has("background")
|
||||
return event.event_data.has("background") or event.event_data.has("wait_seconds")
|
||||
|
||||
|
||||
func _ready():
|
||||
|
|
|
@ -15,6 +15,7 @@ var definition_visible: bool = false
|
|||
var settings: ConfigFile
|
||||
var current_theme: ConfigFile
|
||||
var current_timeline: String = ''
|
||||
var current_event: Dictionary
|
||||
|
||||
## The timeline to load when starting the scene
|
||||
export(String, "TimelineDropdown") var timeline: String
|
||||
|
@ -103,10 +104,16 @@ func resize_main():
|
|||
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
|
||||
|
||||
var portraits = get_node_or_null('Portraits')
|
||||
if portraits != null:
|
||||
portraits.rect_position.x = reference.x / 2
|
||||
portraits.rect_position.y = reference.y
|
||||
|
||||
|
||||
func set_current_dialog(dialog_path: String):
|
||||
current_timeline = dialog_path
|
||||
|
@ -160,19 +167,17 @@ func parse_text_lines(unparsed_dialog_script: Dictionary) -> Dictionary:
|
|||
# Parsing
|
||||
for event in unparsed_dialog_script['events']:
|
||||
if event.has('text') and event.has('character') and event.has('portrait'):
|
||||
if event['text'] == '' and remove_empty_messages == true:
|
||||
if event['text'].empty() and remove_empty_messages == true:
|
||||
pass
|
||||
elif '\n' in event['text'] and preview == false and split_new_lines == true:
|
||||
var lines = event['text'].split('\n')
|
||||
var i = 0
|
||||
for line in lines:
|
||||
var _e = {
|
||||
'text': lines[i],
|
||||
if not line.empty():
|
||||
new_events.append({
|
||||
'text': line,
|
||||
'character': event['character'],
|
||||
'portrait': event['portrait']
|
||||
}
|
||||
new_events.append(_e)
|
||||
i += 1
|
||||
})
|
||||
else:
|
||||
new_events.append(event)
|
||||
else:
|
||||
|
@ -340,6 +345,10 @@ func update_text(text: String) -> String:
|
|||
|
||||
func _on_text_completed():
|
||||
finished = true
|
||||
if current_event.has('options'):
|
||||
for o in current_event['options']:
|
||||
add_choice_button(o)
|
||||
|
||||
|
||||
func on_timeline_start():
|
||||
if not Engine.is_editor_hint():
|
||||
|
@ -423,6 +432,7 @@ func event_handler(event: Dictionary):
|
|||
reset_options()
|
||||
|
||||
dprint('[D] Current Event: ', event)
|
||||
current_event = event
|
||||
match event:
|
||||
{'text', 'character', 'portrait'}:
|
||||
emit_signal("event_start", "text", event)
|
||||
|
@ -444,9 +454,6 @@ func event_handler(event: Dictionary):
|
|||
update_name(character_data)
|
||||
grab_portrait_focus(character_data, event)
|
||||
update_text(event['question'])
|
||||
if event.has('options'):
|
||||
for o in event['options']:
|
||||
add_choice_button(o)
|
||||
{'choice', 'question_id'}:
|
||||
emit_signal("event_start", "choice", event)
|
||||
for q in questions:
|
||||
|
|
Loading…
Reference in a new issue