Skip to content

Commit 98e51c5

Browse files
committed
Merge remote-tracking branch 'origin/main'
2 parents e08f22b + bb4dd59 commit 98e51c5

File tree

117 files changed

+2317
-3723
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

117 files changed

+2317
-3723
lines changed

addons/dialog_plugin/Core/DialogUtil.gd

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,3 +129,20 @@ static func can_evaluate(input:String, global:Object=null, locals:Dictionary={})
129129
# Util function to generate property dictionary
130130
static func get_property_dict(property_name:String,property_type:int,property_hint:int=PROPERTY_HINT_NONE,property_hint_string:String="",property_usage:int=PROPERTY_USAGE_STORAGE) -> Dictionary:
131131
return {"name":property_name, "type":property_type, "hint":property_hint, "hint_string":property_hint_string, "usage":property_usage}
132+
133+
134+
static func get_event_property_dict(property_name:String,property_type:int,property_hint:int=PROPERTY_HINT_NONE,property_hint_string:String="") -> Dictionary:
135+
var condition:int = PROPERTY_USAGE_STORAGE | PROPERTY_USAGE_SCRIPT_VARIABLE
136+
var dict:Dictionary = get_property_dict(property_name, property_type, property_hint, property_hint_string, condition)
137+
return dict
138+
139+
140+
# Util function to get a dictionary of object property:value
141+
static func get_property_values_from(object:Object) -> Dictionary:
142+
if object == null:
143+
return {}
144+
var dict = {}
145+
# Hope this doesn't freeze the engine per call
146+
for property in object.get_property_list():
147+
dict[property.name] = object.get(property.name)
148+
return dict

addons/dialog_plugin/Editor/Views/character_editor/CharacterEditorView.tscn

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
[ext_resource path="res://addons/dialog_plugin/Nodes/misc/resource_selector/texture_selector.gd" type="Script" id=3]
66
[ext_resource path="res://addons/dialog_plugin/Editor/Views/character_editor/portrait_container/portrait_container.tscn" type="PackedScene" id=8]
77

8+
89
[sub_resource type="StyleBoxFlat" id=1]
910
draw_center = false
1011
border_width_left = 2

addons/dialog_plugin/Editor/Views/character_editor/portrait_container/editor_portrait/editor_portrait.tscn

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
[ext_resource path="res://addons/dialog_plugin/Nodes/misc/resource_selector/texture_selector.gd" type="Script" id=2]
55
[ext_resource path="res://addons/dialog_plugin/assets/Images/icons/event_icons/character/change_expression.png" type="Texture" id=3]
66

7+
78
[sub_resource type="StyleBoxEmpty" id=4]
89

910
[sub_resource type="StyleBoxEmpty" id=2]

