modular computer stuff

This commit is contained in:
Geeves
2020-01-25 23:08:37 +02:00
parent d56a4c2fe6
commit 658a9ceb83
20 changed files with 352 additions and 387 deletions
@@ -5,14 +5,14 @@
/datum/computer_file/program/clientmanager
filename = "clientmanager"
filedesc = "NTOS Client Manager"
extended_desc = "This program allows configuration of computer's software"
extended_desc = "This program allows configuration of the computer's software."
program_icon_state = "generic"
color = LIGHT_COLOR_GREEN
unsendable = 1
undeletable = 1
unsendable = TRUE
undeletable = TRUE
size = 4
available_on_ntnet = 0
requires_ntnet = 0
available_on_ntnet = FALSE
requires_ntnet = FALSE
/datum/computer_file/program/clientmanager/ui_interact(mob/user)
var/datum/vueui/ui = SSvueui.get_open_ui(user, src)
@@ -51,31 +51,32 @@
/datum/computer_file/program/clientmanager/Topic(href, href_list)
if(..())
return 1
return TRUE
if(href_list["enroll"])
if(ntnet_global.check_function(NTNET_SOFTWAREDOWNLOAD))
if(href_list["enroll"]["type"] == 1)
enroll_company_device(href_list["enroll"]["preset"])
return 1
return TRUE
if(href_list["enroll"]["type"] == 2)
enroll_private_device()
return 1
return 0
return TRUE
return FALSE
//Set´s up the computer with the file manager and the downloader and removes the lock
/datum/computer_file/program/clientmanager/proc/enroll_private_device()
if(!computer)
return 0
return FALSE
computer.enrolled = 2 // private devices
computer.hard_drive.store_file(new /datum/computer_file/program/filemanager())
computer.hard_drive.store_file(new /datum/computer_file/program/ntnetdownload())
return 1
computer.hard_drive.store_file(new /datum/computer_file/program/chatclient())
return TRUE
//Set´s up the programs from the preset
/datum/computer_file/program/clientmanager/proc/enroll_company_device(var/preset)
if(!computer)
return 0
return FALSE
for (var/datum/modular_computer_app_presets/prs in ntnet_global.available_software_presets)
if(prs.name == preset && prs.available == 1)
@@ -83,83 +84,5 @@
for (var/datum/computer_file/program/prog in prs_programs)
computer.hard_drive.store_file(prog)
computer.enrolled = 1 // enroll as company device after finding matching preset and storing software
return 1
return 0
/*
/datum/nano_module/program/clientmanager
name = "NTOS Client Manager"
var/obj/item/modular_computer/movable = null
/datum/computer_file/program/clientmanager/Topic(href, href_list)
if(..())
return 1
if(href_list["PRG_dev_type"])
_dev_type = text2num(href_list["PRG_dev_type"])
return 1
if(href_list["PRG_dev_preset"])
_dev_preset = href_list["PRG_dev_preset"]
return 1
if(href_list["PRG_enroll"])
if(ntnet_global.check_function(NTNET_SOFTWAREDOWNLOAD))
_error_message = null
if(_dev_type == 1)
enroll_company_device()
return 1
if(_dev_type == 2)
enroll_private_device()
return 1
return 0
else
_error_message = "NTNET unavailable. Unable to enroll device"
return 0
/datum/nano_module/program/clientmanager/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 = list()
if(program)
movable = program.computer
data = list("_PC" = program.get_header_data())
if(!istype(movable))
movable = null
var/datum/computer_file/program/clientmanager/PRG = program
// For now limited to execution by the downloader program
// No computer connection, we can't get data from that.
if(!PRG || !istype(PRG) || !movable )
return 0
data["status_enrollment"] = movable.enrolled
data["status_compliance"] = 1 // 0 - Not Complaint 1 - Compliant //For now. TODO-IT: Run actual compliance checks
data["status_remote"] = 1 // 0 - Disabled 1 - Enabled //For now. TODO-IT: ability to enable and disable remote control
if(!movable.enrolled)
data["dev_type"] = PRG._dev_type
var/list/all_presets = list()
for (var/datum/modular_computer_app_presets/prs in ntnet_global.available_software_presets)
if(prs.available)
all_presets.Add(list(list(
"name" = prs.name,
"display_name" = prs.display_name,
"description" = prs.description
)))
data["dev_presets"] = all_presets
data["dev_preset"] = PRG._dev_preset
else if(movable.enrolled > 2)
PRG._error_message = "Unable to determine enrollment status. Contact IT department"
data["error_message"] = PRG._error_message
ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "ntnet_clientmanager.tmpl", "NTOS Client Manager", 575, 700, state = state)
ui.auto_update_layout = 1
ui.set_initial_data(data)
ui.open()
*/
return TRUE
return FALSE
@@ -3,16 +3,16 @@
// It allows you to toggle components of your device.
/datum/computer_file/program/computerconfig
filename = "compconfig"
filedesc = "Computer Configuration Tool"
extended_desc = "This program allows configuration of computer's hardware"
filename = "hardwareconfig"
filedesc = "Hardware Configuration Tool"
extended_desc = "This program allows configuration of the computer's hardware."
program_icon_state = "generic"
color = LIGHT_COLOR_GREEN
unsendable = 1
undeletable = 1
unsendable = TRUE
undeletable = TRUE
size = 4
available_on_ntnet = 0
requires_ntnet = 0
available_on_ntnet = FALSE
requires_ntnet = FALSE
/datum/computer_file/program/computerconfig/ui_interact(mob/user)
var/datum/vueui/ui = SSvueui.get_open_ui(user, src)
@@ -2,15 +2,15 @@
filename = "ntndownloader"
filedesc = "NTNet Software Download Tool"
program_icon_state = "generic"
extended_desc = "This program allows downloads of software from official NT repositories"
extended_desc = "This program allows the download of software from official NT repositories."
color = LIGHT_COLOR_GREEN
unsendable = 1
undeletable = 1
unsendable = TRUE
undeletable = TRUE
size = 4
requires_ntnet = 1
requires_ntnet = TRUE
requires_ntnet_feature = NTNET_SOFTWAREDOWNLOAD
available_on_ntnet = 0
nanomodule_path = /datum/nano_module/program/computer_ntnetdownload/
available_on_ntnet = FALSE
nanomodule_path = /datum/nano_module/program/computer_ntnetdownload
ui_header = "downloader_finished.gif"
var/datum/computer_file/program/downloaded_file = null
var/hacked_download = 0
@@ -22,22 +22,22 @@
/datum/computer_file/program/ntnetdownload/proc/begin_file_download(var/filename, var/user = null)
if(downloaded_file)
return 0
return FALSE
var/datum/computer_file/program/PRG = ntnet_global.find_ntnet_file_by_name(filename)
if(!PRG || !istype(PRG))
return 0
return FALSE
// Attempting to download antag only program, but without having emagged computer. No.
if(PRG.available_on_syndinet && !computer_emagged)
return 0
return FALSE
if(!computer || !computer.hard_drive || !computer.hard_drive.try_store_file(PRG))
return 0
return FALSE
if(computer.enrolled == 1 && !computer_emagged)
return 0
return FALSE
ui_header = "downloader_running.gif"
@@ -122,19 +122,19 @@
/datum/computer_file/program/ntnetdownload/Topic(href, href_list)
if(..())
return 1
return TRUE
if(href_list["PRG_downloadfile"])
if(!downloaded_file)
begin_file_download(href_list["PRG_downloadfile"], usr)
return 1
return TRUE
if(href_list["PRG_reseterror"])
if(downloaderror)
download_completion = 0
download_netspeed = 0
downloaded_file = null
downloaderror = ""
return 1
return 0
return TRUE
return FALSE
/datum/nano_module/program/computer_ntnetdownload
name = "Network Downloader"