Files
Aurora.3/code/datums/observation/dir_set.dm
Fluffy 955102ef4d More spacemandmm harnessing against bad code (#17376)
* sdfaf

* ssdasd

* dfsd

* try to apply a linter to spot violations of editorconfig

* sfdas

* asf

* sadfas

* sfasf

* asfsda

* sdaf

* sfsad

* totally not for testing

* aaaaaaaaaaaaaaa

* asfsadf

* saf

* sdfaf
2023-09-23 13:46:26 +00:00

36 lines
1.2 KiB
Plaintext

// Observer Pattern Implementation: Direction Set
// Registration type: /atom
//
// Raised when: An /atom changes dir using the set_dir() proc.
//
// Arguments that the called proc should expect:
// /atom/dir_changer: The instance that changed direction
// /old_dir: The dir before the change.
// /new_dir: The dir after the change.
var/singleton/observ/dir_set/dir_set_event = new()
/singleton/observ/dir_set
name = "Direction Set"
expected_type = /atom
/singleton/observ/dir_set/register(var/atom/dir_changer, var/datum/listener, var/proc_call)
. = ..()
// Listen to the parent if possible.
if(. && istype(dir_changer.loc, /atom/movable)) // We don't care about registering to turfs.
register(dir_changer.loc, dir_changer, TYPE_PROC_REF(/atom, recursive_dir_set))
/*********************
* Direction Handling *
*********************/
/atom/movable/Entered(var/atom/movable/am, atom/old_loc)
. = ..()
if(dir_set_event.has_listeners(am))
dir_set_event.register(src, am, TYPE_PROC_REF(/atom, recursive_dir_set))
/atom/movable/Exited(var/atom/movable/am, atom/new_loc)
. = ..()
dir_set_event.unregister(src, am, TYPE_PROC_REF(/atom, recursive_dir_set))