From ce31fbdef3845fc7972ac47b4db77af8778c9e84 Mon Sep 17 00:00:00 2001 From: Aronai Sieyes Date: Tue, 19 May 2020 14:21:25 -0400 Subject: [PATCH] Move openspace object updating to event listeners --- code/controllers/subsystems/open_space.dm | 16 ---------------- code/modules/multiz/turf.dm | 15 +++++++++++++++ 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/code/controllers/subsystems/open_space.dm b/code/controllers/subsystems/open_space.dm index dfc13190094..4e96dbfda44 100644 --- a/code/controllers/subsystems/open_space.dm +++ b/code/controllers/subsystems/open_space.dm @@ -79,22 +79,6 @@ SUBSYSTEM_DEF(open_space) /datum/controller/subsystem/open_space/stat_entry(msg_prefix) return ..("T [turfs_to_process.len]") -/turf/Entered(atom/movable/AM) - . = ..() - if(GLOB.open_space_initialised && !AM.invisibility && isobj(AM)) - var/turf/T = GetAbove(src) - if(isopenspace(T)) - // log_debug("[T] ([T.x],[T.y],[T.z]) queued for update for [src].Entered([AM])") - SSopen_space.add_turf(T, 1) - -/turf/Exited(atom/movable/AM) - . = ..() - if(GLOB.open_space_initialised && !AM.invisibility && isobj(AM)) - var/turf/T = GetAbove(src) - if(isopenspace(T)) - // log_debug("[T] ([T.x],[T.y],[T.z]) queued for update for [src].Exited([AM])") - SSopen_space.add_turf(T, 1) - /obj/update_icon() . = ..() if(GLOB.open_space_initialised && !invisibility && isturf(loc)) diff --git a/code/modules/multiz/turf.dm b/code/modules/multiz/turf.dm index 1a1d4081a7b..652e86d464e 100644 --- a/code/modules/multiz/turf.dm +++ b/code/modules/multiz/turf.dm @@ -39,15 +39,30 @@ ..() update() +/turf/simulated/open/ChangeTurf() + var/turf/T = GetBelow(src) + if(T) + GLOB.turf_entered_event.unregister(T, src, .proc/BelowOpenUpdated) + GLOB.turf_exited_event.unregister(T, src, .proc/BelowOpenUpdated) + . = ..() + /turf/simulated/open/Initialize() . = ..() ASSERT(HasBelow(z)) update() + var/turf/T = GetBelow(src) + if(T) + GLOB.turf_entered_event.register(T, src, .proc/BelowOpenUpdated) + GLOB.turf_exited_event.register(T, src, .proc/BelowOpenUpdated) /turf/simulated/open/Entered(var/atom/movable/mover) . = ..() mover.fall() +/turf/simulated/open/proc/BelowOpenUpdated(turf/T, atom/movable/AM, old_loc) + if(isobj(AM) && GLOB.open_space_initialised && !AM.invisibility) + SSopen_space.add_turf(src, 1) + // Called when thrown object lands on this turf. /turf/simulated/open/hitby(var/atom/movable/AM, var/speed) . = ..()