what if atmos relief works? and all the other ui's gets updated

This commit is contained in:
Letter N
2020-08-04 12:54:55 +08:00
parent 454baea55f
commit 7c7d635193
14 changed files with 194 additions and 102 deletions
@@ -17,11 +17,10 @@
var/notice = ""
var/universal_translate = FALSE // set to TRUE(1) if it can translate nonhuman speech
/obj/machinery/computer/telecomms/server/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
/obj/machinery/computer/telecomms/server/ui_interact(mob/user, datum/tgui/ui)
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, ui_key, "TelecommsLogBrowser", "Telecomms Server Monitor", 575, 400, master_ui, state)
ui = new(user, src, "TelecommsLogBrowser", "Telecomms Server Monitor")
ui.open()
/obj/machinery/computer/telecomms/server/ui_data(mob/user)
@@ -36,12 +36,11 @@
light_color = LIGHT_COLOR_GREEN
/obj/machinery/computer/message_monitor/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE,\
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
/obj/machinery/computer/message_monitor/ui_interact(mob/user, datum/tgui/ui)
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, ui_key, "TelecommsPDALog", name, 727, 510, master_ui, state)
ui = new(user, src, "TelecommsPDALog", name)
ui.open()
/obj/machinery/computer/message_monitor/ui_static_data(mob/user)
@@ -17,12 +17,11 @@
circuit = /obj/item/circuitboard/computer/comm_monitor
/obj/machinery/computer/telecomms/monitor/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE,\
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
/obj/machinery/computer/telecomms/monitor/ui_interact(mob/user, datum/tgui/ui)
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, ui_key, "TelecommsMonitor", name, 575, 400, master_ui, state)
ui = new(user, src, "TelecommsMonitor", name)
ui.open()
/obj/machinery/computer/telecomms/monitor/ui_data(mob/user)
@@ -27,16 +27,15 @@
else
return ..()
/obj/machinery/telecomms/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE,\
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
/obj/machinery/telecomms/ui_interact(mob/user, datum/tgui/ui)
if(!canInteract(user))
if(ui)
ui.close() //haha no.
return
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, ui_key, "TelecommsInteraction", "[name] Access", 520, 500, master_ui, state)
ui = new(user, src, "TelecommsInteraction", "[name] Access")
ui.open()
/obj/machinery/telecomms/ui_data(mob/user)
@@ -40,7 +40,7 @@
one_use = TRUE
/obj/item/borg/upgrade/rename/attack_self(mob/user)
heldname = sanitize_name(stripped_input(user, "Enter new robot name", "Cyborg Reclassification", heldname, MAX_NAME_LEN), allow_numbers = TRUE)
heldname = sanitize_name(stripped_input(user, "Enter new robot name", "Cyborg Reclassification", heldname, MAX_NAME_LEN))
/obj/item/borg/upgrade/rename/action(mob/living/silicon/robot/R)
. = ..()
@@ -25,9 +25,6 @@
/datum/clockwork_scripture/ranged_ability/kindle, /datum/clockwork_scripture/ranged_ability/hateful_manacles) //quickbound scripture, accessed by index
var/maximum_quickbound = 5 //how many quickbound scriptures we can have
var/ui_x = 800
var/ui_z = 420
var/obj/structure/destructible/clockwork/trap/linking //If we're linking traps together, which ones we're doing
/obj/item/clockwork/slab/internal //an internal motor for mobs running scripture
@@ -198,12 +195,6 @@
ui_interact(user)
return TRUE
/obj/item/clockwork/slab/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.inventory_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
ui = new(user, src, ui_key, "ClockworkSlab", name, ui_x, ui_z, master_ui, state)
ui.open()
/obj/item/clockwork/slab/proc/recite_scripture(datum/clockwork_scripture/scripture, mob/living/user)
if(!scripture || !user || !user.canUseTopic(src) || (!no_cost && !can_recite_scripture(user)))
return FALSE
@@ -223,27 +214,64 @@
scripture_to_recite.run_scripture()
return TRUE
/*
* Gets text for a certain section. "Default" is used for when you first open Recollection.
* Current sections (make sure to update this if you add one:
* Basics
* Terminology
* Components
* Scripture
* Power
* Conversion
* * what - What section?
*/
/obj/item/clockwork/slab/proc/get_recollection(what) //Now DMDOC compliant!*
. = list()
switch(what) //need someone to rewrite info for this.
/*
if("Default")
.["title"] = "Default"
.["info"] = "copypaste."
if("Basics")
.["title"] = "Basics"
.["info"] = "# MARKDOWN WITH HTML?"
if("Terminology")
.["title"] = "Terminology"
.["info"] = "# MARKDOWN WITH HTML?"
if("Components")
.["title"] = "Default"
.["info"] = "# MARKDOWN WITH HTML?"
if("Scripture")
.["title"] = "Default"
.["info"] = "# MARKDOWN WITH HTML?"
if("Power")
.["title"] = "Power"
.["info"] = "# MARKDOWN WITH HTML?"
if("Conversion")
.["title"] = "Conversion"
.["info"] = "# MARKDOWN WITH HTML?"
*/
else
return null //error text handled tgui side. should not cause BSOD
//Gets text for a certain section. "Default" is used for when you first open Recollection.
//Current sections (make sure to update this if you add one:
//- Basics
//- Terminology
//- Components
//- Scripture
//- Power
//- Conversion
/obj/item/clockwork/slab/ui_state(mob/user)
return GLOB.hands_state
/obj/item/clockwork/slab/ui_interact(mob/user, datum/tgui/ui)
if(!ui)
ui = new(user, src, "ClockworkSlab", name)
ui.open()
/obj/item/clockwork/slab/ui_data(mob/user) //we display a lot of data via TGUI
. = list()
.["recollection"] = recollecting
.["power"] = DisplayPower(get_clockwork_power())
.["power_unformatted"] = get_clockwork_power()
// .["rec_text"] = recollection() handled TGUI side
.["HONOR_RATVAR"] = GLOB.ratvar_awakens
.["scripture"] = list()
for(var/s in GLOB.all_scripture)
var/datum/clockwork_scripture/S = GLOB.all_scripture[s]
if(S.tier == SCRIPTURE_PERIPHERAL) //yes, tiers are the tabs.
if(S.tier == SCRIPTURE_PERIPHERAL) // This tier is skiped because this contains basetype stuff
continue
var/list/data = list()
@@ -253,7 +281,7 @@
data["required"] = "([DisplayPower(S.power_cost)][S.special_power_text ? "+ [replacetext(S.special_power_text, "POWERCOST", "[DisplayPower(S.special_power_cost)]")]" : ""])"
data["required_unformatted"] = S.power_cost
data["type"] = "[S.type]"
data["quickbind"] = S.quickbind //this is if it cant quickbind
data["quickbind"] = S.quickbind //this is if it cant quickbind (bool)
data["fontcolor"] = get_component_color_bright(S.primary_component)
data["important"] = S.important //italic!
@@ -268,7 +296,7 @@
if(GLOB.ratvar_awakens)
return
if(LAZYLEN(quickbound) < i || !quickbound[i])
.["rec_binds"] += list(list())
.["rec_binds"] += list(list()) //a blank json.
else
var/datum/clockwork_scripture/quickbind_slot = quickbound[i]
.["rec_binds"] += list(list(
@@ -280,7 +308,11 @@
/obj/item/clockwork/slab/ui_static_data(mob/user)
. = list()
.["tier_infos"] = list()
.["tier_infos"] = list() //HEY!! WHEN ADDING NEW TIER, ADD IT HERE
.["tier_infos"][SCRIPTURE_PERIPHERAL] = list(
"requirement" = "Breaking the code DM side. Report to coggerbus if this appears!!"
"ready" = FALSE //just in case. Should NOT exist at all
)
.["tier_infos"][SCRIPTURE_DRIVER] = list(
"requirement" = "None, this is already unlocked",
"ready" = TRUE //to bold it on JS side, and to say "These scriptures are permanently unlocked."
@@ -298,9 +330,11 @@
"ready" = SSticker.scripture_states[SCRIPTURE_JUDGEMENT]
)
// .["selected"] = selected_scripture
generate_all_scripture()
.["recollection_categories"] = GLOB.ratvar_awakens ? list() : list(
.["recollection_categories"] = list()
if(GLOB.ratvar_awakens)
return
.["recollection_categories"] = list(
list("name" = "Getting Started", "desc" = "First-time servant? Read this first."),
list("name" = "Basics", "desc" = "A primer on how to play as a servant."),
list("name" = "Terminology", "desc" = "Common acronyms, words, and terms."),
@@ -309,8 +343,7 @@
list("name" = "Power", "desc" = "The power system that certain objects use to function."),
list("name" = "Conversion", "desc" = "Converting the crew, cyborgs, and very walls to your cause.")
)
// .["rec_section"]["title"] //this is here if ever we decided to return these back.
// .["rec_section"]["info"]// wall of info for the thing
.["rec_section"] = get_recollection(recollection_category)
/obj/item/clockwork/slab/ui_act(action, params)
switch(action)
@@ -369,4 +402,4 @@
Q.button_icon_state = quickbind_slot.name
Q.UpdateButtonIcon()
if(isliving(loc))
Q.Grant(loc)
Q.Grant(loc)
@@ -60,15 +60,14 @@
else if(!opened && our_pressure >= open_pressure)
open()
/obj/machinery/atmospherics/components/binary/relief_valve/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
/obj/machinery/atmospherics/components/unary/relief_valve/ui_interact(mob/user, datum/tgui/ui)
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, ui_key, "atmos_relief", name, 335, 115, master_ui, state)
ui = new(user, src, "AtmosRelief", name)
ui.open()
/obj/machinery/atmospherics/components/binary/relief_valve/ui_data()
var/data = list()
var/list/data = list()
data["open_pressure"] = round(open_pressure)
data["close_pressure"] = round(close_pressure)
data["max_pressure"] = round(50*ONE_ATMOSPHERE)
@@ -83,7 +82,7 @@
if(pressure == "max")
pressure = 50*ONE_ATMOSPHERE
. = TRUE
else if(pressure == "input")
else if(pressure == "input") // The manual expirience.
pressure = input("New output pressure ([close_pressure]-[50*ONE_ATMOSPHERE] kPa):", name, open_pressure) as num|null
if(!isnull(pressure) && !..())
. = TRUE
@@ -61,15 +61,14 @@
update_parents()
/obj/machinery/atmospherics/components/unary/relief_valve/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
/obj/machinery/atmospherics/components/unary/relief_valve/ui_interact(mob/user, datum/tgui/ui)
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, ui_key, "atmos_relief", name, 335, 115, master_ui, state)
ui = new(user, src, "AtmosRelief", name)
ui.open()
/obj/machinery/atmospherics/components/unary/relief_valve/ui_data()
var/data = list()
var/list/data = list()
data["open_pressure"] = round(open_pressure)
data["close_pressure"] = round(close_pressure)
data["max_pressure"] = round(50*ONE_ATMOSPHERE)
@@ -0,0 +1,61 @@
import { useBackend } from '../backend';
import { Button, LabeledList, NumberInput, Section } from '../components';
import { Window } from '../layouts';
export const AtmosRelief = (props, context) => { // rebranded AtmoPump
const { act, data } = useBackend(context);
return (
<Window
width={335}
height={115}>
<Window.Content>
<Section>
<LabeledList>
<LabeledList.Item label="Open Pressure">
<NumberInput
animated
value={parseFloat(data.open_pressure)}
unit="kPa"
width="75px"
minValue={0}
maxValue={data.max_pressure || 4500}
step={10}
onChange={(e, value) => act('open_pressure', {
pressure: value,
})} />
<Button
ml={1}
icon="plus"
content="Max"
disabled={data.open_pressure === data.max_pressure}
onClick={() => act('open_pressure', {
pressure: 'max',
})} />
</LabeledList.Item>
<LabeledList.Item label="Close Pressure">
<NumberInput
animated
value={parseFloat(data.close_pressure)}
unit="kPa"
width="75px"
minValue={0}
maxValue={data.max_pressure || 4500}
step={10}
onChange={(e, value) => act('close_pressure', {
pressure: value,
})} />
<Button
ml={1}
icon="plus"
content="Max"
disabled={data.close_pressure === data.max_pressure}
onClick={() => act('close_pressure', {
pressure: 'max',
})} />
</LabeledList.Item>
</LabeledList>
</Section>
</Window.Content>
</Window>
);
};
+17 -16
View File
@@ -5,9 +5,10 @@ import { Fragment } from 'inferno';
import { Window } from '../layouts';
let REC_RATVAR = "";
// You may ask "why is this not inside ClockworkSlab"
// It's because cslab gets called every time. Lag is bad.
for (let index = 0; index < Math.min(Math.random()*100); index++) {
// HEY! is it faster to do it serverside or client side?
REC_RATVAR.concat("HONOR RATVAR ");
REC_RATVAR += "HONOR RATVAR ";
}
export const ClockworkSlab = (props, context) => {
@@ -17,7 +18,7 @@ export const ClockworkSlab = (props, context) => {
recollection_categories = [],
rec_section = null,
rec_binds = [],
scripture = {}, // this is a {}, not a []
scripture = {},
tier_infos = {},
power = "0 W",
power_unformatted = 0,
@@ -35,7 +36,10 @@ export const ClockworkSlab = (props, context) => {
|| {};
return (
<Window theme="clockcult">
<Window
theme="clockcult"
width={800}
height={420}>
<Window.Content scrollable>
{recollection ? ( // tutorial
<Section
@@ -104,7 +108,6 @@ export const ClockworkSlab = (props, context) => {
})}
<Divider />
<Box>
{data.rec_section}
<Box
as={'span'}
textColor={'#BE8700'}
@@ -165,16 +168,14 @@ export const ClockworkSlab = (props, context) => {
and other consumers.
<Section level={2}>
<Tabs>
{map((scriptures, name) => {
return (
<Tabs.Tab
key={name}
selected={tab === name}
onClick={() => setTab(name)}>
{name}
</Tabs.Tab>
);
})(scripture)}
{map((scriptures, name) => (
<Tabs.Tab
key={name}
selected={tab === name}
onClick={() => setTab(name)}>
{name}
</Tabs.Tab>
))(scripture)}
</Tabs>
<Box
as={'span'}
@@ -214,7 +215,7 @@ export const ClockworkSlab = (props, context) => {
</Box>
<Divider />
<Table>
{!!scriptInTab && scriptInTab.map(script => (
{scriptInTab?.map(script => (
<Table.Row
key={script.name}
className="candystripe">
@@ -25,7 +25,10 @@ export const TelecommsInteraction = (props, context) => {
isbus = false,
} = machine;
return (
<Window resizable>
<Window
resizable
width={520}
height={500}>
<Window.Content scrollable>
<Fragment>
{!!notice && (
@@ -17,11 +17,11 @@ export const TelecommsLogBrowser = (props, context) => {
setTab,
] = useSharedState(context, 'tab', 'servers');
const operational = (selected && selected.status);
// if (!operational) { // some sanity checks.
// setTab("servers");
// }
return (
<Window theme="ntos">
<Window
theme="ntos"
width={575}
height={400}>
<Window.Content scrollable>
<Fragment>
{!!notice && (
@@ -163,24 +163,22 @@ export const TelecommsLogBrowser = (props, context) => {
<Section>
{(servers && servers.length) ? (
<LabeledList>
{servers.map(server => {
return (
<LabeledList.Item
key={server.name}
label={`${server.ref}`}
buttons={(
<Button
content="Connect"
selected={data.selected
&& (server.ref === data.selected.ref)}
onClick={() => act('viewmachine', {
'value': server.id,
})} />
)}>
{`${server.name} (${server.id})`}
</LabeledList.Item>
);
})}
{servers.map(server => (
<LabeledList.Item
key={server.name}
label={`${server.ref}`}
buttons={(
<Button
content="Connect"
selected={data.selected
&& (server.ref === data.selected.ref)}
onClick={() => act('viewmachine', {
'value': server.id,
})} />
)}>
{`${server.name} (${server.id})`}
</LabeledList.Item>
))}
</LabeledList>
) : (
'404 Servers not found. Have you tried scanning the network?'
@@ -19,12 +19,13 @@ export const TelecommsMonitor = (props, context) => {
setTab,
] = useSharedState(context, 'tab', 'network-entity');
const operational = (selected && selected.status);
// if (!selected) { // some sanity checks.
// setTab("network-entity");
// }
return (
<Window theme="ntos" resizable>
<Window
theme="ntos"
resizable
width={575}
height={400}>
<Window.Content scrollable>
<Fragment>
{!!notice && (
@@ -22,12 +22,13 @@ export const TelecommsPDALog = (props, context) => {
setTab,
] = useSharedState(context, 'tab', 'pdalog-servers');
const valid = (selected && selected.status && authenticated);
// if (!valid || data.hacking) { // a sanity check.
// setTab('pdalog-servers');
// }
if (hack_status) {
return ( // should have used en -> jp unicode -> other encoding method->utf8
<Window theme="ntos" resizable>
<Window
theme="ntos"
resizable
width={727}
height={510}>
<Window.Content scrollable>
<NoticeBox>
<b>