From e27346812fa7aa80ab588ee20158773f0554f035 Mon Sep 17 00:00:00 2001 From: Emmett Gaines Date: Sun, 14 Jan 2018 14:37:59 -0500 Subject: [PATCH 1/2] Moves GLOB.movement_keys into SSinput and adds movement direction badminry (#34123) * badmin flip dirs * moves movement_keys into SSinput from GLOB --- code/controllers/subsystem/input.dm | 12 +++++ code/modules/admin/secrets.dm | 59 +++++++++++++++++++++ code/modules/keybindings/bindings_atom.dm | 2 +- code/modules/keybindings/bindings_client.dm | 4 +- code/modules/keybindings/bindings_mob.dm | 2 +- code/modules/keybindings/setup.dm | 6 --- 6 files changed, 75 insertions(+), 10 deletions(-) diff --git a/code/controllers/subsystem/input.dm b/code/controllers/subsystem/input.dm index 6ffd12264f..136501373e 100644 --- a/code/controllers/subsystem/input.dm +++ b/code/controllers/subsystem/input.dm @@ -7,10 +7,13 @@ SUBSYSTEM_DEF(input) runlevels = RUNLEVELS_DEFAULT | RUNLEVEL_LOBBY var/list/macro_sets + var/list/movement_keys /datum/controller/subsystem/input/Initialize() setup_default_macro_sets() + setup_default_movement_keys() + initialized = TRUE refresh_client_macro_sets() @@ -89,6 +92,15 @@ SUBSYSTEM_DEF(input) macro_sets = default_macro_sets +// For initially setting up or resetting to default the movement keys +/datum/controller/subsystem/input/proc/setup_default_movement_keys() + var/static/list/default_movement_keys = list( + "W" = NORTH, "A" = WEST, "S" = SOUTH, "D" = EAST, // WASD + "North" = NORTH, "West" = WEST, "South" = SOUTH, "East" = EAST, // Arrow keys & Numpad + ) + + movement_keys = default_movement_keys.Copy() + // Badmins just wanna have fun ♪ /datum/controller/subsystem/input/proc/refresh_client_macro_sets() var/list/clients = GLOB.clients diff --git a/code/modules/admin/secrets.dm b/code/modules/admin/secrets.dm index b788c21fba..42cd5bc7a5 100644 --- a/code/modules/admin/secrets.dm +++ b/code/modules/admin/secrets.dm @@ -65,6 +65,11 @@ Fix all lights
The floor is lava! (DANGEROUS: extremely lame)

+ Flip client movement directions
+ Randomize client movement directions
+ Set each movement direction manually
+ Reset movement directions to default
+
Change bomb cap
Mass Purrbation
Mass Remove Purrbation
@@ -565,6 +570,60 @@ purrbation.") log_admin("[key_name(usr)] has removed everyone from purrbation.") + if("flipmovement") + if(!check_rights(R_FUN)) + return + if(alert("Flip all movement controls?","Confirm","Yes","Cancel") == "Cancel") + return + var/list/movement_keys = SSinput.movement_keys + for(var/i in 1 to movement_keys.len) + var/key = movement_keys[i] + movement_keys[key] = turn(movement_keys[key], 180) + message_admins("[key_name_admin(usr)] has flipped all movement directions.") + log_admin("[key_name(usr)] has flipped all movement directions.") + + if("randommovement") + if(!check_rights(R_FUN)) + return + if(alert("Randomize all movement controls?","Confirm","Yes","Cancel") == "Cancel") + return + var/list/movement_keys = SSinput.movement_keys + for(var/i in 1 to movement_keys.len) + var/key = movement_keys[i] + movement_keys[key] = turn(movement_keys[key], 45 * rand(1, 8)) + message_admins("[key_name_admin(usr)] has randomized all movement directions.") + log_admin("[key_name(usr)] has randomized all movement directions.") + + if("custommovement") + if(!check_rights(R_FUN)) + return + if(alert("Are you sure you want to change every movement key?","Confirm","Yes","Cancel") == "Cancel") + return + var/list/movement_keys = SSinput.movement_keys + var/list/new_movement = list() + for(var/i in 1 to movement_keys.len) + var/key = movement_keys[i] + + var/msg = "Please input the new movement direction when the user presses [key]. Ex. northeast" + var/title = "New direction for [key]" + var/new_direction = text2dir(input(usr, msg, title) as text|null) + if(!new_direction) + new_direction = movement_keys[key] + + new_movement[key] = new_direction + SSinput.movement_keys = new_movement + message_admins("[key_name_admin(usr)] has configured all movement directions.") + log_admin("[key_name(usr)] has configured all movement directions.") + + if("resetmovement") + if(!check_rights(R_FUN)) + return + if(alert("Are you sure you want to reset movement keys to default?","Confirm","Yes","Cancel") == "Cancel") + return + SSinput.setup_default_movement_keys() + message_admins("[key_name_admin(usr)] has reset all movement keys.") + log_admin("[key_name(usr)] has reset all movement keys.") + if(E) E.processing = FALSE if(E.announceWhen>0) diff --git a/code/modules/keybindings/bindings_atom.dm b/code/modules/keybindings/bindings_atom.dm index 9738175d2d..4aac76bd67 100644 --- a/code/modules/keybindings/bindings_atom.dm +++ b/code/modules/keybindings/bindings_atom.dm @@ -5,7 +5,7 @@ if(!user.keys_held["Ctrl"]) var/movement_dir = NONE for(var/_key in user.keys_held) - movement_dir = movement_dir | GLOB.movement_keys[_key] + movement_dir = movement_dir | SSinput.movement_keys[_key] if(user.next_move_dir_add) movement_dir |= user.next_move_dir_add if(user.next_move_dir_sub) diff --git a/code/modules/keybindings/bindings_client.dm b/code/modules/keybindings/bindings_client.dm index 4d4f8ce18a..42febe5428 100644 --- a/code/modules/keybindings/bindings_client.dm +++ b/code/modules/keybindings/bindings_client.dm @@ -5,7 +5,7 @@ set hidden = TRUE keys_held[_key] = world.time - var/movement = GLOB.movement_keys[_key] + var/movement = SSinput.movement_keys[_key] if(!(next_move_dir_sub & movement)) next_move_dir_add |= movement @@ -36,7 +36,7 @@ set hidden = TRUE keys_held -= _key - var/movement = GLOB.movement_keys[_key] + var/movement = SSinput.movement_keys[_key] if(!(next_move_dir_add & movement)) next_move_dir_sub |= movement diff --git a/code/modules/keybindings/bindings_mob.dm b/code/modules/keybindings/bindings_mob.dm index 1d35694e5f..08e7a7bb20 100644 --- a/code/modules/keybindings/bindings_mob.dm +++ b/code/modules/keybindings/bindings_mob.dm @@ -56,7 +56,7 @@ return if(client.keys_held["Ctrl"]) - switch(GLOB.movement_keys[_key]) + switch(SSinput.movement_keys[_key]) if(NORTH) northface() return diff --git a/code/modules/keybindings/setup.dm b/code/modules/keybindings/setup.dm index c36db0a1f3..7d3127a6b4 100644 --- a/code/modules/keybindings/setup.dm +++ b/code/modules/keybindings/setup.dm @@ -14,12 +14,6 @@ /datum/proc/keyLoop(client/user) // Called once every frame return -// Keys used for movement -GLOBAL_LIST_INIT(movement_keys, list( - "W" = NORTH, "A" = WEST, "S" = SOUTH, "D" = EAST, // WASD - "North" = NORTH, "West" = WEST, "South" = SOUTH, "East" = EAST, // Arrow keys & Numpad - )) - // removes all the existing macros /client/proc/erase_all_macros() var/list/macro_sets = params2list(winget(src, null, "macros"))