diff --git a/code/game/machinery/atmo_control.dm b/code/game/machinery/atmo_control.dm index 5512592730e..31b896eed7f 100644 --- a/code/game/machinery/atmo_control.dm +++ b/code/game/machinery/atmo_control.dm @@ -433,6 +433,115 @@ obj/machinery/computer/general_air_control/Destroy() radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA) +/obj/machinery/computer/general_air_control/reaction_chamber + name = "reaction chamber monitoring console" + desc = "A console that monitors and controls a reaction chamber." + icon_screen = "engi" + light_color = "#ffcc33" + + frequency = 1442 + var/igniter_id + var/last_ignite = 0 + var/input_tag + var/output_tag + + var/list/input_info + var/list/output_info + + var/default_input_flow_setting = 200 + var/default_pressure_setting = ONE_ATMOSPHERE * 45 + var/max_input_flow_setting = ATMOS_DEFAULT_VOLUME_PUMP + 500 + var/max_pressure_setting = 50 * ONE_ATMOSPHERE + + circuit = /obj/item/circuitboard/air_management/reaction_chamber + +/obj/machinery/computer/general_air_control/reaction_chamber/vueui_data_change(var/list/data, var/mob/user, var/datum/vueui/ui) + . = ..() + if(!data) + . = data = list("sensors" = list()) + + VUEUI_SET_CHECK(data["igniter"], !!igniter_id, ., data) + + data["maxrate"] = max_input_flow_setting + data["maxpressure"] = max_pressure_setting + + if(input_info) + LAZYINITLIST(data["input"]) + VUEUI_SET_CHECK(data["input"]["power"], input_info["power"], ., data) + VUEUI_SET_CHECK(data["input"]["rate"], input_info["volume_rate"], ., data) + VUEUI_SET_CHECK_IFNOTSET(data["input"]["setrate"], default_input_flow_setting, ., data) + + if(output_info) + LAZYINITLIST(data["output"]) + VUEUI_SET_CHECK(data["output"]["power"], output_info["power"], ., data) + VUEUI_SET_CHECK(data["output"]["pressure"], output_info["internal"], ., data) + VUEUI_SET_CHECK_IFNOTSET(data["output"]["setpressure"], default_pressure_setting, ., data) + +/obj/machinery/computer/general_air_control/reaction_chamber/ui_interact(mob/user) + var/datum/vueui/ui = SSvueui.get_open_ui(user, src) + if (!ui) + ui = new(user, src, "console-atmocontrol-reaction", 460, 470, capitalize(src.name)) + ui.auto_update_content = TRUE + ui.open() + +/obj/machinery/computer/general_air_control/reaction_chamber/receive_signal(datum/signal/signal) + if(!signal || signal.encryption) return + + var/id_tag = signal.data["tag"] + if(!id_tag) return + + if(input_tag == id_tag) + input_info = signal.data + else if(output_tag == id_tag) + output_info = signal.data + else + ..(signal) + +/obj/machinery/computer/general_air_control/reaction_chamber/Topic(href, href_list) + if(..()) + return 1 + + if(!radio_connection) + return 0 + var/datum/signal/signal = new + signal.transmission_method = TRANSMISSION_RADIO + signal.source = src + if(href_list["in_refresh_status"]) + input_info = null + signal.data = list ("tag" = input_tag, "status" = 1) + + if(href_list["in_toggle_injector"]) + input_info = null + signal.data = list ("tag" = input_tag, "power_toggle" = 1) + + if(href_list["in_set_flowrate"] != null) + var/setrate = between(0, text2num(href_list["in_set_flowrate"]), max_input_flow_setting) + input_info = null + signal.data = list ("tag" = input_tag, "set_volume_rate" = "[setrate]") + + if(href_list["out_refresh_status"]) + output_info = null + signal.data = list ("tag" = output_tag, "status" = 1) + + if(href_list["out_toggle_power"]) + output_info = null + signal.data = list ("tag" = output_tag, "power_toggle" = 1) + + if(href_list["out_set_pressure"] != null) + var/setpressure = between(0, text2num(href_list["out_set_pressure"]), max_pressure_setting) + output_info = null + signal.data = list ("tag" = output_tag, "set_internal_pressure" = "[setpressure]") + + if(href_list["fire_igniter"]) + if((last_ignite + 5 SECONDS) < world.time) + for(var/obj/machinery/sparker/M in SSmachinery.all_machines) + if(M.id == igniter_id) + M.ignite() + last_ignite = world.time + + signal.data["sigtype"] = "command" + radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA) + #undef SIGNAL_OXYGEN #undef SIGNAL_PHORON #undef SIGNAL_NITROGEN diff --git a/code/game/objects/items/weapons/circuitboards/computer/air_management.dm b/code/game/objects/items/weapons/circuitboards/computer/air_management.dm index e263d635cb5..1003b141897 100644 --- a/code/game/objects/items/weapons/circuitboards/computer/air_management.dm +++ b/code/game/objects/items/weapons/circuitboards/computer/air_management.dm @@ -45,6 +45,19 @@ var/cutoff_temperature = 2000 var/on_temperature = 1200 +/obj/item/circuitboard/air_management/reaction_chamber + name = T_BOARD("tank control") + build_path = /obj/machinery/computer/general_air_control/reaction_chamber + frequency = 1442 + var/input_tag + var/output_tag + + var/list/input_info = list() + var/list/output_info = list() + + var/input_flow_setting = 200 + var/pressure_setting = ONE_ATMOSPHERE * 45 + /************ * Construct * ************/ diff --git a/maps/sccv_horizon/placeholder-1_deck_1.dmm b/maps/sccv_horizon/placeholder-1_deck_1.dmm index d844bbbd1de..a5152b776d7 100644 --- a/maps/sccv_horizon/placeholder-1_deck_1.dmm +++ b/maps/sccv_horizon/placeholder-1_deck_1.dmm @@ -2448,7 +2448,7 @@ /area/engineering/atmos/propulsion/starboard) "cne" = ( /obj/machinery/sparker{ - id = "portpropulsionignite"; + id = "port_prop_igni"; pixel_x = 22 }, /turf/simulated/floor/reinforced/airless, @@ -3815,7 +3815,7 @@ /area/turret_protected/ai) "dCC" = ( /obj/machinery/sparker{ - id = "starboardpropulsionignite"; + id = "starboard_prop_igni"; pixel_x = -16 }, /turf/simulated/floor/reinforced, @@ -4901,7 +4901,10 @@ /turf/simulated/floor/tiled/dark, /area/engineering/atmos/propulsion/starboard) "eBj" = ( -/obj/machinery/atmospherics/unary/vent_pump/siphon/on/atmos, +/obj/machinery/atmospherics/unary/vent_pump/siphon/on/atmos{ + frequency = 1442; + id_tag = "port_prop_out" + }, /turf/simulated/floor/reinforced/airless, /area/engineering/atmos/propulsion) "eBt" = ( @@ -4959,7 +4962,11 @@ /area/quartermaster/loading) "eDE" = ( /obj/machinery/atmospherics/pipe/manifold/visible/black, -/obj/machinery/air_sensor, +/obj/machinery/air_sensor{ + frequency = 1442; + id_tag = "starboard_prop_sensor"; + output = 31 + }, /turf/simulated/floor/reinforced, /area/engineering/atmos/propulsion/starboard) "eDV" = ( @@ -5359,6 +5366,19 @@ /obj/machinery/door/airlock/maintenance, /turf/simulated/floor/tiled, /area/maintenance/wing/port/deck1) +"eTJ" = ( +/obj/structure/lattice/catwalk/indoor/grate, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/purple, +/obj/structure/bed/stool/chair/office/dark{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/engineering/atmos/propulsion/starboard) "eTW" = ( /obj/structure/railing/mapped{ dir = 1 @@ -6082,7 +6102,7 @@ dir = 5 }, /obj/machinery/atmospherics/portables_connector, -/obj/machinery/portable_atmospherics/canister/phoron, +/obj/machinery/portable_atmospherics/canister/oxygen, /turf/simulated/floor/tiled/dark, /area/engineering/atmos/propulsion/starboard) "fwA" = ( @@ -8331,7 +8351,10 @@ /area/rnd/xenoarch_atrium) "hqH" = ( /obj/machinery/atmospherics/unary/outlet_injector{ - dir = 4 + dir = 4; + frequency = 1442; + id = "starboard_prop_in"; + tag = null }, /turf/simulated/floor/reinforced, /area/engineering/atmos/propulsion/starboard) @@ -9106,7 +9129,7 @@ dir = 4; layer = 2.8 }, -/obj/machinery/portable_atmospherics/canister/phoron, +/obj/machinery/portable_atmospherics/canister/oxygen, /turf/simulated/floor/tiled/dark, /area/engineering/atmos/propulsion) "ieu" = ( @@ -9834,16 +9857,18 @@ /turf/simulated/floor/tiled, /area/quartermaster/storage) "iNX" = ( -/obj/structure/table/steel, /obj/effect/floor_decal/industrial/warning{ dir = 4 }, /obj/machinery/light{ dir = 1 }, -/obj/random/tech_supply, -/obj/random/tech_supply, -/obj/random/tech_supply, +/obj/machinery/computer/general_air_control/reaction_chamber{ + igniter_id = "port_prop_igni"; + input_tag = "port_prop_in"; + output_tag = "port_prop_out"; + sensors = list("port_prop_sensor" = "Port Reaction Chamber") + }, /turf/simulated/floor/tiled/dark, /area/engineering/atmos/propulsion) "iOn" = ( @@ -12679,7 +12704,11 @@ /area/engineering/gravity_gen) "lBi" = ( /obj/machinery/atmospherics/pipe/manifold/visible/black, -/obj/machinery/air_sensor, +/obj/machinery/air_sensor{ + frequency = 1442; + id_tag = "port_prop_sensor"; + output = 31 + }, /turf/simulated/floor/reinforced/airless, /area/engineering/atmos/propulsion) "lBp" = ( @@ -12765,14 +12794,19 @@ /turf/simulated/floor/plating, /area/maintenance/cargo) "lFS" = ( -/obj/structure/table/steel, /obj/effect/floor_decal/industrial/warning{ dir = 8 }, /obj/machinery/light{ dir = 4 }, -/obj/random/tech_supply, +/obj/machinery/computer/general_air_control/reaction_chamber{ + dir = 8; + igniter_id = "starboard_prop_igni"; + input_tag = "starboard_prop_in"; + output_tag = "starboard_prop_out"; + sensors = list("starboard_prop_sensor" = "Starboard Reaction Chamber") + }, /turf/simulated/floor/tiled/dark, /area/engineering/atmos/propulsion/starboard) "lGb" = ( @@ -12945,12 +12979,6 @@ /obj/effect/floor_decal/industrial/warning{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, /turf/simulated/floor/tiled/dark, /area/engineering/atmos/propulsion/starboard) "lOn" = ( @@ -13741,10 +13769,6 @@ /obj/effect/floor_decal/industrial/warning{ dir = 8 }, -/obj/machinery/button/ignition{ - id = "starboardpropulsionignite"; - pixel_y = -32 - }, /turf/simulated/floor/tiled/dark, /area/engineering/atmos/propulsion/starboard) "mxs" = ( @@ -18799,17 +18823,13 @@ /area/maintenance/substation/hangar) "rhI" = ( /obj/machinery/atmospherics/unary/outlet_injector{ - dir = 8 + dir = 8; + frequency = 1442; + id = "port_prop_in"; + tag = "port_prop_in" }, /turf/simulated/floor/reinforced/airless, /area/engineering/atmos/propulsion) -"rhY" = ( -/obj/machinery/button/ignition{ - id = "portpropulsionignite"; - pixel_x = 32 - }, -/turf/simulated/floor/tiled/dark, -/area/engineering/atmos/propulsion) "riF" = ( /obj/structure/window/reinforced{ dir = 8 @@ -22901,7 +22921,10 @@ /turf/simulated/floor/tiled, /area/hangar/intrepid) "uZU" = ( -/obj/machinery/atmospherics/unary/vent_pump/siphon/on/atmos, +/obj/machinery/atmospherics/unary/vent_pump/siphon/on/atmos{ + frequency = 1442; + id_tag = "starboard_prop_out" + }, /turf/simulated/floor/reinforced, /area/engineering/atmos/propulsion/starboard) "vai" = ( @@ -24456,17 +24479,8 @@ /turf/simulated/wall, /area/hangar/intrepid) "wuW" = ( -/obj/machinery/atmospherics/pipe/simple/visible/yellow{ - dir = 4 - }, /obj/machinery/meter, /obj/structure/lattice/catwalk/indoor/grate, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/simple/hidden/purple{ dir = 4 }, @@ -43419,7 +43433,7 @@ mqI lrd awJ azl -gFE +eTJ gFE boB rNz @@ -51501,7 +51515,7 @@ uVL xtY tkS fCd -rhY +hRF uVL cxA cxA diff --git a/vueui/src/components/view/console/atmocontrol/main.vue b/vueui/src/components/view/console/atmocontrol/main.vue index 8450c877181..9e206946222 100644 --- a/vueui/src/components/view/console/atmocontrol/main.vue +++ b/vueui/src/components/view/console/atmocontrol/main.vue @@ -5,13 +5,13 @@
{{ sdata.name }}
{{ sdata.pressure }} kPa - {{ sdata.temperature }} K + {{ sdata.temperature }}% K - {{ sdata.oxygen }} O2 - {{ sdata.nitrogen }} N - {{ sdata.carbon_dioxide }} CO2 - {{ sdata.phoron }} PH - {{ sdata.hydrogen }} H2 + {{ sdata.oxygen }}% O2 + {{ sdata.nitrogen }}% N + {{ sdata.carbon_dioxide }}% CO2 + {{ sdata.phoron }}% PH + {{ sdata.hydrogen }}% H2
diff --git a/vueui/src/components/view/console/atmocontrol/reaction.vue b/vueui/src/components/view/console/atmocontrol/reaction.vue new file mode 100644 index 00000000000..93b8ba713a7 --- /dev/null +++ b/vueui/src/components/view/console/atmocontrol/reaction.vue @@ -0,0 +1,81 @@ + + + + + + \ No newline at end of file