mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 10:21:11 +00:00
Unifies pooling.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -64,10 +64,10 @@
|
||||
|
||||
if(network1)
|
||||
if(network1)
|
||||
returnToDPool(network1)
|
||||
returnToPool(network1)
|
||||
if(network2)
|
||||
if(network1)
|
||||
returnToDPool(network2)
|
||||
returnToPool(network2)
|
||||
|
||||
build_network()
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
if(node)
|
||||
node.disconnect(src)
|
||||
if(network)
|
||||
returnToDPool(network)
|
||||
returnToPool(network)
|
||||
|
||||
node = null
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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(...)
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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]")
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user