diff --git a/code/ATMOSPHERICS/atmospherics.dm b/code/ATMOSPHERICS/atmospherics.dm index 6f65661e2d4..be820b9b6a1 100644 --- a/code/ATMOSPHERICS/atmospherics.dm +++ b/code/ATMOSPHERICS/atmospherics.dm @@ -8,7 +8,6 @@ Pipelines and other atmospheric objects combine to form pipe_networks Pipes -> Pipelines Pipelines + Other Objects -> Pipe network */ -GLOBAL_DATUM_INIT(pipe_icon_manager, /datum/pipe_icon_manager, new()) /obj/machinery/atmospherics anchored = 1 layer = GAS_PIPE_HIDDEN_LAYER //under wires @@ -51,6 +50,8 @@ GLOBAL_DATUM_INIT(pipe_icon_manager, /datum/pipe_icon_manager, new()) /obj/machinery/atmospherics/proc/atmos_init() if(can_unwrench) stored = new(src, make_from = src) + // Updates all pipe overlays and underlays + update_underlays() /obj/machinery/atmospherics/Destroy() QDEL_NULL(stored) @@ -74,14 +75,11 @@ GLOBAL_DATUM_INIT(pipe_icon_manager, /datum/pipe_icon_manager, new()) pipe_image = image(src, loc, layer = ABOVE_HUD_LAYER, dir = dir) //the 20 puts it above Byond's darkness (not its opacity view) pipe_image.plane = HUD_PLANE -/obj/machinery/atmospherics/proc/check_icon_cache(var/safety = 0) - if(!istype(GLOB.pipe_icon_manager)) - if(!safety) //to prevent infinite loops - GLOB.pipe_icon_manager = new() - check_icon_cache(1) - return 0 +/obj/machinery/atmospherics/proc/check_icon_cache() + if(!istype(SSair.icon_manager)) + return FALSE - return 1 + return TRUE /obj/machinery/atmospherics/proc/color_cache_name(var/obj/machinery/atmospherics/node) //Don't use this for standard pipes @@ -93,14 +91,14 @@ GLOBAL_DATUM_INIT(pipe_icon_manager, /datum/pipe_icon_manager, new()) /obj/machinery/atmospherics/proc/add_underlay(var/turf/T, var/obj/machinery/atmospherics/node, var/direction, var/icon_connect_type) if(node) if(T.intact && node.level == 1 && istype(node, /obj/machinery/atmospherics/pipe)) - //underlays += GLOB.pipe_icon_manager.get_atmos_icon("underlay_down", direction, color_cache_name(node)) - underlays += GLOB.pipe_icon_manager.get_atmos_icon("underlay", direction, color_cache_name(node), "down" + icon_connect_type) + //underlays += SSair.icon_manager.get_atmos_icon("underlay_down", direction, color_cache_name(node)) + underlays += SSair.icon_manager.get_atmos_icon("underlay", direction, color_cache_name(node), "down" + icon_connect_type) else - //underlays += GLOB.pipe_icon_manager.get_atmos_icon("underlay_intact", direction, color_cache_name(node)) - underlays += GLOB.pipe_icon_manager.get_atmos_icon("underlay", direction, color_cache_name(node), "intact" + icon_connect_type) + //underlays += SSair.icon_manager.get_atmos_icon("underlay_intact", direction, color_cache_name(node)) + underlays += SSair.icon_manager.get_atmos_icon("underlay", direction, color_cache_name(node), "intact" + icon_connect_type) else - //underlays += GLOB.pipe_icon_manager.get_atmos_icon("underlay_exposed", direction, pipe_color) - underlays += GLOB.pipe_icon_manager.get_atmos_icon("underlay", direction, color_cache_name(node), "exposed" + icon_connect_type) + //underlays += SSair.icon_manager.get_atmos_icon("underlay_exposed", direction, pipe_color) + underlays += SSair.icon_manager.get_atmos_icon("underlay", direction, color_cache_name(node), "exposed" + icon_connect_type) /obj/machinery/atmospherics/proc/update_underlays() if(check_icon_cache()) @@ -197,9 +195,9 @@ GLOBAL_DATUM_INIT(pipe_icon_manager, /datum/pipe_icon_manager, new()) //You unwrenched a pipe full of pressure? let's splat you into the wall silly. if(unsafe_wrenching) - if(safefromgusts) + if(safefromgusts) to_chat(user, "Your magboots cling to the floor as a great burst of wind bellows against you.") - else + else unsafe_pressure_release(user,internal_pressure) deconstruct(TRUE) else @@ -337,11 +335,11 @@ GLOBAL_DATUM_INIT(pipe_icon_manager, /datum/pipe_icon_manager, new()) /obj/machinery/atmospherics/proc/add_underlay_adapter(var/turf/T, var/obj/machinery/atmospherics/node, var/direction, var/icon_connect_type) //modified from add_underlay, does not make exposed underlays if(node) if(T.intact && node.level == 1 && istype(node, /obj/machinery/atmospherics/pipe)) - underlays += GLOB.pipe_icon_manager.get_atmos_icon("underlay", direction, color_cache_name(node), "down" + icon_connect_type) + underlays += SSair.icon_manager.get_atmos_icon("underlay", direction, color_cache_name(node), "down" + icon_connect_type) else - underlays += GLOB.pipe_icon_manager.get_atmos_icon("underlay", direction, color_cache_name(node), "intact" + icon_connect_type) + underlays += SSair.icon_manager.get_atmos_icon("underlay", direction, color_cache_name(node), "intact" + icon_connect_type) else - underlays += GLOB.pipe_icon_manager.get_atmos_icon("underlay", direction, color_cache_name(node), "retracted" + icon_connect_type) + underlays += SSair.icon_manager.get_atmos_icon("underlay", direction, color_cache_name(node), "retracted" + icon_connect_type) /obj/machinery/atmospherics/singularity_pull(S, current_size) if(current_size >= STAGE_FIVE) diff --git a/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm b/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm index 43b3c382c95..e3da9ae0bc1 100644 --- a/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm +++ b/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm @@ -94,7 +94,7 @@ else vent_icon += "[on ? "[pump_direction ? "out" : "in"]" : "off"]" - overlays += GLOB.pipe_icon_manager.get_atmos_icon("device", , , vent_icon) + overlays += SSair.icon_manager.get_atmos_icon("device", , , vent_icon) /obj/machinery/atmospherics/binary/dp_vent_pump/update_underlays() if(..()) diff --git a/code/ATMOSPHERICS/components/unary_devices/vent_pump.dm b/code/ATMOSPHERICS/components/unary_devices/vent_pump.dm index 5725a7a8e9b..b2f575b2a57 100644 --- a/code/ATMOSPHERICS/components/unary_devices/vent_pump.dm +++ b/code/ATMOSPHERICS/components/unary_devices/vent_pump.dm @@ -104,7 +104,7 @@ else vent_icon += "[on ? "[pump_direction ? "out" : "in"]" : "off"]" - overlays += GLOB.pipe_icon_manager.get_atmos_icon("device", , , vent_icon) + overlays += SSair.icon_manager.get_atmos_icon("device", , , vent_icon) update_pipe_image() diff --git a/code/ATMOSPHERICS/components/unary_devices/vent_scrubber.dm b/code/ATMOSPHERICS/components/unary_devices/vent_scrubber.dm index bbd5e760d2f..474b6c1b7f5 100644 --- a/code/ATMOSPHERICS/components/unary_devices/vent_scrubber.dm +++ b/code/ATMOSPHERICS/components/unary_devices/vent_scrubber.dm @@ -118,7 +118,7 @@ if(welded) scrubber_icon = "scrubberweld" - overlays += GLOB.pipe_icon_manager.get_atmos_icon("device", , , scrubber_icon) + overlays += SSair.icon_manager.get_atmos_icon("device", , , scrubber_icon) update_pipe_image() /obj/machinery/atmospherics/unary/vent_scrubber/update_underlays() diff --git a/code/ATMOSPHERICS/pipes/cap.dm b/code/ATMOSPHERICS/pipes/cap.dm index 15b53d83e9c..bc85edb7c44 100644 --- a/code/ATMOSPHERICS/pipes/cap.dm +++ b/code/ATMOSPHERICS/pipes/cap.dm @@ -55,14 +55,14 @@ /obj/machinery/atmospherics/pipe/cap/update_icon(var/safety = 0) ..() - + if(!check_icon_cache()) return alpha = 255 overlays.Cut() - overlays += GLOB.pipe_icon_manager.get_atmos_icon("pipe", , pipe_color, "cap" + icon_connect_type) + overlays += SSair.icon_manager.get_atmos_icon("pipe", , pipe_color, "cap" + icon_connect_type) /obj/machinery/atmospherics/pipe/cap/atmos_init() ..() diff --git a/code/ATMOSPHERICS/pipes/manifold.dm b/code/ATMOSPHERICS/pipes/manifold.dm index 2eef5ad74c4..6c90bfd4fbd 100644 --- a/code/ATMOSPHERICS/pipes/manifold.dm +++ b/code/ATMOSPHERICS/pipes/manifold.dm @@ -123,8 +123,8 @@ alpha = 255 overlays.Cut() - overlays += GLOB.pipe_icon_manager.get_atmos_icon("manifold", , pipe_color, "core" + icon_connect_type) - overlays += GLOB.pipe_icon_manager.get_atmos_icon("manifold", , , "clamps" + icon_connect_type) + overlays += SSair.icon_manager.get_atmos_icon("manifold", , pipe_color, "core" + icon_connect_type) + overlays += SSair.icon_manager.get_atmos_icon("manifold", , , "clamps" + icon_connect_type) underlays.Cut() var/turf/T = get_turf(src) diff --git a/code/ATMOSPHERICS/pipes/manifold4w.dm b/code/ATMOSPHERICS/pipes/manifold4w.dm index 2b384b3684b..688f9564ac8 100644 --- a/code/ATMOSPHERICS/pipes/manifold4w.dm +++ b/code/ATMOSPHERICS/pipes/manifold4w.dm @@ -96,8 +96,8 @@ alpha = 255 overlays.Cut() - overlays += GLOB.pipe_icon_manager.get_atmos_icon("manifold", , pipe_color, "4way" + icon_connect_type) - overlays += GLOB.pipe_icon_manager.get_atmos_icon("manifold", , , "clamps_4way" + icon_connect_type) + overlays += SSair.icon_manager.get_atmos_icon("manifold", , pipe_color, "4way" + icon_connect_type) + overlays += SSair.icon_manager.get_atmos_icon("manifold", , , "clamps_4way" + icon_connect_type) underlays.Cut() var/turf/T = get_turf(src) diff --git a/code/ATMOSPHERICS/pipes/simple/pipe_simple.dm b/code/ATMOSPHERICS/pipes/simple/pipe_simple.dm index 7e304170e54..3874e01c742 100644 --- a/code/ATMOSPHERICS/pipes/simple/pipe_simple.dm +++ b/code/ATMOSPHERICS/pipes/simple/pipe_simple.dm @@ -147,9 +147,9 @@ overlays.Cut() if(node1 && node2) - overlays += GLOB.pipe_icon_manager.get_atmos_icon("pipe", , pipe_color, pipe_icon + "intact" + icon_connect_type) + overlays += SSair.icon_manager.get_atmos_icon("pipe", , pipe_color, pipe_icon + "intact" + icon_connect_type) else - overlays += GLOB.pipe_icon_manager.get_atmos_icon("pipe", , pipe_color, pipe_icon + "exposed[node1?1:0][node2?1:0]" + icon_connect_type) + overlays += SSair.icon_manager.get_atmos_icon("pipe", , pipe_color, pipe_icon + "exposed[node1?1:0][node2?1:0]" + icon_connect_type) // A check to make sure both nodes exist - self-delete if they aren't present /obj/machinery/atmospherics/pipe/simple/check_nodes_exist() diff --git a/code/ATMOSPHERICS/pipes/simple/pipe_simple_hidden.dm b/code/ATMOSPHERICS/pipes/simple/pipe_simple_hidden.dm index e0bd78bc2de..0df4cd3fc64 100644 --- a/code/ATMOSPHERICS/pipes/simple/pipe_simple_hidden.dm +++ b/code/ATMOSPHERICS/pipes/simple/pipe_simple_hidden.dm @@ -29,14 +29,14 @@ /obj/machinery/atmospherics/pipe/simple/hidden/universal/update_icon(var/safety = 0) ..() - + if(!check_icon_cache()) return alpha = 255 overlays.Cut() - overlays += GLOB.pipe_icon_manager.get_atmos_icon("pipe", , pipe_color, "universal") + overlays += SSair.icon_manager.get_atmos_icon("pipe", , pipe_color, "universal") underlays.Cut() if(node1) diff --git a/code/ATMOSPHERICS/pipes/simple/pipe_simple_visible.dm b/code/ATMOSPHERICS/pipes/simple/pipe_simple_visible.dm index 410c992c74c..c2708be19eb 100644 --- a/code/ATMOSPHERICS/pipes/simple/pipe_simple_visible.dm +++ b/code/ATMOSPHERICS/pipes/simple/pipe_simple_visible.dm @@ -40,14 +40,14 @@ /obj/machinery/atmospherics/pipe/simple/visible/universal/update_icon(var/safety = 0) ..() - + if(!check_icon_cache()) return alpha = 255 overlays.Cut() - overlays += GLOB.pipe_icon_manager.get_atmos_icon("pipe", , pipe_color, "universal") + overlays += SSair.icon_manager.get_atmos_icon("pipe", , pipe_color, "universal") underlays.Cut() if(node1) diff --git a/code/controllers/subsystem/air.dm b/code/controllers/subsystem/air.dm index 80ce66d13ec..061c057c368 100644 --- a/code/controllers/subsystem/air.dm +++ b/code/controllers/subsystem/air.dm @@ -39,6 +39,9 @@ SUBSYSTEM_DEF(air) var/list/active_super_conductivity = list() var/list/high_pressure_delta = list() + /// Pipe overlay/underlay icon manager + var/datum/pipe_icon_manager/icon_manager + var/list/currentrun = list() var/currentpart = SSAIR_DEFERREDPIPENETS @@ -66,6 +69,7 @@ SUBSYSTEM_DEF(air) /datum/controller/subsystem/air/Initialize(timeofday) setup_overlays() // Assign icons and such for gas-turf-overlays + icon_manager = new() // Sets up icon manager for pipes setup_allturfs() setup_atmos_machinery(GLOB.machines) setup_pipenets(GLOB.machines)