mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 10:43:20 +00:00
TGUI Engineering: Squashed Edition (Commits Below)
TGUI APCs TGUI vending machines Fix AI default_tgui_interaction TGUI Airlocks Station & Atmospheric Alert TGUI + Misc NTOS-TGUI Fixes TGUI Air Alarms & Central Atmospheric Control Airlock TGUI TG... got rid of UI for fire alarm. í´· TGUI Gas Heating/Cooling System TGUI Gas Pump & Passive Gate + Fixes TGUI Omni Atmospherics TGUI Pipe Dispensers & RPD TGUI IntelliCore & Vending Fix TGUI Handheld Tanks TGUI Portable Pump & Scrubber TGUI Tank Dispenser & Canisters TGUI Radios TGUI SMES & Air Alarm adjustment Tweak vending machine interfaces a tad TGUI Algae Farm TGUI general_air_control - Distro & Waste Console - Riot Control Console - Atmos Intake Console - Engine Cooling Console TGUI Heavy Scrubber Control (and body scanner fix) TGUI trinary devices & shutoff monitor TGUI Telecomms Log Browser TGUI Telecomms Machine Browser TGUI Spaceheater Internal Panel TGUI Gravity Generator TGUI Id Cards & Fix ID Card Images TGUI Id Card Redesign TGUI Turbolift TGUI Suit Cycler & Suit Storage Unit & Vending Fixes TGUI Power Monitor TGUI Signalers TGUI Employment Records TGUI Drone Console TGUI RIGSuits TGUI PA & PACMAN, and Margin Fix TGUI Solar Panels & Fix Power Monitor Adjust TGUI modules & their interaction with NTOS TGUI RCON TGUI Message Monitor Bump TGUI line limit to 120 (ParadiseSS13/Paradise#14002) TGUI Exonet & NTNet Relay TGUI Telecomms Multitool Menu TGUI Shield Capacitor & Shield Generator TGUI Supermatter-everything & Refactors
This commit is contained in:
@@ -14,6 +14,7 @@
|
||||
var/tag_secure = 0
|
||||
var/list/dummy_terminals = list()
|
||||
var/cycle_to_external_air = 0
|
||||
valid_actions = list("cycle_ext", "cycle_int", "force_ext", "force_int", "abort", "purge", "secure")
|
||||
|
||||
/obj/machinery/embedded_controller/radio/airlock/Destroy()
|
||||
// TODO - Leshana - Implement dummy terminals
|
||||
@@ -23,90 +24,42 @@
|
||||
//dummy_terminals.Cut()
|
||||
return ..()
|
||||
|
||||
/obj/machinery/embedded_controller/radio/airlock/CanUseTopic(var/mob/user)
|
||||
/obj/machinery/embedded_controller/radio/airlock/tgui_status(mob/user, datum/tgui_state/state)
|
||||
. = ..()
|
||||
if(!allowed(user))
|
||||
return min(STATUS_UPDATE, ..())
|
||||
else
|
||||
return ..()
|
||||
return min(STATUS_UPDATE, .)
|
||||
|
||||
//Advanced airlock controller for when you want a more versatile airlock controller - useful for turning simple access control rooms into airlocks
|
||||
/obj/machinery/embedded_controller/radio/airlock/advanced_airlock_controller
|
||||
name = "Advanced Airlock Controller"
|
||||
|
||||
/obj/machinery/embedded_controller/radio/airlock/advanced_airlock_controller/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||
var/data[0]
|
||||
|
||||
data = list(
|
||||
/obj/machinery/embedded_controller/radio/airlock/advanced_airlock_controller/tgui_data(mob/user)
|
||||
. = list(
|
||||
"chamber_pressure" = round(program.memory["chamber_sensor_pressure"]),
|
||||
"external_pressure" = round(program.memory["external_sensor_pressure"]),
|
||||
"internal_pressure" = round(program.memory["internal_sensor_pressure"]),
|
||||
"processing" = program.memory["processing"],
|
||||
"purge" = program.memory["purge"],
|
||||
"secure" = program.memory["secure"]
|
||||
"secure" = program.memory["secure"],
|
||||
"internalTemplateName" = "AirlockConsoleAdvanced",
|
||||
)
|
||||
|
||||
ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
|
||||
if (!ui)
|
||||
ui = new(user, src, ui_key, "advanced_airlock_console.tmpl", name, 470, 290)
|
||||
ui.set_initial_data(data)
|
||||
ui.open()
|
||||
ui.set_auto_update(1)
|
||||
|
||||
/obj/machinery/embedded_controller/radio/airlock/advanced_airlock_controller/Topic(href, href_list)
|
||||
if((. = ..()))
|
||||
return
|
||||
|
||||
switch(href_list["command"]) //anti-HTML-hacking checks
|
||||
if("cycle_ext", "cycle_int", "force_ext", "force_int", "abort", "purge", "secure")
|
||||
program.receive_user_command(href_list["command"])
|
||||
|
||||
return 1
|
||||
|
||||
//Airlock controller for airlock control - most airlocks on the station use this
|
||||
/obj/machinery/embedded_controller/radio/airlock/airlock_controller
|
||||
name = "Airlock Controller"
|
||||
tag_secure = 1
|
||||
valid_actions = list("cycle_ext", "cycle_int", "force_ext", "force_int", "abort")
|
||||
|
||||
/obj/machinery/embedded_controller/radio/airlock/airlock_controller/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||
var/data[0]
|
||||
|
||||
data = list(
|
||||
/obj/machinery/embedded_controller/radio/airlock/airlock_controller/tgui_data(mob/user)
|
||||
. = list(
|
||||
"chamber_pressure" = round(program.memory["chamber_sensor_pressure"]),
|
||||
"exterior_status" = program.memory["exterior_status"],
|
||||
"interior_status" = program.memory["interior_status"],
|
||||
"processing" = program.memory["processing"],
|
||||
"internalTemplateName" = "AirlockConsoleSimple",
|
||||
)
|
||||
|
||||
ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
if (!ui)
|
||||
ui = new(user, src, ui_key, "simple_airlock_console.tmpl", name, 470, 290)
|
||||
ui.set_initial_data(data)
|
||||
ui.open()
|
||||
ui.set_auto_update(1)
|
||||
|
||||
/obj/machinery/embedded_controller/radio/airlock/airlock_controller/Topic(href, href_list)
|
||||
if((. = ..()))
|
||||
return
|
||||
|
||||
var/clean = 0
|
||||
switch(href_list["command"]) //anti-HTML-hacking checks
|
||||
if("cycle_ext")
|
||||
clean = 1
|
||||
if("cycle_int")
|
||||
clean = 1
|
||||
if("force_ext")
|
||||
clean = 1
|
||||
if("force_int")
|
||||
clean = 1
|
||||
if("abort")
|
||||
clean = 1
|
||||
|
||||
if(clean)
|
||||
program.receive_user_command(href_list["command"])
|
||||
|
||||
return 1
|
||||
|
||||
//Access controller for door control - used in virology and the like
|
||||
/obj/machinery/embedded_controller/radio/airlock/access_controller
|
||||
icon = 'icons/obj/airlock_machines.dmi'
|
||||
@@ -114,6 +67,7 @@
|
||||
|
||||
name = "Access Controller"
|
||||
tag_secure = 1
|
||||
valid_actions = list("cycle_ext_door", "cycle_int_door", "force_ext", "force_int")
|
||||
|
||||
|
||||
/obj/machinery/embedded_controller/radio/airlock/access_controller/update_icon()
|
||||
@@ -125,40 +79,10 @@
|
||||
else
|
||||
icon_state = "access_control_off"
|
||||
|
||||
/obj/machinery/embedded_controller/radio/airlock/access_controller/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||
var/data[0]
|
||||
|
||||
data = list(
|
||||
/obj/machinery/embedded_controller/radio/airlock/access_controller/tgui_data(mob/user)
|
||||
. = list(
|
||||
"exterior_status" = program.memory["exterior_status"],
|
||||
"interior_status" = program.memory["interior_status"],
|
||||
"processing" = program.memory["processing"]
|
||||
"processing" = program.memory["processing"],
|
||||
"internalTemplateName" = "DoorAccessConsole",
|
||||
)
|
||||
|
||||
ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
if (!ui)
|
||||
ui = new(user, src, ui_key, "door_access_console.tmpl", name, 330, 220)
|
||||
ui.set_initial_data(data)
|
||||
ui.open()
|
||||
ui.set_auto_update(1)
|
||||
|
||||
/obj/machinery/embedded_controller/radio/airlock/access_controller/Topic(href, href_list)
|
||||
if((. = ..()))
|
||||
return
|
||||
|
||||
var/clean = 0
|
||||
switch(href_list["command"]) //anti-HTML-hacking checks
|
||||
if("cycle_ext_door")
|
||||
clean = 1
|
||||
if("cycle_int_door")
|
||||
clean = 1
|
||||
if("force_ext")
|
||||
if(program.memory["interior_status"]["state"] == "closed")
|
||||
clean = 1
|
||||
if("force_int")
|
||||
if(program.memory["exterior_status"]["state"] == "closed")
|
||||
clean = 1
|
||||
|
||||
if(clean)
|
||||
program.receive_user_command(href_list["command"])
|
||||
|
||||
return 1
|
||||
@@ -1,4 +1,5 @@
|
||||
// Provides remote access to a controller (since they must be unique).
|
||||
// TGUITODO: Actually make these weird things work... well, as much as possible.
|
||||
/obj/machinery/dummy_airlock_controller
|
||||
name = "airlock control terminal"
|
||||
icon = 'icons/obj/airlock_machines.dmi'
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
var/datum/computer/file/embedded_program/docking/airlock/docking_program
|
||||
var/display_name // For mappers to override docking_program.display_name (how would it show up on docking monitoring program)
|
||||
tag_secure = 1
|
||||
valid_actions = list("cycle_ext", "cycle_int", "force_ext", "force_int", "abort", "toggle_override")
|
||||
|
||||
/obj/machinery/embedded_controller/radio/airlock/docking_port/Initialize()
|
||||
. = ..()
|
||||
@@ -34,12 +35,11 @@
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/machinery/embedded_controller/radio/airlock/docking_port/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||
var/data[0]
|
||||
/obj/machinery/embedded_controller/radio/airlock/docking_port/tgui_data(mob/user)
|
||||
var/datum/computer/file/embedded_program/docking/airlock/docking_program = program
|
||||
var/datum/computer/file/embedded_program/airlock/docking/airlock_program = docking_program.airlock_program
|
||||
|
||||
data = list(
|
||||
. = list(
|
||||
"chamber_pressure" = round(airlock_program.memory["chamber_sensor_pressure"]),
|
||||
"exterior_status" = airlock_program.memory["exterior_status"],
|
||||
"interior_status" = airlock_program.memory["interior_status"],
|
||||
@@ -48,49 +48,16 @@
|
||||
"airlock_disabled" = !(docking_program.undocked() || docking_program.override_enabled),
|
||||
"override_enabled" = docking_program.override_enabled,
|
||||
"docking_codes" = docking_program.docking_codes,
|
||||
"name" = docking_program.get_name()
|
||||
"name" = docking_program.get_name(),
|
||||
"internalTemplateName" = "AirlockConsoleDocking",
|
||||
)
|
||||
|
||||
ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
|
||||
if (!ui)
|
||||
ui = new(user, src, ui_key, "docking_airlock_console.tmpl", name, 470, 290)
|
||||
ui.set_initial_data(data)
|
||||
ui.open()
|
||||
ui.set_auto_update(1)
|
||||
|
||||
/obj/machinery/embedded_controller/radio/airlock/docking_port/Topic(href, href_list)
|
||||
if((. = ..()))
|
||||
return
|
||||
|
||||
var/clean = 0
|
||||
switch(href_list["command"]) //anti-HTML-hacking checks
|
||||
if("cycle_ext")
|
||||
clean = 1
|
||||
if("cycle_int")
|
||||
clean = 1
|
||||
if("force_ext")
|
||||
clean = 1
|
||||
if("force_int")
|
||||
clean = 1
|
||||
if("abort")
|
||||
clean = 1
|
||||
if("toggle_override")
|
||||
clean = 1
|
||||
|
||||
if(clean)
|
||||
program.receive_user_command(href_list["command"])
|
||||
|
||||
return 1
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//A docking controller for an airlock based docking port
|
||||
//
|
||||
/datum/computer/file/embedded_program/docking/airlock
|
||||
var/datum/computer/file/embedded_program/airlock/docking/airlock_program
|
||||
|
||||
|
||||
/datum/computer/file/embedded_program/docking/airlock/New(var/obj/machinery/embedded_controller/M, var/datum/computer/file/embedded_program/airlock/docking/A)
|
||||
..(M)
|
||||
airlock_program = A
|
||||
|
||||
@@ -15,9 +15,7 @@
|
||||
for (var/i = 1; i <= tags.len; i++)
|
||||
child_names[tags[i]] = names[i]
|
||||
|
||||
|
||||
/obj/machinery/embedded_controller/radio/docking_port_multi/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||
var/data[0]
|
||||
/obj/machinery/embedded_controller/radio/docking_port_multi/tgui_data(mob/user)
|
||||
var/datum/computer/file/embedded_program/docking/multi/docking_program = program // Cast to proper type
|
||||
|
||||
var/list/airlocks[child_names.len]
|
||||
@@ -25,23 +23,14 @@
|
||||
for (var/child_tag in child_names)
|
||||
airlocks[i++] = list("name"=child_names[child_tag], "override_enabled"=(docking_program.children_override[child_tag] == "enabled"))
|
||||
|
||||
data = list(
|
||||
. = list(
|
||||
"docking_status" = docking_program.get_docking_status(),
|
||||
"airlocks" = airlocks,
|
||||
"internalTemplateName" = "DockingConsoleMulti",
|
||||
)
|
||||
|
||||
ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
|
||||
if (!ui)
|
||||
ui = new(user, src, ui_key, "multi_docking_console.tmpl", name, 470, 290)
|
||||
ui.set_initial_data(data)
|
||||
ui.open()
|
||||
ui.set_auto_update(1)
|
||||
|
||||
/obj/machinery/embedded_controller/radio/docking_port_multi/Topic(href, href_list)
|
||||
return 1 // Apparently we swallow all input (this is corrected legacy code)
|
||||
|
||||
|
||||
/obj/machinery/embedded_controller/radio/docking_port_multi/tgui_act(action, params)
|
||||
return // Apparently we swallow all input (this is corrected legacy code)
|
||||
|
||||
//a docking port based on an airlock
|
||||
// This is the actual controller that will be commanded by the master defined above
|
||||
@@ -50,12 +39,13 @@
|
||||
program = /datum/computer/file/embedded_program/airlock/multi_docking
|
||||
var/master_tag //for mapping
|
||||
tag_secure = 1
|
||||
valid_actions = list("cycle_ext", "cycle_int", "force_ext", "force_int", "abort", "toggle_override")
|
||||
|
||||
|
||||
/obj/machinery/embedded_controller/radio/airlock/docking_port_multi/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||
var/data[0]
|
||||
/obj/machinery/embedded_controller/radio/airlock/docking_port_multi/tgui_data(mob/user)
|
||||
var/datum/computer/file/embedded_program/airlock/multi_docking/airlock_program = program // Cast to proper type
|
||||
|
||||
data = list(
|
||||
. = list(
|
||||
"chamber_pressure" = round(airlock_program.memory["chamber_sensor_pressure"]),
|
||||
"exterior_status" = airlock_program.memory["exterior_status"],
|
||||
"interior_status" = airlock_program.memory["interior_status"],
|
||||
@@ -63,42 +53,9 @@
|
||||
"docking_status" = airlock_program.master_status,
|
||||
"airlock_disabled" = (airlock_program.docking_enabled && !airlock_program.override_enabled),
|
||||
"override_enabled" = airlock_program.override_enabled,
|
||||
"internalTemplateName" = "AirlockConsoleDocking",
|
||||
)
|
||||
|
||||
ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
|
||||
if (!ui)
|
||||
ui = new(user, src, ui_key, "docking_airlock_console.tmpl", name, 470, 290)
|
||||
ui.set_initial_data(data)
|
||||
ui.open()
|
||||
ui.set_auto_update(1)
|
||||
|
||||
/obj/machinery/embedded_controller/radio/airlock/docking_port_multi/Topic(href, href_list)
|
||||
if((. = ..()))
|
||||
return
|
||||
|
||||
var/clean = 0
|
||||
switch(href_list["command"]) //anti-HTML-hacking checks
|
||||
if("cycle_ext")
|
||||
clean = 1
|
||||
if("cycle_int")
|
||||
clean = 1
|
||||
if("force_ext")
|
||||
clean = 1
|
||||
if("force_int")
|
||||
clean = 1
|
||||
if("abort")
|
||||
clean = 1
|
||||
if("toggle_override")
|
||||
clean = 1
|
||||
|
||||
if(clean)
|
||||
program.receive_user_command(href_list["command"])
|
||||
|
||||
return 1
|
||||
|
||||
|
||||
|
||||
/*** DEBUG VERBS ***
|
||||
|
||||
/datum/computer/file/embedded_program/docking/multi/proc/print_state()
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
use_power = USE_POWER_IDLE
|
||||
idle_power_usage = 10
|
||||
var/datum/computer/file/embedded_program/program //the currently executing program
|
||||
var/list/valid_actions = list()
|
||||
var/on = 1
|
||||
|
||||
/obj/machinery/embedded_controller/Initialize()
|
||||
@@ -24,18 +25,19 @@
|
||||
|
||||
if(program)
|
||||
program.receive_signal(signal, receive_method, receive_param)
|
||||
//spawn(5) program.process() //no, program.process sends some signals and machines respond and we here again and we lag -rastaf0
|
||||
|
||||
/obj/machinery/embedded_controller/Topic(href, href_list)
|
||||
if((. = ..()))
|
||||
return
|
||||
/obj/machinery/embedded_controller/Topic()
|
||||
. = ..()
|
||||
stack_trace("WARNING: Embedded controller [src] ([type]) had Topic() called unexpectedly. Please report this.")
|
||||
|
||||
/obj/machinery/embedded_controller/tgui_act(action, params)
|
||||
if(..())
|
||||
return TRUE
|
||||
if(LAZYLEN(valid_actions))
|
||||
if(action in valid_actions)
|
||||
program.receive_user_command(action)
|
||||
if(usr)
|
||||
usr.set_machine(src)
|
||||
src.add_fingerprint(usr)
|
||||
// We would now pass it to the program, except that some of our embedded controller types want to block certain commands.
|
||||
// Until/unless that is refactored differently, we rely on subtypes to pass it on.
|
||||
//if(program)
|
||||
// return program.receive_user_command(href_list["command"])
|
||||
add_fingerprint(usr)
|
||||
|
||||
/obj/machinery/embedded_controller/process()
|
||||
if(program)
|
||||
@@ -44,19 +46,23 @@
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/embedded_controller/attack_ai(mob/user as mob)
|
||||
src.ui_interact(user)
|
||||
tgui_interact(user)
|
||||
|
||||
/obj/machinery/embedded_controller/attack_hand(mob/user as mob)
|
||||
|
||||
if(!user.IsAdvancedToolUser())
|
||||
return 0
|
||||
|
||||
src.ui_interact(user)
|
||||
tgui_interact(user)
|
||||
|
||||
/obj/machinery/embedded_controller/tgui_interact(mob/user, datum/tgui/ui = null)
|
||||
ui = SStgui.try_update_ui(user, src, ui)
|
||||
if(!ui)
|
||||
ui = new(user, src, "EmbeddedController", src)
|
||||
ui.open()
|
||||
|
||||
//
|
||||
// Embedded controller with a radio! (Most things (All things?) use this)
|
||||
//
|
||||
|
||||
/obj/machinery/embedded_controller/radio
|
||||
icon = 'icons/obj/airlock_machines.dmi'
|
||||
icon_state = "airlock_control_standby"
|
||||
|
||||
@@ -3,42 +3,18 @@
|
||||
name = "docking hatch controller"
|
||||
program = /datum/computer/file/embedded_program/docking/simple
|
||||
var/tag_door
|
||||
valid_actions = list("force_door", "toggle_override")
|
||||
|
||||
/obj/machinery/embedded_controller/radio/simple_docking_controller/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||
var/data[0]
|
||||
/obj/machinery/embedded_controller/radio/simple_docking_controller/tgui_data(mob/user)
|
||||
var/datum/computer/file/embedded_program/docking/simple/docking_program = program // Cast to proper type
|
||||
|
||||
data = list(
|
||||
. = list(
|
||||
"docking_status" = docking_program.get_docking_status(),
|
||||
"override_enabled" = docking_program.override_enabled,
|
||||
"door_state" = docking_program.memory["door_status"]["state"],
|
||||
"door_lock" = docking_program.memory["door_status"]["lock"],
|
||||
"exterior_status" = docking_program.memory["door_status"],
|
||||
"internalTemplateName" = "DockingConsoleSimple",
|
||||
)
|
||||
|
||||
ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
|
||||
if (!ui)
|
||||
ui = new(user, src, ui_key, "simple_docking_console.tmpl", name, 470, 290)
|
||||
ui.set_initial_data(data)
|
||||
ui.open()
|
||||
ui.set_auto_update(1)
|
||||
|
||||
/obj/machinery/embedded_controller/radio/simple_docking_controller/Topic(href, href_list)
|
||||
if((. = ..()))
|
||||
return
|
||||
|
||||
var/clean = 0
|
||||
switch(href_list["command"]) //anti-HTML-hacking checks
|
||||
if("force_door")
|
||||
clean = 1
|
||||
if("toggle_override")
|
||||
clean = 1
|
||||
|
||||
if(clean)
|
||||
program.receive_user_command(href_list["command"])
|
||||
|
||||
return
|
||||
|
||||
//A docking controller program for a simple door based docking port
|
||||
/datum/computer/file/embedded_program/docking/simple
|
||||
var/tag_door
|
||||
|
||||
Reference in New Issue
Block a user