Refactor NanoUI API

Also update NanoUI-using code to the new API.
This commit is contained in:
Bjorn Neergaard
2015-11-26 00:02:20 -05:00
parent 2156d594eb
commit 1a44e3d851
21 changed files with 413 additions and 523 deletions
@@ -93,16 +93,20 @@ Passive gate is similar to the regular pump except:
return 1
/obj/machinery/atmospherics/components/binary/passive_gate/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
if(stat & (BROKEN|NOPOWER))
return
/obj/machinery/atmospherics/components/binary/passive_gate/interact(mob/user)
if(stat & (BROKEN|NOPOWER)) return
ui_interact(user)
ui = SSnano.push_open_or_new_ui(user, src, ui_key, ui, "atmos_gas_pump.tmpl", name, 400, 120, 0)
/obj/machinery/atmospherics/components/binary/passive_gate/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null, force_open = 1)
SSnano.try_update_ui(user, src, ui_key, ui, force_open = force_open)
if (!ui)
ui = new(user, src, ui_key, "atmos_gas_pump.tmpl", name, 400, 120)
ui.open()
/obj/machinery/atmospherics/components/binary/passive_gate/get_ui_data()
var/data = list()
data["on"] = on
data["pressure_set"] = round(target_pressure*100) //Nano UI can't handle rounded non-integers, apparently.
data["set_pressure"] = round(target_pressure*100)
data["max_pressure"] = MAX_OUTPUT_PRESSURE
return data
@@ -142,18 +146,16 @@ Passive gate is similar to the regular pump except:
/obj/machinery/atmospherics/components/binary/passive_gate/attack_hand(mob/user)
if(..())
return
src.add_fingerprint(usr)
if(!src.allowed(user))
user << "<span class='danger'>Access denied.</span>"
return
usr.set_machine(src)
ui_interact(user)
return
if(..() || !user) return
add_fingerprint(usr)
interact(user)
/obj/machinery/atmospherics/components/binary/passive_gate/Topic(href,href_list)
/obj/machinery/atmospherics/components/binary/passive_gate/Topic(href, href_list)
if(..()) return
if(!src.allowed(usr))
usr << "<span class='danger'>Access denied.</span>"
return
if(href_list["power"])
on = !on
investigate_log("was turned [on ? "on" : "off"] by [key_name(usr)]", "atmos")
@@ -164,17 +166,13 @@ Passive gate is similar to the regular pump except:
if ("set")
target_pressure = max(0, min(MAX_OUTPUT_PRESSURE, safe_input("Pressure control", "Enter new output pressure (0-[MAX_OUTPUT_PRESSURE] kPa)", target_pressure)))
investigate_log("was set to [target_pressure] kPa by [key_name(usr)]", "atmos")
usr.set_machine(src)
src.update_icon()
src.updateUsrDialog()
return
update_icon()
/obj/machinery/atmospherics/components/binary/passive_gate/power_change()
..()
update_icon()
/obj/machinery/atmospherics/components/binary/passive_gate/attackby(obj/item/weapon/W, mob/user, params)
if (!istype(W, /obj/item/weapon/wrench))
return ..()
@@ -98,16 +98,23 @@ Thus, the two variables affect pump operation are set in New():
return 1
/obj/machinery/atmospherics/components/binary/pump/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null)
if(stat & (BROKEN|NOPOWER))
/obj/machinery/atmospherics/components/binary/pump/interact(mob/user)
if(stat & (BROKEN|NOPOWER)) return
if(!src.allowed(usr))
usr << "<span class='danger'>Access denied.</span>"
return
ui_interact(user)
ui = SSnano.push_open_or_new_ui(user, src, ui_key, ui, "atmos_gas_pump.tmpl", name, 400, 120, 0)
/obj/machinery/atmospherics/components/binary/pump/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null, force_open = 1)
SSnano.try_update_ui(user, src, ui_key, ui, force_open = force_open)
if (!ui)
ui = new(user, src, ui_key, "atmos_gas_pump.tmpl", name, 400, 120)
ui.open()
/obj/machinery/atmospherics/components/binary/pump/get_ui_data()
var/data = list()
data["on"] = on
data["pressure_set"] = round(target_pressure*100) //Nano UI can't handle rounded non-integers, apparently.
data["set_pressure"] = round(target_pressure*100)
data["max_pressure"] = MAX_OUTPUT_PRESSURE
return data
@@ -146,18 +153,12 @@ Thus, the two variables affect pump operation are set in New():
/obj/machinery/atmospherics/components/binary/pump/attack_hand(mob/user)
if(..())
return
src.add_fingerprint(usr)
if(!src.allowed(user))
user << "<span class='danger'>Access denied.</span>"
return
usr.set_machine(src)
ui_interact(user)
return
if(..() | !user) return
interact(user)
/obj/machinery/atmospherics/components/binary/pump/Topic(href,href_list)
if(..()) return
if(href_list["power"])
on = !on
investigate_log("was turned [on ? "on" : "off"] by [key_name(usr)]", "atmos")
@@ -168,10 +169,9 @@ Thus, the two variables affect pump operation are set in New():
if ("set")
target_pressure = max(0, min(MAX_OUTPUT_PRESSURE, safe_input("Pressure control", "Enter new output pressure (0-[MAX_OUTPUT_PRESSURE] kPa)", target_pressure)))
investigate_log("was set to [target_pressure] kPa by [key_name(usr)]", "atmos")
usr.set_machine(src)
src.update_icon()
src.updateUsrDialog()
return
add_fingerprint(usr)
update_icon()
/obj/machinery/atmospherics/components/binary/pump/power_change()
..()
@@ -94,16 +94,23 @@ Thus, the two variables affect pump operation are set in New():
return 1
/obj/machinery/atmospherics/components/binary/volume_pump/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null)
if(stat & (BROKEN|NOPOWER))
/obj/machinery/atmospherics/components/binary/volume_pump/interact(mob/user)
if(stat & (BROKEN|NOPOWER)) return
if(!src.allowed(usr))
usr << "<span class='danger'>Access denied.</span>"
return
ui_interact(user)
ui = SSnano.push_open_or_new_ui(user, src, ui_key, ui, "atmos_gas_pump.tmpl", name, 400, 120, 0)
/obj/machinery/atmospherics/components/binary/volume_pump/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null, force_open = 1)
SSnano.try_update_ui(user, src, ui_key, ui, force_open = force_open)
if (!ui)
ui = new(user, src, ui_key, "atmos_gas_pump.tmpl", name, 400, 120)
ui.open()
/obj/machinery/atmospherics/components/binary/volume_pump/get_ui_data()
var/data = list()
data["on"] = on
data["transfer_rate"] = round(transfer_rate*100) //Nano UI can't handle rounded non-integers, apparently.
data["transfer_rate"] = round(transfer_rate*100)
data["max_rate"] = MAX_TRANSFER_RATE
return data
@@ -142,18 +149,15 @@ Thus, the two variables affect pump operation are set in New():
/obj/machinery/atmospherics/components/binary/volume_pump/attack_hand(mob/user)
if(..())
return
src.add_fingerprint(usr)
if(!src.allowed(user))
user << "<span class='danger'>Access denied.</span>"
return
usr.set_machine(src)
ui_interact(user)
return
if(..() | !user) return
interact(user)
/obj/machinery/atmospherics/components/binary/volume_pump/Topic(href,href_list)
if(..()) return
if(!src.allowed(usr))
usr << "<span class='danger'>Access denied.</span>"
return
if(href_list["power"])
on = !on
investigate_log("was turned [on ? "on" : "off"] by [key_name(usr)]", "atmos")
@@ -164,17 +168,14 @@ Thus, the two variables affect pump operation are set in New():
if ("set")
transfer_rate = max(0, min(MAX_TRANSFER_RATE, safe_input("Pressure control", "Enter new transfer rate (0-[MAX_TRANSFER_RATE] L/s)", transfer_rate)))
investigate_log("was set to [transfer_rate] L/s by [key_name(usr)]", "atmos")
usr.set_machine(src)
src.update_icon()
src.updateUsrDialog()
return
add_fingerprint(usr)
update_icon()
/obj/machinery/atmospherics/components/binary/volume_pump/power_change()
..()
update_icon()
/obj/machinery/atmospherics/components/binary/volume_pump/attackby(obj/item/weapon/W, mob/user, params)
if (!istype(W, /obj/item/weapon/wrench))
return ..()