diff --git a/code/datums/components/README.md b/code/datums/components/README.md index 476d820bc2..574e628741 100644 --- a/code/datums/components/README.md +++ b/code/datums/components/README.md @@ -34,7 +34,7 @@ Stands have a lot of procs which mimic mob procs. Rather than inserting hooks fo * Lazy associated list of type -> component/list of components. 1. `/datum/component/var/enabled` (protected, boolean) * If the component is enabled. If not, it will not react to signals - * `TRUE` by default + * `FALSE` by default, set to `TRUE` when a signal is registered 1. `/datum/component/var/dupe_mode` (protected, enum) * How duplicate component types are handled when added to the datum. * `COMPONENT_DUPE_HIGHLANDER` (default): Old component will be deleted, new component will first have `/datum/component/proc/InheritComponent(datum/component/old, FALSE)` on it diff --git a/code/datums/components/_component.dm b/code/datums/components/_component.dm index 39980b4f9d..8437d0a7dd 100644 --- a/code/datums/components/_component.dm +++ b/code/datums/components/_component.dm @@ -1,5 +1,5 @@ /datum/component - var/enabled = TRUE + var/enabled = FALSE var/dupe_mode = COMPONENT_DUPE_HIGHLANDER var/dupe_type var/list/signal_procs @@ -133,6 +133,8 @@ if(!istype(proc_or_callback, /datum/callback)) //if it wasnt a callback before, it is now proc_or_callback = CALLBACK(src, proc_or_callback) procs[sig_type] = proc_or_callback + + enabled = TRUE /datum/component/proc/InheritComponent(datum/component/C, i_am_original) return @@ -172,8 +174,7 @@ var/datum/component/C = target if(!C.enabled) return NONE - var/list/sps = C.signal_procs - var/datum/callback/CB = LAZYACCESS(sps, sigtype) + var/datum/callback/CB = C.signal_procs[sigtype] if(!CB) return NONE . = CB.InvokeAsync(arglist(arguments)) @@ -185,9 +186,14 @@ for(var/I in target) var/datum/component/C = I if(!C.enabled) +<<<<<<< HEAD continue var/list/sps = C.signal_procs var/datum/callback/CB = LAZYACCESS(sps, sigtype) +======= + continue + var/datum/callback/CB = C.signal_procs[sigtype] +>>>>>>> 4e01bba... SendSignal optimization (#33220) if(!CB) continue var/retval = CB.InvokeAsync(arglist(arguments))