164 lines
6.9 KiB
GDScript
Executable File
164 lines
6.9 KiB
GDScript
Executable File
tool
|
|
extends "res://addons/dialogic/Editor/Events/Parts/EventPart.gd"
|
|
|
|
# has an event_data variable that stores the current data!!!
|
|
var enable_icon = null
|
|
var disable_icon = null
|
|
|
|
|
|
## node references
|
|
onready var animation_picker = $Animation/AnimationPicker
|
|
onready var animation_length = $Animation/AnimationLength
|
|
onready var z_index_enable = $Positioning/EnableZIndex
|
|
onready var z_index = $Positioning/Z_Index
|
|
onready var mirrored_checkbox = $Positioning/Mirrored
|
|
onready var mirrored_checkbox_enable = $Positioning/EnableMirrored
|
|
onready var animation_repeat = $Animation/Repeat
|
|
onready var animation_wait_checkbox = $Animation/WaitForAnimation
|
|
|
|
# used to connect the signals
|
|
func _ready():
|
|
animation_picker.connect("about_to_show", self, "_on_AnimationPicker_about_to_show")
|
|
animation_picker.get_popup().connect("index_pressed", self, "_on_AnimationPicker_index_pressed")
|
|
animation_length.connect("value_changed", self, "_on_AnimationLength_value_changed")
|
|
z_index.connect("value_changed", self, "_on_ZIndex_value_changed")
|
|
z_index_enable.connect("toggled", self, "_on_ZIndexEnable_toggled")
|
|
mirrored_checkbox.connect('toggled', self, "_on_Mirrored_toggled")
|
|
mirrored_checkbox_enable.connect('toggled', self, "_on_MirroredEnabled_toggled")
|
|
animation_repeat.connect("value_changed", self, '_on_Repeat_value_changed')
|
|
animation_wait_checkbox.connect('toggled', self, 'on_WaitForAnimation_toggled')
|
|
enable_icon = get_icon("Edit", "EditorIcons")
|
|
disable_icon = get_icon("Reload", "EditorIcons")
|
|
|
|
|
|
# called by the event block
|
|
func load_data(data:Dictionary):
|
|
# First set the event_data
|
|
.load_data(data)
|
|
|
|
# Now update the ui nodes to display the data.
|
|
$Positioning.visible = event_data.get('type',0) != 1
|
|
if data['type'] == 0:
|
|
animation_picker.text = DialogicUtil.beautify_filename(event_data.get('animation', '[Default]'))
|
|
elif data['type'] == 1:
|
|
animation_picker.text = DialogicUtil.beautify_filename(event_data.get('animation', '[Default]'))
|
|
else:
|
|
animation_picker.text = DialogicUtil.beautify_filename(event_data.get('animation', '[No Animation]'))
|
|
|
|
animation_picker.custom_icon = get_icon("Animation", "EditorIcons") if event_data['animation'] != "[No Animation]" else get_icon("GuiRadioUnchecked", "EditorIcons")
|
|
if event_data['animation'] == "[Default]": animation_picker.custom_icon = get_icon("Favorites", "EditorIcons")
|
|
animation_length.value = event_data.get('animation_length', 1)
|
|
animation_length.visible = event_data.get('animation', '') != "[Default]"
|
|
$Animation/Label2.visible = event_data.get('animation', '') != "[Default]"
|
|
animation_repeat.value = event_data.get('animation_repeat', 1)
|
|
animation_repeat.visible = int(data.get('type', 0)) == 2
|
|
$Animation/Label3.visible = int(data.get('type', 0)) == 2
|
|
animation_wait_checkbox.pressed = event_data.get('animation_wait', false)
|
|
|
|
z_index.value = int(event_data.get('z_index', 0))
|
|
mirrored_checkbox.pressed = event_data.get('mirror_portrait', false)
|
|
|
|
# if the event is in UPDATE mode show the enablers
|
|
z_index_enable.visible = int(data.get('type', 0)) == 2
|
|
mirrored_checkbox_enable.visible = int(data.get('type', 0)) == 2
|
|
|
|
z_index_enable.pressed = data.get('change_z_index', false) or int(data.get('type', 0)) != 2
|
|
mirrored_checkbox_enable.pressed = data.get('change_mirror_portrait', false) or int(data.get('type', 0)) != 2
|
|
|
|
z_index.visible = z_index_enable.pressed
|
|
mirrored_checkbox.visible = mirrored_checkbox_enable.pressed
|
|
|
|
z_index_enable.icon = enable_icon if not z_index_enable.pressed else disable_icon
|
|
mirrored_checkbox_enable.icon = enable_icon if not mirrored_checkbox_enable.pressed else disable_icon
|
|
|
|
|
|
# has to return the wanted preview, only useful for body parts
|
|
func get_preview():
|
|
return ''
|
|
|
|
func _on_AnimationPicker_about_to_show():
|
|
animation_picker.get_popup().clear()
|
|
var animations = DialogicAnimaResources.get_available_animations()
|
|
var idx = 0
|
|
if event_data['type'] == 2:
|
|
animation_picker.get_popup().add_icon_item(get_icon("GuiRadioUnchecked", "EditorIcons"), "[No Animation]")
|
|
animation_picker.get_popup().set_item_metadata(idx, {'file': "[No Animation]"})
|
|
idx += 1
|
|
else:
|
|
animation_picker.get_popup().add_icon_item(get_icon("Favorites", "EditorIcons"), "[Default]")
|
|
animation_picker.get_popup().set_item_metadata(idx, {'file': "[Default]"})
|
|
idx += 1
|
|
for animation_name in animations:
|
|
if (event_data['type'] == 0 and '_in' in animation_name) \
|
|
or (event_data['type'] == 1 and '_out' in animation_name) \
|
|
or (event_data['type'] == 2 and not '_in' in animation_name and not '_out' in animation_name):
|
|
animation_picker.get_popup().add_icon_item(get_icon("Animation", "EditorIcons"), DialogicUtil.beautify_filename(animation_name))
|
|
animation_picker.get_popup().set_item_metadata(idx, {'file': animation_name.get_file()})
|
|
idx +=1
|
|
|
|
|
|
|
|
func _on_AnimationPicker_index_pressed(index):
|
|
event_data['animation'] = animation_picker.get_popup().get_item_metadata(index)['file']
|
|
|
|
animation_picker.custom_icon = get_icon("Animation", "EditorIcons") if event_data['animation'] != "[No Animation]" else get_icon("GuiRadioUnchecked", "EditorIcons")
|
|
if event_data['animation'] == "[Default]": animation_picker.custom_icon = get_icon("Favorites", "EditorIcons")
|
|
animation_picker.text = animation_picker.get_popup().get_item_text(index)
|
|
|
|
animation_length.visible = event_data.get('animation', '') != "[Default]"
|
|
$Animation/Label2.visible = event_data.get('animation', '') != "[Default]"
|
|
|
|
# informs the parent about the changes!
|
|
data_changed()
|
|
|
|
func _on_AnimationLength_value_changed(value):
|
|
event_data['animation_length'] = value
|
|
|
|
# informs the parent about the changes!
|
|
data_changed()
|
|
|
|
|
|
func _on_Repeat_value_changed(value):
|
|
event_data['animation_repeat'] = value
|
|
|
|
# informs the parent about the changes!
|
|
data_changed()
|
|
|
|
func on_WaitForAnimation_toggled(toggled):
|
|
event_data['animation_wait'] = toggled
|
|
|
|
# informs the parent about the changes!
|
|
data_changed()
|
|
|
|
func _on_ZIndexEnable_toggled(toggled):
|
|
if event_data['type'] != 2: return
|
|
event_data['change_z_index'] = toggled
|
|
|
|
z_index.visible = z_index_enable.pressed
|
|
z_index_enable.icon = enable_icon if not z_index_enable.pressed else disable_icon
|
|
|
|
# informs the parent about the changes!
|
|
data_changed()
|
|
|
|
func _on_ZIndex_value_changed(value):
|
|
event_data['z_index'] = value
|
|
|
|
# informs the parent about the changes!
|
|
data_changed()
|
|
|
|
func _on_MirroredEnabled_toggled(toggled):
|
|
if event_data['type'] != 2: return
|
|
event_data['change_mirror_portrait'] = toggled
|
|
|
|
mirrored_checkbox.visible = mirrored_checkbox_enable.pressed
|
|
mirrored_checkbox_enable.icon = enable_icon if not mirrored_checkbox_enable.pressed else disable_icon
|
|
|
|
# informs the parent about the changes!
|
|
data_changed()
|
|
|
|
func _on_Mirrored_toggled(toggled):
|
|
event_data['mirror_portrait'] = toggled
|
|
|
|
# informs the parent about the changes!
|
|
data_changed()
|