* Fixes issues with closing apps on tablets (#75117)
## About The Pull Request
- Fixes background apps not reloading the UI
- Standardizes opening/closing/backgrounding apps
- Simplifies the way apps are closed instead of having 2 procs, one on
the PC and one on the program, being named the same thing (wtf)
- Removes program states. They existed so computers can know to update
their UI every process tick, but since we now do this event based, this
is no longer needed, which is good.
- Replaces the 'forced' arg from kill_program as it was completely
unused, with ``reload_ui``, which is now used to open the UI on close,
and not to when we don't want it to.
- Closing background apps no longer reloads the entire UI
- Responding to an NT Message will no longer open the UI on your face.
## Why It's Good For The Game
Closes https://github.com/tgstation/tgstation/issues/75046
Closes https://github.com/tgstation/tgstation/issues/75108
Makes tablet UIs more responsive and lag less, not checking if a program
is closed every process to close it, and makes responding to messages
not a hassle every time.
Also makes the code easier to understand/read,
## Changelog
🆑
fix: Tablets' minimize apps feature works again.
/🆑
* Fixes issues with closing apps on tablets
* Update tablet.dm
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
* Tablet UI update (mostly fixes) (#74844)
## About The Pull Request
Tablet UIs are now changed when opening/closing an app, instead of
constantly checking for a UI change every ui update.
Program UI acts no longer call parent, as it was unnecessary, Computers
are the ones that should be calling it.
Fixes a ton of problems with static data not updating, such as in
Messenger, ID management, Siliconnect, and Chat client
Chat Client's Admin mode also works again, which was broken when
accesses to check was turned into a list.
Turns a few lists in Robocontrol into static ones when we aren't
changing anything, and makes it actually scan your ID's access.
Fixes budget ordering being unable to show the cart/call the cargo
shuttle.
## Why It's Good For The Game
While I can't seem to find a single issue report on any of the above,
these are still problems that should be fixed.
## Changelog
🆑
fix: SiliConnect can download borg logs again.
fix: The RD can once again enable Admin mode on Wirecarp
fix: NT IRN can once again see the shopping cart and call the cargo
shuttle.
fix: Chat Client, ID Management and Messenger should now update their
UIs properly.
code: PDAs will hopefully not lag as much when clicking on buttons (such
as in ID management).
/🆑
* Tablet UI update (mostly fixes)
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* 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>
* Tablets don't close their UI when changing program (and some fixes) (#73635)
## About The Pull Request
- Tablets now refresh their page when changing programs, this means the
UI will no longer close and reopen itself several times (or even have
several UIs open if shit broke hard enough).
- Removed tablet's attack self because interact already does everything
it had to do.
- Header programs now close when minimized (as there's no button to
close them in the main menu.
- Removed a lot of program UI stuff, it's now handled by the PC itself,
such as header data and ui host.
- Cut off asset sending from TGUI into it's own proc so I can re-send
assets when changing programs
- Added an ejection button for machine computers
- Fixed ID not ejecting into the user's hand when using 'Eject ID'
- Fixes a minor runtime when opening the MODsuit application without a
MODsuit already connected.
## Why It's Good For The Game
Fixes some bugs that I found with tablets
UIS now won't be flickering as bad in front of them, or have
inconsistent placement (like when you move your main menu UI, go to
Messenger, then it's back to the center of the screen).
Video of it in action
https://user-images.githubusercontent.com/53777086/221301417-78321149-0c10-475e-bd29-79f5a4ba0597.mp4
## Changelog
🆑
fix: Being in an application now properly uses the tablet's battery.
fix: Messenger and Themify apps now close when minimized, so don't count
towards the running app limit.
fix: Tablet UIs will now no longer spam open/close the UI when changing
applications
fix: Using the Eject ID button on tablets now ejects into your hand.
fix: Computers now have an Eject ID button
refactor: Cut down a lot of copy paste in tablet & program code, now
it's mostly done by the tablet.
/🆑
* Tablets don't close their UI when changing program (and some fixes)
* Update contractor_tablet.dm
* wew
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
* Reworked PDA menu & NtOS themes (#73070)
## About The Pull Request
This is a port/rework of
https://github.com/yogstation13/Yogstation/pull/15735 - I changed a lot
of how it acted (some themes are locked behind maintenance apps).
The original author allowed this port to happen, and I really liked how
it looked there so I'd like to add it here.
### Applications
Removes the hardware configurator application, as all it did was show
you your space and battery now that all hardware was removed. These are
things your PC does by default, so it was just a waste of space.
Adds a Theme manager application instead, which allows you to change
your PDA's theme at will.
Adds a new Maintenance application that will give a new theme, however
it will also increase the size of the theme manager app itself as it's
bloatware.
### Menu
There's now a bar at the top of the menu showing 'special' tablet apps
which, for one reason or another, should stand out from the rest of the
apps. Currently this is PDA messenger and the Theme manager
Flashlight and Flashlight color is now only an icon, and is shown on the
same line as Updating you ID
https://cdn.discordapp.com/attachments/961874788706574386/1069621173693972551/2023-01-30_09-10-52.mov

### Themes
Adds a lot of themes to choose from, although SOME are hidden behind
Maintenance applications, which will give you a random theme. These are
bloatware however, so they come with some extra cost to the app's
required space storage.
Themes are now supported on ALL APPLICATIONS! If you have a computer
theme, you will have that theme in EVERY app you enter, rather than just
a select few.
ALSO also, emagging the tablet will automatically set & unlock the
Syndicate theme, which makes your PDA obvious but you can disguise it if
you wish through just re-painting it to something else.
https://cdn.discordapp.com/attachments/828923843829432340/1069565383155122266/2023-01-30_05-29-53.mov
### Preferences
This also adds a pref for theme, reworking the ringtone code to work
with it as well. I also removed 2 entirely unused PDA prefs just 'cause.
Screenshot not up-to-date, they now have proper names.

### Other stuff
Made defines for device_themes
Added support for special app-side checks to download files
Fixed programs downloading themselves TWICE because defines all had the
same definition
Removes the Chemistry computer disk as it was empty due to chemistry
app's removal
Removes the 'run_emag' proc, since apps can directly refer to the
computer to check for emag status instead.
Moved over and added better documentation on data computer files, and
moved the ordnance ones to the same file as the others.
## Why It's Good For The Game
It makes PDAs a lot more customizable while adding more features to
maintenance applications. I think the themes look cool and it fits with
PDAs being "personal" anyways.
I also explained most of my other arguments in the about section, such
as the hardware configuration application.
## Changelog
🆑 Chubbygummibear & JohnFulpWillard
add: A ton of new NtOS themes, which are accessible by the new Themify
application that comes with all PCs.
add: Emagging a PC now defaults it to the Syndicate option (and adds it
to go back to it if you wish)
add: There's a new maintenance app that gives you rarer themes
qol: The NtOS Main menu was moved around, added "header" applications
that are shown where the Flashlight is, such as your Theme manager and
PDA messenger.
code: Made defines for device_themes
code: Added support for special app-side checks to download files
code: Removes the 'run_emag' proc, since apps can directly refer to the
computer to check for emag status instead.
fix: Programs no longer download twice.
del: Removes the Chemistry computer disk as it was empty due to
chemistry app's removal
/🆑
---------
Co-authored-by: san7890 <the@ san7890.com>
* Reworked PDA menu & NtOS themes
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
Nuclear PDAs work on nukie base, basic programs now available (#72988)
## About The Pull Request
Nuclear PDAs now start with all the standard PDA programs + Fission 360.
Their NT Software Hub starts emagged, so they still have access to all
syndicate programs. Additionally, Nuclear PDAs are now long-ranged,
allowing operatives to download ~~donksoft arcade~~ useful programs
while still on base.
Default programs:

Hidden from others on Messenger (so as to not give the ops away):

Downloading illegal programs while on base:

Fixes#72977
## Why It's Good For The Game
Loneops no longer waste over 1/5th of their TC when buying Detomatix, an
edge case related to midround traitors is resolved, and new nukies can
use the Detomatix with their starting PDA, rather than This One Specific
PDA Hidden In A Locker, which is more intuitive.
## Changelog
🆑 Vladoricious
qol: Nuclear PDAs now actually work like a PDA should, with the power to
download normal programs and delete them too. The nerds over at Cybersun
even installed a new "Why Fy Dry Ver", allowing you to download your
programs while still on the base!
fix: As a result, Lone Ops will no longer get scammed out of over 1/5th
of their TC when buying the Detomatix cartridge and Midround Traitors
with stolen Nuclear PDAs will not be denied an uplink.
/🆑
---------
Co-authored-by: Vladin Heir <44104681+VladinXXV@users.noreply.github.com>
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* Adds a modular computer subsystem to shift modPCs away from radios (#71732)
## About The Pull Request
Adds the modular computer subsystem which is meant to replace mod PC's
reliance on networks and radios, specifically the network subsystem, the
ntnet interface, and /datum/ntnet. This PR removes station_root ntnets
entirely, but I tried to keep it small.
This PR also removes a ton of unused vars and defines, such as NTNet
channels that were unused (peer2peer and systemcontrol), atmos networks
(as they were removed a while ago) and NTNet var on relays (its stated
purpose is so admins can see it through varedits, but that's useless now
that it's a subsystem)
I also removed ``setting_disabled`` as a thing the RD can do, it turned
off ALL ntnet systems. However, this was when there were 4 different
ones, now that there's only 2 I thought it was redundant and he could
just click 2 buttons to close them.
## Why It's Good For The Game
``/datum/ntnet``, ``/datum/component/ntnet_interface``, and
``/datum/controller/subsystem/networks`` are all old-code messes that
depend on eachother and is hard for people to understand what exactly it
adds to the game. 90% of its features is allowing the Wirecarp app to
see all the ruins that spawned in-game, which I don't think is something
that we even WANT (why does the RD need to know that oldstation spawned?
Why should they know this anyway??)
This hopefully starts to simplify networks/ntnet to make it easier to
remove in the future, because surely there are better alternatives than
**this**
## Changelog
🆑
refactor: Modular computers NTnet and applications run on its own
subsystem, please report any new bugs you may find.
/🆑
* Adds a modular computer subsystem to shift modPCs away from radios
* Fixed contractor uplink
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
* Misc PDA code improvements (#70555)
* How to conflict with PRs: A guide
* Removes unnecessary support for the now-removed job disks from Tablet's TGUI menu, and tablet's ui_act.
* Adds autodoc comments to computer files
* Removes the unused 'unsendable' var on computer files
* Generally improves code on tablets, now process isn't looping through every idle thread twice!
* Moves the check for program in idle_threads above checking if supported by hardware, because it's already running, so there's no need to check.
* eh
* revert a scipaper change
* Misc PDA code improvements
* updated contract_uplink
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Tastyfish <crazychris32@gmail.com>
* Removes AI and Charge parts from tablets, adds support for more later.
* merge conflict
* remove modular tablet loadout item
* fix SR maps referencing tablets, add clear PDA instead of modular tablet loadout
* remove pda loadout item
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
* NTDownloader UI revamp (#56704)
Revamp of the software downloader program for modular computers.
Changes:
- Programs are now sorted alphabetically with incompatible ones in the end of the list.
- Installed programs are now displayed in the list.
- Added program icons.
- Moved the error messages in place of the download button.
- Only the most important error message is displayed now. Priority: compatibility, access, free space.
- Syndicate programs are now displayed in the same list, but have a warning message from NT (There are no warning messages on syndicate OS).
- Added program categories to improve navigation. The default option "All" contains items from all categories.
- Download progress bar moved in place of the Disk usage bar. Disk usage is updated only after the download is complete, so the information was inaccurate during download. And the download bar now always visible regardless of selected category.
- The old download progress bar (next to the corresponding program) is replaced with "Downloading" indicator with a spinner.
Co-authored-by: Aleksej Komarov <stylemistake@ gmail.com>
* NTDownloader UI revamp
Co-authored-by: Andrew <mt.forspam@gmail.com>
Co-authored-by: Aleksej Komarov <stylemistake@ gmail.com>
* Converts A && A.B into A?.B (#54342)
Implements the ?. operator, replacing code like A && A.B with A?.B
BYOND Ref:
When reading A?.B, it's equivalent to A && A.B except that A is only evaluated once, even if it's a complex expression like a proc call.
* Converts all A && A.B into A?.B
Co-authored-by: ZeWaka <zewakagamer@gmail.com>
* Unhardcodes Modular PC icons (#54158)
* Changes modPC program icons to not be hardcoded
* icons
* tgui.bundle.js, we meet again
* Makes Modular PC icons not hardcoded in NtosMain.js, and fixes them not showing up
Co-authored-by: zxaber <37497534+zxaber@users.noreply.github.com>
* NT Software Hub shows programs you do not have permissions to download (#54075)
* Show disabled downloads so you know what exists
* sorted list of apps
* NT Software Hub shows programs you do not have permissions to download
Co-authored-by: NightRed <nightred@gmail.com>
* Enforce preserving parent proc return values across ui_act call stacks (#53964)
All ui_act procs should call parent by default. All procs should preserve the value of the parent proc when it's TRUTHY and pass it down the call stack. No UI should be interactible when its flags or state indicate it should not be, except when explicity overriden by child procs intentionally disregarding parent return values to achieve a specific goal.
* Enforce preserving parent proc return values across ui_act call stacks
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
Replaces like 70-80% of 0 and such, as a side effect cleaned up a bunch of returns
Edit: Most left out ones are in mecha which should be done in mecha refactor already
Oh my look how clean it is
Co-authored-by: TiviPlus <TiviPlus>
Co-authored-by: Couls <coul422@gmail.com>
Co-authored-by: TiviPlus <57223640+TiviPlus@users.noreply.github.com>
Co-authored-by: Couls <coul422@gmail.com>
* Support for expansion-class modPC hardware (#52644)
* Support for expansion-class modPC hardware
* end of the line
* As requested
Did anyone know that the tablet vendor was attaching the wrong ModPC printer? I bet no one knew that.
* update
* Support for expansion-class modPC hardware, a modPC hardware item required for the atmos scanning app, and reworking ID card slots in a related fashion
Co-authored-by: zxaber <37497534+zxaber@users.noreply.github.com>
* Updates modular PC program names to have some flavor (#52492)
* Better program names
* Forgot a few things.
* oops
* Updates modular PC program names to have some flavor
Co-authored-by: zxaber <37497534+zxaber@users.noreply.github.com>
* Synux
* cleanup
* I bet this merge conflicts
we hate tgui.bundle
* extra bits
* Syndix
* small fixes
* Summary (required)
* this linter drives me up the wall
* final touchups
* Forgot this thing
* It works, but is it worth it?
* bitfield helpers take 1
* Would this work?
* remove dangling debug code
* rebase & fixes
* vv bitfield stuff, reading
* DNM oceans of shitcode DNM
* honk
* honk2
* plonk
* rebase & fix
* Add the system for managed global variables
* Travis ban old globals
* So you CAN inline proccall, that's neat
* Fix that
* master.dm
* Remove the hack procs
* Move InitGlobals to the proper spot
* configuration.dm
* Fix the missing pre-slash
* clockcult.dm
* This is probably for the best
* Doy
* Fix shit
* Rest of the DEFINES tree
* Fix
* Use global. for access
* Update find_references_in_globals
Always hated that proc
Whoever made it must've bee a r e a l idiot...
* __HELPERS tree
* Move global initialization to master.
Fix the declaration
* database.dm
* Dat newline
* I said DECLARATIVE order!
* Here's something you can chew on @Iamgoofball
* game_modes.dm
* Fix this
* genetics.dm
* flavor_misc.dm
* More stuff
* Do it mso's way. Keep the controllers as global
* Make master actually see it
* Fix
* Finish _globalvars/lists
* Finish the rest of the _globalvars tree
* This is weird
* Migrate the controllers
* SLOTH -> GLOB
* Lighting globals
* round_start_time -> ticker
* PAI card list -> pai SS
* record_id_num -> static
* Diseases list -> SSdisease
* More disease globals to the SS
* More disease stuff
* Emote list
* Better and better
* Bluh
* So much stuff
* Ahh
* Wires
* dview
* station_areas
* Teleportlocs
* blood_splatter_icons
* Stuff and such
* More stuff
* RAD IO
* More stuff and such
* Blob shit
* Changeling stuff
* Add "Balance" to changelogs
* Balance for changelog compiler + Auto Tagging
* Update the PR template
* hivemind_bank
* Bip
* sacrificed
* Good shit
* Better define
* More cult shit
* Devil shit
* Gang shit
* > borers
Fix shit
* Rename the define
* Nuke
* Objectives
* Sandbox
* Multiverse sword
* Announce systems
* Stuff and such
* TC con
* Airlock
* doppllllerrrrrr
* holopads
* Shut up byond you inconsistent fuck
* Sneaky fuck
* Burp
* Bip
* Fixnshit
* Port without regard
* askdlfjs;
* asdfjasoidojfi
* Protected globals and more
* SO MANY
* ajsimkvahsaoisd
* akfdsiaopwimfeoiwafaw
* gsdfigjosidjfgiosdg
* AHHHHHHHHHHHHHHHHHHHHHHH!!!!!
* facerolll
* ASDFASDFASDF
* Removes the unused parts of dmm_suite
* WIP
* Fix quote
* asdfjauwfnkjs
* afwlunhskjfda
* asfjlaiwuefhaf
* SO CLOSE
* wwwweeeeeewwwww
* agdgmoewranwg
* HOLY MOTHER OF FUCK AND THATS JUST HALF THE JOB?!?
* Fix syntax errors
* 100 errors
* Another 100
* So many...
* Ugh
* More shit
* kilme
* Stuuuuuufffff
* ajrgmrlshio;djfa;sdkl
* jkbhkhjbmjvjmh
* soi soi soi
* butt
* TODAY WE LEARNED THAT GLOBAL AND STATIC ARE THE EXACT SAME FUCKING THING
* lllllllllllllllllllllllllllllllllllllllllll
* afsdijfiawhnflnjhnwsdfs
* yugykihlugk,kj
* time to go
* STUFFF!!!
* AAAAAAAAAAAAAAAAAHHHHHHHHHHHHHHHHHHHHHHHHHHH!!!!!!!!!!!!!!!!!!!!!!!
* ngoaijdjlfkamsdlkf
* Break time
* aufjsdklfalsjfi
* CONTROL KAY AND PRAY
* IT COMPILEELEELELAKLJFKLDAFJLKFDJLADKJHFLJKAJGAHIEJALDFJ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
* Goteem
* Fix testing mode
* This does not belong in this PR
* Convert it to a controller
* Eh, fuck this option
* Revert controllerization Ill do it some other time
* Fix
* Working controllerization
* FOR THE LOVE OF CHRIST PROTECT THE LOGS
* Protect admins and deadmins
* Use the inbuilt proc
* Ports AI restorer to modular computars
* mostly done. working on qdel improvments
* undoes testing flag
* undoes gc stuff
* Fixes id card module name
* memes
* Bringing computers to the light side
Bringing computers to the light side
* Lighter and lighter
Lighter and lighter
* Missed some lists
Missed some lists
* Text to defines
Text to defines
* Last commit
Last commit
* How did this even get here
How did this even get here
* Removing bad stuff
Removing bad stuff
* Fixes verb adding and idle check
Fixes verb adding and idle check
Changes documentation to an md
Changes some santize on inputs to reject_bad_text
Adds handling for the downloader to abort the download if the program is killed
* Modular computers rework, part A
* tweaks&fixes
* Adds component-side compatibility checks
* Moves computers to SSobj
* Fixes stationary computers not using power usage vars
* Changes icon generation a bit, adds icons to broken computers
* Moves UI into it's own file
* Laptop refactor + sprite replacement
* Modular console's keyboard now lights up when powered
* minor fixes
* fixes
* bonus: wired connector, new type of recharger
* Modular computers are now devices
* code quality ocd