SpielBackupAlt/addons/dialogic/Editor/Events/Parts/Character/EventPart_CharacterActionSe...

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()