mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-06-23 07:05:13 +01:00
acc18e5bcc
* Removes more NTNet from Tablets and removes a ton of dead code (#74085) ## About The Pull Request Removes NtNet softwaredownload/communication because they did nothing, so this also removes the feature to shut them off from Wirecarp I removed tablets from being added to networks, Tablets already generate logs for actions they do, which is already enough for the effects it has in-game (just being visible to Wirecarp), once NtNet is deleted from everything else then we can move it to ModPCs and limit logging to only ModPC actions. Fixes shutting off ntnet relays from Wirecarp, now you can properly shut off Ntnet, and the warning that it kicks you out of the program is now true. Gives the Holodeck it's own network root define and fixes Syndicate network showing up on Wirecarp Wirecarp's PDA logs now shows the source of an action ## Why It's Good For The Game Moves ModPCs further from NTNet so we can move towards deleting it entirely Makes Wirecarp more responsible and trustworthy Removes useless stuff that never gets used, simplifying a overthought overcomplicated system. ## Changelog 🆑 balance: Wirecarp now properly shuts off NtNet remotely. balance: Wirecarp now shows the source of a PDA that does an action. fix: Wirecarp can no longer be used to see if Nukies exist through their networks. del: Removes Software downloading and communication Ntnet networks, as they were pretty worthless. /🆑 * Removes more NTNet from Tablets and removes a ton of dead code --------- Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
171 lines
5.7 KiB
Plaintext
171 lines
5.7 KiB
Plaintext
/datum/computer_file/program/ntnetdownload
|
|
filename = "ntsoftwarehub"
|
|
filedesc = "NT Software Hub"
|
|
program_icon_state = "generic"
|
|
extended_desc = "This program allows downloads of software from official NT repositories"
|
|
undeletable = TRUE
|
|
size = 4
|
|
requires_ntnet = TRUE
|
|
available_on_ntnet = FALSE
|
|
ui_header = "downloader_finished.gif"
|
|
tgui_id = "NtosNetDownloader"
|
|
program_icon = "download"
|
|
|
|
var/datum/computer_file/program/downloaded_file = null
|
|
var/hacked_download = FALSE
|
|
var/download_completion = FALSE //GQ of downloaded data.
|
|
var/download_netspeed = 0
|
|
var/downloaderror = ""
|
|
var/list/main_repo
|
|
var/list/antag_repo
|
|
|
|
var/list/show_categories = list(
|
|
PROGRAM_CATEGORY_CREW,
|
|
PROGRAM_CATEGORY_ENGI,
|
|
PROGRAM_CATEGORY_SCI,
|
|
PROGRAM_CATEGORY_SUPL,
|
|
PROGRAM_CATEGORY_MISC,
|
|
)
|
|
|
|
/datum/computer_file/program/ntnetdownload/on_start()
|
|
. = ..()
|
|
main_repo = SSmodular_computers.available_station_software
|
|
antag_repo = SSmodular_computers.available_antag_software
|
|
|
|
/datum/computer_file/program/ntnetdownload/proc/begin_file_download(filename)
|
|
if(downloaded_file)
|
|
return FALSE
|
|
|
|
var/datum/computer_file/program/PRG = SSmodular_computers.find_ntnet_file_by_name(filename)
|
|
|
|
if(!PRG || !istype(PRG))
|
|
return FALSE
|
|
|
|
// Attempting to download antag only program, but without having emagged/syndicate computer. No.
|
|
if(PRG.available_on_syndinet && !(computer.obj_flags & EMAGGED))
|
|
return FALSE
|
|
|
|
if(!computer || !computer.can_store_file(PRG))
|
|
return FALSE
|
|
|
|
ui_header = "downloader_running.gif"
|
|
|
|
if(PRG in main_repo)
|
|
generate_network_log("Began downloading file [PRG.filename].[PRG.filetype] from NTNet Software Repository.")
|
|
hacked_download = FALSE
|
|
else if(PRG in antag_repo)
|
|
generate_network_log("Began downloading file **ENCRYPTED**.[PRG.filetype] from unspecified server.")
|
|
hacked_download = TRUE
|
|
else
|
|
generate_network_log("Began downloading file [PRG.filename].[PRG.filetype] from unspecified server.")
|
|
hacked_download = FALSE
|
|
|
|
downloaded_file = PRG.clone()
|
|
|
|
/datum/computer_file/program/ntnetdownload/proc/abort_file_download()
|
|
if(!downloaded_file)
|
|
return
|
|
generate_network_log("Aborted download of file [hacked_download ? "**ENCRYPTED**" : "[downloaded_file.filename].[downloaded_file.filetype]"].")
|
|
downloaded_file = null
|
|
download_completion = FALSE
|
|
ui_header = "downloader_finished.gif"
|
|
|
|
/datum/computer_file/program/ntnetdownload/proc/complete_file_download()
|
|
if(!downloaded_file)
|
|
return
|
|
generate_network_log("Completed download of file [hacked_download ? "**ENCRYPTED**" : "[downloaded_file.filename].[downloaded_file.filetype]"].")
|
|
if(!computer || !computer.store_file(downloaded_file))
|
|
// The download failed
|
|
downloaderror = "I/O ERROR - Unable to save file. Check whether you have enough free space on your hard drive and whether your hard drive is properly connected. If the issue persists contact your system administrator for assistance."
|
|
downloaded_file = null
|
|
download_completion = FALSE
|
|
ui_header = "downloader_finished.gif"
|
|
|
|
/datum/computer_file/program/ntnetdownload/process_tick(delta_time)
|
|
if(!downloaded_file)
|
|
return
|
|
if(download_completion >= downloaded_file.size)
|
|
complete_file_download()
|
|
// Download speed according to connectivity state. NTNet server is assumed to be on unlimited speed so we're limited by our local connectivity
|
|
download_netspeed = 0
|
|
// Speed defines are found in misc.dm
|
|
switch(ntnet_status)
|
|
if(1)
|
|
download_netspeed = NTNETSPEED_LOWSIGNAL
|
|
if(2)
|
|
download_netspeed = NTNETSPEED_HIGHSIGNAL
|
|
if(3)
|
|
download_netspeed = NTNETSPEED_ETHERNET
|
|
download_completion += download_netspeed
|
|
|
|
/datum/computer_file/program/ntnetdownload/ui_act(action, params)
|
|
. = ..()
|
|
if(.)
|
|
return
|
|
switch(action)
|
|
if("PRG_downloadfile")
|
|
if(!downloaded_file)
|
|
begin_file_download(params["filename"])
|
|
return TRUE
|
|
if("PRG_reseterror")
|
|
if(downloaderror)
|
|
download_completion = FALSE
|
|
download_netspeed = FALSE
|
|
downloaded_file = null
|
|
downloaderror = ""
|
|
return TRUE
|
|
return FALSE
|
|
|
|
/datum/computer_file/program/ntnetdownload/ui_data(mob/user)
|
|
var/list/data = list()
|
|
var/list/access = computer.GetAccess()
|
|
|
|
data["downloading"] = !!downloaded_file
|
|
data["error"] = downloaderror || FALSE
|
|
|
|
// Download running. Wait please..
|
|
if(downloaded_file)
|
|
data["downloadname"] = downloaded_file.filename
|
|
data["downloaddesc"] = downloaded_file.filedesc
|
|
data["downloadsize"] = downloaded_file.size
|
|
data["downloadspeed"] = download_netspeed
|
|
data["downloadcompletion"] = round(download_completion, 0.1)
|
|
|
|
data["disk_size"] = computer.max_capacity
|
|
data["disk_used"] = computer.used_capacity
|
|
data["emagged"] = (computer.obj_flags & EMAGGED)
|
|
|
|
var/list/repo = antag_repo | main_repo
|
|
var/list/program_categories = list()
|
|
|
|
for(var/datum/computer_file/program/programs as anything in repo)
|
|
if(!(programs.category in program_categories))
|
|
program_categories.Add(programs.category)
|
|
data["programs"] += list(list(
|
|
"icon" = programs.program_icon,
|
|
"filename" = programs.filename,
|
|
"filedesc" = programs.filedesc,
|
|
"fileinfo" = programs.extended_desc,
|
|
"category" = programs.category,
|
|
"installed" = !!computer.find_file_by_name(programs.filename),
|
|
"compatible" = check_compatibility(programs),
|
|
"size" = programs.size,
|
|
"access" = (computer.obj_flags & EMAGGED) && programs.available_on_syndinet ? TRUE : programs.can_run(user,transfer = TRUE, access = access),
|
|
"verifiedsource" = programs.available_on_ntnet,
|
|
))
|
|
|
|
data["categories"] = show_categories & program_categories
|
|
|
|
return data
|
|
|
|
/datum/computer_file/program/ntnetdownload/proc/check_compatibility(datum/computer_file/program/P)
|
|
var/hardflag = computer.hardware_flag
|
|
|
|
if(P?.is_supported_by_hardware(hardware_flag = hardflag, loud = FALSE))
|
|
return TRUE
|
|
return FALSE
|
|
|
|
/datum/computer_file/program/ntnetdownload/kill_program(forced)
|
|
abort_file_download()
|
|
return ..()
|