|
|
|
@@ -53,7 +53,6 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
|
|
|
|
/// List with a key string associated to a list of keybindings. Unlike key_bindings, this one operates on raw key, allowing for binding a key that triggers regardless of if a modifier is depressed as long as the raw key is sent.
|
|
|
|
|
var/list/modless_key_bindings = list()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var/tgui_fancy = TRUE
|
|
|
|
|
var/tgui_lock = TRUE
|
|
|
|
|
var/windowflashing = TRUE
|
|
|
|
@@ -219,7 +218,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
|
|
|
|
//we couldn't load character data so just randomize the character appearance + name
|
|
|
|
|
random_character() //let's create a random character then - rather than a fat, bald and naked man.
|
|
|
|
|
key_bindings = deepCopyList(GLOB.hotkey_keybinding_list_by_key) // give them default keybinds and update their movement keys
|
|
|
|
|
C?.update_movement_keys(src)
|
|
|
|
|
C?.ensure_keys_set(src)
|
|
|
|
|
real_name = pref_species.random_name(gender,1)
|
|
|
|
|
if(!loaded_preferences_successfully)
|
|
|
|
|
save_preferences()
|
|
|
|
@@ -952,7 +951,9 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
|
|
|
|
var/list/default_keys = hotkeys ? kb.hotkey_keys : kb.classic_keys
|
|
|
|
|
if(LAZYLEN(default_keys))
|
|
|
|
|
dat += "| Default: [default_keys.Join(", ")]"
|
|
|
|
|
dat += "</span><span class='independent'>Independent Binding: <a href='?_src_=prefs;preference=keybindings_capture;keybinding=[kb.name];old_key=[current_independent_binding];independent=1'>[current_independent_binding]</a></span>"
|
|
|
|
|
dat += "</span>"
|
|
|
|
|
if(!kb.special && !kb.clientside)
|
|
|
|
|
dat += "<span class='independent'>Independent Binding: <a href='?_src_=prefs;preference=keybindings_capture;keybinding=[kb.name];old_key=[current_independent_binding];independent=1'>[current_independent_binding]</a></span>"
|
|
|
|
|
dat += "<br>"
|
|
|
|
|
else
|
|
|
|
|
var/bound_key = user_binds[kb.name][1]
|
|
|
|
@@ -965,7 +966,9 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
|
|
|
|
var/list/default_keys = hotkeys ? kb.classic_keys : kb.hotkey_keys
|
|
|
|
|
if(LAZYLEN(default_keys))
|
|
|
|
|
dat += "| Default: [default_keys.Join(", ")]"
|
|
|
|
|
dat += "</span><span class='independent'>Independent Binding: <a href='?_src_=prefs;preference=keybindings_capture;keybinding=[kb.name];old_key=[current_independent_binding];independent=1'>[current_independent_binding]</a></span>"
|
|
|
|
|
dat += "</span>"
|
|
|
|
|
if(!kb.special && !kb.clientside)
|
|
|
|
|
dat += "<span class='independent'>Independent Binding: <a href='?_src_=prefs;preference=keybindings_capture;keybinding=[kb.name];old_key=[current_independent_binding];independent=1'>[current_independent_binding]</a></span>"
|
|
|
|
|
dat += "<br>"
|
|
|
|
|
|
|
|
|
|
dat += "<br><br>"
|
|
|
|
@@ -991,7 +994,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
|
|
|
|
#undef APPEARANCE_CATEGORY_COLUMN
|
|
|
|
|
#undef MAX_MUTANT_ROWS
|
|
|
|
|
|
|
|
|
|
/datum/preferences/proc/CaptureKeybinding(mob/user, datum/keybinding/kb, old_key, independent = FALSE)
|
|
|
|
|
/datum/preferences/proc/CaptureKeybinding(mob/user, datum/keybinding/kb, old_key, independent = FALSE, special = FALSE)
|
|
|
|
|
var/HTML = {"
|
|
|
|
|
<div id='focus' style="outline: 0;" tabindex=0>Keybinding: [kb.full_name]<br>[kb.description]<br><br><b>Press any key to change<br>Press ESC to clear</b></div>
|
|
|
|
|
<script>
|
|
|
|
@@ -1003,7 +1006,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
|
|
|
|
var shift = e.shiftKey ? 1 : 0;
|
|
|
|
|
var numpad = (95 < e.keyCode && e.keyCode < 112) ? 1 : 0;
|
|
|
|
|
var escPressed = e.keyCode == 27 ? 1 : 0;
|
|
|
|
|
var url = 'byond://?_src_=prefs;preference=keybindings_set;keybinding=[kb.name];old_key=[old_key];[independent?"independent=1":""];clear_key='+escPressed+';key='+e.key+';alt='+alt+';ctrl='+ctrl+';shift='+shift+';numpad='+numpad+';key_code='+e.keyCode;
|
|
|
|
|
var url = 'byond://?_src_=prefs;preference=keybindings_set;keybinding=[kb.name];old_key=[old_key];[independent?"independent=1;":""][special?"special=1;":""]clear_key='+escPressed+';key='+e.key+';alt='+alt+';ctrl='+ctrl+';shift='+shift+';numpad='+numpad+';key_code='+e.keyCode;
|
|
|
|
|
window.location=url;
|
|
|
|
|
deedDone = true;
|
|
|
|
|
}
|
|
|
|
@@ -2354,11 +2357,11 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
|
|
|
|
|
|
|
|
|
if("hotkeys")
|
|
|
|
|
hotkeys = !hotkeys
|
|
|
|
|
user.client.set_macros()
|
|
|
|
|
user.client.ensure_keys_set(src)
|
|
|
|
|
|
|
|
|
|
if("keybindings_capture")
|
|
|
|
|
var/datum/keybinding/kb = GLOB.keybindings_by_name[href_list["keybinding"]]
|
|
|
|
|
CaptureKeybinding(user, kb, href_list["old_key"], text2num(href_list["independent"]))
|
|
|
|
|
CaptureKeybinding(user, kb, href_list["old_key"], text2num(href_list["independent"]), kb.special || kb.clientside)
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
if("keybindings_set")
|
|
|
|
@@ -2378,9 +2381,12 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
|
|
|
|
else
|
|
|
|
|
if(key_bindings[old_key])
|
|
|
|
|
key_bindings[old_key] -= kb_name
|
|
|
|
|
LAZYADD(key_bindings["Unbound"], kb_name)
|
|
|
|
|
if(!length(key_bindings[old_key]))
|
|
|
|
|
key_bindings -= old_key
|
|
|
|
|
user << browse(null, "window=capturekeypress")
|
|
|
|
|
if(href_list["special"]) // special keys need a full reset
|
|
|
|
|
user.client.ensure_keys_set(src)
|
|
|
|
|
save_preferences()
|
|
|
|
|
ShowChoices(user)
|
|
|
|
|
return
|
|
|
|
@@ -2415,7 +2421,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
|
|
|
|
key_bindings -= old_key
|
|
|
|
|
key_bindings[full_key] += list(kb_name)
|
|
|
|
|
key_bindings[full_key] = sortList(key_bindings[full_key])
|
|
|
|
|
user.client.update_movement_keys()
|
|
|
|
|
if(href_list["special"]) // special keys need a full reset
|
|
|
|
|
user.client.ensure_keys_set(src)
|
|
|
|
|
user << browse(null, "window=capturekeypress")
|
|
|
|
|
save_preferences()
|
|
|
|
|
|
|
|
|
@@ -2427,7 +2434,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
|
|
|
|
hotkeys = (choice == "Hotkey")
|
|
|
|
|
key_bindings = (hotkeys) ? deepCopyList(GLOB.hotkey_keybinding_list_by_key) : deepCopyList(GLOB.classic_keybinding_list_by_key)
|
|
|
|
|
modless_key_bindings = list()
|
|
|
|
|
user.client.update_movement_keys()
|
|
|
|
|
user.client.ensure_keys_set(src)
|
|
|
|
|
|
|
|
|
|
if("chat_on_map")
|
|
|
|
|
chat_on_map = !chat_on_map
|
|
|
|
@@ -2827,17 +2834,21 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
|
|
|
|
cached_holoform_icons[filter_type] = process_holoform_icon_filter(custom_holoform_icon, filter_type)
|
|
|
|
|
return cached_holoform_icons[filter_type]
|
|
|
|
|
|
|
|
|
|
//Used in savefile update 32, can be removed once that is no longer relevant.
|
|
|
|
|
/// Resets the client's keybindings. Asks them for which
|
|
|
|
|
/datum/preferences/proc/force_reset_keybindings()
|
|
|
|
|
var/choice = tgalert(parent.mob, "Your basic keybindings need to be reset, emotes will remain as before. Would you prefer 'hotkey' or 'classic' mode?", "Reset keybindings", "Hotkey", "Classic")
|
|
|
|
|
hotkeys = (choice != "Classic")
|
|
|
|
|
force_reset_keybindings_direct(hotkeys)
|
|
|
|
|
|
|
|
|
|
/// Does the actual reset
|
|
|
|
|
/datum/preferences/proc/force_reset_keybindings_direct(hotkeys = TRUE)
|
|
|
|
|
var/list/oldkeys = key_bindings
|
|
|
|
|
key_bindings = (hotkeys) ? deepCopyList(GLOB.hotkey_keybinding_list_by_key) : deepCopyList(GLOB.classic_keybinding_list_by_key)
|
|
|
|
|
|
|
|
|
|
for(var/key in oldkeys)
|
|
|
|
|
if(!key_bindings[key])
|
|
|
|
|
key_bindings[key] = oldkeys[key]
|
|
|
|
|
parent.update_movement_keys()
|
|
|
|
|
parent?.ensure_keys_set(src)
|
|
|
|
|
|
|
|
|
|
/datum/preferences/proc/is_loadout_slot_available(slot)
|
|
|
|
|
var/list/L
|
|
|
|
|