Refactored deletion observables to use the COMSIG_QDELETING signal (#20121)

Refactored deletion observables to use the COMSIG_QDELETING signal
instead, removed the observable.
This commit is contained in:
Fluffy
2024-11-04 21:51:18 +00:00
committed by GitHub
parent ce0f722f18
commit 513facdb0d
25 changed files with 120 additions and 56 deletions
+3 -3
View File
@@ -23,7 +23,7 @@
/obj/item/device/multitool/hacktool/Destroy()
for(var/T in known_targets)
var/atom/target = T
GLOB.destroyed_event.unregister(target, src)
UnregisterSignal(target, COMSIG_QDELETING)
known_targets.Cut()
qdel(hack_state)
hack_state = null
@@ -88,7 +88,7 @@
return FALSE
known_targets.Insert(1, target) // Insert the newly hacked target first,
GLOB.destroyed_event.register(target, src, PROC_REF(on_target_destroy))
RegisterSignal(target, COMSIG_QDELETING, PROC_REF(on_target_destroy))
return TRUE
/obj/item/device/multitool/hacktool/proc/sanity_check()
@@ -98,7 +98,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]
GLOB.destroyed_event.unregister(A, src)
UnregisterSignal(A, COMSIG_QDELETING)
known_targets.Cut(max_known_targets + 1)
/obj/item/device/multitool/hacktool/proc/on_target_destroy(var/target)
+7 -3
View File
@@ -65,14 +65,18 @@
unregister_buffer(buffer_object)
buffer_object = buffer
if(buffer_object)
GLOB.destroyed_event.register(buffer_object, src, PROC_REF(unregister_buffer))
RegisterSignal(buffer_object, COMSIG_QDELETING, PROC_REF(on_buffer_object_deletion))
update_icon()
/obj/item/device/multitool/proc/unregister_buffer(var/atom/buffer_to_unregister)
/obj/item/device/multitool/proc/on_buffer_object_deletion(datum/source)
SIGNAL_HANDLER
unregister_buffer(source)
/obj/item/device/multitool/proc/unregister_buffer(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)
GLOB.destroyed_event.unregister(buffer_object, src)
UnregisterSignal(buffer_object, COMSIG_QDELETING)
buffer_object = null
update_icon()
@@ -83,13 +83,17 @@
unset_registered_user()
registered_user = user
user.set_id_info(src)
GLOB.destroyed_event.register(user, src, PROC_REF(unset_registered_user))
RegisterSignal(user, COMSIG_QDELETING, PROC_REF(on_user_deletion))
return TRUE
/obj/item/card/id/syndicate/proc/on_user_deletion(datum/source)
SIGNAL_HANDLER
unset_registered_user(source)
/obj/item/card/id/syndicate/proc/unset_registered_user(var/mob/user)
if(!registered_user || (user && user != registered_user))
return
GLOB.destroyed_event.unregister(registered_user, src)
UnregisterSignal(registered_user, COMSIG_QDELETING)
registered_user = null
/obj/item/card/id/syndicate/CanUseTopic(mob/user)
@@ -245,9 +245,9 @@ Frequency:
var/old_pad = linked_pad
linked_pad = teleport_options[teleport_choice]
if(linked_pad)
GLOB.destroyed_event.register(linked_pad, src, PROC_REF(pad_destroyed))
RegisterSignal(linked_pad, COMSIG_QDELETING, PROC_REF(pad_destroyed))
if(old_pad && linked_pad != old_pad)
GLOB.destroyed_event.unregister(old_pad, src)
UnregisterSignal(old_pad, COMSIG_QDELETING)
return
return ..()