diff --git a/code/modules/modular_computers/computers/item/phone/phone_presets.dm b/code/modules/modular_computers/computers/item/phone/phone_presets.dm index a0559efe3ec1..779b5cc3a2af 100644 --- a/code/modules/modular_computers/computers/item/phone/phone_presets.dm +++ b/code/modules/modular_computers/computers/item/phone/phone_presets.dm @@ -39,7 +39,8 @@ /obj/item/computer_hardware/hard_drive/small/pda, /obj/item/computer_hardware/network_card, /obj/item/computer_hardware/card_slot, - /obj/item/computer_hardware/card_slot/secondary) + /obj/item/computer_hardware/card_slot/secondary, + /obj/item/computer_hardware/printer/mini) /obj/item/modular_computer/tablet/phone/preset/advanced/command/cap finish_color = "yellow" diff --git a/code/modules/modular_computers/file_system/programs/paperworkprinter.dm b/code/modules/modular_computers/file_system/programs/paperworkprinter.dm new file mode 100644 index 000000000000..3a4b4ea155dc --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/paperworkprinter.dm @@ -0,0 +1,54 @@ +//TODO: add more sane printing handling +/datum/computer_file/program/paperwork_printer + filename = "ppwrkprnt" + filedesc = "Paperwork Printing" + category = PROGRAM_CATEGORY_MISC + program_icon_state = "id" + extended_desc = "Program for dispensing paperwork" + requires_ntnet = FALSE + size = 4 + tgui_id = "NtosPaperworkPrinter" + program_icon = "clipboard-list" + +/datum/computer_file/program/paperwork_printer/ui_static_data(mob/user) + var/list/data = get_header_data() + var/list/papers = list() + //filter out paperwork we're not allowed to have + for(var/R in subtypesof(/obj/item/paper/paperwork)) + var/obj/item/paper/paperwork/P = R + if(initial(P.printable)) + papers += list(list("name" = initial(P.name), "id" = initial(P.id))) + var/obj/item/computer_hardware/printer/printer + if(computer) + printer = computer.all_components[MC_PRINT] + data["have_printer"] = !!printer + else + data["have_printer"] = FALSE + data["printable_papers"] = papers + return data + +/datum/computer_file/program/paperwork_printer/ui_act(action, params, datum/tgui/ui) + if(..()) + return + //this variable stores the object of which we're actually going to print + if(action == "PRG_print") + var/paperworkToPick = params["paperworkID"] + for(var/R in subtypesof(/obj/item/paper/paperwork)) + var/obj/item/paper/paperwork/P = R + if(initial(P.id)==paperworkToPick) + src.print(P) + break + + +/datum/computer_file/program/paperwork_printer/proc/print(var/obj/item/paper/paperwork/T) + var/obj/item/computer_hardware/printer/printer + if(computer) + printer = computer.all_components[MC_PRINT] + if(computer && printer) //This option should never be called if there is no printer + if(!printer.print_type(T)) + to_chat(usr, span_notice("Hardware error: Printer was unable to print the file. It may be out of paper.")) + return + else + //it printed, how many pages are left? + var/pages_left = printer.stored_paper + computer.visible_message(span_notice("\The [computer] prints out a paper. There are [pages_left] pages left.")) diff --git a/tgui/packages/tgui/interfaces/NtosPaperworkPrinter.js b/tgui/packages/tgui/interfaces/NtosPaperworkPrinter.js new file mode 100644 index 000000000000..e2fd4dc4db91 --- /dev/null +++ b/tgui/packages/tgui/interfaces/NtosPaperworkPrinter.js @@ -0,0 +1,49 @@ +import { useBackend } from '../backend'; +import { Button, NoticeBox, Section } from '../components'; +import { NtosWindow } from '../layouts'; + +export const NtosPaperworkPrinter = (props, context) => { + const { act, data } = useBackend(context); + const { + have_printer, + printable_papers, + } = data; + if (have_printer) { + return ( + + +
+ {printable_papers.map(paper => ( +
+
+
+ ); + } else { + return ( + + +
+ + There is no printer installed. Program halted. + + + + ); + } + +}; diff --git a/yogstation.dme b/yogstation.dme index 3312be1bc466..c8a89796ada4 100644 --- a/yogstation.dme +++ b/yogstation.dme @@ -2682,6 +2682,7 @@ #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\ntpda_msg.dm" +#include "code\modules\modular_computers\file_system\programs\paperworkprinter.dm" #include "code\modules\modular_computers\file_system\programs\portrait_printer.dm" #include "code\modules\modular_computers\file_system\programs\radar.dm" #include "code\modules\modular_computers\file_system\programs\robotact.dm" diff --git a/yogstation/code/game/objects/items/premadepapers.dm b/yogstation/code/game/objects/items/premadepapers.dm index b7dcbdbdb779..0cb879756c22 100644 --- a/yogstation/code/game/objects/items/premadepapers.dm +++ b/yogstation/code/game/objects/items/premadepapers.dm @@ -7,9 +7,12 @@ * It's a subtype of paper, with written text already on it. * */ +/obj/item/paper/paperwork/ + var/id = 0 + var/printable = TRUE /obj/item/paper/paperwork/general_request_form name = "General Requests Form (Form NT-010)" - + id = 1 /obj/item/paper/paperwork/general_request_form/Initialize() . = ..() @@ -34,6 +37,7 @@ */ /obj/item/paper/paperwork/complaint_form name = "Complaint Form (Form NT-021)" + id = 2 /obj/item/paper/paperwork/complaint_form/Initialize() . = ..() @@ -65,6 +69,7 @@ */ /obj/item/paper/paperwork/incident_report name = "Incident Report (Form NT-400)" + id = 3 /obj/item/paper/paperwork/incident_report/Initialize() . = ..() @@ -113,6 +118,7 @@ */ /obj/item/paper/paperwork/sec_incident_report name = "Security Incident Report (Form SEC-030)" + id = 4 /obj/item/paper/paperwork/sec_incident_report/Initialize() . = ..() @@ -180,6 +186,7 @@ */ /obj/item/paper/paperwork/item_form name = "Item Request Form (Form NT-089)" + id = 5 /obj/item/paper/paperwork/item_form/Initialize() . = ..() @@ -214,6 +221,7 @@ */ /obj/item/paper/paperwork/cyborg_request_form name = "Cyborgization Consent Form (Form NT-203)" + id = 6 /obj/item/paper/paperwork/cyborg_request_form/Initialize() . = ..() @@ -248,6 +256,7 @@ */ /obj/item/paper/paperwork/hopaccessrequestform name = "HoP Access Request Form (Form NT-022)" + id = 7 /obj/item/paper/paperwork/hopaccessrequestform/Initialize() . = ..() @@ -278,6 +287,7 @@ */ /obj/item/paper/paperwork/hop_job_change_form name = "Job Reassignment Form (Form NT-059)" + id = 8 /obj/item/paper/paperwork/hop_job_change_form/Initialize() . = ..() @@ -408,6 +418,7 @@ */ /obj/item/paper/paperwork/rd_form name = "R&D Request Form (Form SCI-3)" + id = 9 /obj/item/paper/paperwork/rd_form/Initialize() . = ..() @@ -437,6 +448,7 @@ */ /obj/item/paper/paperwork/mech_form name = "R&D Mech Request Form (Form SCI-9)" + id = 10 /obj/item/paper/paperwork/mech_form/Initialize() . = ..() @@ -466,6 +478,7 @@ */ /obj/item/paper/paperwork/jobchangecert name = "Job Change Certificate" + id = 11 /obj/item/paper/paperwork/jobchangecert/Initialize() . = ..()