mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-28 07:38:05 +01:00
Cache sprite data alongside spritesheets, fixing emotes and a whole lotta other missing images (#80601)
This commit is contained in:
@@ -165,7 +165,7 @@ GLOBAL_LIST_EMPTY(asset_datums)
|
||||
|
||||
if (isnull(should_refresh))
|
||||
// `fexists` seems to always fail on static-time
|
||||
should_refresh = !fexists("[ASSET_CROSS_ROUND_CACHE_DIRECTORY]/spritesheet.[name].css")
|
||||
should_refresh = !fexists(css_cache_filename()) || !fexists(data_cache_filename())
|
||||
|
||||
return should_refresh
|
||||
|
||||
@@ -296,8 +296,17 @@ GLOBAL_LIST_EMPTY(asset_datums)
|
||||
|
||||
return out.Join("\n")
|
||||
|
||||
/datum/asset/spritesheet/proc/css_cache_filename()
|
||||
return "[ASSET_CROSS_ROUND_CACHE_DIRECTORY]/spritesheet.[name].css"
|
||||
|
||||
/datum/asset/spritesheet/proc/data_cache_filename()
|
||||
return "[ASSET_CROSS_ROUND_CACHE_DIRECTORY]/spritesheet.[name].json"
|
||||
|
||||
/datum/asset/spritesheet/proc/read_from_cache()
|
||||
var/replaced_css = file2text("[ASSET_CROSS_ROUND_CACHE_DIRECTORY]/spritesheet.[name].css")
|
||||
return read_css_from_cache() && read_data_from_cache()
|
||||
|
||||
/datum/asset/spritesheet/proc/read_css_from_cache()
|
||||
var/replaced_css = file2text(css_cache_filename())
|
||||
|
||||
var/regex/find_background_urls = regex(@"background:url\('%(.+?)%'\)", "g")
|
||||
while (find_background_urls.Find(replaced_css))
|
||||
@@ -319,6 +328,14 @@ GLOBAL_LIST_EMPTY(asset_datums)
|
||||
|
||||
return TRUE
|
||||
|
||||
/datum/asset/spritesheet/proc/read_data_from_cache()
|
||||
var/json = json_decode(file2text(data_cache_filename()))
|
||||
|
||||
if (islist(json["sprites"]))
|
||||
sprites = json["sprites"]
|
||||
|
||||
return TRUE
|
||||
|
||||
/datum/asset/spritesheet/proc/send_from_cache(client/client)
|
||||
if (isnull(cached_spritesheets_needed))
|
||||
stack_trace("cached_spritesheets_needed was null when sending assets from [type] from cache")
|
||||
@@ -334,6 +351,10 @@ GLOBAL_LIST_EMPTY(asset_datums)
|
||||
return SSassets.transport.get_asset_url(asset)
|
||||
|
||||
/datum/asset/spritesheet/proc/write_to_cache()
|
||||
write_css_to_cache()
|
||||
write_data_to_cache()
|
||||
|
||||
/datum/asset/spritesheet/proc/write_css_to_cache()
|
||||
for (var/size_id in sizes)
|
||||
fcopy(SSassets.cache["[name]_[size_id].png"].resource, "[ASSET_CROSS_ROUND_CACHE_DIRECTORY]/spritesheet.[name]_[size_id].png")
|
||||
|
||||
@@ -341,7 +362,12 @@ GLOBAL_LIST_EMPTY(asset_datums)
|
||||
var/mock_css = generate_css()
|
||||
generating_cache = FALSE
|
||||
|
||||
rustg_file_write(mock_css, "[ASSET_CROSS_ROUND_CACHE_DIRECTORY]/spritesheet.[name].css")
|
||||
rustg_file_write(mock_css, css_cache_filename())
|
||||
|
||||
/datum/asset/spritesheet/proc/write_data_to_cache()
|
||||
rustg_file_write(json_encode(list(
|
||||
"sprites" = sprites,
|
||||
)), data_cache_filename())
|
||||
|
||||
/datum/asset/spritesheet/proc/get_cached_url_mappings()
|
||||
var/list/mappings = list()
|
||||
|
||||
Reference in New Issue
Block a user