Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions baystation12.dme
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,7 @@
#include "code\controllers\subsystems\goals.dm"
#include "code\controllers\subsystems\graphs.dm"
#include "code\controllers\subsystems\inactivity.dm"
#include "code\controllers\subsystems\input.dm"
#include "code\controllers\subsystems\jobs.dm"
#include "code\controllers\subsystems\kv.dm"
#include "code\controllers\subsystems\lighting.dm"
Expand Down Expand Up @@ -1967,6 +1968,17 @@
#include "code\modules\item_worth\item_worth.dm"
#include "code\modules\item_worth\value_procs.dm"
#include "code\modules\item_worth\worths_list.dm"
#include "code\modules\keybindings\bindings_admin.dm"
#include "code\modules\keybindings\bindings_ai.dm"
#include "code\modules\keybindings\bindings_atom.dm"
#include "code\modules\keybindings\bindings_carbon.dm"
#include "code\modules\keybindings\bindings_client.dm"
#include "code\modules\keybindings\bindings_human.dm"
#include "code\modules\keybindings\bindings_living.dm"
#include "code\modules\keybindings\bindings_mob.dm"
#include "code\modules\keybindings\bindings_robot.dm"
#include "code\modules\keybindings\focus.dm"
#include "code\modules\keybindings\setup.dm"
#include "code\modules\library\lib_items.dm"
#include "code\modules\library\lib_machines.dm"
#include "code\modules\library\lib_readme.dm"
Expand Down
9 changes: 8 additions & 1 deletion code/__defines/admin.dm
Original file line number Diff line number Diff line change
Expand Up @@ -46,4 +46,11 @@
#define TICKET_ASSIGNED 2 // An admin has assigned themself to the ticket and will respond

#define LAST_CKEY(M) (M.ckey || M.last_ckey)
#define LAST_KEY(M) (M.key || M.last_ckey)
#define LAST_KEY(M) (M.key || M.last_ckey)

///Max length of a keypress command before it's considered to be a forged packet/bogus command
#define MAX_KEYPRESS_COMMANDLENGTH 16
///Max amount of keypress messages per second over two seconds before client is autokicked
#define MAX_KEYPRESS_AUTOKICK 50
///Length of held key rolling buffer
#define HELD_KEY_BUFFER_LENGTH 15
3 changes: 3 additions & 0 deletions code/__defines/colors.dm
Original file line number Diff line number Diff line change
Expand Up @@ -181,3 +181,6 @@
#define COLOR_DARKMODE_BACKGROUND "#202020"
#define COLOR_DARKMODE_DARKBACKGROUND "#171717"
#define COLOR_DARKMODE_TEXT "#a4bad6"

#define COLOR_INPUT_DISABLED "#F0F0F0"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Цвета и буквы в них с маленькой. У нас стоит ЮнитТест на это.

#define COLOR_INPUT_ENABLED "#D3B5B5"
9 changes: 9 additions & 0 deletions code/__defines/misc.dm
Original file line number Diff line number Diff line change
Expand Up @@ -293,3 +293,12 @@
#define INIT_MACHINERY_PROCESS_ALL 0x3
//--

//intent defines
#define INTENT_HELP "help"
#define INTENT_GRAB "grab"
#define INTENT_DISARM "disarm"
#define INTENT_HARM "harm"
Comment on lines +296 to +300
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Можно убрать. У нас есть дефайны I_HELP и прочие.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

К тому же это не используется нигде, по крайней мере сейчас.

//NOTE: INTENT_HOTKEY_* defines are not actual intents!
//they are here to support hotkeys
#define INTENT_HOTKEY_LEFT "left"
#define INTENT_HOTKEY_RIGHT "right"
1 change: 1 addition & 0 deletions code/__defines/subsystem-priority.dm
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
#define SS_PRIORITY_ICON_UPDATE 20 // Queued icon updates. Mostly used by APCs and tables.

// Normal
#define SS_PRIORITY_INPUT 1000
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

#define SS_PRIORITY_INPUT 20 по рекомендации Lohikar.

#define SS_PRIORITY_TICKER 100 // Gameticker.
#define SS_PRIORITY_MOB 95 // Mob Life().
#define SS_PRIORITY_MACHINERY 95 // Machinery + powernet ticks.
Expand Down
1 change: 1 addition & 0 deletions code/__defines/subsystems.dm
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ return;\
// Subsystems shutdown in the reverse of the order they initialize in
// The numbers just define the ordering, they are meaningless otherwise.

