mirror of
https://github.com/fulpstation/fulpstation.git
synced 2025-12-10 10:01:40 +00:00
* custom keybindings * Update _lists.dm * Update robot.dm * modify weights and clean up some vars * Update say.dm * Apply suggestions from code review Co-Authored-By: Emmett Gaines <ninjanomnom@gmail.com> * some review changes * formatting * include focus hack, remove me_wrapper, give default keybinds to new characters, misc fixes * revert hack and more reviews * remove another focus hack this was causing issues with the keydown proc returning early
53 lines
2.0 KiB
Plaintext
53 lines
2.0 KiB
Plaintext
/client
|
|
/// A rolling buffer of any keys held currently
|
|
var/list/keys_held = list()
|
|
///used to keep track of the current rolling buffer position
|
|
var/current_key_address = 0
|
|
/// These next two vars are to apply movement for keypresses and releases made while move delayed.
|
|
/// Because discarding that input makes the game less responsive.
|
|
/// On next move, add this dir to the move that would otherwise be done
|
|
var/next_move_dir_add
|
|
/// On next move, subtract this dir from the move that would otherwise be done
|
|
var/next_move_dir_sub
|
|
|
|
// Set a client's focus to an object and override these procs on that object to let it handle keypresses
|
|
|
|
/datum/proc/key_down(key, client/user) // Called when a key is pressed down initially
|
|
return
|
|
/datum/proc/key_up(key, client/user) // Called when a key is released
|
|
return
|
|
/datum/proc/keyLoop(client/user) // Called once every frame
|
|
set waitfor = FALSE
|
|
return
|
|
|
|
// removes all the existing macros
|
|
/client/proc/erase_all_macros()
|
|
var/erase_output = ""
|
|
var/list/macro_set = params2list(winget(src, "default.*", "command")) // The third arg doesnt matter here as we're just removing them all
|
|
for(var/k in 1 to length(macro_set))
|
|
var/list/split_name = splittext(macro_set[k], ".")
|
|
var/macro_name = "[split_name[1]].[split_name[2]]" // [3] is "command"
|
|
erase_output = "[erase_output];[macro_name].parent=null"
|
|
winset(src, null, erase_output)
|
|
|
|
/client/proc/set_macros()
|
|
set waitfor = FALSE
|
|
|
|
//Reset and populate the rolling buffer
|
|
keys_held.Cut()
|
|
for(var/i in 1 to HELD_KEY_BUFFER_LENGTH)
|
|
keys_held += null
|
|
|
|
erase_all_macros()
|
|
|
|
var/list/macro_set = SSinput.macro_set
|
|
for(var/k in 1 to length(macro_set))
|
|
var/key = macro_set[k]
|
|
var/command = macro_set[key]
|
|
winset(src, "default-[REF(key)]", "parent=default;name=[key];command=[command]")
|
|
|
|
if(prefs.hotkeys)
|
|
winset(src, null, "input.focus=true input.background-color=[COLOR_INPUT_ENABLED]")
|
|
else
|
|
winset(src, null, "input.focus=true input.background-color=[COLOR_INPUT_DISABLED]")
|