[TGUI] TEG (#15367)

* TGUI TEG

* rm

Co-authored-by: Kyep <Kyep@users.noreply.github.com>
This commit is contained in:
Kyep
2021-02-02 10:04:39 +00:00
committed by GitHub
co-authored by Kyep
parent 31fe5bae81
commit b7fe4241e3
3 changed files with 104 additions and 45 deletions
+33 -44
View File
@@ -150,13 +150,13 @@
/obj/machinery/power/generator/attack_ghost(mob/user)
if(stat & (NOPOWER|BROKEN))
return
interact(user)
ui_interact(user)
/obj/machinery/power/generator/attack_hand(mob/user)
if(..())
user << browse(null, "window=teg")
return
interact(user)
ui_interact(user)
/obj/machinery/power/generator/multitool_act(mob/user, obj/item/I)
. = TRUE
@@ -190,60 +190,49 @@
connect()
to_chat(user, "<span class='notice'>You [anchored ? "secure" : "unsecure"] the bolts holding [src] to the floor.</span>")
/obj/machinery/power/generator/proc/get_menu(include_link = 1)
var/t = ""
/obj/machinery/power/generator/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = TRUE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
ui = new(user, src, ui_key, "TEG", name, 500, 400, master_ui, state)
ui.open()
/obj/machinery/power/generator/ui_data(mob/user)
var/list/data = list()
if(!powernet)
t += "<span class='bad'>Unable to connect to the power network!</span>"
t += "<BR><A href='?src=[UID()];check=1'>Retry</A>"
data["error"] = "Unable to connect to the power network!"
else if(cold_circ && hot_circ)
var/datum/gas_mixture/cold_circ_air1 = cold_circ.get_outlet_air()
var/datum/gas_mixture/cold_circ_air2 = cold_circ.get_inlet_air()
var/datum/gas_mixture/hot_circ_air1 = hot_circ.get_outlet_air()
var/datum/gas_mixture/hot_circ_air2 = hot_circ.get_inlet_air()
t += "<div class='statusDisplay'>"
t += "Output: [round(lastgen)] W"
t += "<BR>"
t += "<B><font color='blue'>Cold loop</font></B><BR>"
t += "Temperature Inlet: [round(cold_circ_air2.temperature, 0.1)] K / Outlet: [round(cold_circ_air1.temperature, 0.1)] K<BR>"
t += "Pressure Inlet: [round(cold_circ_air2.return_pressure(), 0.1)] kPa / Outlet: [round(cold_circ_air1.return_pressure(), 0.1)] kPa<BR>"
t += "<B><font color='red'>Hot loop</font></B><BR>"
t += "Temperature Inlet: [round(hot_circ_air2.temperature, 0.1)] K / Outlet: [round(hot_circ_air1.temperature, 0.1)] K<BR>"
t += "Pressure Inlet: [round(hot_circ_air2.return_pressure(), 0.1)] kPa / Outlet: [round(hot_circ_air1.return_pressure(), 0.1)] kPa<BR>"
t += "</div>"
data["cold_dir"] = dir2text(cold_dir)
data["hot_dir"] = dir2text(hot_dir)
data["output_power"] = round(lastgen)
// Temps are K, pressures are kPa, power is W
data["cold_inlet_temp"] = round(cold_circ_air2.temperature, 0.1)
data["hot_inlet_temp"] = round(hot_circ_air2.temperature, 0.1)
data["cold_outlet_temp"] = round(cold_circ_air1.temperature, 0.1)
data["hot_outlet_temp"] = round(hot_circ_air1.temperature, 0.1)
data["cold_delta_temp"] = data["cold_outlet_temp"] - data["cold_inlet_temp"]
data["cold_inlet_pressure"] = round(cold_circ_air2.return_pressure(), 0.1)
data["hot_inlet_pressure"] = round(hot_circ_air2.return_pressure(), 0.1)
data["cold_outlet_pressure"] = round(cold_circ_air1.return_pressure(), 0.1)
data["hot_outlet_pressure"] = round(hot_circ_air1.return_pressure(), 0.1)
data["warning_switched"] = (data["cold_inlet_temp"] > data["hot_inlet_temp"])
data["warning_cold_pressure"] = (data["cold_inlet_pressure"] < 1000)
data["warning_hot_pressure"] = (data["hot_inlet_pressure"] < 1000)
else
t += "<span class='bad'>Unable to locate all parts!</span>"
t += "<BR><A href='?src=[UID()];check=1'>Retry</A>"
if(include_link)
t += "<BR><A href='?src=[UID()];close=1'>Close</A>"
data["error"] = "Unable to locate all parts!"
return data
return t
/obj/machinery/power/generator/interact(mob/user)
user.set_machine(src)
var/datum/browser/popup = new(user, "teg", "Thermo-Electric Generator", 460, 300)
popup.set_content(get_menu())
popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state))
popup.open()
return 1
/obj/machinery/power/generator/Topic(href, href_list)
/obj/machinery/power/generator/ui_act(action, params)
if(..())
return 0
if( href_list["close"] )
usr << browse(null, "window=teg")
usr.unset_machine()
return 0
if( href_list["check"] )
return
if(action == "check")
if(!powernet || !cold_circ || !hot_circ)
connect()
return 1
return TRUE
/obj/machinery/power/generator/power_change()
..()
+70
View File
@@ -0,0 +1,70 @@
import { useBackend } from "../backend";
import { Button, LabeledList, Section, Box } from "../components";
import { Window } from "../layouts";
const addcommas = x => {
return x.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,');
};
export const TEG = (props, context) => {
const { act, data } = useBackend(context);
if (data.error) {
return (
<Window>
<Window.Content>
<Section title="Error">
{data.error}
<Button
icon="circle"
content="Recheck"
onClick={() => act("check")} />
</Section>
</Window.Content>
</Window>
);
}
return (
<Window>
<Window.Content>
<Section title={"Cold Loop (" + data.cold_dir + ")"}>
<LabeledList>
<LabeledList.Item label="Cold Inlet">
{addcommas(data.cold_inlet_temp)} K, {addcommas(data.cold_inlet_pressure)} kPa
</LabeledList.Item>
<LabeledList.Item label="Cold Outlet">
{addcommas(data.cold_outlet_temp)} K, {addcommas(data.cold_outlet_pressure)} kPa
</LabeledList.Item>
</LabeledList>
</Section>
<Section title={"Hot Loop (" + data.hot_dir + ")"}>
<LabeledList>
<LabeledList.Item label="Hot Inlet">
{addcommas(data.hot_inlet_temp)} K, {addcommas(data.hot_inlet_pressure)} kPa
</LabeledList.Item>
<LabeledList.Item label="Hot Outlet">
{addcommas(data.hot_outlet_temp)} K, {addcommas(data.hot_outlet_pressure)} kPa
</LabeledList.Item>
</LabeledList>
</Section>
<Section title="Power Output">
{addcommas(data.output_power)} W
{!!data.warning_switched && (
<Box color="red">
Warning: Cold inlet temperature exceeds hot inlet temperature.
</Box>
)}
{!!data.warning_cold_pressure && (
<Box color="red">
Warning: Cold circulator inlet pressure is under 1,000 kPa.
</Box>
)}
{!!data.warning_hot_pressure && (
<Box color="red">
Warning: Hot circulator inlet pressure is under 1,000 kPa.
</Box>
)}
</Section>
</Window.Content>
</Window>
);
};
File diff suppressed because one or more lines are too long