Unifies pooling.

This commit is contained in:
PJB3005
2015-09-26 16:08:22 +02:00
parent b77d174ecf
commit c7c9613b07
58 changed files with 175 additions and 297 deletions

View File

@@ -74,11 +74,11 @@
if(node1)
node1.disconnect(src)
if(network1)
returnToDPool(network1)
returnToPool(network1)
if(node2)
node2.disconnect(src)
if(network2)
returnToDPool(network2)
returnToPool(network2)
node1 = null
node2 = null
@@ -95,12 +95,12 @@
/obj/machinery/atmospherics/binary/build_network()
if(!network1 && node1)
network1 = getFromDPool(/datum/pipe_network)
network1 = getFromPool(/datum/pipe_network)
network1.normal_members += src
network1.build_network(node1, src)
if(!network2 && node2)
network2 = getFromDPool(/datum/pipe_network)
network2 = getFromPool(/datum/pipe_network)
network2.normal_members += src
network2.build_network(node2, src)
@@ -137,12 +137,12 @@
/obj/machinery/atmospherics/binary/disconnect(obj/machinery/atmospherics/reference)
if(reference==node1)
if(network1)
returnToDPool(network1)
returnToPool(network1)
node1 = null
else if(reference==node2)
if(network2)
returnToDPool(network2)
returnToPool(network2)
node2 = null
return null

View File

@@ -129,11 +129,11 @@
if(node1)
node1.disconnect(src)
if(network1)
returnToDPool(network1)
returnToPool(network1)
if(node2)
node2.disconnect(src)
if(network2)
returnToDPool(network2)
returnToPool(network2)
node1 = null
node2 = null

View File

@@ -131,7 +131,7 @@
if(!radio_connection)
return 0
var/datum/signal/signal = getFromDPool(/datum/signal)
var/datum/signal/signal = getFromPool(/datum/signal)
signal.transmission_method = 1 //radio signal
signal.source = src

View File

@@ -70,7 +70,7 @@
if(!radio_connection)
return 0
var/datum/signal/signal = getFromDPool(/datum/signal)
var/datum/signal/signal = getFromPool(/datum/signal)
signal.transmission_method = 1 //radio signal
signal.source = src

View File

@@ -85,7 +85,7 @@ Thus, the two variables affect pump operation are set in New():
if(!radio_connection)
return 0
var/datum/signal/signal = getFromDPool(/datum/signal)
var/datum/signal/signal = getFromPool(/datum/signal)
signal.transmission_method = 1 //radio signal
signal.source = src

View File

@@ -64,10 +64,10 @@
if(network1)
if(network1)
returnToDPool(network1)
returnToPool(network1)
if(network2)
if(network1)
returnToDPool(network2)
returnToPool(network2)
build_network()

View File

@@ -76,7 +76,7 @@ Thus, the two variables affect pump operation are set in New():
if(!radio_connection)
return 0
var/datum/signal/signal = getFromDPool(/datum/signal)
var/datum/signal/signal = getFromPool(/datum/signal)
signal.transmission_method = 1 //radio signal
signal.source = src

View File

@@ -77,9 +77,9 @@
update_icon()
if(network1)
returnToDPool(network1)
returnToPool(network1)
if(network3)
returnToDPool(network3)
returnToPool(network3)
build_network()
if(network1&&network2)
@@ -104,9 +104,9 @@
update_icon()
if(network1)
returnToDPool(network1)
returnToPool(network1)
if(network2)
returnToDPool(network2)
returnToPool(network2)
build_network()
if(network1&&network3)

View File

