mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-24 12:37:26 +01:00
[TGUI] TEG (#15367)
* TGUI TEG * rm Co-authored-by: Kyep <Kyep@users.noreply.github.com>
This commit is contained in:
@@ -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()
|
||||
..()
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user