Makes events global.

Greatly decreases the number of objects that need to be created (currently 3 event handlers in total vs basically 3 per datum)
The price is a slower lookup of listeners but on a per round basis it should still be much less than the current startup time penalty.
This commit is contained in:
PsiOmegaDelta
2016-01-26 13:12:37 +01:00
parent b4d66210b2
commit 6089ccccea
19 changed files with 145 additions and 163 deletions
+3 -3
View File
@@ -17,7 +17,7 @@
/obj/item/device/multitool/hacktool/Destroy()
for(var/T in known_targets)
var/atom/target = T
target.destruction.unregister(src)
destroyed_event.unregister(target, src)
known_targets.Cut()
qdel(hack_state)
hack_state = null
@@ -68,7 +68,7 @@
return 0
known_targets.Insert(1, target) // Insert the newly hacked target first,
target.destruction.register(src, /obj/item/device/multitool/hacktool/proc/on_target_destroy)
destroyed_event.register(target, src, /obj/item/device/multitool/hacktool/proc/on_target_destroy)
return 1
/obj/item/device/multitool/hacktool/proc/sanity_check()
@@ -77,7 +77,7 @@
if(known_targets.len > max_known_targets)
for(var/i = (max_known_targets + 1) to known_targets.len)
var/atom/A = known_targets[i]
A.destruction.unregister(src)
destroyed_event.unregister(A, src)
known_targets.Cut(max_known_targets + 1)
/obj/item/device/multitool/hacktool/proc/on_target_destroy(var/target)
+2 -2
View File
@@ -48,13 +48,13 @@
unregister_buffer(buffer_object)
buffer_object = buffer
if(buffer_object)
buffer_object.destruction.register(src, /obj/item/device/multitool/proc/unregister_buffer)
destroyed_event.register(buffer_object, src, /obj/item/device/multitool/proc/unregister_buffer)
/obj/item/device/multitool/proc/unregister_buffer(var/atom/buffer_to_unregister)
// Only remove the buffered object, don't reset the name
// This means one cannot know if the buffer has been destroyed until one attempts to use it.
if(buffer_to_unregister == buffer_object && buffer_object)
buffer_object.destruction.unregister(src)
destroyed_event.unregister(buffer_object, src)
buffer_object = null
/obj/item/device/multitool/resolve_attackby(atom/A, mob/user)