* testing makes me feel good * invalid lists * get rid of those boards * show expected mats * oop * error * wip techweb porting * more techweb entries * ported too * disable those for now * okay nevermind i guess * already exists * assemblies * moar * welding helmet * many entries * lol tg * fix test * again * fixagain * more moved * update techweb test * catch that too * screeee * more fixes * missing announcement * orphaned sleevecard * some more fixing * test * more * oops * glasses * illegal icons * non starting * it's starting * messed up * cleanup * more generic stuff * morrrreee * the plastic set * oops * correct value * barbed wires * more cleaning * many more * gone * cleanup * no longer * do not allow duped designs * it's own node * proper order no dupes * last of the broken nodes * fix bad path * cleanup * more test more limits * gone * almost done * these are gone * syringe gun * bioregenerator design * all moved * organized and webbed * more fixes * oops * cleaning up * organization * clean up * organize * organized * didn't save * wrong mat * adds many missing ammo types * svd doesn't exist * 10mm pistol added * magazines not casings * these are pistols * this is used by like, one weapon * m1 is ancient * this is hunting * extremely botched untested lathe * disk junk * rough foundations * slowly converting * slowly building this * local materials * almost * big reorganization * more cleanup * more cleaning * lathe stuff * small fixes * oops * many fixes * mat fix * more fixes * actually isolate the hacked designs * protolathe hacking * imprinter hacking * missing ammos * sheet printing for autolathe * fixs * again * fixed test * test test * fix * fix * WHY * fix it... * here we go * material print * on turf * body disk * consistant name * Many weapons to hacked lathe * missing node * wrong section * fixes * this list should be unified * ammo boxes * don't do single shells anymore * wat * specifics * snowflake * not needed * already available * pickaxe too * tweak * removed unneeded node * missing surgery items * Apply suggestion from @Cameron-The-Raven * Adds RMS * typo * illegal needs hacked * disabled material weapons * circuit testing * STRING TEST * test * fixing some things * huh? * hidden circuits * some flakey boards * grammar * fixes * more hidden * wrong board * security cams * alert consoles * spaceheater is simple enough to not have one * pcus * cargo vendors * tcomms stuff * solar tracker circuit * artifact stuff * SM stuff * illegal machines * med machines * no longer needed * more stuff * these are not standard * moreeee * doppler and more * organized * finishing * oop * use the define * inheret * dopper fixes * space heater * doing some organization * explain the var * some tweaks * wrong one * fixed test * material test too * simple roto gens * use the define * emergency power node * tgui fixes for icons * not needed * color blended material designs * icons for large research * oops * unshit that * use stack here * center math * . * . * . * . * . * unifi * fix these * NO COPYPASTA * ILLEEGGALLL * mandate descriptions * agony * actually lets do this * use macros * description * desc * desc * desc * desc * desc * desc * gps desc * telecomms component desc --------- Co-authored-by: Cameron Lennox <killer65311@gmail.com> Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
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.