diff --git a/code/modules/modular_computers/computers/item/computer.dm b/code/modules/modular_computers/computers/item/computer.dm
index 47e8cfff55d..c8557519682 100644
--- a/code/modules/modular_computers/computers/item/computer.dm
+++ b/code/modules/modular_computers/computers/item/computer.dm
@@ -420,13 +420,6 @@ GLOBAL_LIST_EMPTY(TabletMessengers) // a list of all active messengers, similar
update_appearance(UPDATE_ICON)
return ..()
-// On-click handling. Turns on the computer if it's off and opens the GUI.
-/obj/item/modular_computer/interact(mob/user)
- if(enabled)
- ui_interact(user)
- else
- turn_on(user)
-
/obj/item/modular_computer/CtrlShiftClick(mob/user)
. = ..()
if(.)
@@ -605,7 +598,6 @@ GLOBAL_LIST_EMPTY(TabletMessengers) // a list of all active messengers, similar
program.alert_pending = FALSE
idle_threads.Remove(program)
update_appearance()
- updateUsrDialog()
return TRUE
if(!program.is_supported_by_hardware(hardware_flag, 1, user))
@@ -625,7 +617,7 @@ GLOBAL_LIST_EMPTY(TabletMessengers) // a list of all active messengers, similar
active_program = program
program.alert_pending = FALSE
update_appearance()
- updateUsrDialog()
+ ui_interact(user)
return TRUE
// Returns 0 for No Signal, 1 for Low Signal and 2 for Good Signal. 3 is for wired connection (always-on)
diff --git a/code/modules/modular_computers/computers/item/computer_ui.dm b/code/modules/modular_computers/computers/item/computer_ui.dm
index 8a327b5b800..fb90a50604f 100644
--- a/code/modules/modular_computers/computers/item/computer_ui.dm
+++ b/code/modules/modular_computers/computers/item/computer_ui.dm
@@ -1,20 +1,15 @@
-/obj/item/modular_computer/attack_self(mob/user)
- . = ..()
- ui_interact(user)
+/obj/item/modular_computer/interact(mob/user)
+ if(enabled)
+ ui_interact(user)
+ else
+ turn_on(user)
// Operates TGUI
/obj/item/modular_computer/ui_interact(mob/user, datum/tgui/ui)
- if(!enabled)
+ if(!enabled || !user.can_read(src, READING_CHECK_LITERACY) || !use_power())
if(ui)
ui.close()
return
- if(!use_power())
- if(ui)
- ui.close()
- return
-
- if(!user.can_read(src, READING_CHECK_LITERACY))
- return
// Robots don't really need to see the screen, their wireless connection works as long as computer is on.
if(!screen_on && !issilicon(user))
@@ -22,27 +17,43 @@
ui.close()
return
- // If we have an active program switch to it now.
- if(active_program)
- if(ui) // This is the main laptop screen. Since we are switching to program's UI close it for now.
- ui.close()
- active_program.ui_interact(user)
- return
-
if(honkvirus_amount > 0) // EXTRA annoying, huh!
honkvirus_amount--
playsound(src, 'sound/items/bikehorn.ogg', 30, TRUE)
ui = SStgui.try_update_ui(user, src, ui)
- if (!ui)
- ui = new(user, src, "NtosMain")
- ui.set_autoupdate(TRUE)
- if(ui.open())
- ui.send_asset(get_asset_datum(/datum/asset/simple/headers))
+ if(!ui)
+ if(active_program)
+ ui = new(user, src, active_program.tgui_id, active_program.filedesc)
+ else
+ ui = new(user, src, "NtosMain")
+ ui.open()
+ return
+
+ var/old_open_ui = ui.interface
+ if(active_program)
+ ui.interface = active_program.tgui_id
+ ui.title = active_program.filedesc
+ else
+ ui.interface = "NtosMain"
+ //opened a new UI
+ if(old_open_ui != ui.interface)
+ update_static_data(user, ui)
+ ui.send_assets()
+
+/obj/item/modular_computer/ui_assets(mob/user)
+ var/list/data = list()
+ data += get_asset_datum(/datum/asset/simple/headers)
+ if(active_program)
+ data += active_program.ui_assets(user)
+ return data
/obj/item/modular_computer/ui_static_data(mob/user)
. = ..()
var/list/data = list()
+ if(active_program)
+ data += active_program.ui_static_data(user)
+ return data
data["show_imprint"] = istype(src, /obj/item/modular_computer/pda)
@@ -50,6 +61,9 @@
/obj/item/modular_computer/ui_data(mob/user)
var/list/data = get_header_data()
+ if(active_program)
+ data += active_program.ui_data(user)
+ return data
data["login"] = list(
IDName = saved_identification || "Unknown",
@@ -61,7 +75,6 @@
IDJob = computer_id_slot?.assignment,
)
-
data["removable_media"] = list()
if(inserted_disk)
data["removable_media"] += "Eject Disk"
@@ -86,9 +99,8 @@
data["pai"] = inserted_pai
return data
-
// Handles user's GUI input
-/obj/item/modular_computer/ui_act(action, params)
+/obj/item/modular_computer/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state)
. = ..()
if(.)
return
@@ -99,6 +111,9 @@
balloon_alert(human_user, "fingers are too big!")
return TRUE
+ if(active_program)
+ active_program.ui_act(action, params, ui, state)
+
switch(action)
if("PC_exit")
kill_program()
@@ -107,29 +122,28 @@
shutdown_computer()
return TRUE
if("PC_minimize")
- var/mob/user = usr
if(!active_program)
return
+ //header programs can't be minimized.
+ if(active_program.header_program)
+ kill_program()
+ return TRUE
idle_threads.Add(active_program)
active_program.program_state = PROGRAM_STATE_BACKGROUND // Should close any existing UIs
active_program = null
update_appearance()
- if(user && istype(user))
- ui_interact(user) // Re-open the UI on this computer. It should show the main screen now.
if("PC_killprogram")
var/prog = params["name"]
- var/datum/computer_file/program/P = null
- var/mob/user = usr
- P = find_file_by_name(prog)
+ var/datum/computer_file/program/killed_program = find_file_by_name(prog)
- if(!istype(P) || P.program_state == PROGRAM_STATE_KILLED)
+ if(!istype(killed_program) || killed_program.program_state == PROGRAM_STATE_KILLED)
return
- P.kill_program(forced = TRUE)
- to_chat(user, span_notice("Program [P.filename].[P.filetype] with PID [rand(100,999)] has been killed."))
+ killed_program.kill_program(forced = TRUE)
+ to_chat(usr, span_notice("Program [killed_program.filename].[killed_program.filetype] with PID [rand(100,999)] has been killed."))
if("PC_runprogram")
open_program(usr, find_file_by_name(params["name"]))
@@ -172,7 +186,7 @@
return TRUE
if("ID")
- if(RemoveID())
+ if(RemoveID(user))
playsound(src, 'sound/machines/card_slide.ogg', 50)
return TRUE
@@ -192,8 +206,6 @@
if("interact")
inserted_pai.attack_self(usr)
return UI_UPDATE
- else
- return
/obj/item/modular_computer/ui_host()
if(physical)
diff --git a/code/modules/modular_computers/file_system/program.dm b/code/modules/modular_computers/file_system/program.dm
index bbc190afdff..44b35ff1975 100644
--- a/code/modules/modular_computers/file_system/program.dm
+++ b/code/modules/modular_computers/file_system/program.dm
@@ -143,17 +143,6 @@
to_chat(user, span_danger("\The [computer] flashes an \"Access Denied\" warning."))
return FALSE
-/**
- * This attempts to retrieve header data for UIs.
- *
- * If implementing completely new device of different type than existing ones
- * always include the device here in this proc. This proc basically relays the request to whatever is running the program.
- **/
-/datum/computer_file/program/proc/get_header_data()
- if(computer)
- return computer.get_header_data()
- return list()
-
/**
* Called on program startup.
*
@@ -188,62 +177,3 @@
var/obj/item/card/id/ID = computer.computer_id_slot?.GetID()
generate_network_log("Connection closed -- Program ID: [filename] User:[ID ? "[ID.registered_name]" : "None"]")
return TRUE
-
-/datum/computer_file/program/ui_interact(mob/user, datum/tgui/ui)
- ui = SStgui.try_update_ui(user, src, ui)
- if(!ui && tgui_id)
- ui = new(user, src, tgui_id, filedesc)
- if(ui.open())
- ui.send_asset(get_asset_datum(/datum/asset/simple/headers))
-
-// CONVENTIONS, READ THIS WHEN CREATING NEW PROGRAM AND OVERRIDING THIS PROC:
-// Topic calls are automagically forwarded from NanoModule this program contains.
-// Calls beginning with "PRG_" are reserved for programs handling.
-// Calls beginning with "PC_" are reserved for computer handling (by whatever runs the program)
-// ALWAYS INCLUDE PARENT CALL ..() OR DIE IN FIRE.
-/datum/computer_file/program/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state)
- . = ..()
- if(.)
- return
-
- if(ishuman(usr) && !computer.allow_chunky) //in /obj/item/modular_computer/ui_act() too
- var/mob/living/carbon/human/human_user = usr
- if(human_user.check_chunky_fingers())
- computer.balloon_alert(human_user, "fingers are too big!")
- return TRUE
-
- if(computer)
- switch(action)
- if("PC_exit")
- computer.kill_program()
- ui.close()
- return TRUE
- if("PC_shutdown")
- computer.shutdown_computer()
- ui.close()
- return TRUE
- if("PC_minimize")
- var/mob/user = usr
- if(!computer.active_program)
- return
-
- computer.idle_threads.Add(computer.active_program)
- program_state = PROGRAM_STATE_BACKGROUND // Should close any existing UIs
-
- computer.active_program = null
- computer.update_appearance()
- ui.close()
-
- if(user && istype(user))
- computer.ui_interact(user) // Re-open the UI on this computer. It should show the main screen now.
-
-/datum/computer_file/program/ui_host()
- if(computer.physical)
- return computer.physical
- else
- return computer
-
-/datum/computer_file/program/ui_status(mob/user)
- if(program_state != PROGRAM_STATE_ACTIVE) // Our program was closed. Close the ui if it exists.
- return UI_CLOSE
- return ..()
diff --git a/code/modules/modular_computers/file_system/programs/airestorer.dm b/code/modules/modular_computers/file_system/programs/airestorer.dm
index f451e181ca9..1551da4df37 100644
--- a/code/modules/modular_computers/file_system/programs/airestorer.dm
+++ b/code/modules/modular_computers/file_system/programs/airestorer.dm
@@ -118,7 +118,7 @@
return TRUE
/datum/computer_file/program/ai_restorer/ui_data(mob/user)
- var/list/data = get_header_data()
+ var/list/data = list()
data["ejectable"] = TRUE
data["AI_present"] = !!stored_card?.AI
diff --git a/code/modules/modular_computers/file_system/programs/alarm.dm b/code/modules/modular_computers/file_system/programs/alarm.dm
index ad8f56d6330..7b48ad10252 100644
--- a/code/modules/modular_computers/file_system/programs/alarm.dm
+++ b/code/modules/modular_computers/file_system/programs/alarm.dm
@@ -41,7 +41,7 @@
return 1
/datum/computer_file/program/alarm_monitor/ui_data(mob/user)
- var/list/data = get_header_data()
+ var/list/data = list()
data += alert_control.ui_data(user)
return data
diff --git a/code/modules/modular_computers/file_system/programs/antagonist/dos.dm b/code/modules/modular_computers/file_system/programs/antagonist/dos.dm
index 8574bacfab9..f865ff3a946 100644
--- a/code/modules/modular_computers/file_system/programs/antagonist/dos.dm
+++ b/code/modules/modular_computers/file_system/programs/antagonist/dos.dm
@@ -68,7 +68,7 @@
return TRUE
/datum/computer_file/program/ntnet_dos/ui_data(mob/user)
- var/list/data = get_header_data()
+ var/list/data = list()
data["error"] = error
if(target && executed)
diff --git a/code/modules/modular_computers/file_system/programs/antagonist/revelation.dm b/code/modules/modular_computers/file_system/programs/antagonist/revelation.dm
index 98fe3fe7e05..172fdc7fc42 100644
--- a/code/modules/modular_computers/file_system/programs/antagonist/revelation.dm
+++ b/code/modules/modular_computers/file_system/programs/antagonist/revelation.dm
@@ -64,7 +64,7 @@
return temp
/datum/computer_file/program/revelation/ui_data(mob/user)
- var/list/data = get_header_data()
+ var/list/data = list()
data["armed"] = armed
diff --git a/code/modules/modular_computers/file_system/programs/arcade.dm b/code/modules/modular_computers/file_system/programs/arcade.dm
index cabd789656a..70e12343c2f 100644
--- a/code/modules/modular_computers/file_system/programs/arcade.dm
+++ b/code/modules/modular_computers/file_system/programs/arcade.dm
@@ -82,7 +82,7 @@
)
/datum/computer_file/program/arcade/ui_data(mob/user)
- var/list/data = get_header_data()
+ var/list/data = list()
data["Hitpoints"] = boss_hp
data["PlayerHitpoints"] = player_hp
data["PlayerMP"] = player_mp
@@ -97,7 +97,6 @@
. = ..()
if(.)
return
-
usr.played_game()
var/gamerSkillLevel = 0
diff --git a/code/modules/modular_computers/file_system/programs/atmosscan.dm b/code/modules/modular_computers/file_system/programs/atmosscan.dm
index 64abf2dd9f2..3109278b9e5 100644
--- a/code/modules/modular_computers/file_system/programs/atmosscan.dm
+++ b/code/modules/modular_computers/file_system/programs/atmosscan.dm
@@ -54,7 +54,7 @@
return return_atmos_handbooks()
/datum/computer_file/program/atmosscan/ui_data(mob/user)
- var/list/data = get_header_data()
+ var/list/data = list()
var/turf/turf = get_turf(computer)
data["atmozphereMode"] = atmozphere_mode
data["clickAtmozphereCompatible"] = (computer.hardware_flag & PROGRAM_TABLET)
diff --git a/code/modules/modular_computers/file_system/programs/borg_monitor.dm b/code/modules/modular_computers/file_system/programs/borg_monitor.dm
index 5b041dfe9a1..aedf67dd412 100644
--- a/code/modules/modular_computers/file_system/programs/borg_monitor.dm
+++ b/code/modules/modular_computers/file_system/programs/borg_monitor.dm
@@ -69,7 +69,7 @@
DL_progress += 25
/datum/computer_file/program/borg_monitor/ui_data(mob/user)
- var/list/data = get_header_data()
+ var/list/data = list()
data["card"] = FALSE
if(checkID())
@@ -112,20 +112,19 @@
. = ..()
if(.)
return
-
switch(action)
if("messagebot")
var/mob/living/silicon/robot/R = locate(params["ref"]) in GLOB.silicon_mobs
if(!istype(R))
- return
+ return TRUE
var/ID = checkID()
if(!ID)
- return
+ return TRUE
if(R.stat == DEAD) //Dead borgs will listen to you no longer
to_chat(usr, span_warning("Error -- Could not open a connection to unit:[R]"))
var/message = tgui_input_text(usr, "Message to be sent to remote cyborg", "Send Message")
if(!message)
- return
+ return TRUE
to_chat(R, "
[span_notice("Message from [ID] -- \"[message]\"")]
")
to_chat(usr, "Message sent to [R]: [message]")
R.logevent("Message from [ID] -- \"[message]\"")
@@ -134,6 +133,7 @@
to_chat(R.connected_ai, "
[span_notice("Message from [ID] to [R] -- \"[message]\"")]
")
SEND_SOUND(R.connected_ai, 'sound/machines/twobeep_high.ogg')
usr.log_talk(message, LOG_PDA, tag="Cyborg Monitor Program: ID name \"[ID]\" to [R]")
+ return TRUE
///This proc is used to determin if a borg should be shown in the list (based on the borg's scrambledcodes var). Syndicate version overrides this to show only syndicate borgs.
/datum/computer_file/program/borg_monitor/proc/evaluate_borg(mob/living/silicon/robot/R)
diff --git a/code/modules/modular_computers/file_system/programs/bounty_board.dm b/code/modules/modular_computers/file_system/programs/bounty_board.dm
index 271ac321306..095f1a6e27b 100644
--- a/code/modules/modular_computers/file_system/programs/bounty_board.dm
+++ b/code/modules/modular_computers/file_system/programs/bounty_board.dm
@@ -19,7 +19,7 @@
var/networked = FALSE
/datum/computer_file/program/bounty_board/ui_data(mob/user)
- var/list/data = get_header_data()
+ var/list/data = list()
var/list/formatted_requests = list()
var/list/formatted_applicants = list()
if(current_user)
@@ -82,7 +82,7 @@
for(var/datum/station_request/i in GLOB.request_list)
if("[i.req_number]" == "[current_user.account_id]")
computer.say("Account already has active bounty.")
- return
+ return TRUE
var/datum/station_request/curr_request = new /datum/station_request(current_user.account_holder, bounty_value,bounty_text,current_user.account_id, current_user)
GLOB.request_list += list(curr_request)
for(var/obj/i in GLOB.allbountyboards)
@@ -126,9 +126,10 @@
bounty_value = text2num(params["bountyval"])
if(!bounty_value)
bounty_value = 1
+ return TRUE
if("bountyText")
bounty_text = (params["bountytext"])
- . = TRUE
+ return TRUE
/datum/computer_file/program/bounty_board/Destroy()
GLOB.allbountyboards -= computer
diff --git a/code/modules/modular_computers/file_system/programs/budgetordering.dm b/code/modules/modular_computers/file_system/programs/budgetordering.dm
index a3ba91cd3b4..41cb1638695 100644
--- a/code/modules/modular_computers/file_system/programs/budgetordering.dm
+++ b/code/modules/modular_computers/file_system/programs/budgetordering.dm
@@ -61,8 +61,7 @@
return FALSE
/datum/computer_file/program/budgetorders/ui_data()
- . = ..()
- var/list/data = get_header_data()
+ var/list/data = list()
data["location"] = SSshuttle.supply.getStatusText()
data["department"] = "Cargo"
var/datum/bank_account/buyer = SSeconomy.get_dep_account(cargo_account)
diff --git a/code/modules/modular_computers/file_system/programs/card.dm b/code/modules/modular_computers/file_system/programs/card.dm
index 769865bce01..66fa00ff577 100644
--- a/code/modules/modular_computers/file_system/programs/card.dm
+++ b/code/modules/modular_computers/file_system/programs/card.dm
@@ -77,7 +77,6 @@
. = ..()
if(.)
return
-
var/mob/user = usr
var/obj/item/card/id/inserted_auth_card = computer.computer_id_slot
@@ -287,7 +286,7 @@
return data
/datum/computer_file/program/card_mod/ui_data(mob/user)
- var/list/data = get_header_data()
+ var/list/data = list()
var/obj/item/card/id/inserted_id = computer.computer_id_slot
data["authIDName"] = inserted_id ? inserted_id.name : "-----"
diff --git a/code/modules/modular_computers/file_system/programs/cargoship.dm b/code/modules/modular_computers/file_system/programs/cargoship.dm
index 69932aedd1c..9e8c6430af1 100644
--- a/code/modules/modular_computers/file_system/programs/cargoship.dm
+++ b/code/modules/modular_computers/file_system/programs/cargoship.dm
@@ -17,7 +17,7 @@
var/cut_min = 0.01
/datum/computer_file/program/shipping/ui_data(mob/user)
- var/list/data = get_header_data()
+ var/list/data = list()
data["has_id_slot"] = !!computer.computer_id_slot
data["paperamt"] = "[computer.stored_paper] / [computer.max_paper]"
@@ -30,21 +30,18 @@
. = ..()
if(.)
return
- if(!computer)
- return
-
if(!computer.computer_id_slot) //We need an ID to successfully run
- return
+ return FALSE
switch(action)
if("ejectid")
computer.RemoveID(usr)
if("selectid")
if(!computer.computer_id_slot.registered_account)
- playsound(get_turf(ui_host()), 'sound/machines/buzz-sigh.ogg', 50, TRUE, -1)
- return
+ playsound(get_turf(computer.ui_host()), 'sound/machines/buzz-sigh.ogg', 50, TRUE, -1)
+ return TRUE
payments_acc = computer.computer_id_slot.registered_account
- playsound(get_turf(ui_host()), 'sound/machines/ping.ogg', 50, TRUE, -1)
+ playsound(get_turf(computer.ui_host()), 'sound/machines/ping.ogg', 50, TRUE, -1)
if("resetid")
payments_acc = null
if("setsplit")
@@ -53,11 +50,11 @@
if("print")
if(computer.stored_paper <= 0)
to_chat(usr, span_notice("Printer is out of paper."))
- return
+ return TRUE
if(!payments_acc)
to_chat(usr, span_notice("Software error: Please set a current user first."))
- return
- var/obj/item/barcode/barcode = new /obj/item/barcode(get_turf(ui_host()))
+ return TRUE
+ var/obj/item/barcode/barcode = new /obj/item/barcode(get_turf(computer.ui_host()))
barcode.payments_acc = payments_acc
barcode.cut_multiplier = cut_multiplier
computer.stored_paper--
diff --git a/code/modules/modular_computers/file_system/programs/crewmanifest.dm b/code/modules/modular_computers/file_system/programs/crewmanifest.dm
index 345bee97d90..a69791ae4da 100644
--- a/code/modules/modular_computers/file_system/programs/crewmanifest.dm
+++ b/code/modules/modular_computers/file_system/programs/crewmanifest.dm
@@ -12,7 +12,7 @@
detomatix_resistance = DETOMATIX_RESIST_MAJOR
/datum/computer_file/program/crew_manifest/ui_static_data(mob/user)
- var/list/data = get_header_data()
+ var/list/data = list()
data["manifest"] = GLOB.manifest.get_manifest()
return data
@@ -20,7 +20,6 @@
. = ..()
if(.)
return
-
switch(action)
if("PRG_print")
if(computer) //This option should never be called if there is no printer
diff --git a/code/modules/modular_computers/file_system/programs/emojipedia.dm b/code/modules/modular_computers/file_system/programs/emojipedia.dm
index e4835f2da8d..277311491a7 100644
--- a/code/modules/modular_computers/file_system/programs/emojipedia.dm
+++ b/code/modules/modular_computers/file_system/programs/emojipedia.dm
@@ -17,7 +17,7 @@
emoji_list = sortTim(emoji_list, GLOBAL_PROC_REF(cmp_text_asc))
/datum/computer_file/program/emojipedia/ui_static_data(mob_user)
- var/list/data = get_header_data()
+ var/list/data = list()
for(var/emoji in emoji_list)
data["emoji_list"] += list(list(
"name" = emoji,
diff --git a/code/modules/modular_computers/file_system/programs/file_browser.dm b/code/modules/modular_computers/file_system/programs/file_browser.dm
index 7bb2fa34197..377f469518c 100644
--- a/code/modules/modular_computers/file_system/programs/file_browser.dm
+++ b/code/modules/modular_computers/file_system/programs/file_browser.dm
@@ -17,7 +17,6 @@
. = ..()
if(.)
return
-
switch(action)
if("PRG_deletefile")
var/datum/computer_file/file = computer.find_file_by_name(params["name"])
@@ -82,7 +81,7 @@
binary.alert_silenced = !binary.alert_silenced
/datum/computer_file/program/filemanager/ui_data(mob/user)
- var/list/data = get_header_data()
+ var/list/data = list()
if(error)
data["error"] = error
if(!computer)
diff --git a/code/modules/modular_computers/file_system/programs/frontier.dm b/code/modules/modular_computers/file_system/programs/frontier.dm
index 9df43887ebe..9e33256da74 100644
--- a/code/modules/modular_computers/file_system/programs/frontier.dm
+++ b/code/modules/modular_computers/file_system/programs/frontier.dm
@@ -83,7 +83,7 @@
/datum/computer_file/program/scipaper_program/ui_data()
// Program Headers:
- var/list/data = get_header_data()
+ var/list/data = list()
data["currentTab"] = current_tab
data["has_techweb"] = !!linked_techweb
@@ -168,7 +168,6 @@
. = ..()
if (.)
return
-
switch(action)
if("et_alia")
paper_to_be.et_alia = !paper_to_be.et_alia
@@ -226,7 +225,7 @@
playsound(computer, 'sound/machines/ping.ogg', 25)
return TRUE
playsound(computer, 'sound/machines/terminal_error.ogg', 25)
- return FALSE
+ return TRUE
/// Publication and adding points.
/datum/computer_file/program/scipaper_program/proc/publish()
diff --git a/code/modules/modular_computers/file_system/programs/jobmanagement.dm b/code/modules/modular_computers/file_system/programs/jobmanagement.dm
index 0ed4886b894..8f9895ceefd 100644
--- a/code/modules/modular_computers/file_system/programs/jobmanagement.dm
+++ b/code/modules/modular_computers/file_system/programs/jobmanagement.dm
@@ -73,17 +73,16 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
. = ..()
if(.)
return
-
var/obj/item/card/id/user_id = computer.computer_id_slot
if(!user_id || !(ACCESS_CHANGE_IDS in user_id.access))
- return
+ return TRUE
switch(action)
if("PRG_open_job")
var/edit_job_target = params["target"]
var/datum/job/j = SSjob.GetJob(edit_job_target)
if(!j || !can_open_job(j))
- return
+ return TRUE
if(opened_positions[edit_job_target] >= 0)
GLOB.time_last_changed_position = world.time / 10
j.total_positions++
@@ -95,7 +94,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
var/edit_job_target = params["target"]
var/datum/job/j = SSjob.GetJob(edit_job_target)
if(!j || !can_close_job(j))
- return
+ return TRUE
//Allow instant closing without cooldown if a position has been opened before
if(opened_positions[edit_job_target] <= 0)
GLOB.time_last_changed_position = world.time / 10
@@ -108,9 +107,9 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
var/priority_target = params["target"]
var/datum/job/j = SSjob.GetJob(priority_target)
if(!j || !can_edit_job(j))
- return
+ return TRUE
if(j.total_positions <= j.current_positions)
- return
+ return TRUE
if(j in SSjob.prioritized_jobs)
SSjob.prioritized_jobs -= j
else
@@ -123,7 +122,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
/datum/computer_file/program/job_management/ui_data(mob/user)
- var/list/data = get_header_data()
+ var/list/data = list()
var/authed = FALSE
var/obj/item/card/id/user_id = computer.computer_id_slot
diff --git a/code/modules/modular_computers/file_system/programs/maintenance/camera.dm b/code/modules/modular_computers/file_system/programs/maintenance/camera.dm
index c5a89fb6f59..548dda4a750 100644
--- a/code/modules/modular_computers/file_system/programs/maintenance/camera.dm
+++ b/code/modules/modular_computers/file_system/programs/maintenance/camera.dm
@@ -38,7 +38,7 @@
computer.save_photo(internal_picture.picture_image)
/datum/computer_file/program/maintenance/camera/ui_data(mob/user)
- var/list/data = get_header_data()
+ var/list/data = list()
if(!isnull(internal_picture))
user << browse_rsc(internal_picture.picture_image, "tmp_photo[picture_number].png")
@@ -52,7 +52,6 @@
. = ..()
if(.)
return
-
var/mob/living/user = usr
switch(action)
if("print_photo")
diff --git a/code/modules/modular_computers/file_system/programs/maintenance/modsuit.dm b/code/modules/modular_computers/file_system/programs/maintenance/modsuit.dm
index c2141e467e2..253048eec55 100644
--- a/code/modules/modular_computers/file_system/programs/maintenance/modsuit.dm
+++ b/code/modules/modular_computers/file_system/programs/maintenance/modsuit.dm
@@ -32,18 +32,17 @@
controlled_suit = null
/datum/computer_file/program/maintenance/modsuit_control/ui_data(mob/user)
- var/list/data = get_header_data()
+ var/list/data = list()
data["has_suit"] = !!controlled_suit
if(controlled_suit)
data += controlled_suit.ui_data()
return data
/datum/computer_file/program/maintenance/modsuit_control/ui_static_data(mob/user)
- return controlled_suit.ui_static_data()
+ return controlled_suit?.ui_static_data()
/datum/computer_file/program/maintenance/modsuit_control/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state)
. = ..()
if(.)
return
-
- controlled_suit.ui_act(action, params, ui)
+ controlled_suit.ui_act(action, params, ui, state)
diff --git a/code/modules/modular_computers/file_system/programs/maintenance/phys_scanner.dm b/code/modules/modular_computers/file_system/programs/maintenance/phys_scanner.dm
index dd52dce439f..5162aa7ddc0 100644
--- a/code/modules/modular_computers/file_system/programs/maintenance/phys_scanner.dm
+++ b/code/modules/modular_computers/file_system/programs/maintenance/phys_scanner.dm
@@ -20,7 +20,7 @@
last_record = healthscan(user, carbon, 1, tochat = FALSE)
/datum/computer_file/program/maintenance/phys_scanner/ui_data(mob/user)
- var/list/data = get_header_data()
+ var/list/data = list()
data["last_record"] = last_record
return data
diff --git a/code/modules/modular_computers/file_system/programs/newscasterapp.dm b/code/modules/modular_computers/file_system/programs/newscasterapp.dm
index 8b422470fda..b5811636a80 100644
--- a/code/modules/modular_computers/file_system/programs/newscasterapp.dm
+++ b/code/modules/modular_computers/file_system/programs/newscasterapp.dm
@@ -22,7 +22,7 @@
return ..()
/datum/computer_file/program/newscaster/ui_data(mob/user)
- var/list/data = get_header_data()
+ var/list/data = list()
data += newscaster_ui.ui_data(user)
return data
diff --git a/code/modules/modular_computers/file_system/programs/notepad.dm b/code/modules/modular_computers/file_system/programs/notepad.dm
index ce823c6eaa9..aa5cbf94f35 100644
--- a/code/modules/modular_computers/file_system/programs/notepad.dm
+++ b/code/modules/modular_computers/file_system/programs/notepad.dm
@@ -16,14 +16,13 @@
. = ..()
if(.)
return
-
switch(action)
if("UpdateNote")
written_note = params["newnote"]
return UI_UPDATE
/datum/computer_file/program/notepad/ui_data(mob/user)
- var/list/data = get_header_data()
+ var/list/data = list()
data["note"] = written_note
diff --git a/code/modules/modular_computers/file_system/programs/nt_pay.dm b/code/modules/modular_computers/file_system/programs/nt_pay.dm
index 31056604305..0204f704fe5 100644
--- a/code/modules/modular_computers/file_system/programs/nt_pay.dm
+++ b/code/modules/modular_computers/file_system/programs/nt_pay.dm
@@ -21,7 +21,6 @@
. = ..()
if(.)
return
-
switch(action)
if("Transaction")
token = params["token"]
@@ -62,7 +61,7 @@
/datum/computer_file/program/nt_pay/ui_data(mob/user)
- var/list/data = get_header_data()
+ var/list/data = list()
current_user = computer.computer_id_slot?.registered_account || null
if(!current_user)
diff --git a/code/modules/modular_computers/file_system/programs/ntdownloader.dm b/code/modules/modular_computers/file_system/programs/ntdownloader.dm
index 2f037a8efb2..dce6dd5dd91 100644
--- a/code/modules/modular_computers/file_system/programs/ntdownloader.dm
+++ b/code/modules/modular_computers/file_system/programs/ntdownloader.dm
@@ -118,7 +118,7 @@
return FALSE
/datum/computer_file/program/ntnetdownload/ui_data(mob/user)
- var/list/data = get_header_data()
+ var/list/data = list()
var/list/access = computer.GetAccess()
data["downloading"] = !!downloaded_file
diff --git a/code/modules/modular_computers/file_system/programs/ntmessenger.dm b/code/modules/modular_computers/file_system/programs/ntmessenger.dm
index 3d7b5a4633d..5ec7e19b2b3 100644
--- a/code/modules/modular_computers/file_system/programs/ntmessenger.dm
+++ b/code/modules/modular_computers/file_system/programs/ntmessenger.dm
@@ -108,7 +108,6 @@
. = ..()
if(.)
return
-
switch(action)
if("PDA_ringSet")
var/new_ringtone = tgui_input_text(usr, "Enter a new ringtone", "Ringtone", ringtone, MESSENGER_RINGTONE_MAX_LENGTH)
@@ -220,7 +219,7 @@
return data
/datum/computer_file/program/messenger/ui_data(mob/user)
- var/list/data = get_header_data()
+ var/list/data = list()
data["messages"] = messages
data["messengers"] = ScrubMessengerList()
diff --git a/code/modules/modular_computers/file_system/programs/ntnrc_client.dm b/code/modules/modular_computers/file_system/programs/ntnrc_client.dm
index 54b0402ad60..4ae73086712 100644
--- a/code/modules/modular_computers/file_system/programs/ntnrc_client.dm
+++ b/code/modules/modular_computers/file_system/programs/ntnrc_client.dm
@@ -52,7 +52,6 @@
. = ..()
if(.)
return
-
var/datum/ntnet_conversation/channel = SSmodular_computers.get_chat_channel_by_id(active_channel)
var/authed = FALSE
if(channel && ((channel.channel_operator == src) || netadmin_mode))
@@ -218,7 +217,7 @@
return data
/datum/computer_file/program/chatclient/ui_data(mob/user)
- var/list/data = get_header_data()
+ var/list/data = list()
if(!SSmodular_computers.chat_channels)
return data
diff --git a/code/modules/modular_computers/file_system/programs/powermonitor.dm b/code/modules/modular_computers/file_system/programs/powermonitor.dm
index a4ce9cd4dfb..1fdd91878fb 100644
--- a/code/modules/modular_computers/file_system/programs/powermonitor.dm
+++ b/code/modules/modular_computers/file_system/programs/powermonitor.dm
@@ -78,8 +78,8 @@
demand.Cut(1, 2)
/datum/computer_file/program/power_monitor/ui_data()
+ var/list/data = list()
var/datum/powernet/connected_powernet = get_powernet()
- var/list/data = get_header_data()
data["stored"] = record_size
data["interval"] = record_interval / 10
data["attached"] = connected_powernet ? TRUE : FALSE
diff --git a/code/modules/modular_computers/file_system/programs/radar.dm b/code/modules/modular_computers/file_system/programs/radar.dm
index 6ad369e8433..186f019dda5 100644
--- a/code/modules/modular_computers/file_system/programs/radar.dm
+++ b/code/modules/modular_computers/file_system/programs/radar.dm
@@ -45,7 +45,7 @@
)
/datum/computer_file/program/radar/ui_data(mob/user)
- var/list/data = get_header_data()
+ var/list/data = list()
data["selected"] = selected
data["objects"] = list()
data["scanning"] = (world.time < next_scan)
@@ -66,7 +66,6 @@
. = ..()
if(.)
return
-
switch(action)
if("selecttarget")
selected = params["ref"]
diff --git a/code/modules/modular_computers/file_system/programs/records.dm b/code/modules/modular_computers/file_system/programs/records.dm
index 3ba04d80166..7f3d099b719 100644
--- a/code/modules/modular_computers/file_system/programs/records.dm
+++ b/code/modules/modular_computers/file_system/programs/records.dm
@@ -64,7 +64,7 @@
/datum/computer_file/program/records/ui_data(mob/user)
- var/list/data = get_header_data()
+ var/list/data = list()
data["records"] = GetRecordsReadable()
data["mode"] = mode
return data
diff --git a/code/modules/modular_computers/file_system/programs/robocontrol.dm b/code/modules/modular_computers/file_system/programs/robocontrol.dm
index fe053b7cc25..9d1f1542ae7 100644
--- a/code/modules/modular_computers/file_system/programs/robocontrol.dm
+++ b/code/modules/modular_computers/file_system/programs/robocontrol.dm
@@ -22,8 +22,8 @@
)
/datum/computer_file/program/robocontrol/ui_data(mob/user)
- var/list/data = get_header_data()
- var/turf/current_turf = get_turf(ui_host())
+ var/list/data = list()
+ var/turf/current_turf = get_turf(computer.ui_host())
var/list/botlist = list()
var/list/mulelist = list()
@@ -85,7 +85,7 @@
/datum/computer_file/program/robocontrol/ui_act(action, list/params, datum/tgui/ui)
. = ..()
- if(.)
+ if (.)
return
var/mob/current_user = ui.user
var/obj/item/card/id/id_card = computer?.computer_id_slot
@@ -124,7 +124,7 @@
GLOB.manifest.modify(id_card.registered_name, id_card.assignment, id_card.get_trim_assignment())
computer.RemoveID(usr)
else
- playsound(get_turf(ui_host()) , 'sound/machines/buzz-sigh.ogg', 25, FALSE)
+ playsound(get_turf(computer.ui_host()) , 'sound/machines/buzz-sigh.ogg', 25, FALSE)
if("changedroneaccess")
if(!computer || !computer.computer_id_slot || !id_card)
to_chat(current_user, span_notice("No ID found, authorization failed."))
diff --git a/code/modules/modular_computers/file_system/programs/robotact.dm b/code/modules/modular_computers/file_system/programs/robotact.dm
index dd24d739b33..b218aad9113 100644
--- a/code/modules/modular_computers/file_system/programs/robotact.dm
+++ b/code/modules/modular_computers/file_system/programs/robotact.dm
@@ -26,7 +26,7 @@
return FALSE
/datum/computer_file/program/robotact/ui_data(mob/user)
- var/list/data = get_header_data()
+ var/list/data = list()
if(!iscyborg(user))
return data
diff --git a/code/modules/modular_computers/file_system/programs/secureye.dm b/code/modules/modular_computers/file_system/programs/secureye.dm
index 71cdeb9eb9c..67cfd6dcecb 100644
--- a/code/modules/modular_computers/file_system/programs/secureye.dm
+++ b/code/modules/modular_computers/file_system/programs/secureye.dm
@@ -72,7 +72,7 @@
return .
/datum/computer_file/program/secureye/ui_data()
- var/list/data = get_header_data()
+ var/list/data = list()
data["network"] = network
data["activeCamera"] = null
var/obj/machinery/camera/active_camera = camera_ref?.resolve()
@@ -100,7 +100,6 @@
. = ..()
if(.)
return
-
if(action == "switch_camera")
var/c_tag = format_text(params["name"])
var/list/cameras = get_available_cameras()
diff --git a/code/modules/modular_computers/file_system/programs/signalcommander.dm b/code/modules/modular_computers/file_system/programs/signalcommander.dm
index 830160118c1..a92d744e525 100644
--- a/code/modules/modular_computers/file_system/programs/signalcommander.dm
+++ b/code/modules/modular_computers/file_system/programs/signalcommander.dm
@@ -24,7 +24,7 @@
SSradio.remove_object(computer, signal_frequency)
/datum/computer_file/program/signal_commander/ui_data(mob/user)
- var/list/data = get_header_data()
+ var/list/data = list()
data["frequency"] = signal_frequency
data["code"] = signal_code
data["minFrequency"] = MIN_FREE_FREQ
diff --git a/code/modules/modular_computers/file_system/programs/skill_tracker.dm b/code/modules/modular_computers/file_system/programs/skill_tracker.dm
index 36eccef338b..a3ba60acde8 100644
--- a/code/modules/modular_computers/file_system/programs/skill_tracker.dm
+++ b/code/modules/modular_computers/file_system/programs/skill_tracker.dm
@@ -10,7 +10,7 @@
usage_flags = PROGRAM_TABLET // Must be a handheld device to read read your chakras or whatever
/datum/computer_file/program/skill_tracker/ui_data(mob/user)
- var/list/data = get_header_data()
+ var/list/data = list()
var/list/skills = list()
data["skills"] = skills
@@ -54,7 +54,6 @@
. = ..()
if(.)
return
-
switch(action)
if("PRG_reward")
var/skill_type = find_skilltype(params["skill"])
diff --git a/code/modules/modular_computers/file_system/programs/sm_monitor.dm b/code/modules/modular_computers/file_system/programs/sm_monitor.dm
index ad2918b90e0..3bf0136c50b 100644
--- a/code/modules/modular_computers/file_system/programs/sm_monitor.dm
+++ b/code/modules/modular_computers/file_system/programs/sm_monitor.dm
@@ -31,7 +31,7 @@
/datum/computer_file/program/supermatter_monitor/proc/refresh()
for(var/supermatter in supermatters)
clear_supermatter(supermatter)
- var/turf/user_turf = get_turf(ui_host())
+ var/turf/user_turf = get_turf(computer.ui_host())
if(!user_turf)
return
for(var/obj/machinery/power/supermatter_crystal/sm in GLOB.machines)
@@ -47,7 +47,7 @@
return data
/datum/computer_file/program/supermatter_monitor/ui_data(mob/user)
- var/list/data = get_header_data()
+ var/list/data = list()
data["sm_data"] = list()
for (var/obj/machinery/power/supermatter_crystal/sm as anything in supermatters)
data["sm_data"] += list(sm.sm_ui_data())
@@ -58,7 +58,6 @@
. = ..()
if(.)
return
-
switch(action)
if("PRG_refresh")
refresh()
diff --git a/code/modules/modular_computers/file_system/programs/statusdisplay.dm b/code/modules/modular_computers/file_system/programs/statusdisplay.dm
index 34911e93a16..737ed0eda51 100644
--- a/code/modules/modular_computers/file_system/programs/statusdisplay.dm
+++ b/code/modules/modular_computers/file_system/programs/statusdisplay.dm
@@ -66,7 +66,6 @@
. = ..()
if(.)
return
-
switch(action)
if("setStatusMessage")
upper_text = reject_bad_text(params["upperText"] || "", MAX_STATUS_LINE_LENGTH)
@@ -83,7 +82,7 @@
return data
/datum/computer_file/program/status/ui_data(mob/user)
- var/list/data = get_header_data()
+ var/list/data = list()
data["upperText"] = upper_text
data["lowerText"] = lower_text
diff --git a/code/modules/modular_computers/file_system/programs/techweb.dm b/code/modules/modular_computers/file_system/programs/techweb.dm
index 2e609a24374..6b370162b7a 100644
--- a/code/modules/modular_computers/file_system/programs/techweb.dm
+++ b/code/modules/modular_computers/file_system/programs/techweb.dm
@@ -41,7 +41,7 @@
// heavy data from this proc should be moved to static data when possible
/datum/computer_file/program/science/ui_data(mob/user)
- var/list/data = get_header_data()
+ var/list/data = list()
data["stored_research"] = !!stored_research
if(!stored_research) //lack of a research node is all we care about.
return data
@@ -92,7 +92,6 @@
. = ..()
if (.)
return
-
// Check if the console is locked to block any actions occuring
if (locked && action != "toggleLock")
computer.say("Console is locked, cannot perform further actions.")
diff --git a/code/modules/modular_computers/file_system/programs/theme_selector.dm b/code/modules/modular_computers/file_system/programs/theme_selector.dm
index 1fa0322d472..45972a76136 100644
--- a/code/modules/modular_computers/file_system/programs/theme_selector.dm
+++ b/code/modules/modular_computers/file_system/programs/theme_selector.dm
@@ -15,7 +15,7 @@
var/list/imported_themes = list()
/datum/computer_file/program/themeify/ui_data(mob/user)
- var/list/data = get_header_data()
+ var/list/data = list()
if(computer.obj_flags & EMAGGED)
data["themes"] += list(list("theme_name" = SYNDICATE_THEME_NAME, "theme_ref" = GLOB.pda_name_to_theme[SYNDICATE_THEME_NAME]))
@@ -28,7 +28,6 @@
. = ..()
if(.)
return
-
switch(action)
if("PRG_change_theme")
var/selected_theme = params["selected_theme"]
diff --git a/code/modules/modular_computers/file_system/programs/wirecarp.dm b/code/modules/modular_computers/file_system/programs/wirecarp.dm
index cd23656227e..f12b8949673 100644
--- a/code/modules/modular_computers/file_system/programs/wirecarp.dm
+++ b/code/modules/modular_computers/file_system/programs/wirecarp.dm
@@ -40,7 +40,7 @@
messenger_app.spam_mode = !messenger_app.spam_mode
/datum/computer_file/program/ntnetmonitor/ui_data(mob/user)
- var/list/data = get_header_data()
+ var/list/data = list()
data["ntnetstatus"] = SSmodular_computers.check_function()
data["ntnetrelays"] = SSmodular_computers.ntnet_relays.len
diff --git a/code/modules/tgui/tgui.dm b/code/modules/tgui/tgui.dm
index be03e118917..6c1d17d5e4f 100644
--- a/code/modules/tgui/tgui.dm
+++ b/code/modules/tgui/tgui.dm
@@ -103,14 +103,7 @@
))
else
window.send_message("ping")
- var/flush_queue = window.send_asset(get_asset_datum(
- /datum/asset/simple/namespaced/fontawesome))
- flush_queue |= window.send_asset(get_asset_datum(
- /datum/asset/simple/namespaced/tgfont))
- for(var/datum/asset/asset in src_object.ui_assets(user))
- flush_queue |= window.send_asset(asset)
- if (flush_queue)
- user.client.browse_queue_flush()
+ send_assets()
window.send_message("update", get_payload(
with_data = TRUE,
with_static_data = TRUE))
@@ -120,6 +113,16 @@
return TRUE
+/datum/tgui/proc/send_assets()
+ var/flush_queue = window.send_asset(get_asset_datum(
+ /datum/asset/simple/namespaced/fontawesome))
+ flush_queue |= window.send_asset(get_asset_datum(
+ /datum/asset/simple/namespaced/tgfont))
+ for(var/datum/asset/asset in src_object.ui_assets(user))
+ flush_queue |= window.send_asset(asset)
+ if (flush_queue)
+ user.client.browse_queue_flush()
+
/**
* public
*
diff --git a/modular_skyrat/modules/contractor/code/datums/contractor_tablet.dm b/modular_skyrat/modules/contractor/code/datums/contractor_tablet.dm
index 83e9faed063..c4d51757d0b 100644
--- a/modular_skyrat/modules/contractor/code/datums/contractor_tablet.dm
+++ b/modular_skyrat/modules/contractor/code/datums/contractor_tablet.dm
@@ -136,7 +136,7 @@
if (uplink_computer?.opfor_data)
var/datum/opposing_force/opfor_data = uplink_computer.opfor_data
- data += get_header_data()
+ data += list()
if (opfor_data.contractor_hub.current_contract)
data["ongoing_contract"] = TRUE
diff --git a/modular_skyrat/modules/lorecaster/code/archive_viewer.dm b/modular_skyrat/modules/lorecaster/code/archive_viewer.dm
index c428c3af2e3..1594444c843 100644
--- a/modular_skyrat/modules/lorecaster/code/archive_viewer.dm
+++ b/modular_skyrat/modules/lorecaster/code/archive_viewer.dm
@@ -18,7 +18,7 @@
story_list = generate_stories()
/datum/computer_file/program/news_archive/ui_data(mob/user)
- var/list/data = get_header_data()
+ var/list/data = list()
return data
/datum/computer_file/program/news_archive/ui_static_data(mob/user)
diff --git a/modular_skyrat/modules/modular_implants/code/nifsoft_catalog.dm b/modular_skyrat/modules/modular_implants/code/nifsoft_catalog.dm
index d2603d25925..a5bf8eaacb6 100644
--- a/modular_skyrat/modules/modular_implants/code/nifsoft_catalog.dm
+++ b/modular_skyrat/modules/modular_implants/code/nifsoft_catalog.dm
@@ -36,7 +36,7 @@ GLOBAL_LIST_INIT(purchasable_nifsofts, list(
return data
/datum/computer_file/program/nifsoft_downloader/ui_static_data(mob/user)
- var/list/data = get_header_data()
+ var/list/data = list()
var/list/product_list = list()
var/mob/living/carbon/human/nif_user = user
diff --git a/tgui/packages/tgui/interfaces/NtosMain.js b/tgui/packages/tgui/interfaces/NtosMain.js
index 472f2d153d0..8debe5d93be 100644
--- a/tgui/packages/tgui/interfaces/NtosMain.js
+++ b/tgui/packages/tgui/interfaces/NtosMain.js
@@ -78,14 +78,14 @@ export const NtosMain = (props, context) => {
selected={light_on}
onClick={() => act('PC_toggle_light')}
/>
-