class_name PauseMenuSaves
extends BaseMenu

signal close_save_list
signal open_save_list


@export var show_save_ui_button: BaseButton
@export var new_save_ui: Control
@export var save_name_input: LineEdit
@export var create_save_button: BaseButton
@export var create_save_cancel_button: BaseButton

@export var save_files_list_ui: SaveFilesListUI


func init() -> void:
	super.init()

	create_save_button.pressed.connect(_on_create_save_button_pressed)
	create_save_cancel_button.pressed.connect(_on_create_save_cancel_button_pressed)
	show_save_ui_button.pressed.connect(_on_show_save_ui_button_pressed)
	pause_menu.open_menu.connect(_on_open_menu)


func _on_create_save_button_pressed() -> void:
	var save_name: String = save_name_input.text
	if save_name.strip_edges() == "":
		save_name = Time.get_datetime_string_from_system(false, true)

	new_save_ui.hide()

	SignalManager.hide_ui.emit()
	await get_tree().create_timer(.150).timeout # A hack to allow time for UI to hide before taking screenshot
	SaveGameManager.create_save.emit(save_name)

	pause_menu.open_menu.emit("")
	SignalManager.resume_game.emit()

func _on_create_save_cancel_button_pressed() -> void:
	new_save_ui.hide()

func _on_open_menu(menu_name: String) -> void:
	if menu_name == name:
		save_files_list_ui.refresh_saves_list()

func _on_show_save_ui_button_pressed() -> void:
	save_name_input.text = Time.get_datetime_string_from_system(false, true)
	new_save_ui.show()