addons/dialog_plugin/Editor/Views/timeline_editor/TimelineEditorView.tscn

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ __meta__ = {
3232

3333
[node name="Head" type="PanelContainer" parent="VBoxContainer"]
3434
margin_right = 1024.0
35-
margin_bottom = 46.0
35+
margin_bottom = 52.0
3636
custom_styles/panel = ExtResource( 2 )
3737
__meta__ = {
3838
"_edit_use_anchors_": false
@@ -42,11 +42,11 @@ __meta__ = {
4242
margin_left = 2.0
4343
margin_top = 2.0
4444
margin_right = 1022.0
45-
margin_bottom = 44.0
45+
margin_bottom = 50.0
4646

4747
[node name="ControlPanel" type="HBoxContainer" parent="VBoxContainer/Head/VBoxContainer"]
4848
margin_right = 1020.0
49-
margin_bottom = 42.0
49+
margin_bottom = 48.0
5050
size_flags_horizontal = 7
5151
size_flags_vertical = 6
5252
__meta__ = {
@@ -56,43 +56,42 @@ __meta__ = {
5656

5757
[node name="PanelContainer2" type="PanelContainer" parent="VBoxContainer/Head/VBoxContainer/ControlPanel"]
5858
margin_right = 1020.0
59-
margin_bottom = 42.0
59+
margin_bottom = 48.0
6060
size_flags_horizontal = 3
6161
size_flags_vertical = 0
6262
custom_styles/panel = SubResource( 1 )
6363

6464
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/Head/VBoxContainer/ControlPanel/PanelContainer2"]
6565
margin_right = 1020.0
66-
margin_bottom = 42.0
66+
margin_bottom = 48.0
6767
size_flags_horizontal = 3
6868

6969
[node name="Label" type="Label" parent="VBoxContainer/Head/VBoxContainer/ControlPanel/PanelContainer2/HBoxContainer"]
70-
margin_top = 14.0
70+
margin_top = 17.0
7171
margin_right = 104.0
72-
margin_bottom = 28.0
72+
margin_bottom = 31.0
7373
text = "Locale Selection"
7474

7575
[node name="LocaleList" parent="VBoxContainer/Head/VBoxContainer/ControlPanel/PanelContainer2/HBoxContainer" instance=ExtResource( 6 )]
7676
margin_left = 108.0
77-
margin_top = 11.0
77+
margin_top = 14.0
7878
margin_right = 186.0
79-
margin_bottom = 31.0
79+
margin_bottom = 34.0
8080
size_flags_vertical = 4
8181
items = [ "English", null, false, 0, "en", "Spanish", null, false, 1, "es" ]
8282

8383
[node name="VSeparator" type="VSeparator" parent="VBoxContainer/Head/VBoxContainer/ControlPanel/PanelContainer2/HBoxContainer"]
8484
margin_left = 190.0
8585
margin_right = 194.0
86-
margin_bottom = 42.0
86+
margin_bottom = 48.0
8787

8888
[node name="EventButtonsContainer" parent="VBoxContainer/Head/VBoxContainer/ControlPanel/PanelContainer2/HBoxContainer" instance=ExtResource( 3 )]
8989
anchor_right = 0.0
9090
margin_left = 198.0
9191
margin_right = 1020.0
92-
size_flags_horizontal = 3
9392

9493
[node name="Body" type="VBoxContainer" parent="VBoxContainer"]
95-
margin_top = 50.0
94+
margin_top = 56.0
9695
margin_right = 1024.0
9796
margin_bottom = 560.0
9897
size_flags_vertical = 3
@@ -126,15 +125,15 @@ text = "<TimelineName>"
126125
[node name="ScrollContainer" type="ScrollContainer" parent="VBoxContainer/Body"]
127126
margin_top = 28.0
128127
margin_right = 1024.0
129-
margin_bottom = 510.0
128+
margin_bottom = 504.0
130129
rect_min_size = Vector2( 0, 78 )
131130
size_flags_horizontal = 3
132131
size_flags_vertical = 3
133132
follow_focus = true
134133

135134
[node name="TimelineEventsContainer" type="VBoxContainer" parent="VBoxContainer/Body/ScrollContainer"]
136135
margin_right = 1024.0
137-
margin_bottom = 482.0
136+
margin_bottom = 476.0
138137
size_flags_horizontal = 3
139138
size_flags_vertical = 3
140139
custom_constants/separation = 0

addons/dialog_plugin/Editor/Views/timeline_editor/event_buttons_container/PanelContainer.gd

Lines changed: 0 additions & 2 deletions
This file was deleted.
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
tool
2+
extends HBoxContainer
3+
4+
signal event_pressed(event)
5+
6+
const Category = preload("res://addons/dialog_plugin/Editor/Views/timeline_editor/event_buttons_container/events_category/events_category_scene.gd")
7+
8+
var category_scene:PackedScene = load("res://addons/dialog_plugin/Editor/Views/timeline_editor/event_buttons_container/events_category/events_category_scene.tscn") as PackedScene
9+
10+
func _ready() -> void:
11+
var edited_scene = get_tree().edited_scene_root
12+
if edited_scene:
13+
if edited_scene.is_a_parent_of(owner) or edited_scene == owner:
14+
return
15+
generate_event_buttons()
16+
17+
func remove_all_childs():
18+
for child in get_children():
19+
child.queue_free()
20+
21+
22+
func generate_event_buttons():
23+
remove_all_childs()
24+
# character_event, logic_event, miscelaneous_event, text_event
25+
var groups:Dictionary = _get_event_groups()
26+
var character_events:PoolStringArray = PoolStringArray(groups["character_event"])
27+
var logic_events:PoolStringArray = PoolStringArray(groups["logic_event"])
28+
var miscelaneous_events:PoolStringArray = PoolStringArray(groups["miscelaneous_event"])
29+
var text_events:PoolStringArray = PoolStringArray(groups["text_event"])
30+
31+
add_category("Text Events", text_events)
32+
add_category("Logic Events", logic_events)
33+
add_category("Character Events", character_events)
34+
add_category("Misc Events", miscelaneous_events)
35+
36+
37+
func add_category(category_name:String, category_events:PoolStringArray) -> void:
38+
var category:Category = category_scene.instance() as Category
39+
var separator:Separator = VSeparator.new()
40+
category.name = category_name
41+
category.category_name = category_name
42+
category.category_events = category_events
43+
category.connect("event_button_pressed", self, "_on_Category_event_button_pressed")
44+
category.connect("ready", category, "call_deferred", ["generate_buttons_from_events"])
45+
add_child(category)
46+
add_child(separator)
47+
48+
49+
func _get_event_groups() -> Dictionary:
50+
var settings:ConfigFile = ConfigFile.new()
51+
settings.load("project.godot")
52+
var keys:PoolStringArray = settings.get_section_keys("textalog")
53+
var groups:Dictionary = {}
54+
for event_property in keys:
55+
# events/{base}/{class} -> String (Script path)
56+
event_property = event_property as String
57+
var sections = event_property.split("/")
58+
var _base:String = sections[1]
59+
var _class:String = sections[2]
60+
if not _base in groups:
61+
groups[_base] = []
62+
groups[_base].append("textalog/"+event_property)
63+
return groups
64+
65+
66+
func _on_Category_event_button_pressed(event:DialogEventResource) -> void:
67+
if not event:
68+
return
69+
emit_signal("event_pressed", event)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
tool
2+
extends VBoxContainer
3+
4+
signal event_button_pressed(event)
5+
6+
const EventButton = preload("res://addons/dialog_plugin/Nodes/editor_event_buttons/generic_event_button.gd")
7+
const DialogUtil = preload("res://addons/dialog_plugin/Core/DialogUtil.gd")
8+
9+
export(NodePath) var NameLabel_path:NodePath
10+
export(NodePath) var EventContainer_path:NodePath
11+
12+
onready var name_label:Label = get_node(NameLabel_path) as Label
13+
onready var event_buttons_container:Container = get_node(EventContainer_path)
14+
15+
var category_name:String = ""
16+
var category_events:PoolStringArray = PoolStringArray([])
17+
var event_button_scene:PackedScene = load("res://addons/dialog_plugin/Nodes/editor_event_buttons/generic_event_button.tscn") as PackedScene
18+
19+
func _ready() -> void:
20+
name_label.text = category_name
21+
22+
23+
func generate_buttons_from_events() -> void:
24+
for event_property in category_events:
25+
var event_path = ProjectSettings.get_setting(event_property)
26+
var event_script:Script = load(event_path) as Script
27+
if not event_script:
28+
continue
29+
var event_button:EventButton = event_button_scene.instance() as EventButton
30+
event_button.event_resource = event_script
31+
event_button.connect("pressed", self, "_on_EventButton_pressed")
32+
DialogUtil.Logger.print_debug(self, "Adding event for "+event_path)
33+
add_event_button(event_button)
34+
35+
36+
func add_event_button(event_button:Button) -> void:
37+
event_buttons_container.add_child(event_button)
38+
39+
40+
func _on_EventButton_pressed(event:DialogEventResource=null) -> void:
41+
if not event:
42+
return
43+
emit_signal("event_button_pressed", event)
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,30 @@
1-
[gd_scene format=2]
1+
[gd_scene load_steps=2 format=2]
22

3-
[node name="Category" type="PanelContainer"]
4-
margin_right = 1016.0
5-
margin_bottom = 32.0
3+
[ext_resource path="res://addons/dialog_plugin/Editor/Views/timeline_editor/event_buttons_container/events_category/events_category_scene.gd" type="Script" id=1]
4+
5+
[node name="Category" type="VBoxContainer"]
6+
margin_right = 121.0
7+
margin_bottom = 18.0
8+
script = ExtResource( 1 )
69
__meta__ = {
710
"_edit_use_anchors_": false
811
}
12+
NameLabel_path = NodePath("CategoryName")
13+
EventContainer_path = NodePath("Events")
914

10-
[node name="CategoryRow" type="VBoxContainer" parent="."]
11-
margin_left = 7.0
12-
margin_top = 7.0
13-
margin_right = 1009.0
14-
margin_bottom = 25.0
15-
16-
[node name="Row1" type="MarginContainer" parent="CategoryRow"]
17-
margin_right = 1002.0
18-
margin_bottom = 14.0
19-
20-
[node name="Items" type="HBoxContainer" parent="CategoryRow/Row1"]
21-
margin_right = 1002.0
22-
margin_bottom = 14.0
23-
24-
[node name="Title" type="Label" parent="CategoryRow/Row1/Items"]
25-
margin_right = 89.0
15+
[node name="CategoryName" type="Label" parent="."]
16+
margin_right = 121.0
2617
margin_bottom = 14.0
27-
text = "Category_Title"
18+
size_flags_horizontal = 7
19+
size_flags_vertical = 6
20+
align = 1
2821

29-
[node name="HSeparator" type="HSeparator" parent="CategoryRow/Row1/Items"]
30-
margin_left = 93.0
31-
margin_right = 1002.0
32-
margin_bottom = 14.0
33-
size_flags_horizontal = 3
34-
35-
[node name="Row2" type="MarginContainer" parent="CategoryRow"]
22+
[node name="Events" type="HBoxContainer" parent="."]
3623
margin_top = 18.0
37-
margin_right = 1002.0
24+
margin_right = 121.0
3825
margin_bottom = 18.0
39-
40-
[node name="Items" type="HBoxContainer" parent="CategoryRow/Row2"]
41-
margin_right = 1002.0
26+
size_flags_vertical = 4
27+
alignment = 1
28+
__meta__ = {
29+
"_edit_use_anchors_": false
30+
}

addons/dialog_plugin/Editor/Views/timeline_editor/event_buttons_container/events_container.gd

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,8 @@ tool
22
extends Control
33

44
signal event_pressed(event_resource)
5-
signal event_being_dragged
65

7-
8-
func _on_EventButton_pressed(event:DialogEventResource=null) -> void:
6+
func _on_EventsContainer_event_pressed(event:DialogEventResource) -> void:
97
if not event:
108
return
119
emit_signal("event_pressed", event)
12-
13-
14-
func _on_EventButton_being_dragged() -> void:
15-
emit_signal("event_being_dragged")

0 commit comments

Comments
 (0)