Files
Yogstation/code/modules/asset_cache
nmajask f216b2c4f6 Ports "Adds borg tablets, and RoboTact as a borg self-management app" (#12781)
* Ports borg tablets and Robotact

A very rough port of the two from TG with some code "barrowed" from SandPoot from cit to work around the lighting changes on TG

* Ports dentation button, rearranges the UI, and adds a change I forgot

Should all work

* Should fix the checks

Tgui being stingy

* Expanded Robotact and ports stuff

Adds a button to view alerts, self destruct, adjust light, and take picture to Robotact, ports downloading logs with the Borg Monitor, and allows borgs to use the NTOS downloader.

* Update asset_list_items.dm

* Adds buttons for lamp intensity

The slider is a bit jank, so I added some buttons for those who dont want to deal with it.

* Forgot you can do this

Should fix the checks

* *scream

Why is the linter so strict?

* Tails.dm but again

This is so much fun

* Reorganizes stuff and adds an integrated hardware flag

Reorganizes stuff to fit mod PDA/telescreen's new organization (dedicated files for each device) and added a hardware flag to better determine what can be used in the borg PC, fixing adam's issue.

* Should revert some of the removed buttons/commands

No reason to remove them

* Fixes the check

Forgot about this

* This is probably important

I should really test this

Co-authored-by: Theos <theubernyan@gmail.com>
2022-02-02 18:27:05 +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.