gmtk-2024/addons/AsepriteWizard/interface/docks/wizard/resource_tree_single_item.gd

172 lines
4.4 KiB
GDScript3
Raw Normal View History

2024-08-17 14:22:33 +00:00
@tool
extends VBoxContainer
signal import_triggered
@onready var _file_name = $GridContainer/file_name_value
@onready var _type = $GridContainer/type_value
@onready var _path = $GridContainer/path_value
@onready var _source_label = $GridContainer/source_file_label
@onready var _source = $GridContainer/source_file_value
@onready var _only_visible_layers_label = $GridContainer/only_visible_layers_label
@onready var _only_visible_layers = $GridContainer/only_visible_layers_value
@onready var _layer_ex_pattern_label = $GridContainer/layer_ex_patt_label
@onready var _layer_ex_pattern = $GridContainer/layer_ex_patt_value
@onready var _o_name_label = $GridContainer/o_name_label
@onready var _o_name = $GridContainer/o_name_value
@onready var _o_folder_label = $GridContainer/o_folder_label
@onready var _o_folder_value = $GridContainer/o_folder_value
@onready var _resource_list_label = $GridContainer/resource_list_label
@onready var _resource_list = $GridContainer/resource_list
@onready var _resource_list_separator_1 = $GridContainer/HSeparator3
@onready var _resource_list_separator_2 = $GridContainer/HSeparator4
@onready var _resource_buttons = $resource_buttons
@onready var _dir_buttons = $dir_buttons
@onready var _group_buttons = $group_buttons
@onready var _source_change_warning = $source_changed_warning
@onready var _resource_only_fields = [
_source_label,
_source,
_only_visible_layers_label,
_only_visible_layers,
_layer_ex_pattern_label,
_layer_ex_pattern,
_o_name_label,
_o_name,
_o_folder_label,
_o_folder_value,
_source_change_warning,
]
var _current_resource_type = "resource"
var _resource_config: Dictionary = {}
func _ready():
_source_change_warning.set_text("Source file changed since last import")
_source_change_warning.hide()
func set_resource_details(resource_details: Dictionary) -> void:
_resource_config = resource_details
_resource_buttons.hide()
_dir_buttons.hide()
_group_buttons.hide()
_hide_resource_list()
_source_change_warning.hide()
_file_name.text = resource_details.name
_path.text = resource_details.path
_current_resource_type = resource_details.type
match resource_details.type:
"resource":
_type.text = resource_details.resource_type
_show_resource_fields()
_resource_buttons.show()
var fields = resource_details.meta.fields
_load_fields(fields)
_resource_buttons.show()
_source_change_warning.visible = resource_details.has_changes
"group":
_type.text = "Split Group"
_show_resource_fields()
_load_fields(resource_details.children[0].meta.fields)
_source_change_warning.visible = resource_details.children[0].has_changes
_group_buttons.show()
_show_resource_list()
for c in _resource_list.get_children():
c.queue_free()
for child_resource in resource_details.children:
var label = Label.new()
label.text = child_resource.name
_resource_list.add_child(label)
_:
_type.text = "Folder"
_hide_resource_fields()
_dir_buttons.show()
return
func _load_fields(fields: Dictionary):
_only_visible_layers.text = "Yes" if fields.only_visible_layers else "No"
_layer_ex_pattern.text = fields.layer_exclusion_pattern
_o_name.text = fields.output_name
_o_folder_value.text = fields.output_location
_source.text = fields.source_file
func _hide_resource_fields():
for f in _resource_only_fields:
f.hide()
func _show_resource_fields():
for f in _resource_only_fields:
f.show()
func show_buttons():
match _current_resource_type:
"resource":
_resource_buttons.show()
_:
_dir_buttons.show()
func hide_buttons():
_resource_buttons.hide()
_dir_buttons.hide()
func hide_source_change_warning():
_source_change_warning.hide()
func _on_show_in_fs_button_up():
EditorInterface.get_file_system_dock().navigate_to_path(_path.text)
func _on_show_dir_in_fs_button_up():
EditorInterface.get_file_system_dock().navigate_to_path(_path.text)
func _on_import_all_button_up():
import_triggered.emit()
func _on_import_button_up():
import_triggered.emit()
func _hide_resource_list():
_resource_list_separator_1.hide()
_resource_list_separator_2.hide()
_resource_list_label.hide()
_resource_list.hide()
func _show_resource_list():
_resource_list_separator_1.show()
_resource_list_separator_2.show()
_resource_list_label.show()
_resource_list.show()
func _on_import_all_pressed():
import_triggered.emit()
func _on_show_in_fs_pressed():
EditorInterface.get_file_system_dock().navigate_to_path(_resource_config.children[0].path)