mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-24 21:40:55 +01:00
Refactored movement observable away (#20083)
Refactored movement observable away, use only the signal. Some tweaks to the signal.
This commit is contained in:
@@ -1,5 +1,11 @@
|
||||
/proc/is_listening_to_movement(var/atom/movable/listening_to, var/listener)
|
||||
return GLOB.moved_event.is_listening(listening_to, listener)
|
||||
/proc/is_listening_to_movement(var/atom/movable/listening_to, var/mob/abstract/observer/listener)
|
||||
if(!listener.orbiting)
|
||||
return FALSE
|
||||
|
||||
var/list/procs = (listener.orbiting.tracker._signal_procs ||= list())
|
||||
var/list/target_procs = (procs[listening_to] ||= list())
|
||||
var/exists = target_procs[COMSIG_MOVABLE_MOVED]
|
||||
return exists
|
||||
|
||||
/datum/unit_test/observation
|
||||
name = "OBSERVATION template"
|
||||
@@ -22,8 +28,8 @@
|
||||
else
|
||||
TEST_FAIL("The observer is not following the mob.")
|
||||
|
||||
QDEL_IN(H, 10 SECONDS)
|
||||
QDEL_IN(O, 10 SECONDS)
|
||||
qdel(H)
|
||||
qdel(O)
|
||||
return 1
|
||||
|
||||
/datum/unit_test/observation/moved_observer_shall_unregister_on_nofollow
|
||||
@@ -36,61 +42,12 @@
|
||||
var/mob/abstract/observer/O = new(T)
|
||||
|
||||
O.ManualFollow(H)
|
||||
O.stop_following()
|
||||
QDEL_NULL(O.orbiting)
|
||||
if(!is_listening_to_movement(H, O))
|
||||
TEST_PASS("The observer is no longer following the mob.")
|
||||
else
|
||||
TEST_FAIL("The observer is still following the mob.")
|
||||
|
||||
QDEL_IN(H, 10 SECONDS)
|
||||
QDEL_IN(O, 10 SECONDS)
|
||||
return 1
|
||||
|
||||
/datum/unit_test/observation/moved_shall_registers_recursively_on_new_listener
|
||||
name = "OBSERVATION: Moved - Shall Register Recursively on New Listener"
|
||||
groups = list("generic")
|
||||
|
||||
/datum/unit_test/observation/moved_shall_registers_recursively_on_new_listener/start_test()
|
||||
var/turf/T = locate(20,20,1)
|
||||
var/mob/living/carbon/human/H = new(T)
|
||||
var/obj/structure/closet/C = new(T)
|
||||
var/mob/abstract/observer/O = new(T)
|
||||
|
||||
H.forceMove(C)
|
||||
O.ManualFollow(H)
|
||||
var/listening_to_closet = is_listening_to_movement(C, H)
|
||||
var/listening_to_human = is_listening_to_movement(H, O)
|
||||
if(listening_to_closet && listening_to_human)
|
||||
TEST_PASS("Recursive moved registration succesful.")
|
||||
else
|
||||
TEST_FAIL("Recursive moved registration failed. Human listening to closet: [listening_to_closet] - Observer listening to human: [listening_to_human]")
|
||||
|
||||
QDEL_IN(C, 10 SECONDS)
|
||||
QDEL_IN(H, 10 SECONDS)
|
||||
QDEL_IN(O, 10 SECONDS)
|
||||
return 1
|
||||
|
||||
/datum/unit_test/observation/moved_shall_registers_recursively_with_existing_listener
|
||||
name = "OBSERVATION: Moved - Shall Register Recursively with Existing Listener"
|
||||
groups = list("generic")
|
||||
|
||||
/datum/unit_test/observation/moved_shall_registers_recursively_with_existing_listener/start_test()
|
||||
var/turf/T = locate(20,20,1)
|
||||
var/mob/living/carbon/human/H = new(T)
|
||||
var/obj/structure/closet/C = new(T)
|
||||
var/mob/abstract/observer/O = new(T)
|
||||
|
||||
O.ManualFollow(H)
|
||||
H.forceMove(C)
|
||||
var/listening_to_closet = is_listening_to_movement(C, H)
|
||||
var/listening_to_human = is_listening_to_movement(H, O)
|
||||
if(listening_to_closet && listening_to_human)
|
||||
TEST_PASS("Recursive moved registration succesful.")
|
||||
else
|
||||
TEST_FAIL("Recursive moved registration failed. Human listening to closet: [listening_to_closet] - Observer listening to human: [listening_to_human]")
|
||||
|
||||
QDEL_IN(C, 10 SECONDS)
|
||||
QDEL_IN(H, 10 SECONDS)
|
||||
QDEL_IN(O, 10 SECONDS)
|
||||
|
||||
qdel(H)
|
||||
qdel(O)
|
||||
return 1
|
||||
|
||||
Reference in New Issue
Block a user