mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2025-12-19 14:51:27 +00:00
80 lines
2.2 KiB
Plaintext
80 lines
2.2 KiB
Plaintext
/datum
|
|
var/gc_destroyed //Time when this object was destroyed.
|
|
var/list/active_timers //for SStimer
|
|
var/list/datum_components //for /datum/components
|
|
/// Status traits attached to this datum
|
|
var/list/status_traits
|
|
var/list/comp_lookup
|
|
var/list/list/datum/callback/signal_procs
|
|
var/var_edited = FALSE //Warranty void if seal is broken
|
|
var/tmp/unique_datum_id = null
|
|
|
|
/// Used by SSprocessing
|
|
var/isprocessing = FALSE
|
|
|
|
/**
|
|
* A cached version of our \ref
|
|
* The brunt of \ref costs are in creating entries in the string tree (a tree of immutable strings)
|
|
* This avoids doing that more then once per datum by ensuring ref strings always have a reference to them after they're first pulled
|
|
*/
|
|
var/cached_ref
|
|
|
|
#ifdef REFERENCE_TRACKING
|
|
var/running_find_references
|
|
var/last_find_references = 0
|
|
#endif
|
|
|
|
// Default implementation of clean-up code.
|
|
// This should be overridden to remove all references pointing to the object being destroyed.
|
|
// Return the appropriate QDEL_HINT; in most cases this is QDEL_HINT_QUEUE.
|
|
/datum/proc/Destroy(force = FALSE, ...)
|
|
SHOULD_CALL_PARENT(TRUE)
|
|
tag = null
|
|
|
|
// Close our open TGUIs
|
|
SStgui.close_uis(src)
|
|
|
|
var/list/timers = active_timers
|
|
active_timers = null
|
|
for(var/thing in timers)
|
|
var/datum/timedevent/timer = thing
|
|
if(timer.spent && !(timer.flags & TIMER_DELETE_ME))
|
|
continue
|
|
qdel(timer)
|
|
|
|
//BEGIN: ECS SHIT
|
|
var/list/dc = datum_components
|
|
if(dc)
|
|
var/all_components = dc[/datum/component]
|
|
if(length(all_components))
|
|
for(var/I in all_components)
|
|
var/datum/component/C = I
|
|
qdel(C, FALSE, TRUE)
|
|
else
|
|
var/datum/component/C = all_components
|
|
qdel(C, FALSE, TRUE)
|
|
dc.Cut()
|
|
|
|
var/list/lookup = comp_lookup
|
|
if(lookup)
|
|
for(var/sig in lookup)
|
|
var/list/comps = lookup[sig]
|
|
if(length(comps))
|
|
for(var/i in comps)
|
|
var/datum/component/comp = i
|
|
comp.UnregisterSignal(src, sig)
|
|
else
|
|
var/datum/component/comp = comps
|
|
comp.UnregisterSignal(src, sig)
|
|
comp_lookup = lookup = null
|
|
|
|
for(var/target in signal_procs)
|
|
UnregisterSignal(target, signal_procs[target])
|
|
//END: ECS SHIT
|
|
|
|
return QDEL_HINT_QUEUE
|
|
|
|
|
|
/datum/nothing
|
|
// Placeholder object, used for ispath checks. Has to be defined to prevent errors, but shouldn't ever be created.
|