diff --git a/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm b/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm
index 993ba4d802f..a9071e5ba13 100644
--- a/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm
+++ b/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm
@@ -88,20 +88,6 @@
return 1
-/obj/machinery/atmospherics/binary/passive_gate/interact(mob/user)
- user.set_machine(src)
- add_fingerprint(user)
-
- var/dat = {"Power: [on?"On":"Off"]
- Desirable output pressure:
- [round(target_pressure,0.1)]kPa | Change
- "}
-
- var/datum/browser/popup = new(user, "atmo_pump", name, 400, 400)
- popup.set_content(dat)
- popup.open(0)
- onclose(user, "atmo_pump")
-
/obj/machinery/atmospherics/binary/passive_gate/receive_signal(datum/signal/signal)
if(!signal.data["tag"] || (signal.data["tag"] != id) || (signal.data["sigtype"]!="command"))
return 0
@@ -142,27 +128,54 @@
to_chat(user, "Access denied.")
return
- interact(user)
-
+ add_fingerprint(user)
+ ui_interact(user)
+
/obj/machinery/atmospherics/binary/passive_gate/attack_ghost(mob/user)
- interact(user)
+ ui_interact(user)
+
+/obj/machinery/atmospherics/binary/passive_gate/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null, force_open = 1, var/master_ui = null, var/datum/topic_state/state = default_state)
+ user.set_machine(src)
+ ui = nanomanager.try_update_ui(user, src, ui_key, ui, force_open)
+ if(!ui)
+ ui = new(user, src, ui_key, "atmos_pump.tmpl", name, 385, 115, state = state)
+ ui.open()
+
+/obj/machinery/atmospherics/binary/passive_gate/ui_data(mob/user)
+ var/list/data = list()
+ data["on"] = on
+ data["pressure"] = round(target_pressure)
+ data["max_pressure"] = round(MAX_OUTPUT_PRESSURE)
+ return data
/obj/machinery/atmospherics/binary/passive_gate/Topic(href,href_list)
- if(..())
+ if(..())
return 1
+
if(href_list["power"])
on = !on
investigate_log("was turned [on ? "on" : "off"] by [key_name(usr)]", "atmos")
- if(href_list["set_press"])
- var/new_pressure = input(usr,"Enter new output pressure (0-4500kPa)","Pressure control",target_pressure) as num
- target_pressure = max(0, min(4500, new_pressure))
- investigate_log("was set to [target_pressure] kPa by [key_name(usr)]", "atmos")
- usr.set_machine(src)
- update_icon()
- updateUsrDialog()
- return
+ . = TRUE
+ if(href_list["pressure"])
+ var/pressure = href_list["pressure"]
+ if(pressure == "max")
+ pressure = MAX_OUTPUT_PRESSURE
+ . = TRUE
+ else if(pressure == "input")
+ pressure = input("New output pressure (0-[MAX_OUTPUT_PRESSURE] kPa):", name, target_pressure) as num|null
+ if(!isnull(pressure))
+ . = TRUE
+ else if(text2num(pressure) != null)
+ pressure = text2num(pressure)
+ . = TRUE
+ if(.)
+ target_pressure = Clamp(pressure, 0, MAX_OUTPUT_PRESSURE)
+ investigate_log("was set to [target_pressure] kPa by [key_name(usr)]", "atmos")
-/obj/machinery/atmospherics/binary/passive_gate/attackby(var/obj/item/weapon/W, var/mob/user, params)
+ update_icon()
+ nanomanager.update_uis(src)
+
+/obj/machinery/atmospherics/binary/passive_gate/attackby(obj/item/weapon/W, mob/user, params)
if(!istype(W, /obj/item/weapon/wrench))
return ..()
if(on)
diff --git a/code/ATMOSPHERICS/components/binary_devices/pump.dm b/code/ATMOSPHERICS/components/binary_devices/pump.dm
index 824d3b1c5f0..908a5318dda 100644
--- a/code/ATMOSPHERICS/components/binary_devices/pump.dm
+++ b/code/ATMOSPHERICS/components/binary_devices/pump.dm
@@ -103,20 +103,6 @@ Thus, the two variables affect pump operation are set in New():
radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
return 1
-/obj/machinery/atmospherics/binary/pump/interact(mob/user)
- user.set_machine(src)
- add_fingerprint(user)
-
- var/dat = {"Power: [on?"On":"Off"]
- Desirable output pressure:
- [round(target_pressure,0.1)]kPa | Change
- "}
-
- var/datum/browser/popup = new(user, "atmo_pump", name, 400, 400)
- popup.set_content(dat)
- popup.open(0)
- onclose(user, "atmo_pump")
-
/obj/machinery/atmospherics/binary/pump/initialize()
..()
if(frequency)
@@ -162,24 +148,52 @@ Thus, the two variables affect pump operation are set in New():
to_chat(user, "Access denied.")
return
- interact(user)
-
+ add_fingerprint(user)
+ ui_interact(user)
+
/obj/machinery/atmospherics/binary/pump/attack_ghost(mob/user)
- interact(user)
+ ui_interact(user)
+
+/obj/machinery/atmospherics/binary/pump/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null, force_open = 1, var/master_ui = null, var/datum/topic_state/state = default_state)
+ user.set_machine(src)
+ ui = nanomanager.try_update_ui(user, src, ui_key, ui, force_open)
+ if(!ui)
+ ui = new(user, src, ui_key, "atmos_pump.tmpl", name, 385, 115, state = state)
+ ui.open()
+
+/obj/machinery/atmospherics/binary/pump/ui_data(mob/user)
+ var/list/data = list()
+ data["on"] = on
+ data["pressure"] = round(target_pressure)
+ data["max_pressure"] = round(MAX_OUTPUT_PRESSURE)
+ return data
/obj/machinery/atmospherics/binary/pump/Topic(href,href_list)
if(..())
return 1
+
if(href_list["power"])
on = !on
investigate_log("was turned [on ? "on" : "off"] by [key_name(usr)]", "atmos")
- if(href_list["set_press"])
- var/new_pressure = input(usr,"Enter new output pressure (0-4500kPa)","Pressure control",target_pressure) as num
- target_pressure = max(0, min(4500, new_pressure))
- investigate_log("was set to [target_pressure] kPa by [key_name(usr)]", "atmos")
- usr.set_machine(src)
+ . = TRUE
+ if(href_list["pressure"])
+ var/pressure = href_list["pressure"]
+ if(pressure == "max")
+ pressure = MAX_OUTPUT_PRESSURE
+ . = TRUE
+ else if(pressure == "input")
+ pressure = input("New output pressure (0-[MAX_OUTPUT_PRESSURE] kPa):", name, target_pressure) as num|null
+ if(!isnull(pressure))
+ . = TRUE
+ else if(text2num(pressure) != null)
+ pressure = text2num(pressure)
+ . = TRUE
+ if(.)
+ target_pressure = Clamp(pressure, 0, MAX_OUTPUT_PRESSURE)
+ investigate_log("was set to [target_pressure] kPa by [key_name(usr)]", "atmos")
+
update_icon()
- updateUsrDialog()
+ nanomanager.update_uis(src)
/obj/machinery/atmospherics/binary/pump/power_change()
var/old_stat = stat
@@ -187,7 +201,7 @@ Thus, the two variables affect pump operation are set in New():
if(old_stat != stat)
update_icon()
-/obj/machinery/atmospherics/binary/pump/attackby(var/obj/item/weapon/W, var/mob/user, params)
+/obj/machinery/atmospherics/binary/pump/attackby(obj/item/weapon/W, mob/user, params)
if(!istype(W, /obj/item/weapon/wrench))
return ..()
if(!(stat & NOPOWER) && on)
diff --git a/code/ATMOSPHERICS/components/binary_devices/volume_pump.dm b/code/ATMOSPHERICS/components/binary_devices/volume_pump.dm
index 99465e15d88..0ec613cb049 100644
--- a/code/ATMOSPHERICS/components/binary_devices/volume_pump.dm
+++ b/code/ATMOSPHERICS/components/binary_devices/volume_pump.dm
@@ -99,21 +99,6 @@ Thus, the two variables affect pump operation are set in New():
return 1
-/obj/machinery/atmospherics/binary/volume_pump/interact(mob/user)
- user.set_machine(src)
- add_fingerprint(user)
-
- var/dat = {"Power: [on?"On":"Off"]
- Desirable output flow:
- [round(transfer_rate,1)]l/s | Change
- "}
-
- var/datum/browser/popup = new(user, "atmo_pump", name, 400, 400)
- popup.set_content(dat)
- popup.open(0)
- onclose(user, "atmo_pump")
-
-
/obj/machinery/atmospherics/binary/volume_pump/receive_signal(datum/signal/signal)
if(!signal.data["tag"] || (signal.data["tag"] != id) || (signal.data["sigtype"]!="command"))
return 0
@@ -153,24 +138,52 @@ Thus, the two variables affect pump operation are set in New():
to_chat(user, "Access denied.")
return
- interact(user)
-
+ add_fingerprint(user)
+ ui_interact(user)
+
/obj/machinery/atmospherics/binary/volume_pump/attack_ghost(mob/user)
- interact(user)
+ ui_interact(user)
+
+/obj/machinery/atmospherics/binary/volume_pump/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null, force_open = 1, var/master_ui = null, var/datum/topic_state/state = default_state)
+ user.set_machine(src)
+ ui = nanomanager.try_update_ui(user, src, ui_key, ui, force_open)
+ if(!ui)
+ ui = new(user, src, ui_key, "atmos_pump.tmpl", name, 310, 115, state = state)
+ ui.open()
+
+/obj/machinery/atmospherics/binary/volume_pump/ui_data(mob/user)
+ var/list/data = list()
+ data["on"] = on
+ data["rate"] = round(transfer_rate)
+ data["max_rate"] = round(MAX_TRANSFER_RATE)
+ return data
/obj/machinery/atmospherics/binary/volume_pump/Topic(href,href_list)
if(..())
return 1
+
if(href_list["power"])
on = !on
investigate_log("was turned [on ? "on" : "off"] by [key_name(usr)]", "atmos")
- if(href_list["set_transfer_rate"])
- var/new_transfer_rate = input(usr,"Enter new output volume (0-200l/s)","Flow control",transfer_rate) as num
- transfer_rate = max(0, min(200, new_transfer_rate))
- investigate_log("was set to [transfer_rate] L/s by [key_name(usr)]", "atmos")
- usr.set_machine(src)
+ . = TRUE
+ if(href_list["rate"])
+ var/rate = href_list["rate"]
+ if(rate == "max")
+ rate = MAX_TRANSFER_RATE
+ . = TRUE
+ else if(rate == "input")
+ rate = input("New transfer rate (0-[MAX_TRANSFER_RATE] L/s):", name, transfer_rate) as num|null
+ if(!isnull(rate))
+ . = TRUE
+ else if(text2num(rate) != null)
+ rate = text2num(rate)
+ . = TRUE
+ if(.)
+ transfer_rate = Clamp(rate, 0, MAX_TRANSFER_RATE)
+ investigate_log("was set to [transfer_rate] L/s by [key_name(usr)]", "atmos")
+
update_icon()
- updateUsrDialog()
+ nanomanager.update_uis(src)
/obj/machinery/atmospherics/binary/volume_pump/power_change()
var/old_stat = stat
@@ -178,7 +191,7 @@ Thus, the two variables affect pump operation are set in New():
if(old_stat != stat)
update_icon()
-/obj/machinery/atmospherics/binary/volume_pump/attackby(var/obj/item/weapon/W, var/mob/user, params)
+/obj/machinery/atmospherics/binary/volume_pump/attackby(obj/item/weapon/W, mob/user, params)
if(!istype(W, /obj/item/weapon/wrench))
return ..()
if(!(stat & NOPOWER) && on)
diff --git a/code/ATMOSPHERICS/components/trinary_devices/filter.dm b/code/ATMOSPHERICS/components/trinary_devices/filter.dm
index b8ecae86b85..109c3a2fa04 100755
--- a/code/ATMOSPHERICS/components/trinary_devices/filter.dm
+++ b/code/ATMOSPHERICS/components/trinary_devices/filter.dm
@@ -6,8 +6,6 @@
name = "gas filter"
- var/temp = null // -- TLE
-
var/target_pressure = ONE_ATMOSPHERE
var/filter_type = 0
@@ -146,9 +144,9 @@ Filter types:
/obj/machinery/atmospherics/trinary/filter/initialize()
set_frequency(frequency)
..()
-
-/obj/machinery/atmospherics/trinary/filter/attack_ghost(mob/user)
- interact(user)
+
+/obj/machinery/atmospherics/trinary/filter/attack_ghost(mob/user)
+ ui_interact(user)
/obj/machinery/atmospherics/trinary/filter/attack_hand(mob/user)
if(..())
@@ -157,63 +155,52 @@ Filter types:
if(!allowed(user))
to_chat(user, "Access denied.")
return
-
- interact(user)
-
-/obj/machinery/atmospherics/trinary/filter/interact(mob/user)
- user.set_machine(src)
+
add_fingerprint(user)
-
- var/dat
- var/current_filter_type
- switch(filter_type)
- if(0)
- current_filter_type = "Toxins"
- if(1)
- current_filter_type = "Oxygen"
- if(2)
- current_filter_type = "Nitrogen"
- if(3)
- current_filter_type = "Carbon Dioxide"
- if(4)
- current_filter_type = "Nitrous Oxide"
- if(-1)
- current_filter_type = "Nothing"
- else
- current_filter_type = "ERROR - Report this bug to the admin, please!"
+ ui_interact(user)
- dat += {"
- Power: [on?"On":"Off"]
- Filtering: [current_filter_type]