class_name LayerContainer
extends Button

var i := 0
var visibility_button : BaseButton
var lock_button : BaseButton
var linked_button : BaseButton
var label : Label
var line_edit : LineEdit

func _ready() -> void:
	visibility_button = Global.find_node_by_name(self, "VisibilityButton")
	lock_button = Global.find_node_by_name(self, "LockButton")
	linked_button = Global.find_node_by_name(self, "LinkButton")
	label = Global.find_node_by_name(self, "Label")
	line_edit = Global.find_node_by_name(self, "LineEdit")

	if Global.layers[i][1]:
		visibility_button.texture_normal = load("res://Assets/Graphics/%s Themes/Layers/Layer_Visible.png" % Global.theme_type)
		visibility_button.texture_hover = load("res://Assets/Graphics/%s Themes/Layers/Layer_Visible_Hover.png" % Global.theme_type)
	else:
		visibility_button.texture_normal = load("res://Assets/Graphics/%s Themes/Layers/Layer_Invisible.png" % Global.theme_type)
		visibility_button.texture_hover = load("res://Assets/Graphics/%s Themes/Layers/Layer_Invisible_Hover.png" % Global.theme_type)

	if Global.layers[i][2]:
		lock_button.texture_normal = load("res://Assets/Graphics/%s Themes/Layers/Lock.png" % Global.theme_type)
		lock_button.texture_hover = load("res://Assets/Graphics/%s Themes/Layers/Lock_Hover.png" % Global.theme_type)
	else:
		lock_button.texture_normal = load("res://Assets/Graphics/%s Themes/Layers/Unlock.png" % Global.theme_type)
		lock_button.texture_hover = load("res://Assets/Graphics/%s Themes/Layers/Unlock_Hover.png" % Global.theme_type)

	if Global.layers[i][4]: # If new layers will be linked
		linked_button.texture_normal = load("res://Assets/Graphics/%s Themes/Layers/Linked_Layer.png" % Global.theme_type)
		linked_button.texture_hover = load("res://Assets/Graphics/%s Themes/Layers/Linked_Layer_Hover.png" % Global.theme_type)
	else:
		linked_button.texture_normal = load("res://Assets/Graphics/%s Themes/Layers/Unlinked_Layer.png" % Global.theme_type)
		linked_button.texture_hover = load("res://Assets/Graphics/%s Themes/Layers/Unlinked_Layer_Hover.png" % Global.theme_type)

func _input(event : InputEvent) -> void:
	if (event.is_action_released("ui_accept") or event.is_action_released("ui_cancel")) and line_edit.visible and event.scancode != KEY_SPACE:
		save_layer_name(line_edit.text)

func _on_LayerContainer_pressed() -> void:
	pressed = !pressed
	label.visible = false
	line_edit.visible = true
	line_edit.editable = true
	line_edit.grab_focus()

func _on_LineEdit_focus_exited() -> void:
	save_layer_name(line_edit.text)

func save_layer_name(new_name : String) -> void:
	label.visible = true
	line_edit.visible = false
	line_edit.editable = false
	label.text = new_name
	Global.layers_changed_skip = true
	Global.layers[i][0] = new_name

func _on_VisibilityButton_pressed() -> void:
	Global.layers[i][1] = !Global.layers[i][1]
	Global.canvas.update()

func _on_LockButton_pressed() -> void:
	Global.layers[i][2] = !Global.layers[i][2]

func _on_LinkButton_pressed() -> void:
	Global.layers[i][4] = !Global.layers[i][4]
	if Global.layers[i][4] && !Global.layers[i][5]:
		Global.layers[i][5].append(Global.canvas)
		Global.layers[i][3].get_child(Global.current_frame)._ready()
