aboutsummaryrefslogtreecommitdiff
path: root/game/addons/keychain/ShortcutProfile.gd
blob: 0fb269a192a0a86bc3fb0dde07bc15bf66e03e0a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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