Files
Bubberstation/code/datums/components/areabound.dm
AnturK d12722e56c Areabound component & mapping helper (#51605)
* Adds areabound component and mapping helper.

* desc

* Delete multi-use one.

* doesn't really matter for this but sure
2020-06-15 15:36:00 -04:00

26 lines
822 B
Plaintext

/// Movables with this component will automatically return to their original turf if moved outside their initial area
/datum/component/areabound
var/area/bound_area
var/turf/reset_turf
var/datum/movement_detector/move_tracker
/datum/component/areabound/Initialize()
if(!ismovable(parent))
return COMPONENT_INCOMPATIBLE
bound_area = get_area(parent)
reset_turf = get_turf(parent)
move_tracker = new(parent,CALLBACK(src,.proc/check_bounds))
/datum/component/areabound/proc/check_bounds()
var/atom/movable/AM = parent
var/area/current = get_area(AM)
if(current != bound_area)
if(!reset_turf || reset_turf.loc != bound_area)
stack_trace("Invalid areabound configuration") //qdel(src)
return
AM.forceMove(reset_turf)
/datum/component/areabound/Destroy(force, silent)
QDEL_NULL(move_tracker)
. = ..()