diff --git a/code/game/machinery/telecomms/machines/message_server.dm b/code/game/machinery/telecomms/machines/message_server.dm index c683ff510c8..bba8fa1494e 100644 --- a/code/game/machinery/telecomms/machines/message_server.dm +++ b/code/game/machinery/telecomms/machines/message_server.dm @@ -77,7 +77,6 @@ circuit = /obj/item/circuitboard/machine/telecomms/message_server var/list/datum/data_tablet_msg/pda_msgs = list() - var/list/datum/data_tablet_msg/modular_msgs = list() var/list/datum/data_rc_msg/rc_msgs = list() var/decryptkey = "password" var/calibrating = 15 MINUTES //Init reads this and adds world.time, then becomes 0 when that time has passed and the machine works diff --git a/code/modules/modular_computers/computers/item/role_tablet_presets.dm b/code/modules/modular_computers/computers/item/role_tablet_presets.dm index cff4cd7847f..5e76089ad04 100644 --- a/code/modules/modular_computers/computers/item/role_tablet_presets.dm +++ b/code/modules/modular_computers/computers/item/role_tablet_presets.dm @@ -26,6 +26,11 @@ /obj/item/modular_computer/tablet/pda/heads/captain/Initialize(mapload) . = ..() RegisterSignal(src, COMSIG_TABLET_CHECK_DETONATE, .proc/tab_no_detonate) + var/obj/item/computer_hardware/hard_drive/drive = all_components[MC_HDD] + if(!drive) + return + for(var/datum/computer_file/program/messenger/messenger_app in drive.stored_files) + messenger_app.spam_mode = TRUE /obj/item/modular_computer/tablet/pda/heads/hop name = "head of personnel PDA" @@ -274,6 +279,14 @@ /datum/computer_file/program/records/security, ) +/obj/item/modular_computer/tablet/pda/lawyer/Initialize(mapload) + . = ..() + var/obj/item/computer_hardware/hard_drive/drive = all_components[MC_HDD] + if(!drive) + return + for(var/datum/computer_file/program/messenger/messenger_app in drive.stored_files) + messenger_app.spam_mode = TRUE + /obj/item/modular_computer/tablet/pda/botanist name = "botanist PDA" greyscale_config = /datum/greyscale_config/tablet/stripe_thick diff --git a/code/modules/modular_computers/file_system/programs/ntmessenger.dm b/code/modules/modular_computers/file_system/programs/ntmessenger.dm index 3c6fa2e7160..c93b3d81179 100644 --- a/code/modules/modular_computers/file_system/programs/ntmessenger.dm +++ b/code/modules/modular_computers/file_system/programs/ntmessenger.dm @@ -45,6 +45,8 @@ var/is_silicon = FALSE /// Whether or not we're in a mime PDA. var/mime_mode = FALSE + /// Whether this app can send messages to all. + var/spam_mode = FALSE /datum/computer_file/program/messenger/proc/ScrubMessengerList() var/list/dictionary = list() @@ -185,11 +187,7 @@ data["sortByJob"] = sort_by_job data["isSilicon"] = is_silicon data["photo"] = photo_path - - var/obj/item/computer_hardware/card_slot/card_slot = computer.all_components[MC_CARD] - if(card_slot) - var/obj/item/card/id/id_card = card_slot ? card_slot.stored_card : "" - data["canSpam"] = (ACCESS_LAWYER in id_card?.access) + data["canSpam"] = spam_mode var/obj/item/computer_hardware/hard_drive/portable/virus/disk = computer.all_components[MC_SDD] if(disk) diff --git a/code/modules/modular_computers/file_system/programs/ntmonitor.dm b/code/modules/modular_computers/file_system/programs/wirecarp.dm similarity index 66% rename from code/modules/modular_computers/file_system/programs/ntmonitor.dm rename to code/modules/modular_computers/file_system/programs/wirecarp.dm index 5a34488fd22..24f63cf7258 100644 --- a/code/modules/modular_computers/file_system/programs/ntmonitor.dm +++ b/code/modules/modular_computers/file_system/programs/wirecarp.dm @@ -11,7 +11,7 @@ tgui_id = "NtosNetMonitor" program_icon = "network-wired" -/datum/computer_file/program/ntnetmonitor/ui_act(action, params) +/datum/computer_file/program/ntnetmonitor/ui_act(action, list/params, datum/tgui/ui) . = ..() if(.) return @@ -49,6 +49,20 @@ return SSnetworks.station_network.toggle_function(text2num(params["id"])) return TRUE + if("toggle_mass_pda") + if(!SSnetworks.station_network) + return + var/mob/user = ui.user + + var/obj/item/modular_computer/target_tablet = locate(params["ref"]) in GLOB.TabletMessengers + if(!istype(target_tablet)) + return + var/obj/item/computer_hardware/hard_drive/drive = target_tablet.all_components[MC_HDD] + if(!drive) + to_chat(user, span_boldnotice("Target tablet somehow is lacking a hard drive.")) + return + for(var/datum/computer_file/program/messenger/messenger_app in drive.stored_files) + messenger_app.spam_mode = !messenger_app.spam_mode /datum/computer_file/program/ntnetmonitor/ui_data(mob/user) if(!SSnetworks.station_network) @@ -73,4 +87,19 @@ data["ntnetlogs"] += list(list("entry" = i)) data["ntnetmaxlogs"] = SSnetworks.setting_maxlogcount + data["tablets"] = list() + for(var/obj/item/modular_computer/messenger in GetViewableDevices()) + var/list/tablet_data = list() + if(messenger.saved_identification) + var/obj/item/computer_hardware/hard_drive/drive = messenger.all_components[MC_HDD] + if(!drive) + continue + for(var/datum/computer_file/program/messenger/messenger_app in drive.stored_files) + tablet_data["enabled_spam"] += messenger_app.spam_mode + + tablet_data["name"] += messenger.saved_identification + tablet_data["ref"] += REF(messenger) + + data["tablets"] += list(tablet_data) + return data diff --git a/tgstation.dme b/tgstation.dme index 07b7c41e2d2..f2467f23d1c 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -3613,7 +3613,6 @@ #include "code\modules\modular_computers\file_system\programs\notepad.dm" #include "code\modules\modular_computers\file_system\programs\ntdownloader.dm" #include "code\modules\modular_computers\file_system\programs\ntmessenger.dm" -#include "code\modules\modular_computers\file_system\programs\ntmonitor.dm" #include "code\modules\modular_computers\file_system\programs\ntnrc_client.dm" #include "code\modules\modular_computers\file_system\programs\phys_scanner.dm" #include "code\modules\modular_computers\file_system\programs\portrait_printer.dm" @@ -3628,6 +3627,7 @@ #include "code\modules\modular_computers\file_system\programs\sm_monitor.dm" #include "code\modules\modular_computers\file_system\programs\statusdisplay.dm" #include "code\modules\modular_computers\file_system\programs\techweb.dm" +#include "code\modules\modular_computers\file_system\programs\wirecarp.dm" #include "code\modules\modular_computers\file_system\programs\antagonist\dos.dm" #include "code\modules\modular_computers\file_system\programs\antagonist\revelation.dm" #include "code\modules\modular_computers\hardware\_hardware.dm" diff --git a/tgui/packages/tgui/interfaces/NtosNetMonitor.js b/tgui/packages/tgui/interfaces/NtosNetMonitor.js index f0aaad2231a..eed9acef9f7 100644 --- a/tgui/packages/tgui/interfaces/NtosNetMonitor.js +++ b/tgui/packages/tgui/interfaces/NtosNetMonitor.js @@ -1,9 +1,10 @@ -import { useBackend } from '../backend'; -import { Box, Button, LabeledList, NoticeBox, NumberInput, Section } from '../components'; +import { useBackend, useSharedState } from '../backend'; +import { Box, Button, LabeledList, NoticeBox, NumberInput, Icon, Section, Stack, Tabs } from '../components'; import { NtosWindow } from '../layouts'; export const NtosNetMonitor = (props, context) => { const { act, data } = useBackend(context); + const [tab_main, setTab_main] = useSharedState(context, 'tab_main', 1); const { ntnetrelays, ntnetstatus, @@ -17,131 +18,238 @@ export const NtosNetMonitor = (props, context) => { maxlogs, minlogs, ntnetlogs = [], + tablets = [], } = data; return ( - - WARNING: Disabling wireless transmitters when using - a wireless device may prevent you from reenabling them! - -
act('toggleWireless')} /> - )}> - {ntnetrelays ? ( - - - {ntnetrelays} - - - ) : "No Relays Connected"} -
-
- - act('toggle_function', { id: "1" })} /> - )} /> - act('toggle_function', { id: "2" })} /> - )} /> - act('toggle_function', { id: "3" })} /> - )} /> - act('toggle_function', { id: "4" })} /> - )} /> - -
-
- {!!idsalarm && ( - <> - - NETWORK INCURSION DETECTED - - - Abnormal activity has been detected in the network. - Check system logs for more information - - - )} - - -
+ + + setTab_main(1)}> + NtNet + + setTab_main(2)}> + Tablets ({tablets.length}) + + + + {tab_main === 1 && ( + + + + )} + {tab_main === 2 && ( + + + + )}
); }; + +const MainPage = (props, context) => { + const { + ntnetrelays, + ntnetstatus, + config_softwaredownload, + config_peertopeer, + config_communication, + config_systemcontrol, + idsalarm, + idsstatus, + ntnetmaxlogs, + maxlogs, + minlogs, + ntnetlogs = [], + } = props; + const { act, data } = useBackend(context); + return ( +
+ + WARNING: Disabling wireless transmitters when using + a wireless device may prevent you from reenabling them! + +
act('toggleWireless')} /> + )}> + {ntnetrelays ? ( + + + {ntnetrelays} + + + ) : "No Relays Connected"} +
+
+ + act('toggle_function', { id: "1" })} /> + )} /> + act('toggle_function', { id: "2" })} /> + )} /> + act('toggle_function', { id: "3" })} /> + )} /> + act('toggle_function', { id: "4" })} /> + )} /> + +
+
+ {!!idsalarm && ( + <> + + NETWORK INCURSION DETECTED + + + Abnormal activity has been detected in the network. + Check system logs for more information + + + )} + + +
+
+ ); +}; + +const TabletPage = (props, context) => { + const { tablets } = props; + const { act, data } = useBackend(context); + if (!tablets.length) { + return ( + + No tablets detected. + + ); + } + return ( +
+ +
+ + Active Tablets +
+
+ +
+ + {tablets.map(tablet => ( +
act('toggle_mass_pda', { + ref: tablet.ref, + })} + /> + )} /> + ))} + +
+
+
+ ); +};