mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-06-08 07:41:26 +01:00
646e8d0b83
Added qdel for pipenet network datums, this removes most of the singularity lag. Makes datums work on the garbage collector.
134 lines
3.0 KiB
Plaintext
134 lines
3.0 KiB
Plaintext
/obj/machinery/atmospherics/binary
|
|
dir = SOUTH
|
|
initialize_directions = SOUTH|NORTH
|
|
use_power = 1
|
|
|
|
var/datum/gas_mixture/air1
|
|
var/datum/gas_mixture/air2
|
|
|
|
var/obj/machinery/atmospherics/node1
|
|
var/obj/machinery/atmospherics/node2
|
|
|
|
var/datum/pipe_network/network1
|
|
var/datum/pipe_network/network2
|
|
|
|
/obj/machinery/atmospherics/binary/New()
|
|
..()
|
|
switch(dir)
|
|
if(NORTH)
|
|
initialize_directions = NORTH|SOUTH
|
|
if(SOUTH)
|
|
initialize_directions = NORTH|SOUTH
|
|
if(EAST)
|
|
initialize_directions = EAST|WEST
|
|
if(WEST)
|
|
initialize_directions = EAST|WEST
|
|
air1 = new
|
|
air2 = new
|
|
|
|
air1.volume = 200
|
|
air2.volume = 200
|
|
|
|
// Housekeeping and pipe network stuff below
|
|
/obj/machinery/atmospherics/binary/network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference)
|
|
if(reference == node1)
|
|
network1 = new_network
|
|
|
|
else if(reference == node2)
|
|
network2 = new_network
|
|
|
|
if(new_network.normal_members.Find(src))
|
|
return 0
|
|
|
|
new_network.normal_members += src
|
|
|
|
return null
|
|
|
|
/obj/machinery/atmospherics/binary/Destroy()
|
|
loc = null
|
|
|
|
if(node1)
|
|
node1.disconnect(src)
|
|
del(network1)
|
|
if(node2)
|
|
node2.disconnect(src)
|
|
del(network2)
|
|
|
|
node1 = null
|
|
node2 = null
|
|
|
|
..()
|
|
|
|
/obj/machinery/atmospherics/binary/initialize()
|
|
src.disconnect(src)
|
|
|
|
var/node2_connect = dir
|
|
var/node1_connect = turn(dir, 180)
|
|
|
|
for(var/obj/machinery/atmospherics/target in get_step(src,node1_connect))
|
|
if(target.initialize_directions & get_dir(target,src))
|
|
node1 = target
|
|
break
|
|
|
|
for(var/obj/machinery/atmospherics/target in get_step(src,node2_connect))
|
|
if(target.initialize_directions & get_dir(target,src))
|
|
node2 = target
|
|
break
|
|
|
|
update_icon()
|
|
|
|
/obj/machinery/atmospherics/binary/build_network()
|
|
if(!network1 && node1)
|
|
network1 = new /datum/pipe_network()
|
|
network1.normal_members += src
|
|
network1.build_network(node1, src)
|
|
|
|
if(!network2 && node2)
|
|
network2 = new /datum/pipe_network()
|
|
network2.normal_members += src
|
|
network2.build_network(node2, src)
|
|
|
|
|
|
/obj/machinery/atmospherics/binary/return_network(obj/machinery/atmospherics/reference)
|
|
build_network()
|
|
|
|
if(reference==node1)
|
|
return network1
|
|
|
|
if(reference==node2)
|
|
return network2
|
|
|
|
return null
|
|
|
|
/obj/machinery/atmospherics/binary/reassign_network(datum/pipe_network/old_network, datum/pipe_network/new_network)
|
|
if(network1 == old_network)
|
|
network1 = new_network
|
|
if(network2 == old_network)
|
|
network2 = new_network
|
|
|
|
return 1
|
|
|
|
/obj/machinery/atmospherics/binary/return_network_air(datum/pipe_network/reference)
|
|
var/list/results = list()
|
|
|
|
if(network1 == reference)
|
|
results += air1
|
|
if(network2 == reference)
|
|
results += air2
|
|
|
|
return results
|
|
|
|
/obj/machinery/atmospherics/binary/disconnect(obj/machinery/atmospherics/reference)
|
|
if(reference==node1)
|
|
del(network1)
|
|
node1 = null
|
|
|
|
else if(reference==node2)
|
|
del(network2)
|
|
node2 = null
|
|
|
|
return null
|
|
|
|
/obj/machinery/atmospherics/binary/nullifyPipenetwork()
|
|
network1 = null
|
|
network2 = null |