#define SS_INIT_INPUT 19
#define SS_INIT_EARLY 18
#define SS_INIT_GARBAGE 17
#define SS_INIT_CHEMISTRY 16
Expand Down
3 changes: 3 additions & 0 deletions code/_helpers/unsorted.dm
Original file line number Diff line number Diff line change
Expand Up @@ -1118,3 +1118,6 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new)
M.start_pulling(t)
else
step(user.pulling, get_dir(user.pulling.loc, A))

/proc/REF(input)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Заменить на существующий макрос any2ref, если возможно.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Оно в принципе и не нужно как я понял.

return "\ref[input]"
11 changes: 7 additions & 4 deletions code/_onclick/click.dm
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,9 @@
if(modifiers["middle"])
MiddleClickOn(A)
return 1
if(modifiers["middle"] && modifiers["alt"])
AltMiddleClickOn(A)
return 1
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Это должно быть выше if(modifiers["middle"]) т.к. выше проеряется голый вариант без модификатора альта и отбрасывает последующие проверки.

if(modifiers["shift"])
ShiftClickOn(A)
return 0
Expand Down Expand Up @@ -219,7 +222,10 @@
Only used for swapping hands
*/
/mob/proc/MiddleClickOn(var/atom/A)
swap_hand()
pointed(A)
return

/mob/proc/AltMiddleClickOn(var/atom/A)
return

// In case of use break glass
Expand Down Expand Up @@ -302,11 +308,8 @@
/mob/proc/CtrlAltClickOn(var/atom/A)
if(A.CtrlAltClick(src))
return
pointed(A)

/atom/proc/CtrlAltClick(var/mob/user)
if(user.client && user.client.eye == user)
user.pointed(src)
return

