Files
Bubberstation/code/modules/asset_cache
shellspeed1 69a16a028e Replaces Persistence Comms with Cybersun, also bug and mapping fixes (#3086)
## About The Pull Request

Persistence is supposed to be a cybersun front but it still uses
interdyne comms. Lets fix that and add interdyne comms as an emergency
comms chip.

Additionally, this PR disables the icemoon automapper as we have been
having consistent issues with missing roofs. This is hopefully a
temporary fix until a better solution can be found.

Lastly, reworks engineering a bit to add one more construction spot and
make the utilities room a bit easier to notice so water actually gets
set up. Also expands table space in the kitchen as that was one of the
more desired features.

## Why It's Good For The Game

I love not having holes in the roof. Also flavor on the comms as we are
supposed to be a cybersun front.

## Proof Of Testing

<details><summary>Screen caps from testing</summary>

![image](https://github.com/user-attachments/assets/a110e756-5ae5-4ddf-b5b2-f2bb56af29d5)


![image](https://github.com/user-attachments/assets/50c3c968-d2c4-4c6d-867b-1db1ac80c9b6)


![image](https://github.com/user-attachments/assets/d8a851e3-80ef-422a-b836-6c75b76b19f7)


![image](https://github.com/user-attachments/assets/16b9e74b-7105-48a2-998d-bb3d349ea154)


![image](https://github.com/user-attachments/assets/e47e2794-31bf-4a80-81ad-7c03c5530891)


![image](https://github.com/user-attachments/assets/36c4e595-c182-45ad-851c-64de760e988c)
</details>

## Changelog
🆑
add: Persistence now has cybersun comms (It's literally just renamed
persistence comms)
add: Persistence can now produce interdyne comms in an emergency using
an interdyne comms chips
fix: Persistence no longer has 4 safes on one tile
fix: Persistence no longer has a turret that shoots out a window in the
prison
fix: Persistence no longer has a null telecomms server, also atmos works
fix: Renamed syndicate_exofab to syndicate exofab in the circuit printer
fix: Renamed cybersun channel no longer outputs to the uplink channel
fix: Reverts automapper placement of persistence on icemoon and returns
to
map: slightly revamped the Persistence kitchen.
map: condensed the utility area of persistence and added a cycling
airlock plus one more 3x3 construction area.
map: toned down some of the roundstart persistence equipment that can be
acquired through other relatively easy means such as cargo.
/🆑

---------

Co-authored-by: Otome <darkwolfinsanity@gmail.com>
2025-03-24 10:55:43 -06: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.