class_name ShortcutProfile
extends Resource

@export var name := ""
@export var customizable := true
@export var bindings := {}


func _init() -> void:
	bindings = bindings.duplicate(true)


func fill_bindings() -> void:
	var unnecessary_actions = bindings.duplicate()  # Checks if the profile has any unused actions
	for action in InputMap.get_actions():
		if not action in bindings:
			bindings[action] = InputMap.action_get_events(action)
		unnecessary_actions.erase(action)
	for action in unnecessary_actions:
		bindings.erase(action)
	save()


func change_action(action: String) -> void:
	if not customizable:
		return
	bindings[action] = InputMap.action_get_events(action)
	save()


func save() -> bool:
	if !customizable:
		return false
	var err := ResourceSaver.save(self, resource_path)
	if err != OK:
		print("Error saving shortcut profile %s. Error code: %s" % [resource_path, err])
		return false
	return true