From d5eb58d8d69a4abea9501c905783320fdbf60e85 Mon Sep 17 00:00:00 2001 From: LordBraindead Date: Sun, 19 Jan 2014 12:00:22 +0100 Subject: [PATCH] generalized the z-level atmospipes --- code/TriDimension/Pipes.dm | 212 ++++------------------- code/TriDimension/Turfs.dm | 2 +- code/game/machinery/pipe/construction.dm | 8 +- 3 files changed, 42 insertions(+), 180 deletions(-) diff --git a/code/TriDimension/Pipes.dm b/code/TriDimension/Pipes.dm index 16768b69119..779e2e49088 100644 --- a/code/TriDimension/Pipes.dm +++ b/code/TriDimension/Pipes.dm @@ -1,7 +1,7 @@ -///////////////////////// -// the elusive up pipe // -///////////////////////// -obj/machinery/atmospherics/pipe/up +//////////////////////////// +// parent class for pipes // +//////////////////////////// +obj/machinery/atmospherics/pipe/zpipe icon = 'code/TriDimension/multiz_pipe.dmi' icon_state = "up" @@ -26,7 +26,7 @@ obj/machinery/atmospherics/pipe/up level = 1 -obj/machinery/atmospherics/pipe/up/New() +obj/machinery/atmospherics/pipe/zpipe/New() ..() switch(dir) if(SOUTH) @@ -48,7 +48,7 @@ obj/machinery/atmospherics/pipe/up/New() initialize() -obj/machinery/atmospherics/pipe/up/hide(var/i) +obj/machinery/atmospherics/pipe/zpipe/hide(var/i) if(level == 1 && istype(loc, /turf/simulated)) invisibility = i ? 101 : 0 update_icon() @@ -59,7 +59,7 @@ obj/machinery/atmospherics/pipe/up/process() else . = PROCESS_KILL -obj/machinery/atmospherics/pipe/up/check_pressure(pressure) +obj/machinery/atmospherics/pipe/zpipe/check_pressure(pressure) var/datum/gas_mixture/environment = loc.return_air() var/pressure_difference = pressure - environment.return_pressure() @@ -74,7 +74,7 @@ obj/machinery/atmospherics/pipe/up/check_pressure(pressure) else return 1 -obj/machinery/atmospherics/pipe/up/proc/burst() +obj/machinery/atmospherics/pipe/zpipe/proc/burst() src.visible_message("\red \bold [src] bursts!"); playsound(src.loc, 'sound/effects/bang.ogg', 25, 1) var/datum/effect/effect/system/smoke_spread/smoke = new @@ -82,42 +82,48 @@ obj/machinery/atmospherics/pipe/up/proc/burst() smoke.start() del(src) -obj/machinery/atmospherics/pipe/up/proc/normalize_dir() +obj/machinery/atmospherics/pipe/zpipe/proc/normalize_dir() if(dir==3) dir = 1 else if(dir==12) dir = 4 -obj/machinery/atmospherics/pipe/up/Del() +obj/machinery/atmospherics/pipe/zpipe/Del() if(node1) node1.disconnect(src) if(node2) node2.disconnect(src) ..() -obj/machinery/atmospherics/pipe/up/pipeline_expansion() +obj/machinery/atmospherics/pipe/zpipe/pipeline_expansion() return list(node1, node2) -obj/machinery/atmospherics/pipe/up/update_icon() -/* if(node1&&node2) - var/C = "" - icon_state = "intact[C][invisibility ? "-f" : "" ]" +obj/machinery/atmospherics/pipe/zpipe/update_icon() + return - //var/node1_direction = get_dir(src, node1) - //var/node2_direction = get_dir(src, node2) +obj/machinery/atmospherics/pipe/zpipe/disconnect(obj/machinery/atmospherics/reference) + if(reference == node1) + if(istype(node1, /obj/machinery/atmospherics/pipe)) + del(parent) + node1 = null - //dir = node1_direction|node2_direction + if(reference == node2) + if(istype(node2, /obj/machinery/atmospherics/pipe)) + del(parent) + node2 = null - else - if(!node1&&!node2) - world << "up-pipe deleted by update_icon()" - del(src) //TODO: silent deleting looks weird - var/have_node1 = node1?1:0 - var/have_node2 = node2?1:0 - icon_state = "exposed[have_node1][have_node2][invisibility ? "-f" : "" ]"*/ + return null +///////////////////////// +// the elusive up pipe // +///////////////////////// +obj/machinery/atmospherics/pipe/zpipe/up + icon = 'code/TriDimension/multiz_pipe.dmi' + icon_state = "up" + name = "upwards pipe" + desc = "A pipe segment to connect upwards." -obj/machinery/atmospherics/pipe/up/initialize() +obj/machinery/atmospherics/pipe/zpipe/up/initialize() normalize_dir() var/node1_dir @@ -137,153 +143,26 @@ obj/machinery/atmospherics/pipe/up/initialize() var/turf/above = locate(src.x, src.y, controler.up_target) if(above) for(var/obj/machinery/atmospherics/target in above) - if(target.initialize_directions && istype(target, /obj/machinery/atmospherics/pipe/down)) + if(target.initialize_directions && istype(target, /obj/machinery/atmospherics/pipe/zpipe/down)) node2 = target break var/turf/T = src.loc // hide if turf is not intact hide(T.intact) - update_icon() - //update_icon() - -obj/machinery/atmospherics/pipe/up/disconnect(obj/machinery/atmospherics/reference) - if(reference == node1) - if(istype(node1, /obj/machinery/atmospherics/pipe)) - del(parent) - node1 = null - - if(reference == node2) - if(istype(node2, /obj/machinery/atmospherics/pipe)) - del(parent) - node2 = null - - update_icon() - - return null - /////////////////////// // and the down pipe // /////////////////////// -obj/machinery/atmospherics/pipe/down +obj/machinery/atmospherics/pipe/zpipe/down icon = 'code/TriDimension/multiz_pipe.dmi' icon_state = "down" name = "downwards pipe" desc = "A pipe segment to connect downwards." - volume = 70 - - dir = SOUTH - initialize_directions = SOUTH - - var/obj/machinery/atmospherics/node1 //connection on the same Z - var/obj/machinery/atmospherics/node2 //connection on the other Z - - var/minimum_temperature_difference = 300 - var/thermal_conductivity = 0 //WALL_HEAT_TRANSFER_COEFFICIENT No - - var/maximum_pressure = 70*ONE_ATMOSPHERE - var/fatigue_pressure = 55*ONE_ATMOSPHERE - alert_pressure = 55*ONE_ATMOSPHERE - - - level = 1 - -obj/machinery/atmospherics/pipe/down/New() - ..() - switch(dir) - if(SOUTH) - initialize_directions = SOUTH - if(NORTH) - initialize_directions = NORTH - if(WEST) - initialize_directions = WEST - if(EAST) - initialize_directions = EAST - if(NORTHEAST) - initialize_directions = NORTH - if(NORTHWEST) - initialize_directions = WEST - if(SOUTHEAST) - initialize_directions = EAST - if(SOUTHWEST) - initialize_directions = SOUTH - initialize() - - -obj/machinery/atmospherics/pipe/down/hide(var/i) - if(level == 1 && istype(loc, /turf/simulated)) - invisibility = i ? 101 : 0 - update_icon() - -obj/machinery/atmospherics/pipe/down/process() - if(!parent) //This should cut back on the overhead calling build_network thousands of times per cycle - ..() - else - . = PROCESS_KILL - -obj/machinery/atmospherics/pipe/down/check_pressure(pressure) - var/datum/gas_mixture/environment = loc.return_air() - - var/pressure_difference = pressure - environment.return_pressure() - - if(pressure_difference > maximum_pressure) - burst() - - else if(pressure_difference > fatigue_pressure) - //TODO: leak to turf, doing pfshhhhh - if(prob(5)) - burst() - - else return 1 - -obj/machinery/atmospherics/pipe/down/proc/burst() - src.visible_message("\red \bold [src] bursts!"); - playsound(src.loc, 'sound/effects/bang.ogg', 25, 1) - var/datum/effect/effect/system/smoke_spread/smoke = new - smoke.set_up(1,0, src.loc, 0) - smoke.start() - del(src) - -obj/machinery/atmospherics/pipe/down/proc/normalize_dir() - if(dir==3) - dir = 1 - else if(dir==12) - dir = 4 - -obj/machinery/atmospherics/pipe/down/Del() - if(node1) - node1.disconnect(src) - if(node2) - node2.disconnect(src) - ..() - -obj/machinery/atmospherics/pipe/down/pipeline_expansion() - return list(node1, node2) - -obj/machinery/atmospherics/pipe/down/update_icon() -/* - if(node1&&node2) - var/C = "" - icon_state = "intact[C][invisibility ? "-f" : "" ]" - - //var/node1_direction = get_dir(src, node1) - //var/node2_direction = get_dir(src, node2) - - //dir = node1_direction|node2_direction - - else - if(!node1&&!node2) - del(src) //TODO: silent deleting looks weird - var/have_node1 = node1?1:0 - var/have_node2 = node2?1:0 - icon_state = "exposed[have_node1][have_node2][invisibility ? "-f" : "" ]"*/ - - -obj/machinery/atmospherics/pipe/down/initialize() +obj/machinery/atmospherics/pipe/zpipe/down/initialize() normalize_dir() var/node1_dir @@ -303,27 +182,10 @@ obj/machinery/atmospherics/pipe/down/initialize() var/turf/below = locate(src.x, src.y, controler.down_target) if(below) for(var/obj/machinery/atmospherics/target in below) - if(target.initialize_directions && istype(target, /obj/machinery/atmospherics/pipe/up)) + if(target.initialize_directions && istype(target, /obj/machinery/atmospherics/pipe/zpipe/up)) node2 = target break var/turf/T = src.loc // hide if turf is not intact - hide(T.intact) - update_icon() - //update_icon() - -obj/machinery/atmospherics/pipe/down/disconnect(obj/machinery/atmospherics/reference) - if(reference == node1) - if(istype(node1, /obj/machinery/atmospherics/pipe)) - del(parent) - node1 = null - - if(reference == node2) - if(istype(node2, /obj/machinery/atmospherics/pipe)) - del(parent) - node2 = null - - update_icon() - - return null + hide(T.intact) \ No newline at end of file diff --git a/code/TriDimension/Turfs.dm b/code/TriDimension/Turfs.dm index 3a1b6b58df3..2f99b6fd415 100644 --- a/code/TriDimension/Turfs.dm +++ b/code/TriDimension/Turfs.dm @@ -28,7 +28,7 @@ if(A.density) blocked = 1 break - if(istype(A, /obj/machinery/atmospherics/pipe/up) && istype(AM,/obj/item/pipe)) + if(istype(A, /obj/machinery/atmospherics/pipe/zpipe/up) && istype(AM,/obj/item/pipe)) blocked = 1 break if(istype(A, /obj/structure/disposalpipe/up) && istype(AM,/obj/item/pipe)) diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm index 75049fb9095..72aa31ccee0 100644 --- a/code/game/machinery/pipe/construction.dm +++ b/code/game/machinery/pipe/construction.dm @@ -89,9 +89,9 @@ Buildable meters else if(istype(make_from, /obj/machinery/atmospherics/pipe/cap)) src.pipe_type = PIPE_CAP ///// Z-Level stuff - else if(istype(make_from, /obj/machinery/atmospherics/pipe/up)) + else if(istype(make_from, /obj/machinery/atmospherics/pipe/zpipe/up)) src.pipe_type = PIPE_UP - else if(istype(make_from, /obj/machinery/atmospherics/pipe/down)) + else if(istype(make_from, /obj/machinery/atmospherics/pipe/zpipe/down)) src.pipe_type = PIPE_DOWN ///// Z-Level stuff else @@ -617,7 +617,7 @@ Buildable meters C.node.build_network() ///// Z-Level stuff if(PIPE_UP) //volume pump - var/obj/machinery/atmospherics/pipe/up/P = new(src.loc) + var/obj/machinery/atmospherics/pipe/zpipe/up/P = new(src.loc) P.dir = dir P.initialize_directions = pipe_dir if (pipename) @@ -633,7 +633,7 @@ Buildable meters P.node2.initialize() P.node2.build_network() if(PIPE_DOWN) //volume pump - var/obj/machinery/atmospherics/pipe/down/P = new(src.loc) + var/obj/machinery/atmospherics/pipe/zpipe/down/P = new(src.loc) P.dir = dir P.initialize_directions = pipe_dir if (pipename)