mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-13 00:55:20 +01:00
21b4095dfd
Upstream 04/17/2026 fixes https://github.com/Bubberstation/Bubberstation/issues/5549 --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com> Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com> Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> Co-authored-by: Rhials <28870487+Rhials@users.noreply.github.com> Co-authored-by: rageguy505 <54517726+rageguy505@users.noreply.github.com> Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com> Co-authored-by: Aliceee2ch <160794176+Aliceee2ch@users.noreply.github.com> Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com> Co-authored-by: Tsar-Salat <62388554+Tsar-Salat@users.noreply.github.com> Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com> Co-authored-by: Maxipat <108554989+Maxipat112@users.noreply.github.com> Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com> Co-authored-by: deltanedas <39013340+deltanedas@users.noreply.github.com> Co-authored-by: SimplyLogan <47579821+loganuk@users.noreply.github.com> Co-authored-by: loganuk <fakeemail123@aol.com> Co-authored-by: Leland Kemble <70413276+lelandkemble@users.noreply.github.com> Co-authored-by: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com> Co-authored-by: Roxy <75404941+TealSeer@users.noreply.github.com> Co-authored-by: Lucy <lucy@absolucy.moe> Co-authored-by: siliconOpossum <138069572+siliconOpossum@users.noreply.github.com> Co-authored-by: Isratosh <Isratosh@hotmail.com> Co-authored-by: TheRyeGuyWhoWillNowDie <70169560+TheRyeGuyWhoWillNowDie@users.noreply.github.com> Co-authored-by: Neocloudy <88008002+Neocloudy@users.noreply.github.com> Co-authored-by: Alexander V. <volas@ya.ru> Co-authored-by: ElGitificador <168473461+ElGitificador@users.noreply.github.com> Co-authored-by: Twaticus <46540570+Twaticus@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com> Co-authored-by: Cameron Lennox <killer65311@gmail.com> Co-authored-by: Tim <timothymtorres@gmail.com> Co-authored-by: Iamgoofball <iamgoofball@gmail.com> Co-authored-by: Layzu666 <121319428+Layzu666@users.noreply.github.com> Co-authored-by: Arturlang <24881678+Arturlang@users.noreply.github.com> Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com> Co-authored-by: mrmanlikesbt <99309552+mrmanlikesbt@users.noreply.github.com> Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com> Co-authored-by: John F. Kennedy <54908920+MacaroniCritter@users.noreply.github.com> Co-authored-by: Cursor <102828457+theselfish@users.noreply.github.com> Co-authored-by: Josh <josh.adam.powell@gmail.com> Co-authored-by: Josh Powell <josh.powell@softwire.com> Co-authored-by: Yobrocharlie <Charliemiller5617@gmail.com> Co-authored-by: Hardly3D <66234359+Hardly3D@users.noreply.github.com> Co-authored-by: shayoki <96078776+shayoki@users.noreply.github.com> Co-authored-by: LT3 <83487515+lessthnthree@users.noreply.github.com>
74 lines
2.5 KiB
Plaintext
74 lines
2.5 KiB
Plaintext
SUBSYSTEM_DEF(vis_overlays)
|
|
name = "Vis contents overlays"
|
|
wait = 1 MINUTES
|
|
ss_flags = SS_NO_INIT
|
|
priority = FIRE_PRIORITY_VIS
|
|
|
|
var/list/vis_overlay_cache = list()
|
|
var/list/currentrun
|
|
|
|
/datum/controller/subsystem/vis_overlays/fire(resumed = FALSE)
|
|
if(!resumed)
|
|
currentrun = vis_overlay_cache.Copy()
|
|
var/list/current_run = currentrun
|
|
|
|
while(current_run.len)
|
|
var/key = current_run[current_run.len]
|
|
var/obj/effect/overlay/vis/overlay = current_run[key]
|
|
current_run.len--
|
|
if(!overlay.unused && !length(overlay.vis_locs))
|
|
overlay.unused = world.time
|
|
else if(overlay.unused && overlay.unused + overlay.cache_expiration < world.time)
|
|
vis_overlay_cache -= key
|
|
qdel(overlay)
|
|
if(MC_TICK_CHECK)
|
|
return
|
|
|
|
//the "thing" var can be anything with vis_contents which includes images - in the future someone should totally allow vis overlays to be passed in as an arg instead of all this bullshit
|
|
/datum/controller/subsystem/vis_overlays/proc/add_vis_overlay(atom/movable/thing, icon, iconstate, layer, plane, dir, alpha = 255, add_appearance_flags = NONE, unique = FALSE)
|
|
var/obj/effect/overlay/vis/overlay
|
|
if(!unique)
|
|
. = "[icon]|[iconstate]|[layer]|[plane]|[dir]|[alpha]|[add_appearance_flags]"
|
|
overlay = vis_overlay_cache[.]
|
|
if(!overlay)
|
|
overlay = _create_new_vis_overlay(icon, iconstate, layer, plane, dir, alpha, add_appearance_flags)
|
|
vis_overlay_cache[.] = overlay
|
|
else
|
|
overlay.unused = 0
|
|
else
|
|
overlay = _create_new_vis_overlay(icon, iconstate, layer, plane, dir, alpha, add_appearance_flags)
|
|
overlay.cache_expiration = -1
|
|
var/cache_id = "[text_ref(overlay)]@{[world.time]}"
|
|
vis_overlay_cache[cache_id] = overlay
|
|
. = overlay
|
|
thing.vis_contents += overlay
|
|
|
|
if(!isatom(thing)) // Automatic rotation is not supported on non atoms
|
|
return overlay
|
|
|
|
if(!thing.managed_vis_overlays)
|
|
thing.managed_vis_overlays = list(overlay)
|
|
else
|
|
thing.managed_vis_overlays += overlay
|
|
return overlay
|
|
|
|
/datum/controller/subsystem/vis_overlays/proc/_create_new_vis_overlay(icon, iconstate, layer, plane, dir, alpha, add_appearance_flags)
|
|
var/obj/effect/overlay/vis/overlay = new
|
|
overlay.icon = icon
|
|
overlay.icon_state = iconstate
|
|
overlay.layer = layer
|
|
overlay.plane = plane
|
|
overlay.dir = dir
|
|
overlay.alpha = alpha
|
|
overlay.appearance_flags |= add_appearance_flags
|
|
return overlay
|
|
|
|
|
|
/datum/controller/subsystem/vis_overlays/proc/remove_vis_overlay(atom/movable/thing, list/overlays)
|
|
thing.vis_contents -= overlays
|
|
if(!isatom(thing))
|
|
return
|
|
thing.managed_vis_overlays -= overlays
|
|
if(!length(thing.managed_vis_overlays))
|
|
thing.managed_vis_overlays = null
|