mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-17 20:47:29 +00:00
## About The Pull Request I deleted the documentation file of ModPCs because it was barebones and had no new information to give that autodoc couldn't. Just to make sure this isn't a net-negative, I improved on much of the autodoc and comments in general around ModPC code to help people understand easier what's going on around it. I also renamed vars that were too easily confused with other var names, and reworked the ntnet downloader a little; - it now has a search bar - it now has more sections to scroll through, hopefully making it more accurate and easy to find what you need. - also organized the apps that were previously shoved in 'other'. - i also upgraded it to a .tsx because why not video demonstration https://github.com/tgstation/tgstation/assets/53777086/cbba4c1c-b8a8-4ba4-8628-aea8389999fc ## Why It's Good For The Game Adds in a lot of comments that were previously missing, clears up some sources of confusion within ModPC code, and improves NTNet Downloader, something I've procrastinated on doing for a very long time now. ## Changelog 🆑 qol: NTNet Downloader now has a search bar, and programs are now better sorted. /🆑
88 lines
3.4 KiB
Plaintext
88 lines
3.4 KiB
Plaintext
/// Scan the turf where the computer is on.
|
|
#define ATMOZPHERE_SCAN_ENV "env"
|
|
/// Scan the objects that the tablet clicks.
|
|
#define ATMOZPHERE_SCAN_CLICK "click"
|
|
|
|
/datum/computer_file/program/atmosscan
|
|
filename = "atmosscan"
|
|
filedesc = "AtmoZphere"
|
|
downloader_category = PROGRAM_CATEGORY_ENGINEERING
|
|
program_open_overlay = "air"
|
|
extended_desc = "A small built-in sensor reads out the atmospheric conditions around the device."
|
|
size = 4
|
|
tgui_id = "NtosGasAnalyzer"
|
|
program_icon = "thermometer-half"
|
|
|
|
/// Whether we scan the current turf automatically (env) or scan tapped objects manually (click).
|
|
var/atmozphere_mode = ATMOZPHERE_SCAN_ENV
|
|
/// Saved [GasmixParser][/proc/gas_mixture_parser] data of the last thing we scanned.
|
|
var/list/last_gasmix_data
|
|
|
|
/// Secondary attack self.
|
|
/datum/computer_file/program/atmosscan/proc/turf_analyze(datum/source, mob/user)
|
|
SIGNAL_HANDLER
|
|
if(atmozphere_mode != ATMOZPHERE_SCAN_CLICK)
|
|
return
|
|
atmos_scan(user=user, target=get_turf(computer), silent=FALSE)
|
|
on_analyze(source=source, target=get_turf(computer))
|
|
return COMPONENT_CANCEL_ATTACK_CHAIN
|
|
|
|
/// Keep this in sync with it's tool based counterpart [/obj/proc/analyzer_act] and [/atom/proc/tool_act]
|
|
/datum/computer_file/program/atmosscan/tap(atom/A, mob/living/user, params)
|
|
if(atmozphere_mode != ATMOZPHERE_SCAN_CLICK)
|
|
return FALSE
|
|
if(!atmos_scan(user=user, target=A, silent=FALSE))
|
|
return FALSE
|
|
on_analyze(source=computer, target=A)
|
|
return TRUE
|
|
|
|
/// Updates our gasmix data if on click mode.
|
|
/datum/computer_file/program/atmosscan/proc/on_analyze(datum/source, atom/target)
|
|
var/mixture = target.return_analyzable_air()
|
|
if(!mixture)
|
|
return FALSE
|
|
var/list/airs = islist(mixture) ? mixture : list(mixture)
|
|
var/list/new_gasmix_data = list()
|
|
for(var/datum/gas_mixture/air as anything in airs)
|
|
var/mix_name = capitalize(lowertext(target.name))
|
|
if(airs.len != 1) //not a unary gas mixture
|
|
mix_name += " - Node [airs.Find(air)]"
|
|
new_gasmix_data += list(gas_mixture_parser(air, mix_name))
|
|
last_gasmix_data = new_gasmix_data
|
|
|
|
/datum/computer_file/program/atmosscan/ui_static_data(mob/user)
|
|
return return_atmos_handbooks()
|
|
|
|
/datum/computer_file/program/atmosscan/ui_data(mob/user)
|
|
var/list/data = list()
|
|
var/turf/turf = get_turf(computer)
|
|
data["atmozphereMode"] = atmozphere_mode
|
|
data["clickAtmozphereCompatible"] = (computer.hardware_flag & PROGRAM_PDA)
|
|
switch (atmozphere_mode) //Null air wont cause errors, don't worry.
|
|
if(ATMOZPHERE_SCAN_ENV)
|
|
var/datum/gas_mixture/air = turf?.return_air()
|
|
data["gasmixes"] = list(gas_mixture_parser(air, "Location Reading"))
|
|
if(ATMOZPHERE_SCAN_CLICK)
|
|
LAZYINITLIST(last_gasmix_data)
|
|
data["gasmixes"] = last_gasmix_data
|
|
return data
|
|
|
|
/datum/computer_file/program/atmosscan/ui_act(action, list/params)
|
|
switch(action)
|
|
if("scantoggle")
|
|
if(atmozphere_mode == ATMOZPHERE_SCAN_CLICK)
|
|
atmozphere_mode = ATMOZPHERE_SCAN_ENV
|
|
UnregisterSignal(computer, COMSIG_ITEM_ATTACK_SELF_SECONDARY)
|
|
return TRUE
|
|
if(!(computer.hardware_flag & PROGRAM_PDA))
|
|
computer.say("Device incompatible for scanning objects!")
|
|
return FALSE
|
|
atmozphere_mode = ATMOZPHERE_SCAN_CLICK
|
|
RegisterSignal(computer, COMSIG_ITEM_ATTACK_SELF_SECONDARY, PROC_REF(turf_analyze))
|
|
var/turf/turf = get_turf(computer)
|
|
last_gasmix_data = list(gas_mixture_parser(turf?.return_air(), "Location Reading"))
|
|
return TRUE
|
|
|
|
#undef ATMOZPHERE_SCAN_ENV
|
|
#undef ATMOZPHERE_SCAN_CLICK
|