/*
Expand Down
2 changes: 1 addition & 1 deletion code/_onclick/click_inf.dm
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/mob/living/carbon/MiddleClickOn(atom/A)
/mob/living/carbon/AltMiddleClickOn(atom/A)
if(!stat && mind && iscarbon(A) && A != src)
var/datum/changeling/C = mind.changeling
if(C?.chosen_sting)
Expand Down
5 changes: 3 additions & 2 deletions code/_onclick/cyborg.dm
Original file line number Diff line number Diff line change
Expand Up @@ -96,8 +96,9 @@
return
return

//Middle click cycles through selected modules.
/mob/living/silicon/robot/MiddleClickOn(var/atom/A)
//Alt Middle click cycles through selected modules.
//Though we have "X" marcos for it and humans now can't swap hands using middle click, I'll let it be here
/mob/living/silicon/robot/AltMiddleClickOn(var/atom/A)
cycle_modules()
return

Expand Down
3 changes: 2 additions & 1 deletion code/_onclick/hud/ability_screen_objects.dm
Original file line number Diff line number Diff line change
Expand Up @@ -353,6 +353,7 @@
toggle_open(2) //forces the icons to refresh on screen

/mob/Life()
set waitfor = FALSE
UNLINT(..())
if(ability_master)
ability_master.update_spells(0)
Expand Down Expand Up @@ -410,4 +411,4 @@
for(var/obj/screen/ability/spell/spell in spell_objects)
spell.spell.silenced = amount
spell.spell.process()
spell.update_charge(1)
spell.update_charge(1)
4 changes: 2 additions & 2 deletions code/_onclick/rig.dm
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/mob/living/MiddleClickOn(atom/A)
/mob/living/AltMiddleClickOn(atom/A)
if(get_preference_value(/datum/client_preference/hardsuit_activation) == GLOB.PREF_MIDDLE_CLICK)
if(HardsuitClickOn(A))
return
Expand Down Expand Up @@ -51,4 +51,4 @@
if(ismob(A)) // No instant mob attacking - though modules have their own cooldowns
setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
return 1
return 0
return 0
124 changes: 124 additions & 0 deletions code/controllers/subsystems/input.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
SUBSYSTEM_DEF(input)
name = "Input"
wait = 1 //SS_TICKER means this runs every tick
init_order = SS_INIT_INPUT
flags = SS_TICKER
priority = SS_PRIORITY_INPUT
runlevels = RUNLEVELS_DEFAULT | RUNLEVEL_LOBBY

var/list/macro_sets
var/list/movement_keys
var/list/alt_movement_keys

/datum/controller/subsystem/input/Initialize()
setup_default_macro_sets()

setup_default_movement_keys()

initialized = TRUE

refresh_client_macro_sets()

return ..()

// This is for when macro sets are eventualy datumized
/datum/controller/subsystem/input/proc/setup_default_macro_sets()
var/list/static/default_macro_sets

if(default_macro_sets)
macro_sets = default_macro_sets
return

default_macro_sets = list(
"default" = list(
"Tab" = "\".winset \\\"input.focus=true?map.focus=true input.background-color=[COLOR_INPUT_DISABLED]:input.focus=true input.background-color=[COLOR_INPUT_ENABLED]\\\"\"",
"Back" = "\".winset \\\"input.focus=true input.text=\\\"\\\"\\\"\"", // This makes it so backspace can remove default inputs
"Any" = "\"KeyDown \[\[*\]\]\"",
"Any+UP" = "\"KeyUp \[\[*\]\]\"",
),
"old_default" = list(
"Tab" = "\".winset \\\"mainwindow.macro=old_hotkeys map.focus=true input.background-color=[COLOR_INPUT_DISABLED]\\\"\"",
),
"old_hotkeys" = list(
"Tab" = "\".winset \\\"mainwindow.macro=old_default input.focus=true input.background-color=[COLOR_INPUT_ENABLED]\\\"\"",
"Back" = "\".winset \\\"input.focus=true input.text=\\\"\\\"\\\"\"", // This makes it so backspace can remove default inputs
"Any" = "\"KeyDown \[\[*\]\]\"",
"Any+UP" = "\"KeyUp \[\[*\]\]\"",
),
)

// Because i'm lazy and don't want to type all these out twice
var/list/old_default = default_macro_sets["old_default"]

var/list/static/oldmode_keys = list(
"North", "East", "South", "West",
"Northeast", "Southeast", "Northwest", "Southwest",
"Insert", "Delete", "Ctrl", "Alt", "Shift",
"F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12",
)

for(var/i in 1 to oldmode_keys.len)
var/key = oldmode_keys[i]
old_default[key] = "\"KeyDown [key]\""
old_default["[key]+UP"] = "\"KeyUp [key]\""

var/list/static/oldmode_ctrl_override_keys = list(
"W" = "W", "A" = "A", "S" = "S", "D" = "D", // movement
"1" = "1", "2" = "2", "3" = "3", "4" = "4", // intent
"B" = "B", // resist, rest
"E" = "E", // quick equip
"F" = "F", // intent left
"G" = "G", // intent right
"H" = "H", // stop pulling
"Q" = "Q", // drop
"R" = "R", // throw
"X" = "X", // switch hands
"Y" = "Y", // activate item
"Z" = "Z", // activate item
"T" = "T", // say, whisper
"M" = "M", // me
"O" = "O", // ooc
"L" = "L", // looc
"C" = "C", // stop pulling
)

for(var/i in 1 to oldmode_ctrl_override_keys.len)
var/key = oldmode_ctrl_override_keys[i]
var/override = oldmode_ctrl_override_keys[key]
old_default["Ctrl+[key]"] = "\"KeyDown [override]\""
old_default["Ctrl+[key]+UP"] = "\"KeyUp [override]\""

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
)
var/static/list/azerty_movement_keys = list(
"Z" = NORTH, "Q" = WEST, "S" = SOUTH, "D" = EAST, // WASD
"North" = NORTH, "West" = WEST, "South" = SOUTH, "East" = EAST, // Arrow keys & Numpad
)
movement_keys = default_movement_keys.Copy()
alt_movement_keys = azerty_movement_keys.Copy()

// Badmins just wanna have fun ♪
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ода юникодовские значки в коментариях

/datum/controller/subsystem/input/proc/refresh_client_macro_sets()
var/list/clients = GLOB.clients
for(var/i in 1 to clients.len)
var/client/user = clients[i]
user.set_macros()

/datum/controller/subsystem/input/fire()
var/list/clients = GLOB.clients // Let's sing the list cache song
if(listclearnulls(clients)) // clear nulls before we run keyloop
log_world("Found a null in clients list!")
for(var/i in 1 to clients.len)
var/client/C = clients[i]
C.keyLoop()

/datum/controller/subsystem/input/Recover()
macro_sets = SSinput.macro_sets
movement_keys = SSinput.movement_keys
alt_movement_keys = SSinput.alt_movement_keys
1 change: 1 addition & 0 deletions code/datums/movement/atom_movable.dm
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

// Movement relay
/datum/movement_handler/move_relay/DoMove(var/direction, var/mover)
set waitfor = FALSE
var/atom/movable/AM = host.loc
if(!istype(AM))
return
Expand Down
1 change: 1 addition & 0 deletions code/datums/movement/mob.dm
Original file line number Diff line number Diff line change
Expand Up @@ -223,6 +223,7 @@

// Finally.. the last of the mob movement junk
/datum/movement_handler/mob/movement/DoMove(var/direction, var/mob/mover)
set waitfor = FALSE
. = MOVEMENT_HANDLED

if(mob.moving)
Expand Down
3 changes: 2 additions & 1 deletion code/datums/movement/movement.dm
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ if(LAZYLEN(movement_handlers) && ispath(movement_handlers[1])) { \
for(var/mh in movement_handlers)
var/datum/movement_handler/movement_handler = mh
if(movement_handler.MayMove(mover, is_external) & MOVEMENT_STOP)
return MOVEMENT_HANDLED
return MOVEMENT_STOP

. = movement_handler.DoMove(direction, mover, is_external)
if(. & MOVEMENT_REMOVE)
Expand Down Expand Up @@ -130,6 +130,7 @@ if(LAZYLEN(movement_handlers) && ispath(movement_handlers[1])) { \
. = ..()

/datum/movement_handler/proc/DoMove(var/direction, var/mob/mover, var/is_external)
set waitfor = FALSE
return

// Asks the handlers if the mob may move, ignoring destination, if attempting a DoMove()
Expand Down
8 changes: 4 additions & 4 deletions code/game/machinery/Sleeper.dm
Original file line number Diff line number Diff line change
Expand Up @@ -266,10 +266,10 @@
occupant.client.eye = occupant.client.mob
occupant.client.perspective = MOB_PERSPECTIVE
if(occupant.loc == src)
if(not_turf_contains_dense_objects(get_turf(get_step(loc, dir))))
occupant.dropInto(get_step(loc, dir))
else
occupant.dropInto(loc)
// if(not_turf_contains_dense_objects(get_turf(get_step(loc, dir)))) //Because of new input system, I don't want to write more cruthes in it
// occupant.dropInto(get_step(loc, dir))
// else
occupant.dropInto(loc)
Comment on lines +269 to +272
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Чо за костыли?

set_occupant(null)

for(var/obj/O in (contents - component_parts)) // In case an object was dropped inside or something. Excludes the beaker and component parts.
Expand Down
5 changes: 2 additions & 3 deletions code/game/machinery/cryo.dm
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
active_power_usage = 4000 //inf, was 200
clicksound = 'sound/machines/buttonbeep.ogg'
clickvol = 30

machine_name = "cryo cell"
machine_desc = "Uses a supercooled chemical bath to hold living beings in something close to suspended animation. Often paired with specialized medicines to rapidly heal wounds of a patient inside."

Expand Down Expand Up @@ -278,7 +278,7 @@
if (occupant.client)
occupant.client.eye = occupant.client.mob
occupant.client.perspective = MOB_PERSPECTIVE
occupant.forceMove(get_step(loc, SOUTH))
occupant.forceMove(loc)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

?

if (occupant.bodytemperature < 261 && occupant.bodytemperature >= 70)
occupant.bodytemperature = 261
occupant = null
Expand Down Expand Up @@ -401,4 +401,3 @@

/datum/data/function/proc/display()
return

12 changes: 6 additions & 6 deletions code/game/machinery/cryopod.dm
Original file line number Diff line number Diff line change
Expand Up @@ -353,11 +353,11 @@
if(istype(O,/obj/item/storage/internal)) //Stop eating pockets, you fuck!
continue
O.forceMove(src)

// Надо их просто удалить
for(var/obj/item/holder/H in occupant)
H.destroy_all()

for(var/obj/item/holder/H in src.contents)
H.destroy_all()

Expand Down Expand Up @@ -586,10 +586,10 @@
occupant.client.eye = src.occupant.client.mob
occupant.client.perspective = MOB_PERSPECTIVE

if(not_turf_contains_dense_objects(get_turf(get_step(loc, dir))))
occupant.dropInto(get_step(loc, dir))
else
occupant.dropInto(loc)
// if(not_turf_contains_dense_objects(get_turf(get_step(loc, dir)))) //Because of new input system, I don't want to write more cruthes in it
// occupant.dropInto(get_step(loc, dir))
// else
occupant.dropInto(loc)
Comment on lines +589 to +592
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Опять же, что за костыли?


set_occupant(null)

Expand Down
Loading