// Operates TGUI /obj/item/modular_computer/ui_assets(mob/user) return list( get_asset_datum(/datum/asset/simple/headers) ) /obj/item/modular_computer/tgui_interact(mob/user, datum/tgui/ui) if(!screen_on || !enabled) if(ui) ui.close() return 0 if(!apc_power(0) && !battery_power(0)) if(ui) ui.close() return 0 // 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.tgui_interact(user) return // We are still here, that means there is no program loaded. Load the BIOS/ROM/OS/whatever you want to call it. // This screen simply lists available programs and user may select them. if(!hard_drive || !hard_drive.stored_files || !hard_drive.stored_files.len) visible_message("\The [src] beeps three times, it's screen displaying \"DISK ERROR\" warning.") return // No HDD, No HDD files list or no stored files. Something is very broken. ui = SStgui.try_update_ui(user, src, ui) if(!ui) ui = new(user, src, "NtosMain") ui.set_autoupdate(TRUE) ui.open() /obj/item/modular_computer/tgui_data(mob/user, datum/tgui/ui, datum/tgui_state/state) var/list/data = get_header_data() data["device_theme"] = device_theme data["login"] = list() var/obj/item/weapon/computer_hardware/card_slot/cardholder = card_slot if(cardholder) var/obj/item/weapon/card/id/stored_card = cardholder.stored_card if(stored_card) var/stored_name = stored_card.registered_name var/stored_title = stored_card.assignment if(!stored_name) stored_name = "Unknown" if(!stored_title) stored_title = "Unknown" data["login"] = list( IDName = stored_name, IDJob = stored_title, ) data["removable_media"] = list() var/datum/computer_file/data/autorun = hard_drive.find_file_by_name("autorun") data["programs"] = list() for(var/datum/computer_file/program/P in hard_drive.stored_files) var/running = FALSE if(P in idle_threads) running = TRUE data["programs"] += list(list( "name" = P.filename, "desc" = P.filedesc, "icon" = P.program_menu_icon, "running" = running, "autorun" = (istype(autorun) && (autorun.stored_data == P.filename)) ? 1 : 0 )) data["has_light"] = FALSE // has_light data["light_on"] = FALSE // light_on data["comp_light_color"] = null // comp_light_color return data // Handles user's GUI input /obj/item/modular_computer/tgui_act(action, list/params, datum/tgui/ui, datum/tgui_state/state) if(..()) return TRUE switch(action) if("PC_exit") kill_program() return TRUE if("PC_shutdown") shutdown_computer() return TRUE if("PC_minimize") var/mob/user = usr minimize_program(user) if("PC_killprogram") var/prog = params["name"] var/datum/computer_file/program/P = null var/mob/user = usr if(hard_drive) P = hard_drive.find_file_by_name(prog) if(!istype(P) || P.program_state == PROGRAM_STATE_KILLED) return P.kill_program(1) to_chat(user, "Program [P.filename].[P.filetype] with PID [rand(100,999)] has been killed.") return TRUE if("PC_runprogram") return run_program(params["name"]) if("PC_setautorun") if(!hard_drive) return set_autorun(params["name"]) return TRUE if("PC_Eject_Disk") var/param = params["name"] switch(param) if("ID") proc_eject_id(usr) return TRUE else return // Function used by TGUI's to obtain data for header. All relevant entries begin with "PC_" /obj/item/modular_computer/proc/get_header_data() var/list/data = list() if(battery_module) switch(battery_module.battery.percent()) if(80 to 200) // 100 should be maximal but just in case.. data["PC_batteryicon"] = "batt_100.gif" if(60 to 80) data["PC_batteryicon"] = "batt_80.gif" if(40 to 60) data["PC_batteryicon"] = "batt_60.gif" if(20 to 40) data["PC_batteryicon"] = "batt_40.gif" if(5 to 20) data["PC_batteryicon"] = "batt_20.gif" else data["PC_batteryicon"] = "batt_5.gif" data["PC_batterypercent"] = "[round(battery_module.battery.percent())] %" data["PC_showbatteryicon"] = 1 else data["PC_batteryicon"] = "batt_5.gif" data["PC_batterypercent"] = "N/C" data["PC_showbatteryicon"] = battery_module ? 1 : 0 if(tesla_link && tesla_link.enabled && apc_powered) data["PC_apclinkicon"] = "charging.gif" if(network_card && network_card.is_banned()) data["PC_ntneticon"] = "sig_warning.gif" else switch(get_ntnet_status()) if(0) data["PC_ntneticon"] = "sig_none.gif" if(1) data["PC_ntneticon"] = "sig_low.gif" if(2) data["PC_ntneticon"] = "sig_high.gif" if(3) data["PC_ntneticon"] = "sig_lan.gif" var/list/program_headers = list() for(var/datum/computer_file/program/P in idle_threads) if(!P.ui_header) continue program_headers.Add(list(list( "icon" = P.ui_header ))) if(active_program && active_program.ui_header) program_headers.Add(list(list( "icon" = active_program.ui_header ))) data["PC_programheaders"] = program_headers data["PC_stationtime"] = stationtime2text() data["PC_hasheader"] = 1 data["PC_showexitprogram"] = active_program ? 1 : 0 // Hides "Exit Program" button on mainscreen return data