From 9e23c3e5eebf9b00ec0f346ac187d01994223fc9 Mon Sep 17 00:00:00 2001 From: Azarak Date: Tue, 22 Dec 2020 22:51:15 +0100 Subject: [PATCH] aaaaa (#55561) Light fixtures now use different variants of overlays in order to be non-unique and save up on instantiating a TON of overlay objects. Also, fixed the GC for them --- code/modules/power/lighting.dm | 17 ++++++++--------- icons/obj/lighting_overlay.dmi | Bin 1297 -> 3345 bytes 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 4e14c7e48dd..e264eca6a2d 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -253,8 +253,6 @@ var/bulb_emergency_pow_mul = 0.75 // the multiplier for determining the light's power in emergency mode var/bulb_emergency_pow_min = 0.5 // the minimum value for the light's power in emergency mode - var/obj/effect/overlay/vis/glowybit // the light overlay - /obj/machinery/light/broken status = LIGHT_BROKEN icon_state = "tube-broken" @@ -350,8 +348,6 @@ /obj/machinery/light/Initialize(mapload) . = ..() - glowybit = SSvis_overlays.add_vis_overlay(src, overlayicon, base_state, layer, plane, dir, alpha = 0, unique = TRUE) - if(!mapload) //sync up nightshift lighting for player made lights var/area/A = get_area(src) var/obj/machinery/power/apc/temp_apc = A.get_apc() @@ -381,8 +377,6 @@ on = FALSE // A.update_lights() QDEL_NULL(cell) - vis_contents.Cut() - QDEL_NULL(glowybit) return ..() /obj/machinery/light/update_icon_state() @@ -402,10 +396,15 @@ /obj/machinery/light/update_overlays() . = ..() + SSvis_overlays.remove_vis_overlay(src, managed_vis_overlays) if(on && status == LIGHT_OK) - glowybit.alpha = clamp(light_power*250, 30, 200) - else - glowybit.alpha = 0 + var/area/A = get_area(src) + if(emergency_mode || (A?.fire)) + SSvis_overlays.add_vis_overlay(src, overlayicon, "[base_state]_emergency", layer, plane, dir) + else if (nightshift_enabled) + SSvis_overlays.add_vis_overlay(src, overlayicon, "[base_state]_nightshift", layer, plane, dir) + else + SSvis_overlays.add_vis_overlay(src, overlayicon, base_state, layer, plane, dir) // update the icon_state and luminosity of the light depending on its state /obj/machinery/light/proc/update(trigger = TRUE) diff --git a/icons/obj/lighting_overlay.dmi b/icons/obj/lighting_overlay.dmi index c8c0ffbff037c40cf459c2cb61064730f6c19406..6701265ee968fc1664c7e9c324875750d4386104 100644 GIT binary patch literal 3345 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 B8D#(f literal 1297 zcmaJ>eK^wz0RHVm&9`mJDWoxdxEr--HS^UXu9UUsvCG#lGLcM(8q=>yZJjv znQ&$DJR_$dk_0xKy5}Y{T8=vjv(FDr=oJS*%U+-Y|s2 zG5X6!`9c{-K8(|)+`Q*-Q|2Zv`r*764nCQ)4EPGJJCZB^}j}q%*7r4-Qu)4G)yy zm0W0!D9HJQ0JHX7sv6&Nw%oJO1IhZp+fPQMM6dP?545vtH{u=j7v55xDCP8nk2WKq z)(q2&dFdeaXKB?%FzRfQw@qIHy<~EZTRf)MGRJt1Q46u>VyTIiUH=;#UUTAhm=SrT zV&eOgWAtsMSY7i<>Op1*!5fQzSci_uFa+Cp&eo6ktp)C^W>#A8p2JY+j;Z~h2`3zb zLWv!-`k&N)j3^x@;cmGsh?r212QB(KTyJ(9juSnYc!FyZ`g@9sEraK7_(LibT+jUm ze|)1PtQ!rJ3Do7wPBSqAPu3UOEl}fjZ|!S*Hy&+CM^iw(6-g8o*o!5U+NJT8 zJ+`EUMkmSC<0n_PVEbGy+r&y_*mS(Eq9a~4PqeZ(+F5!ANxMT&BkSrrwA+A1ZV9pR zlKbrT1B(zBX${@=Pxo06ymHEihZloCxV}NFbK7m^kNjRV7kHxd4ggrtU-mD7H8ZDY ztE%58oOk$EIvKP)D+(Lb*4KrE$Y30Z4AE1bnt7ZXivVvty+VYfk)5=6JkK