mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-18 02:19:30 +01:00
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:
@@ -104,7 +104,6 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
GLOB.destroyed_event.raise_event(src)
|
||||
if (!isturf(src))
|
||||
cleanup_events(src)
|
||||
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
GLOBAL_DATUM_INIT(destroyed_event, /singleton/observ/destroyed, new)
|
||||
|
||||
/singleton/observ/destroyed
|
||||
name = "Destroyed"
|
||||
@@ -114,7 +114,7 @@ GLOBAL_DATUM_INIT(sound_player, /singleton/sound_player, new)
|
||||
listeners = list()
|
||||
listener_status = list()
|
||||
|
||||
GLOB.destroyed_event.register(source, src, /datum/proc/qdel_self)
|
||||
RegisterSignal(source, COMSIG_QDELETING, TYPE_PROC_REF(/datum, qdel_self))
|
||||
|
||||
PrivLocateListeners()
|
||||
START_PROCESSING(SSprocessing, src)
|
||||
@@ -154,7 +154,7 @@ GLOBAL_DATUM_INIT(sound_player, /singleton/sound_player, new)
|
||||
listeners = null
|
||||
listener_status = null
|
||||
|
||||
GLOB.destroyed_event.unregister(source, src, /datum/proc/qdel_self)
|
||||
UnregisterSignal(source, COMSIG_QDELETING)
|
||||
source = null
|
||||
|
||||
GLOB.sound_player.PrivStopSound(src)
|
||||
@@ -198,7 +198,7 @@ GLOBAL_DATUM_INIT(sound_player, /singleton/sound_player, new)
|
||||
listeners += listener
|
||||
|
||||
RegisterSignal(listener, COMSIG_MOVABLE_MOVED, PROC_REF(PrivUpdateListenerLoc))
|
||||
GLOB.destroyed_event.register(listener, src, PROC_REF(PrivRemoveListener))
|
||||
RegisterSignal(listener, COMSIG_QDELETING, PROC_REF(PrivRemoveListener))
|
||||
|
||||
PrivUpdateListenerLoc(listener, update_sound = FALSE)
|
||||
|
||||
@@ -206,7 +206,7 @@ GLOBAL_DATUM_INIT(sound_player, /singleton/sound_player, new)
|
||||
null_sound = null_sound || new(channel = sound.channel)
|
||||
sound_to(listener, null_sound)
|
||||
UnregisterSignal(listener, COMSIG_MOVABLE_MOVED)
|
||||
GLOB.destroyed_event.unregister(listener, src, PROC_REF(PrivRemoveListener))
|
||||
UnregisterSignal(listener, COMSIG_QDELETING)
|
||||
listeners -= listener
|
||||
|
||||
/datum/sound_token/proc/PrivUpdateListenerLoc(atom/movable/listener, atom/old_loc, dir, forced, list/old_locs, update_sound = TRUE)
|
||||
|
||||
@@ -74,11 +74,11 @@
|
||||
appearance = daddy.appearance
|
||||
RegisterSignal(daddy, COMSIG_MOVABLE_MOVED, PROC_REF(mirror))
|
||||
GLOB.dir_set_event.register(daddy, src, PROC_REF(mirror_dir))
|
||||
GLOB.destroyed_event.register(daddy, src, TYPE_PROC_REF(/datum, qdel_self))
|
||||
RegisterSignal(daddy, COMSIG_QDELETING, TYPE_PROC_REF(/datum, qdel_self))
|
||||
|
||||
/obj/effect/bluegoast/Destroy()
|
||||
if(daddy)
|
||||
GLOB.destroyed_event.unregister(daddy, src)
|
||||
UnregisterSignal(daddy, COMSIG_QDELETING)
|
||||
GLOB.dir_set_event.unregister(daddy, src)
|
||||
UnregisterSignal(daddy, COMSIG_MOVABLE_MOVED)
|
||||
daddy = null
|
||||
|
||||
@@ -333,7 +333,7 @@
|
||||
for(var/obj/machinery/computer/operating/D in SSmachinery.machinery)
|
||||
if (AreConnectedZLevels(D.z, z))
|
||||
connected_displays += D
|
||||
GLOB.destroyed_event.register(D, src, PROC_REF(remove_display))
|
||||
RegisterSignal(D, COMSIG_QDELETING, PROC_REF(on_connected_display_deletion))
|
||||
return !!length(connected_displays)
|
||||
|
||||
/obj/machinery/body_scanconsole/ui_interact(mob/user, var/datum/tgui/ui)
|
||||
@@ -345,9 +345,14 @@
|
||||
ui = new(user, src, "BodyScanner", tgui_name, 850, 500)
|
||||
ui.open()
|
||||
|
||||
/obj/machinery/body_scanconsole/proc/remove_display(obj/machinery/computer/operating/display)
|
||||
/obj/machinery/body_scanconsole/proc/on_connected_display_deletion(datum/source)
|
||||
SIGNAL_HANDLER
|
||||
|
||||
remove_display(source)
|
||||
|
||||
/obj/machinery/body_scanconsole/proc/remove_display(datum/source, obj/machinery/computer/operating/display)
|
||||
connected_displays -= display
|
||||
GLOB.destroyed_event.unregister(display, src, PROC_REF(remove_display))
|
||||
UnregisterSignal(display, COMSIG_QDELETING)
|
||||
|
||||
/obj/machinery/body_scanconsole/proc/get_connected()
|
||||
if(connected)
|
||||
|
||||
@@ -127,8 +127,7 @@ pixel_x = 8;
|
||||
return TRUE
|
||||
to_chat(user, SPAN_NOTICE("You link \the [attacking_item] to \the [src], it will now ring upon someone using \the [src]."))
|
||||
rings_pdas += attacking_item
|
||||
// WONT FIX: This requires callbacks fuck my dick.
|
||||
GLOB.destroyed_event.register(attacking_item, src, PROC_REF(remove_pda))
|
||||
UnregisterSignal(attacking_item, COMSIG_QDELETING)
|
||||
update_icon()
|
||||
return TRUE
|
||||
else
|
||||
@@ -173,7 +172,7 @@ pixel_x = 8;
|
||||
pinged = FALSE
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/ringer/proc/remove_pda(var/obj/item/modular_computer/P)
|
||||
/obj/machinery/ringer/proc/remove_pda(obj/item/modular_computer/P)
|
||||
if (istype(P))
|
||||
rings_pdas -= P
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 ..()
|
||||
|
||||
|
||||
@@ -69,13 +69,13 @@
|
||||
return
|
||||
ClearValue()
|
||||
value_to_set = new_value
|
||||
GLOB.destroyed_event.register(value_to_set, src, /datum/build_mode/edit/proc/ClearValue)
|
||||
RegisterSignal(value_to_set, COMSIG_QDELETING, /datum/build_mode/edit/proc/ClearValue)
|
||||
|
||||
/datum/build_mode/edit/proc/ClearValue(var/feedback)
|
||||
if(!istype(value_to_set, /datum))
|
||||
return
|
||||
|
||||
GLOB.destroyed_event.unregister(value_to_set, src, /datum/build_mode/edit/proc/ClearValue)
|
||||
UnregisterSignal(value_to_set, COMSIG_QDELETING)
|
||||
value_to_set = initial(value_to_set)
|
||||
if(feedback)
|
||||
Warn("The selected reference value was deleted. Default value restored.")
|
||||
|
||||
@@ -33,14 +33,14 @@
|
||||
ClearDestination()
|
||||
|
||||
destination = A
|
||||
GLOB.destroyed_event.register(destination, src, /datum/build_mode/move_into/proc/ClearDestination)
|
||||
RegisterSignal(destination, COMSIG_QDELETING, /datum/build_mode/move_into/proc/ClearDestination)
|
||||
to_chat(user, SPAN_NOTICE("Will now move targets into \the [destination]."))
|
||||
|
||||
/datum/build_mode/move_into/proc/ClearDestination(var/feedback)
|
||||
if(!destination)
|
||||
return
|
||||
|
||||
GLOB.destroyed_event.unregister(destination, src, /datum/build_mode/move_into/proc/ClearDestination)
|
||||
UnregisterSignal(destination, COMSIG_QDELETING)
|
||||
destination = null
|
||||
if(feedback)
|
||||
Warn("The selected destination was deleted.")
|
||||
|
||||
@@ -92,14 +92,14 @@
|
||||
|
||||
/obj/item/mecha_equipment/mounted_system/proc/forget_holding()
|
||||
if(holding) //It'd be strange for this to be called with this var unset
|
||||
GLOB.destroyed_event.unregister(holding, src, PROC_REF(forget_holding))
|
||||
UnregisterSignal(holding, COMSIG_QDELETING)
|
||||
holding = null
|
||||
|
||||
/obj/item/mecha_equipment/mounted_system/Initialize()
|
||||
. = ..()
|
||||
if(holding_type)
|
||||
holding = new holding_type(src)
|
||||
GLOB.destroyed_event.register(holding, src, PROC_REF(forget_holding))
|
||||
RegisterSignal(holding, COMSIG_QDELETING, PROC_REF(forget_holding))
|
||||
if(holding)
|
||||
if(!icon_state)
|
||||
icon = holding.icon
|
||||
|
||||
@@ -265,7 +265,7 @@
|
||||
|
||||
/obj/item/mecha_equipment/catapult/proc/beamdestroyed()
|
||||
if(beam)
|
||||
GLOB.destroyed_event.unregister(beam, src, .proc/beamdestroyed)
|
||||
UnregisterSignal(beam, COMSIG_QDELETING)
|
||||
beam = null
|
||||
if(locked)
|
||||
if(owner)
|
||||
@@ -316,7 +316,7 @@
|
||||
return
|
||||
locked = AM
|
||||
beam = owner.Beam(BeamTarget = target, icon_state = "r_beam", maxdistance = max_dist, beam_type = /obj/effect/ebeam/warp)
|
||||
GLOB.destroyed_event.register(beam, src, .proc/beamdestroyed)
|
||||
RegisterSignal(beam, COMSIG_QDELETING, PROC_REF(beamdestroyed))
|
||||
|
||||
animate(target,pixel_y= initial(target.pixel_y) - 2,time=1 SECOND, easing = SINE_EASING, flags = ANIMATION_PARALLEL, loop = -1)
|
||||
animate(pixel_y= initial(target.pixel_y) + 2,time=1 SECOND)
|
||||
|
||||
@@ -100,7 +100,7 @@
|
||||
if(target == selected_hardpoint)
|
||||
clear_selected_hardpoint()
|
||||
|
||||
GLOB.destroyed_event.unregister(module_to_forget, src, PROC_REF(forget_module))
|
||||
UnregisterSignal(module_to_forget, COMSIG_QDELETING)
|
||||
|
||||
var/atom/movable/screen/mecha/hardpoint/H = hardpoint_hud_elements[target]
|
||||
H.holding = null
|
||||
@@ -144,7 +144,7 @@
|
||||
if(!found)
|
||||
return FALSE
|
||||
ME.installed(src)
|
||||
GLOB.destroyed_event.register(system, src, PROC_REF(forget_module))
|
||||
RegisterSignal(system, COMSIG_QDELETING, PROC_REF(forget_module))
|
||||
|
||||
|
||||
system.forceMove(src)
|
||||
@@ -198,7 +198,7 @@
|
||||
system.forceMove(get_turf(src))
|
||||
system.screen_loc = null
|
||||
system.layer = initial(system.layer)
|
||||
GLOB.destroyed_event.unregister(system, src, PROC_REF(forget_module))
|
||||
UnregisterSignal(system, COMSIG_QDELETING)
|
||||
|
||||
var/atom/movable/screen/mecha/hardpoint/H = hardpoint_hud_elements[system_hardpoint]
|
||||
H.holding = null
|
||||
|
||||
@@ -170,14 +170,14 @@
|
||||
// These procs do not relocate the grenade, that's the callers responsibility
|
||||
/obj/item/integrated_circuit/manipulation/grenade/proc/attach_grenade(var/obj/item/grenade/G)
|
||||
attached_grenade = G
|
||||
GLOB.destroyed_event.register(attached_grenade, src, PROC_REF(detach_grenade))
|
||||
RegisterSignal(attached_grenade, COMSIG_QDELETING, PROC_REF(detach_grenade))
|
||||
size += G.w_class
|
||||
desc += " \An [attached_grenade] is attached to it!"
|
||||
|
||||
/obj/item/integrated_circuit/manipulation/grenade/proc/detach_grenade()
|
||||
if(!attached_grenade)
|
||||
return
|
||||
GLOB.destroyed_event.unregister(attached_grenade, src)
|
||||
UnregisterSignal(attached_grenade, COMSIG_QDELETING)
|
||||
attached_grenade = null
|
||||
size = initial(size)
|
||||
desc = initial(desc)
|
||||
|
||||
@@ -119,7 +119,7 @@
|
||||
return FALSE
|
||||
sources += source
|
||||
RegisterSignal(source, COMSIG_MOVABLE_MOVED, PROC_REF(source_moved))
|
||||
GLOB.destroyed_event.register(source, src, PROC_REF(remove_source))
|
||||
RegisterSignal(source, COMSIG_QDELETING, PROC_REF(remove_source))
|
||||
for_all_chunks_in_range(source, TYPE_PROC_REF(/datum/chunk, add_source), list(source))
|
||||
if(update_visibility)
|
||||
update_visibility(source, opacity_check)
|
||||
@@ -129,7 +129,7 @@
|
||||
if(!sources.Remove(source))
|
||||
return FALSE
|
||||
UnregisterSignal(source, COMSIG_MOVABLE_MOVED)
|
||||
GLOB.destroyed_event.unregister(source, src)
|
||||
UnregisterSignal(source, COMSIG_QDELETING)
|
||||
for_all_chunks_in_range(source, /datum/chunk/proc/remove_source, list(source))
|
||||
if(update_visibility)
|
||||
update_visibility(source, opacity_check)
|
||||
|
||||
@@ -163,14 +163,14 @@
|
||||
|
||||
if(tracker in trackers)
|
||||
trackers -= tracker
|
||||
GLOB.destroyed_event.unregister(tracker, src, PROC_REF(remove_tracker))
|
||||
UnregisterSignal(tracker, COMSIG_QDELETING)
|
||||
to_chat(user, SPAN_NOTICE("You unlink the tracker in \the [P]'s buffer from \the [src]."))
|
||||
return
|
||||
trackers += tracker
|
||||
GLOB.destroyed_event.register(tracker, src, PROC_REF(remove_tracker))
|
||||
RegisterSignal(tracker, COMSIG_QDELETING, PROC_REF(remove_tracker))
|
||||
to_chat(user, SPAN_NOTICE("You link the tracker in \the [P]'s buffer to \the [src]."))
|
||||
|
||||
/obj/machinery/computer/ship/sensors/proc/remove_tracker(var/obj/item/ship_tracker/tracker)
|
||||
/obj/machinery/computer/ship/sensors/proc/remove_tracker(obj/item/ship_tracker/tracker)
|
||||
trackers -= tracker
|
||||
|
||||
/obj/machinery/computer/ship/sensors/proc/datalink_process()
|
||||
|
||||
@@ -260,7 +260,7 @@
|
||||
var/mob/S = new mob_type(T)
|
||||
animals += S
|
||||
GLOB.death_event.register(S, src, PROC_REF(remove_animal))
|
||||
GLOB.destroyed_event.register(S, src, PROC_REF(remove_animal))
|
||||
RegisterSignal(S, COMSIG_QDELETING, PROC_REF(remove_animal))
|
||||
adapt_animal(S)
|
||||
if(animals.len >= max_animal_count)
|
||||
repopulating = 0
|
||||
@@ -279,10 +279,10 @@
|
||||
daddy.group_multiplier = Z.air.group_multiplier
|
||||
Z.air.equalize(daddy)
|
||||
|
||||
/obj/effect/overmap/visitable/sector/exoplanet/proc/remove_animal(var/mob/M)
|
||||
/obj/effect/overmap/visitable/sector/exoplanet/proc/remove_animal(mob/M)
|
||||
animals -= M
|
||||
GLOB.death_event.unregister(M, src)
|
||||
GLOB.destroyed_event.unregister(M, src)
|
||||
UnregisterSignal(M, COMSIG_QDELETING)
|
||||
repopulate_types |= M.type
|
||||
|
||||
/obj/effect/overmap/visitable/sector/exoplanet/proc/generate_map()
|
||||
|
||||
@@ -133,11 +133,11 @@
|
||||
core_landmark = master
|
||||
name = _name
|
||||
landmark_tag = master.shuttle_name + _name
|
||||
GLOB.destroyed_event.register(master, src, GLOBAL_PROC_REF(qdel))
|
||||
RegisterSignal(master, COMSIG_QDELETING, TYPE_PROC_REF(/datum, qdel_self))
|
||||
. = ..()
|
||||
|
||||
/obj/effect/shuttle_landmark/visiting_shuttle/Destroy()
|
||||
GLOB.destroyed_event.unregister(core_landmark, src)
|
||||
UnregisterSignal(core_landmark, COMSIG_QDELETING)
|
||||
LAZYREMOVE(core_landmark.visitors, src)
|
||||
core_landmark = null
|
||||
. = ..()
|
||||
|
||||
@@ -99,7 +99,7 @@
|
||||
index_name = "Index ([length(indices) + 1])"
|
||||
E.name = index_name
|
||||
LAZYSET(indices, E.name, E)
|
||||
GLOB.destroyed_event.register(E, src, PROC_REF(remove_index))
|
||||
RegisterSignal(E, COMSIG_QDELETING, PROC_REF(remove_index))
|
||||
return E
|
||||
|
||||
/obj/item/journal/proc/remove_index(var/obj/item/folder/embedded/E)
|
||||
|
||||
@@ -215,7 +215,7 @@
|
||||
lock_time = world.time + 35
|
||||
RegisterSignal(owner, COMSIG_MOVABLE_MOVED, PROC_REF(update_aiming))
|
||||
RegisterSignal(aiming_at, COMSIG_MOVABLE_MOVED, PROC_REF(target_moved))
|
||||
GLOB.destroyed_event.register(aiming_at, src, PROC_REF(cancel_aiming))
|
||||
RegisterSignal(aiming_at, COMSIG_QDELETING, PROC_REF(cancel_aiming))
|
||||
|
||||
/obj/aiming_overlay/proc/aim_cooldown(seconds)
|
||||
aimcooldown = world.time + seconds SECONDS
|
||||
@@ -261,7 +261,7 @@
|
||||
UnregisterSignal(owner, COMSIG_MOVABLE_MOVED)
|
||||
if(aiming_at)
|
||||
UnregisterSignal(aiming_at, COMSIG_MOVABLE_MOVED)
|
||||
GLOB.destroyed_event.unregister(aiming_at, src)
|
||||
UnregisterSignal(aiming_at, COMSIG_QDELETING)
|
||||
LAZYREMOVE(aiming_at.aimed_at_by, src)
|
||||
aiming_at = null
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
listeners = list()
|
||||
listener_status = list()
|
||||
|
||||
GLOB.destroyed_event.register(source, src, /datum/proc/qdel_self)
|
||||
RegisterSignal(source, COMSIG_QDELETING, TYPE_PROC_REF(/datum, qdel_self))
|
||||
|
||||
player.subscribe(src)
|
||||
|
||||
@@ -52,6 +52,6 @@
|
||||
|
||||
/datum/sound_token/instrument/Destroy()
|
||||
. = ..()
|
||||
GLOB.destroyed_event.unregister(source, src, /datum/proc/qdel_self)
|
||||
UnregisterSignal(source, COMSIG_QDELETING)
|
||||
player.unsubscribe(src)
|
||||
player = null
|
||||
|
||||
Reference in New Issue
Block a user