forked from tgstation/tgstation
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhotkeys_help.dm
40 lines (33 loc) · 1.03 KB
/
hotkeys_help.dm
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
39
40
/datum/hotkeys_help
var/static/list/hotkeys = list()
/datum/hotkeys_help/ui_state()
return GLOB.always_state
/datum/hotkeys_help/ui_interact(mob/user, datum/tgui/ui)
ui = SStgui.try_update_ui(user, src, ui)
if (!ui)
ui = new(user, src, "HotkeysHelp")
ui.open()
// Not static data since user could rebind keys.
/datum/hotkeys_help/ui_data(mob/user)
// List every keybind to chat.
var/list/keys_list = list()
// Show them in alphabetical order by key
var/list/key_bindings_by_key = user.client.prefs.key_bindings_by_key.Copy()
sortTim(key_bindings_by_key, cmp = GLOBAL_PROC_REF(cmp_text_asc))
for(var/key in key_bindings_by_key)
// Get the full names
var/list/binding_names = list()
for(var/kb_name in key_bindings_by_key[key])
var/datum/keybinding/binding = GLOB.keybindings_by_name[kb_name]
binding_names += list(list(
"name" = binding.full_name,
"desc" = binding.description
))
// Add to list
keys_list += list(list(
"key" = key,
"bindings" = binding_names
))
return list(
"hotkeys" = keys_list
)