diff --git a/code/modules/modular_computers/computers/machinery/console_presets.dm b/code/modules/modular_computers/computers/machinery/console_presets.dm index 26410e6794c..ca2c0811737 100644 --- a/code/modules/modular_computers/computers/machinery/console_presets.dm +++ b/code/modules/modular_computers/computers/machinery/console_presets.dm @@ -22,6 +22,7 @@ return + // ===== ENGINEERING CONSOLE ===== /obj/machinery/modular_computer/console/preset/engineering console_department = "Engineering" @@ -41,6 +42,18 @@ cpu.hard_drive.store_file(new/datum/computer_file/program/nttransfer()) cpu.hard_drive.store_file(new/datum/computer_file/program/chatclient()) + +// ===== COMMAND CONSOLE ===== +/obj/machinery/modular_computer/console/preset/command + console_department = "Command" + desc = "A stationary computer. This one comes preloaded with command programs." + _has_id_slot = 1 + _has_printer = 1 + +/obj/machinery/modular_computer/console/preset/command/install_programs() + cpu.hard_drive.store_file(new/datum/computer_file/program/chatclient()) +// cpu.hard_drive.store_file(new/datum/computer_file/program/card_mod()) + // ===== CIVILIAN CONSOLE ===== /obj/machinery/modular_computer/console/preset/civilian console_department = "Civilian" diff --git a/code/modules/modular_computers/file_system/program.dm b/code/modules/modular_computers/file_system/program.dm index 66cd8f91f4d..e4f1a50da6b 100644 --- a/code/modules/modular_computers/file_system/program.dm +++ b/code/modules/modular_computers/file_system/program.dm @@ -19,7 +19,7 @@ var/available_on_syndinet = 0 // Whether the program can be downloaded from SyndiNet (accessible via emagging the computer). Set to 1 to enable. var/computer_emagged = 0 // Set to 1 if computer that's running us was emagged. Computer updates this every Process() tick var/ui_header = null // Example: "something.gif" - a header image that will be rendered in computer's UI when this program is running at background. Images are taken from /nano/images/status_icons. Be careful not to use too large images! - var/datum/computer_file/program/program = null + /datum/computer_file/program/New(var/obj/item/modular_computer/comp = null) ..() if(comp && istype(comp)) @@ -68,7 +68,7 @@ return 1 // Check if the user can run program. Only humans can operate computer. Automatically called in run_program() -// User has to wear their ID or have it inhand for ID Scan to work. +// User has to wear their ID for ID Scan to work. // Can also be called manually, with optional parameter being access_to_check to scan the user's ID /datum/computer_file/program/proc/can_run(mob/living/user, loud = 0, access_to_check) // Defaults to required_access @@ -77,19 +77,24 @@ if(!access_to_check) // No required_access, allow it. return 1 - - var/obj/item/weapon/card/id/I = user.GetID() - if(!I) - if(loud) - user << "\The [computer] flashes an \"RFID Error - Unable to scan ID\" warning." - return 0 - - if(access_to_check in I.GetAccess) + if(issilicon(user)) return 1 - else if(loud) - user << "\The [computer] flashes an \"Access Denied\" warning." -// This attempts to retrieve header data for NanoUIs. If implementing completely new device of different type than existing ones + if(ishuman(user)) + var/mob/living/carbon/human/h = user + var/obj/item/weapon/card/id/I = h.get_idcard() + if(!I) + if(loud) + user << "\The [computer] flashes an \"RFID Error - Unable to scan ID\" warning." + return 0 + + if(access_to_check in I.GetAccess()) + return 1 + else if(loud) + user << "\The [computer] flashes an \"Access Denied\" warning." + return 0 + +// 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) @@ -114,7 +119,7 @@ return 1 // This is called every tick when the program is enabled. Ensure you do parent call if you override it. If parent returns 1 continue with UI initialisation. -// It returns 0 if it can't run or if NanoModule was used instead. I suggest using NanoModules where applicable. + /datum/computer_file/program/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, datum/tgui/master_ui = null, datum/ui_state/state = default_state) if(program_state != PROGRAM_STATE_ACTIVE) // Our program was closed. Close the ui if it exists. return computer.ui_interact(user) diff --git a/code/modules/modular_computers/file_system/programs/card.dm b/code/modules/modular_computers/file_system/programs/card.dm index 0ee48b2474c..6e955174531 100644 --- a/code/modules/modular_computers/file_system/programs/card.dm +++ b/code/modules/modular_computers/file_system/programs/card.dm @@ -1,12 +1,14 @@ /datum/computer_file/program/card_mod filename = "cardmod" filedesc = "ID card modification program" - nanomodule_path = /datum/nano_module/program/card_mod program_icon_state = "id" extended_desc = "Program for programming employee ID cards to access parts of the station." required_access = access_change_ids requires_ntnet = 0 size = 8 + var/mod_mode = 1 + var/is_centcom = 0 + var/show_assignments = 0 /datum/nano_module/program/card_mod name = "ID card modification program" @@ -15,7 +17,7 @@ var/show_assignments = 0 /datum/nano_module/program/card_mod/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state) - var/list/data = host.initial_data() + var/list/data = get_header_data() data["src"] = "\ref[src]" data["station_name"] = station_name() @@ -87,7 +89,7 @@ ui.set_initial_data(data) ui.open() -/datum/nano_module/program/card_mod/proc/format_jobs(list/jobs) +/datum/computer_file/program/card_mod/proc/format_jobs(list/jobs) var/obj/item/weapon/card/id/id_card = program.computer.card_slot.stored_card var/list/formatted = list() for(var/job in jobs) @@ -98,11 +100,11 @@ return formatted -/datum/nano_module/program/card_mod/proc/get_accesses(var/is_centcom = 0) +/datum/computer_file/program/card_mod/proc/get_accesses(var/is_centcom = 0) return null -/datum/computer_file/program/card_mod/Topic(href, href_list) +/datum/computer_file/program/card_mod/ui_act(action params) if(..()) return 1