@@ -91,15 +91,15 @@ obj/machinery/atmospherics/trinary/Destroy()
if(node1)
node1.disconnect(src)
if(network1)
returnToDPool(network1)
returnToPool(network1)
if(node2)
node2.disconnect(src)
if(network2)
returnToDPool(network2)
returnToPool(network2)
if(node3)
node3.disconnect(src)
if(network3)
returnToDPool(network3)
returnToPool(network3)
node1 = null
node2 = null
@@ -129,17 +129,17 @@ obj/machinery/atmospherics/trinary/initialize()
obj/machinery/atmospherics/trinary/build_network()
if(!network1 && node1)
network1 = getFromDPool(/datum/pipe_network)
network1 = getFromPool(/datum/pipe_network)
network1.normal_members += src
network1.build_network(node1, src)
if(!network2 && node2)
network2 = getFromDPool(/datum/pipe_network)
network2 = getFromPool(/datum/pipe_network)
network2.normal_members += src
network2.build_network(node2, src)
if(!network3 && node3)
network3 = getFromDPool(/datum/pipe_network)
network3 = getFromPool(/datum/pipe_network)
network3.normal_members += src
network3.build_network(node3, src)
@@ -183,17 +183,17 @@ obj/machinery/atmospherics/trinary/return_network_air(datum/pipe_network/referen
obj/machinery/atmospherics/trinary/disconnect(obj/machinery/atmospherics/reference)
if(reference==node1)
if(network1)
returnToDPool(network1)
returnToPool(network1)
node1 = null
else if(reference==node2)
if(network2)
returnToDPool(network2)
returnToPool(network2)
node2 = null
else if(reference==node3)
if(network3)
returnToDPool(network3)
returnToPool(network3)
node3 = null
return null

View File

@@ -93,7 +93,7 @@
if(!radio_connection)
return 0
var/datum/signal/signal = getFromDPool(/datum/signal)
var/datum/signal/signal = getFromPool(/datum/signal)
signal.transmission_method = 1 //radio signal
signal.source = src

View File

@@ -45,7 +45,7 @@
if(node)
node.disconnect(src)
if(network)
returnToDPool(network)
returnToPool(network)
node = null

View File

@@ -46,7 +46,7 @@
if(node)
node.disconnect(src)
if(network)
returnToDPool(network)
returnToPool(network)
node = null
..()
@@ -62,7 +62,7 @@
/obj/machinery/atmospherics/unary/build_network()
if(!network && node)
network = getFromDPool(/datum/pipe_network)
network = getFromPool(/datum/pipe_network)
network.normal_members += src
network.build_network(node, src)
@@ -87,7 +87,7 @@
/obj/machinery/atmospherics/unary/disconnect(obj/machinery/atmospherics/reference)
if(reference==node)
if(network)
returnToDPool(network)
returnToPool(network)
node = null
return null

View File

@@ -171,7 +171,7 @@
if(!radio_connection)
return 0
var/datum/signal/signal = getFromDPool(/datum/signal)
var/datum/signal/signal = getFromPool(/datum/signal)
signal.transmission_method = 1 //radio signal
signal.source = src

View File

@@ -94,7 +94,7 @@
if(!radio_connection)
return 0
var/datum/signal/signal = getFromDPool(/datum/signal)
var/datum/signal/signal = getFromPool(/datum/signal)
signal.transmission_method = 1 //radio signal
signal.source = src
signal.data = list(

View File

@@ -51,7 +51,7 @@
//Notes: Assuming that members will add themselves to appropriate roster in network_expandz()
if(!start_normal)
returnToDPool(src)
returnToPool(src)
return
start_normal.network_expand(src, reference)
@@ -61,7 +61,7 @@
if((normal_members.len>0)||(line_members.len>0))
pipe_networks |= src
else
returnToDPool(src)
returnToPool(src)
return
return 1

View File

@@ -13,7 +13,7 @@
/datum/pipeline/Destroy()
if(network) //For the pipenet rebuild
returnToDPool(network)
returnToPool(network)
if(air && air.volume) //For the pipeline rebuild next tick
temporarily_store_air()
del(air)
@@ -132,7 +132,7 @@
/datum/pipeline/proc/return_network(obj/machinery/atmospherics/reference)
//writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/datum/pipeline/proc/return_network() called tick#: [world.time]")
if(!network)
network = getFromDPool(/datum/pipe_network)
network = getFromPool(/datum/pipe_network)
network.build_network(src, null)
//technically passing these parameters should not be allowed
//however pipe_network.build_network(..) and pipeline.network_extend(...)

View File

@@ -61,35 +61,35 @@
/obj/machinery/atmospherics/pipe/return_air()
if(!parent)
parent = getFromDPool(/datum/pipeline)
parent = getFromPool(/datum/pipeline)
parent.build_pipeline(src)
return parent.air
/obj/machinery/atmospherics/pipe/build_network()
if(!parent)
parent = getFromDPool(/datum/pipeline)
parent = getFromPool(/datum/pipeline)
parent.build_pipeline(src)
return parent.return_network()
/obj/machinery/atmospherics/pipe/network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference)
if(!parent)
parent = getFromDPool(/datum/pipeline)
parent = getFromPool(/datum/pipeline)
parent.build_pipeline(src)
return parent.network_expand(new_network, reference)
/obj/machinery/atmospherics/pipe/return_network(obj/machinery/atmospherics/reference)
if(!parent)
parent = getFromDPool(/datum/pipeline)
parent = getFromPool(/datum/pipeline)
parent.build_pipeline(src)
return parent.return_network(reference)
/obj/machinery/atmospherics/pipe/Destroy()
if(parent)
returnToDPool(parent)
returnToPool(parent)
for(var/obj/machinery/meter/M in src.loc)
if(M.target == src)
new /obj/item/pipe_meter(src.loc)
@@ -341,12 +341,12 @@
/obj/machinery/atmospherics/pipe/simple/disconnect(obj/machinery/atmospherics/reference)
if(reference == node1)
if(istype(node1, /obj/machinery/atmospherics/pipe))
returnToDPool(parent)
returnToPool(parent)
node1 = null
if(reference == node2)
if(istype(node2, /obj/machinery/atmospherics/pipe))
returnToDPool(parent)
returnToPool(parent)
node2 = null
update_icon()
@@ -545,17 +545,17 @@
/obj/machinery/atmospherics/pipe/manifold/disconnect(obj/machinery/atmospherics/reference)
if(reference == node1)
if(istype(node1, /obj/machinery/atmospherics/pipe))
returnToDPool(parent)
returnToPool(parent)
node1 = null
if(reference == node2)
if(istype(node2, /obj/machinery/atmospherics/pipe))
returnToDPool(parent)
returnToPool(parent)
node2 = null
if(reference == node3)
if(istype(node3, /obj/machinery/atmospherics/pipe))
returnToDPool(parent)
returnToPool(parent)
node3 = null
update_icon()
@@ -764,22 +764,22 @@
/obj/machinery/atmospherics/pipe/manifold4w/disconnect(obj/machinery/atmospherics/reference)
if(reference == node1)
if(istype(node1, /obj/machinery/atmospherics/pipe))
returnToDPool(parent)
returnToPool(parent)
node1 = null
if(reference == node2)
if(istype(node2, /obj/machinery/atmospherics/pipe))
returnToDPool(parent)
returnToPool(parent)
node2 = null
if(reference == node3)
if(istype(node3, /obj/machinery/atmospherics/pipe))
returnToDPool(parent)
returnToPool(parent)
node3 = null
if(reference == node4)
if(istype(node4, /obj/machinery/atmospherics/pipe))
returnToDPool(parent)
returnToPool(parent)
node4 = null
update_icon()
@@ -983,14 +983,14 @@
/obj/machinery/atmospherics/pipe/layer_manifold/disconnect(obj/machinery/atmospherics/reference)
if(reference == other_node)
if(istype(other_node, /obj/machinery/atmospherics/pipe))
returnToDPool(parent)
returnToPool(parent)
other_node = null
else
for(var/pipelayer = PIPING_LAYER_MIN; pipelayer <= PIPING_LAYER_MAX; pipelayer += PIPING_LAYER_INCREMENT)
if(reference == layer_nodes[pipelayer])
if(istype(layer_nodes[pipelayer], /obj/machinery/atmospherics/pipe))
returnToDPool(parent)
returnToPool(parent)
layer_nodes[pipelayer] = null
update_icon()
@@ -1169,11 +1169,11 @@
/obj/machinery/atmospherics/pipe/layer_adapter/disconnect(var/obj/machinery/atmospherics/reference)
if(reference == mid_node)
if(istype(mid_node, /obj/machinery/atmospherics/pipe))
returnToDPool(parent)
returnToPool(parent)
mid_node = null
if(reference == layer_node)
if(istype(layer_node, /obj/machinery/atmospherics/pipe))
returnToDPool(parent)
returnToPool(parent)
layer_node = null
update_icon()

View File

@@ -4,81 +4,89 @@
//#define DEBUG_DATUM_POOL
#define MAINTAINING_DATUM_POOL_COUNT 500
var/global/list/masterdatumPool = new
var/global/list/pooledvariables = new
#define MAINTAINING_OBJECT_POOL_COUNT 500
// Read-only or compile-time vars and special exceptions.
/var/list/exclude = list("inhand_states", "loc", "locs", "parent_type", "vars", "verbs", "type", "x", "y", "z","group", "animate_movement")
/var/global/list/masterdatumPool = new
/var/global/list/pooledvariables = new
/*
* @args : datum type, normal arguments
* Example call: getFromPool(/datum/pipeline, args)
*/
/proc/getFromDPool()
//writepanic("[__FILE__].[__LINE__] (no type)([usr ? usr.ckey : ""]) \\/proc/getFromDPool() called tick#: [world.time]")
var/A = args[1]
var/list/B = list()
B += (args - A)
if(length(masterdatumPool["[A]"]) <= 0)
/proc/getFromPool(var/type, ...)
var/list/B = (args - type)
if(length(masterdatumPool[type]) <= 0)
#ifdef DEBUG_DATUM_POOL
if(ticker)
world << text("DEBUG_DATUM_POOL: new proc has been called ([] | []).", A, list2params(B))
world << text("DEBUG_DATUM_POOL: new proc has been called ([] | []).", type, list2params(B))
#endif
//so the GC knows we're pooling this type.
if(isnull(masterdatumPool["[A]"]))
masterdatumPool["[A]"] = list(new A)
if(B && B.len)
return new A(arglist(B))
else
return new A()
var/datum/O = masterdatumPool["[A]"][1]
masterdatumPool["[A]"] -= O
//so the GC knows we're pooling this type.
if(isnull(masterdatumPool[type]))
masterdatumPool[type] = list(new type)
if(B && B.len)
return new type(arglist(B))
else
return new type()
var/datum/O = masterdatumPool[type][1]
masterdatumPool[type] -= O
#ifdef DEBUG_DATUM_POOL
world << text("DEBUG_DATUM_POOL: getFromPool([]) [] left arglist([]).", A, length(masterdatumPool[A]), list2params(B))
world << text("DEBUG_DATUM_POOL: getFromPool([]) [] left arglist([]).", type, length(masterdatumPool[type]), list2params(B))
#endif
if(!O || !istype(O))
O = new A(arglist(B))
O = new type(arglist(B))
else
if(B && B.len)
O.New(arglist(B))
else
O.New()
O.disposed = null //Set to process once again
return O
/*
* @args
* A, datum instance
* D, datum instance
*
* @return
* -1, if A is not a movable atom
*
* Example call: returnToDPool(src)
* Example call: returnToPool(src)
*/
/proc/returnToDPool(const/datum/D)
//writepanic("[__FILE__].[__LINE__] (no type)([usr ? usr.ckey : ""]) \\/proc/returnToDPool() called tick#: [world.time]")
if(!D)
return
if(length(masterdatumPool["[D.type]"]) > MAINTAINING_DATUM_POOL_COUNT)
/proc/returnToPool(const/datum/D)
ASSERT(D)
if(istype(D, /atom/movable) && length(masterdatumPool[D.type]) > MAINTAINING_OBJECT_POOL_COUNT)
#ifdef DEBUG_DATUM_POOL
world << text("DEBUG_DATUM_POOL: returnToPool([]) exceeds [] discarding...", D.type, MAINTAINING_DATUM_POOL_COUNT)
world << text("DEBUG_DATUM_POOL: returnToPool([]) exceeds [] discarding...", D.type, MAINTAINING_OBJECT_POOL_COUNT)
#endif
var/list/pool = masterdatumPool["[D.type]"]
pool.Cut(1,2) //LET IT GO. LET IT GOOOOOO. AKA REMOVE THE OLDEST ENTRY
qdel(D)
return
if(isnull(masterdatumPool["[D.type]"]))
masterdatumPool["[D.type]"] = list()
if(isnull(masterdatumPool[D.type]))
masterdatumPool[D.type] = list()
D.Destroy()
D.resetVariables()
D.disposed = 1 //Set to stop processing while pooled
#ifdef DEBUG_DATUM_POOL
if(D in masterdatumPool["[D.type]"])
world << text("returnToPool has been called twice for the same datum of type [] time to panic.", D.type)
#endif
masterdatumPool["[D.type]"] |= D
#ifdef DEBUG_DATUM_POOL
world << text("DEBUG_DATUM_POOL: returnToPool([]) [] left.", D.type, length(masterdatumPool["[D.type]"]))
if(D in masterdatumPool[D.type])
world << text("returnToPool has been called twice for the same datum of type [] time to panic.", D.type)
#endif
masterdatumPool[D.type] |= D
#ifdef DEBUG_DATUM_POOL
world << text("DEBUG_DATUM_POOL: returnToPool([]) [] left.", D.type, length(masterdatumPool[D.type]))
#endif
#undef MAINTAINING_DATUM_POOL_COUNT
@@ -88,7 +96,6 @@ var/global/list/pooledvariables = new
#endif
/datum/proc/createVariables()
//writepanic("[__FILE__].[__LINE__] (no type)([usr ? usr.ckey : ""]) \\/datum/proc/createVariables() called tick#: [world.time]")
pooledvariables[type] = new/list()
var/list/exclude = global.exclude + args
@@ -102,7 +109,6 @@ var/global/list/pooledvariables = new
//SEE http://www.byond.com/forum/?post=76850 AS A REFERENCE ON THIS
/datum/proc/resetVariables()
//writepanic("[__FILE__].[__LINE__] (no type)([usr ? usr.ckey : ""]) \\/datum/proc/resetVariables() called tick#: [world.time]")
if(!pooledvariables[type])
createVariables(args)
@@ -110,7 +116,6 @@ var/global/list/pooledvariables = new
vars[key] = pooledvariables[type][key]
/proc/isInTypes(atom/Object, types)
//writepanic("[__FILE__].[__LINE__] (no type)([usr ? usr.ckey : ""]) \\/proc/isInTypes() called tick#: [world.time]")
if(!Object)
return 0
var/prototype = Object.type

View File

@@ -1,126 +0,0 @@
/*
* Experimental procs by ESwordTheCat!
*/
/**
* Object pooling.
*
* If this file is named experimental,
* well treat this implementation as experimental experimental (redundancy intended).
*
* WARNING, only supports /atom/movable (/mob and /obj)
*/
// Uncomment to show debug messages.
//#define DEBUG_OBJECT_POOL
#define MAINTAINING_OBJECT_POOL_COUNT 500
var/global/list/masterPool = new
// Read-only or compile-time vars and special exceptions.
var/list/exclude = list("inhand_states", "loc", "locs", "parent_type", "vars", "verbs", "type", "x", "y", "z","group", "animate_movement")
/*
* @args
* A, object type
* B, location to spawn
*
* Example call: getFromPool(/obj/item/weapon/shard, loc)
*/
/proc/getFromPool()
//writepanic("[__FILE__].[__LINE__] (no type)([usr ? usr.ckey : ""]) \\/proc/getFromPool() called tick#: [world.time]")
var/A = args[1]
var/list/B = list()
B += (args - A)
if(length(masterPool["[A]"]) <= 0)
#ifdef DEBUG_OBJECT_POOL
if(ticker)
world << text("DEBUG_OBJECT_POOL: new proc has been called ([] | []).", A, list2params(B))
#endif
//so the GC knows we're pooling this type.
if(isnull(masterPool["[A]"]))
masterPool["[A]"] = list(new A)
if(B && B.len)
return new A(arglist(B))
else
return new A()
var/atom/movable/O = masterPool["[A]"][1]
masterPool["[A]"] -= O
#ifdef DEBUG_OBJECT_POOL
world << text("DEBUG_OBJECT_POOL: getFromPool([]) [] left arglist([]).", A, length(masterPool[A]), list2params(B))
#endif
if(!O || !istype(O))
O = new A(arglist(B))
else
if(length(B))
O.loc = B[1]
O.New(arglist(B))
return O
/*
* @args
* A, object instance
*
* @return
* -1, if A is not a movable atom
*
* Example call: returnToPool(src)
*/
/proc/returnToPool(const/atom/movable/AM)
//writepanic("[__FILE__].[__LINE__] (no type)([usr ? usr.ckey : ""]) \\/proc/returnToPool() called tick#: [world.time]")
ASSERT(AM)
if(istype(AM.loc,/mob/living))
var/mob/living/L = AM.loc
L.u_equip(AM,1)
if(length(masterPool["[AM.type]"]) > MAINTAINING_OBJECT_POOL_COUNT)
#ifdef DEBUG_OBJECT_POOL
world << text("DEBUG_OBJECT_POOL: returnToPool([]) exceeds [] discarding...", AM.type, MAINTAINING_OBJECT_POOL_COUNT)
#endif
qdel(AM, 1)
return
if(isnull(masterPool["[AM.type]"]))
masterPool["[AM.type]"] = list()
AM.Destroy()
AM.resetVariables()
masterPool["[AM.type]"] |= AM
#ifdef DEBUG_OBJECT_POOL
world << text("DEBUG_OBJECT_POOL: returnToPool([]) [] left.", AM.type, length(masterPool["[AM.type]"]))
#endif
#undef MAINTAINING_OBJECT_POOL_COUNT
#ifdef DEBUG_OBJECT_POOL
#undef DEBUG_OBJECT_POOL
#endif
/*
* if you have a variable that needed to be preserve, override this and call ..
*
* example
*
* /obj/item/resetVariables()
* ..("var1", "var2", "var3")
*
* however, if the object has a child type an it has overridden resetVariables()
* this should be
*
* /obj/item/resetVariables()
* ..("var1", "var2", "var3", args)
*
* /obj/item/weapon/resetVariables()
* ..("var4")
*/
//RETURNS NULL WHEN INITIALIZED AS A LIST() AND POSSIBLY OTHER DISCRIMINATORS
//IF YOU ARE USING SPECIAL VARIABLES SUCH A LIST() INITIALIZE THEM USING RESET VARIABLES
//SEE http://www.byond.com/forum/?post=76850 AS A REFERENCE ON THIS
/atom/movable/resetVariables()
loc = null
..("loc",args)

View File

@@ -111,7 +111,7 @@ var/soft_dels = 0
return
//We are object pooling this.
if(("[D.type]" in masterPool) && !ignore_pooling)
if(("[D.type]" in masterdatumPool) && !ignore_pooling)
returnToPool(D)
return

View File

@@ -142,7 +142,7 @@ var/global/list/ghdel_profiling = list()
reagents = null
if(materials)
returnToDPool(materials)
returnToPool(materials)
// Idea by ChuckTheSheep to make the object even more unreferencable.
invisibility = 101
@@ -164,7 +164,7 @@ var/global/list/ghdel_profiling = list()
on_moved = new("owner"=src)
. = ..()
if(starting_materials)
materials = getFromDPool(/datum/materials, src)
materials = getFromPool(/datum/materials, src)
for(var/matID in starting_materials)
materials.addAmount(matID, starting_materials[matID])
AddToProfiler()

View File

@@ -239,7 +239,7 @@ var/global/datum/controller/radio/radio_controller
if(range)
start_point = get_turf(source)
if(!start_point)
returnToDPool(signal)
returnToPool(signal)
return 0
if (filter) //here goes some copypasta. It is for optimisation. -rastaf0
@@ -287,7 +287,7 @@ var/global/datum/controller/radio/radio_controller
//log_admin("DEBUG: post_signal(source=[source] ([source.x], [source.y], [source.z]),filter=[filter]) frequency=[frequency], N_f=[N_f], N_nf=[N_nf]")
returnToDPool(signal)
returnToPool(signal)
/datum/radio_frequency/proc/add_listener(const/obj/device, var/filter)
//writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/datum/radio_frequency/proc/add_listener() called tick#: [world.time]")

View File

@@ -60,7 +60,7 @@ obj/machinery/door/airlock/receive_signal(datum/signal/signal)
obj/machinery/door/airlock/proc/send_status()
//writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/obj/machinery/door/airlock/proc/send_status() called tick#: [world.time]")
if(radio_connection)
var/datum/signal/signal = getFromDPool(/datum/signal)
var/datum/signal/signal = getFromPool(/datum/signal)
signal.transmission_method = 1 //radio signal
signal.data["tag"] = id_tag
signal.data["timestamp"] = world.time
@@ -86,7 +86,7 @@ obj/machinery/door/airlock/Bumped(atom/AM)
if(istype(AM, /obj/mecha))
var/obj/mecha/mecha = AM
if(density && radio_connection && mecha.occupant && (src.allowed(mecha.occupant) || src.check_access_list(mecha.operation_req_access)))
var/datum/signal/signal = getFromDPool(/datum/signal)
var/datum/signal/signal = getFromPool(/datum/signal)
signal.transmission_method = 1 //radio signal
signal.data["tag"] = id_tag
signal.data["timestamp"] = world.time
@@ -156,7 +156,7 @@ obj/machinery/airlock_sensor/update_icon()
obj/machinery/airlock_sensor/attack_hand(mob/user)
if(..())
return
var/datum/signal/signal = getFromDPool(/datum/signal)
var/datum/signal/signal = getFromPool(/datum/signal)
signal.transmission_method = 1 //radio signal
signal.data["tag"] = master_tag
signal.data["command"] = command
@@ -166,7 +166,7 @@ obj/machinery/airlock_sensor/attack_hand(mob/user)
obj/machinery/airlock_sensor/process()
if(on)
var/datum/signal/signal = getFromDPool(/datum/signal)
var/datum/signal/signal = getFromPool(/datum/signal)
signal.transmission_method = 1 //radio signal
signal.data["tag"] = id_tag
signal.data["timestamp"] = world.time
@@ -315,7 +315,7 @@ obj/machinery/access_button/attack_hand(mob/user)
user << "<span class='warning'>Access Denied</span>"
else if(radio_connection)
var/datum/signal/signal = getFromDPool(/datum/signal)
var/datum/signal/signal = getFromPool(/datum/signal)
signal.transmission_method = 1 //radio signal
signal.data["tag"] = master_tag
signal.data["command"] = command

View File

@@ -400,7 +400,7 @@
if(!radio_connection)
return 0
var/datum/signal/signal = getFromDPool(/datum/signal)
var/datum/signal/signal = getFromPool(/datum/signal)
signal.transmission_method = 1 //radio signal
signal.source = src
@@ -463,7 +463,7 @@
if(!frequency)
return
var/datum/signal/alert_signal = getFromDPool(/datum/signal)
var/datum/signal/alert_signal = getFromPool(/datum/signal)
alert_signal.source = src
alert_signal.transmission_method = 1
alert_signal.data["zone"] = areaMaster.name

View File

@@ -60,7 +60,7 @@
/obj/machinery/air_sensor/process()
if(on)
var/datum/signal/signal = getFromDPool(/datum/signal)
var/datum/signal/signal = getFromPool(/datum/signal)
signal.transmission_method = 1 //radio signal
signal.data["tag"] = id_tag
signal.data["timestamp"] = world.time
@@ -494,7 +494,7 @@ font-weight:bold;
/obj/machinery/computer/general_air_control/large_tank_control/proc/send_signal(var/list/data)
//writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/obj/machinery/computer/general_air_control/large_tank_control/proc/send_signal() called tick#: [world.time]")
var/datum/signal/signal = getFromDPool(/datum/signal)
var/datum/signal/signal = getFromPool(/datum/signal)
signal.transmission_method = 1 //radio signal
signal.source = src
signal.data=data
@@ -516,7 +516,7 @@ font-weight:bold;
if(!radio_connection)
return 0
var/datum/signal/signal = getFromDPool(/datum/signal)
var/datum/signal/signal = getFromPool(/datum/signal)
signal.transmission_method = 1 //radio signal
signal.source = src
if(href_list["in_refresh_status"])
@@ -582,7 +582,7 @@ font-weight:bold;
if(data["temperature"] <= on_temperature)
injecting = 1
var/datum/signal/signal = getFromDPool(/datum/signal)
var/datum/signal/signal = getFromPool(/datum/signal)
signal.transmission_method = 1 //radio signal
signal.source = src
@@ -661,7 +661,7 @@ font-weight:bold;
if(!radio_connection)
return 0
var/datum/signal/signal = getFromDPool(/datum/signal)
var/datum/signal/signal = getFromPool(/datum/signal)
signal.transmission_method = 1 //radio signal
signal.source = src
signal.data = list(
@@ -680,7 +680,7 @@ font-weight:bold;
if(!radio_connection)
return 0
var/datum/signal/signal = getFromDPool(/datum/signal)
var/datum/signal/signal = getFromPool(/datum/signal)
signal.transmission_method = 1 //radio signal
signal.source = src
signal.data = list(
@@ -695,7 +695,7 @@ font-weight:bold;
if(!radio_connection)
return 0
var/datum/signal/signal = getFromDPool(/datum/signal)
var/datum/signal/signal = getFromPool(/datum/signal)
signal.transmission_method = 1 //radio signal
signal.source = src
signal.data = list(

View File

@@ -77,7 +77,7 @@
if(!radio_connection) return
var/datum/signal/signal = getFromDPool(/datum/signal)
var/datum/signal/signal = getFromPool(/datum/signal)
signal.source = src
signal.transmission_method = 1
signal.data = list(

View File

@@ -209,7 +209,7 @@ text("<A href='?src=\ref[src];operation=oddbutton'>[src.oddbutton ? "Yes" : "No"
closest_loc = null
next_dest_loc = null
var/datum/signal/signal = getFromDPool(/datum/signal)
var/datum/signal/signal = getFromPool(/datum/signal)
signal.source = src
signal.transmission_method = 1
signal.data = list("findbeacon" = "patrol")

View File

@@ -633,7 +633,7 @@ Auto Patrol: []"},
if(!frequency) return
var/datum/signal/signal = getFromDPool(/datum/signal)
var/datum/signal/signal = getFromPool(/datum/signal)
signal.source = src
signal.transmission_method = 1
//for(var/key in keyval)

View File

@@ -669,7 +669,7 @@ var/global/list/floorbot_targets=list()
if(!frequency) return
var/datum/signal/signal = getFromDPool(/datum/signal)
var/datum/signal/signal = getFromPool(/datum/signal)
signal.source = src
signal.transmission_method = 1
//for(var/key in keyval)

View File

@@ -881,7 +881,7 @@ var/global/mulebot_count = 0
var/datum/signal/signal = getFromDPool(/datum/signal)
var/datum/signal/signal = getFromPool(/datum/signal)
signal.source = src
signal.transmission_method = 1
//for(var/key in keyval)

View File

@@ -606,7 +606,7 @@ Auto Patrol: []"},
if(!frequency) return
var/datum/signal/signal = getFromDPool(/datum/signal)
var/datum/signal/signal = getFromPool(/datum/signal)
signal.source = src
signal.transmission_method = 1
//for(var/key in keyval)

View File

@@ -556,7 +556,7 @@ var/shuttle_call/shuttle_calls[0]
if(!frequency) return
var/datum/signal/status_signal = getFromDPool(/datum/signal)
var/datum/signal/status_signal = getFromPool(/datum/signal)
status_signal.source = src
status_signal.transmission_method = 1
status_signal.data["command"] = command

View File

@@ -134,7 +134,7 @@ var/prison_shuttle_timeleft = 0
//writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\proc/post_signal() called tick#: [world.time]")
var/datum/radio_frequency/frequency = radio_controller.return_frequency(1311)
if(!frequency) return
var/datum/signal/status_signal = getFromDPool(/datum/signal)
var/datum/signal/status_signal = getFromPool(/datum/signal)
status_signal.source = src
status_signal.transmission_method = 1
status_signal.data["command"] = command

View File

@@ -218,12 +218,12 @@
if(master)
master.post_signal(signal, comm_line)
else
returnToDPool(signal)
returnToPool(signal)
/datum/computer/file/embedded_program/proc/signalDoor(var/tag, var/command)
//writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/datum/computer/file/embedded_program/proc/signalDoor() called tick#: [world.time]")
var/datum/signal/signal = getFromDPool(/datum/signal)
var/datum/signal/signal = getFromPool(/datum/signal)
signal.data["tag"] = tag
signal.data["command"] = command
post_signal(signal)
@@ -231,7 +231,7 @@
/datum/computer/file/embedded_program/proc/signalPump(var/tag, var/power, var/direction, var/pressure)
//writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/datum/computer/file/embedded_program/proc/signalPump() called tick#: [world.time]")
var/datum/signal/signal = getFromDPool(/datum/signal)
var/datum/signal/signal = getFromPool(/datum/signal)
signal.data = list(
"tag" = tag,
"sigtype" = "command",

View File

@@ -290,7 +290,7 @@
if(href_list["radio-op"])
// Prepare signal beforehand, because this is a radio operation
var/datum/signal/signal = getFromDPool(/datum/signal)
var/datum/signal/signal = getFromPool(/datum/signal)
signal.transmission_method = 1 // radio transmission
signal.source = src
signal.frequency = frequency
@@ -357,7 +357,7 @@
looping = 1
// Prepare the radio signal
var/datum/signal/signal = getFromDPool(/datum/signal)
var/datum/signal/signal = getFromPool(/datum/signal)
signal.transmission_method = 1 // radio transmission
signal.source = src
signal.frequency = frequency

View File

@@ -93,7 +93,7 @@
if(!frequency) return
var/datum/signal/signal = getFromDPool(/datum/signal)
var/datum/signal/signal = getFromPool(/datum/signal)
signal.source = src
signal.transmission_method = 1
signal.data["beacon"] = location

View File

@@ -554,7 +554,7 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept
//writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/atom/proc/telecomms_process() called tick#: [world.time]")
// First, we want to generate a new radio signal
var/datum/signal/signal = getFromDPool(/datum/signal)
var/datum/signal/signal = getFromPool(/datum/signal)
signal.transmission_method = 2 // 2 would be a subspace transmission.
var/turf/pos = get_turf(src)

View File

@@ -71,7 +71,7 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list()
if(long_range_link == 0 && machine.long_range_link == 0)
continue
// If we're sending a copy, be sure to create the copy for EACH machine and paste the data
var/datum/signal/copy = getFromDPool(/datum/signal)
var/datum/signal/copy = getFromPool(/datum/signal)
if(copysig)
copy.transmission_method = 2

View File

@@ -255,7 +255,7 @@
if(!frequency) return
var/datum/signal/status_signal = getFromDPool(/datum/signal)
var/datum/signal/status_signal = getFromPool(/datum/signal)
status_signal.source = src
status_signal.transmission_method = 1
status_signal.data["command"] = command

View File

@@ -22,7 +22,7 @@
if(!frequency) return
var/datum/signal/signal = getFromDPool(/datum/signal)
var/datum/signal/signal = getFromPool(/datum/signal)
signal.source = src
signal.transmission_method = 1
signal.data[key] = value
@@ -265,7 +265,7 @@
var/turf/T = get_turf(src)
lastsignalers.Add("[time] <B>:</B> [usr.key] used [src] @ location ([T.x],[T.y],[T.z]) <B>:</B> [format_frequency(frequency)]/[code]")
var/datum/signal/signal = getFromDPool(/datum/signal)
var/datum/signal/signal = getFromPool(/datum/signal)
signal.source = src
signal.encryption = code
signal.data["message"] = message

View File

@@ -182,7 +182,7 @@
if(!radio_connection) return //the desk bell also works like a simple send-only signaler.
var/datum/signal/signal = getFromDPool(/datum/signal)
var/datum/signal/signal = getFromPool(/datum/signal)
signal.source = src
signal.encryption = code //Since its default code is 0, which cannot be set on a remote signaling device,
signal.data["message"] = "ACTIVATE" //there is no risk that one of the desk bells already there at round start could trigger a signaler

View File

@@ -326,7 +326,7 @@
if(subspace_transmission)
// First, we want to generate a new radio signal
var/datum/signal/signal = getFromDPool(/datum/signal)
var/datum/signal/signal = getFromPool(/datum/signal)
signal.transmission_method = 2 // 2 would be a subspace transmission.
// transmission_method could probably be enumerated through #define. Would be neater.
@@ -380,7 +380,7 @@
filter_type = 1
var/datum/signal/signal = getFromDPool(/datum/signal)
var/datum/signal/signal = getFromPool(/datum/signal)
signal.transmission_method = 2

View File

@@ -160,7 +160,7 @@ var/global/list/datum/stack_recipe/cable_recipes = list ( \
C.update_icon()
//create a new powernet with the cable, if needed it will be merged later
var/datum/powernet/PN = getFromDPool(/datum/powernet)
var/datum/powernet/PN = getFromPool(/datum/powernet)
PN.add_cable(C)
C.mergeConnectedNetworks(C.d2) // merge the powernet with adjacents powernets

View File

@@ -830,7 +830,7 @@ var/list/mechtoys = list(
if(!frequency) return
var/datum/signal/status_signal = getFromDPool(/datum/signal)
var/datum/signal/status_signal = getFromPool(/datum/signal)
status_signal.source = src
status_signal.transmission_method = 1
status_signal.data["command"] = command

View File

@@ -120,7 +120,7 @@
//writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/obj/item/device/assembly/signaler/proc/signal() called tick#: [world.time]")
if(!radio_connection) return
var/datum/signal/signal = getFromDPool(/datum/signal)
var/datum/signal/signal = getFromPool(/datum/signal)
signal.source = src
signal.encryption = code
signal.data["message"] = "ACTIVATE"

View File

@@ -52,7 +52,7 @@
/obj/machinery/computer/general_air_control/atmos_automation/proc/send_signal(var/list/data, filter = RADIO_ATMOSIA)
//writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/obj/machinery/computer/general_air_control/atmos_automation/proc/send_signal() called tick#: [world.time]")
var/datum/signal/signal = getFromDPool(/datum/signal)
var/datum/signal/signal = getFromPool(/datum/signal)
signal.transmission_method = 1 //radio signal
signal.source = src
signal.data=data

View File

@@ -234,7 +234,7 @@
if(!frequency)
return
var/datum/signal/signal = getFromDPool(/datum/signal)
var/datum/signal/signal = getFromPool(/datum/signal)
signal.data["tag"] = smelter_tag
signal.transmission_method = 1 //radio signal
signal.source = src
@@ -379,7 +379,7 @@
/obj/machinery/mineral/processing_unit/proc/send_signal(list/data)
//writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/obj/machinery/mineral/processing_unit/proc/send_signal() called tick#: [world.time]")
var/datum/signal/signal = getFromDPool(/datum/signal)
var/datum/signal/signal = getFromPool(/datum/signal)
signal.transmission_method = 1 //radio signal
signal.source = src
signal.data["tag"] = id_tag

View File

@@ -77,7 +77,7 @@
if(!radio_connection)
return
var/datum/signal/signal = getFromDPool(/datum/signal)
var/datum/signal/signal = getFromPool(/datum/signal)
signal.source = src
signal.transmission_method = 1 //radio signal
signal.data["tag"] = stacker_tag
@@ -257,7 +257,7 @@
if(!radio_connection)
return
var/datum/signal/signal = getFromDPool(/datum/signal)
var/datum/signal/signal = getFromPool(/datum/signal)
signal.source = src
signal.transmission_method = 1 //radio signal
signal.data["tag"] = id_tag

View File

@@ -15,7 +15,7 @@
/obj/item/weapon/moneybag/attack_hand(user as mob)
var/credits=0
if(!coin_value)
coin_value = getFromDPool(/datum/materials)
coin_value = getFromPool(/datum/materials)
else
coin_value.resetVariables() //make its storage be 0

View File

@@ -295,7 +295,7 @@ By design, d1 is the smallest direction and d2 is the highest
continue
if(C.d1 == (direction ^ 3) || C.d2 == (direction ^ 3)) // we've got a diagonally matching cable
if(!C.powernet) // if the matching cable somehow got no powernet, make him one (should not happen for cables)
var/datum/powernet/newPN = getFromDPool(/datum/powernet/)
var/datum/powernet/newPN = getFromPool(/datum/powernet/)
newPN.add_cable(C)
if(powernet) //if we already have a powernet, then merge the two powernets
merge_powernets(powernet,C.powernet)
@@ -312,7 +312,7 @@ By design, d1 is the smallest direction and d2 is the highest
continue
if(C.d1 == (direction ^ 12) || C.d2 == (direction ^ 12)) // we've got a diagonally matching cable
if(!C.powernet) // if the matching cable somehow got no powernet, make him one (should not happen for cables)
var/datum/powernet/newPN = getFromDPool(/datum/powernet/)
var/datum/powernet/newPN = getFromPool(/datum/powernet/)
newPN.add_cable(C)
if(powernet) // if we already have a powernet, then merge the two powernets
merge_powernets(powernet, C.powernet)
@@ -336,7 +336,7 @@ By design, d1 is the smallest direction and d2 is the highest
continue
if(C.d1 == fdir || C.d2 == fdir) // we've got a matching cable in the neighbor turf
if(!C.powernet) // if the matching cable somehow got no powernet, make him one (should not happen for cables)
var/datum/powernet/newPN = getFromDPool(/datum/powernet/)
var/datum/powernet/newPN = getFromPool(/datum/powernet/)
newPN.add_cable(C)
if(powernet) // if we already have a powernet, then merge the two powernets
merge_powernets(powernet,C.powernet)
@@ -350,7 +350,7 @@ By design, d1 is the smallest direction and d2 is the highest
var/list/connections = list()
if(!powernet) // if we somehow have no powernet, make one (should not happen for cables)
var/datum/powernet/newPN = getFromDPool(/datum/powernet/)
var/datum/powernet/newPN = getFromPool(/datum/powernet/)
newPN.add_cable(src)
// first let's add turf cables to our powernet
@@ -448,8 +448,8 @@ By design, d1 is the smallest direction and d2 is the highest
var/list/powerlist = power_list(T1, src, 0, 0) // find the other cables that ended in the centre of the turf, with or without a powernet
if(powerlist.len>0)
var/datum/powernet/PN = getFromDPool(/datum/powernet/)
var/datum/powernet/PN = getFromPool(/datum/powernet/)
propagate_network(powerlist[1], PN) // propagates the new powernet beginning at the source cable
if(PN.is_empty()) // can happen with machines made nodeless when smoothing cables
returnToDPool(PN) //powernets do not get qdelled
returnToPool(PN) //powernets do not get qdelled

View File

@@ -75,7 +75,7 @@ Powernet procs :
cables -= C
C.powernet = null
if(is_empty())
returnToDPool(src)
returnToPool(src)
// helper proc for removing a power machine from the current powernet
// warning : this proc doesn't check if the machine exists, but don't worry a runtime should tell you if it doesn't
@@ -84,7 +84,7 @@ Powernet procs :
nodes -= M
M.powernet = null
if(is_empty())
returnToDPool(src)
returnToPool(src)
// helper proc for removing a power machine from the current powernet
// warning : this proc doesn't check if the machine exists, but don't worry a runtime should tell you if it doesn't
@@ -93,7 +93,7 @@ Powernet procs :
components -= C
C.powernet = null
if(is_empty())
returnToDPool(src)
returnToPool(src)
// add a cable to the current powernet
/datum/powernet/proc/add_cable(obj/structure/cable/C)
@@ -175,7 +175,7 @@ Powernet procs :
P.build_status = 1
for(var/datum/power_connection/C in components)
C.build_status = 1
returnToDPool(src)
returnToPool(src)
//Hopefully this will never ever have to be used
var/global/powernets_broke = 0
@@ -184,7 +184,7 @@ var/global/powernets_broke = 0
/obj/structure/cable/proc/rebuild_from()
//writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/obj/structure/cable/proc/rebuild_from() called tick#: [world.time]")
if(!powernet)
var/datum/powernet/NewPN = getFromDPool(/datum/powernet)
var/datum/powernet/NewPN = getFromPool(/datum/powernet)
NewPN.add_cable(src)
propagate_network(src, src.powernet)
NewPN.load = oldload

View File

@@ -384,7 +384,7 @@
/obj/machinery/conveyor_switch/proc/send_command(var/command)
//writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/obj/machinery/conveyor_switch/proc/send_command() called tick#: [world.time]")
if(radio_connection)
var/datum/signal/signal = getFromDPool(/datum/signal)
var/datum/signal/signal = getFromPool(/datum/signal)
signal.source=src
signal.transmission_method = 1 //radio signal
signal.data["tag"] = id_tag

View File

@@ -284,7 +284,7 @@
src.overlays -= "[base_state]_ani"
if(being_built)
if(!being_built.materials)
being_built.materials = getFromDPool(/datum/materials, being_built)
being_built.materials = getFromPool(/datum/materials, being_built)
for(var/matID in part.materials)
if(copytext(matID, 1, 2) != "$") //it's not a material, let's ignore it
continue

View File

@@ -38,7 +38,7 @@ var/global/list/rnd_machines = list()
icon_state_open = "[base_state]_t"
if(research_flags & TAKESMATIN && !materials)
materials = getFromDPool(/datum/materials, src)
materials = getFromPool(/datum/materials, src)
if(ticker) initialize()

View File

@@ -92,7 +92,7 @@ client/verb/tcsrun()
if(Machine.SelectedServer)
var/obj/machinery/telecomms/server/Server = Machine.SelectedServer
var/datum/signal/signal = getFromDPool(/datum/signal)
var/datum/signal/signal = getFromPool(/datum/signal)
signal.data["message"] = ""
if(Server.freq_listening.len > 0)
signal.frequency = Server.freq_listening[1]

View File

@@ -276,7 +276,7 @@ datum/signal
code = round(code)
code = Clamp(code, 0, 100)
var/datum/signal/signal = getFromDPool(/datum/signal)
var/datum/signal/signal = getFromPool(/datum/signal)
signal.source = S
signal.encryption = code
signal.data["message"] = "ACTIVATE"
@@ -291,7 +291,7 @@ datum/signal
//writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\proc/tcombroadcast() called tick#: [world.time]")
var/datum/signal/newsign = getFromDPool(/datum/signal)
var/datum/signal/newsign = getFromPool(/datum/signal)
var/obj/machinery/telecomms/server/S = data["server"]
var/obj/item/device/radio/hradio = S.server_radio

View File

@@ -206,7 +206,7 @@
if(!radio_connection) return
var/datum/signal/signal = getFromDPool(/datum/signal)
var/datum/signal/signal = getFromPool(/datum/signal)
signal.source = src
signal.transmission_method = 1
signal.data = list(

View File

@@ -20,7 +20,6 @@
#include "code\__HELPERS\cmp.dm"
#include "code\__HELPERS\constants.dm"
#include "code\__HELPERS\datumpool.dm"
#include "code\__HELPERS\experimental.dm"
#include "code\__HELPERS\files.dm"
#include "code\__HELPERS\game.dm"
#include "code\__HELPERS\gender.dm"