Files
Bubberstation/code/modules/asset_cache
SkyratBot fc6f6176d8 [MIRROR] General maintenance for chem heater [MDB IGNORE] (#25854)
* General maintenance for chem heater (#80495)

## About The Pull Request

1. Converted UI to typescript
2. Removed all tutorial code(and the icon files it used) Also removes
the reward that came with it. Both were not a big deal to begin with so
you know no one will miss it, In the name of code clean up and reducing
dmi file sizes it serves us better removing them

    It did not compile in the new UI
![Screenshot
(368)](https://github.com/tgstation/tgstation/assets/110812394/cff143c8-5239-45e0-932d-df6447ab359b)
And the text to display is way too clunky to be readable code wise (no
indentation just big raw blobs of unorganized text)

9983b883f7/code/modules/reagents/chemistry/machinery/chem_heater.dm (L334-L339)

And the steps manually set chem temps and volumes without calling the
appropriate procs basically its a mess so best to throw it all away.

3. Fixed the debug chem heater only absorbing 100 units of buffer from
the beaker even though it has a capacity of 2000. This is because it
used a constant of 100 for calculating how much volume to absorb

9983b883f7/code/modules/reagents/chemistry/machinery/chem_heater.dm (L449)
Even though the debug chem heater has a capacity over 1000

9983b883f7/code/modules/reagents/chemistry/machinery/chem_heater.dm (L495-L497)
Now the absorbing mechanism is based on the `maximum_volume` of the
holder and not on a fixed constant
4. Fixed the chem heater showing the wrong overlay when its panel is
opened and then closed while a beaker is inside
It would use the same icon for both open & closed state

9983b883f7/code/modules/reagents/chemistry/machinery/chem_heater.dm (L164)
But it should actually use this state

9983b883f7/code/modules/reagents/chemistry/machinery/chem_heater.dm (L59)
That's fixed now too.
5. Removed unused procs, variables and a whole lot of tracking which
UI's are opened/closed. All this is not necessary because the `SStgui`
subsystem tracks them for you so it was a lot of code bloat. autodocs
vars, procs and the regular stuff
6. Added more examines & tooltips for chem heater

## Changelog
🆑
fix: debug chem heater now withdraws more than 100 units from its
inserted beaker.
fix: chem heater has correct overlay when its panel is closed with a
screwdriver while a beaker is inside.
qol: added more examines and tooltips for the chem heater.
code: converted chem heater UI to typescript. removed unused procs,
vars, ui tracking code. Added auto doc for everything.
refactor: removed chem heater tutorial help button & its related reward,
chem heater code has been optimized as a whole.
/🆑

* General maintenance for chem heater

---------

Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
2023-12-25 20:38:41 +00:00
..

Asset cache system

Framework for managing browser assets (javascript,css,images,etc)

This manages getting the asset to the client without doing unneeded re-sends, as well as utilizing any configured cdns.

There are two frameworks for using this system:

Asset datum:

Make a datum in asset_list_items.dm with your browser assets for your thing.

Checkout asset_list.dm for the helper subclasses

The simple subclass will most likely be of use for most cases.

Call get_asset_datum() with the type of the datum you created to get your asset cache datum

Call .send(client|usr) on that datum to send the asset to the client. Depending on the asset transport this may or may not block.

Call .get_url_mappings() to get an associated list with the urls your assets can be found at.

Manual backend:

See the documentation for /datum/asset_transport for the backend api the asset datums utilize.

The global variable SSassets.transport contains the currently configured transport.

Notes:

Because byond browse() calls use non-blocking queues, if your code uses output() (which bypasses all of these queues) to invoke javascript functions you will need to first have the javascript announce to the server it has loaded before trying to invoke js functions.

To make your code work with any CDNs configured by the server, you must make sure assets are referenced from the url returned by get_url_mappings() or by asset_transport's get_asset_url(). (TGUI also has helpers for this.) If this can not be easily done, you can bypass the cdn using legacy assets, see the simple asset datum for details.

CSS files that use url() can be made to use the CDN without needing to rewrite all url() calls in code by using the namespaced helper datum. See the documentation for /datum/asset/simple/namespaced for details.