mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-25 14:00:18 +01:00
Update SSOverlays (ported from Baystation) (#19051)
Our SSOverlays system is outdated, and is likely the cause of many of the issues seen in #18895. It has also been linked to a massive server performance decrease. This brings an updated system from Baystation, hopefully with speed increases. Should be testmerged, ideally with #18895. --------- Co-authored-by: Cody Brittain <cbrittain10@live.com>
This commit is contained in:
co-authored by
Cody Brittain
parent
405a05b819
commit
9983fca311
@@ -125,7 +125,7 @@
|
||||
check_stability()
|
||||
|
||||
/obj/machinery/am_shielding/update_icon()
|
||||
cut_overlays()
|
||||
ClearOverlays()
|
||||
coredirs = 0
|
||||
dirs = 0
|
||||
for(var/direction in GLOB.alldirs)
|
||||
|
||||
@@ -628,18 +628,18 @@
|
||||
|
||||
if(!(update_state & UPDATE_ALLGOOD))
|
||||
if(overlays.len)
|
||||
cut_overlays()
|
||||
ClearOverlays()
|
||||
return
|
||||
|
||||
if(update & 2)
|
||||
cut_overlays()
|
||||
ClearOverlays()
|
||||
if(!(stat & (BROKEN|MAINT)) && update_state & UPDATE_ALLGOOD)
|
||||
add_overlay(status_overlays_lock[locked+coverlocked+1])
|
||||
add_overlay(status_overlays_charging[charging+1])
|
||||
AddOverlays(status_overlays_lock[locked+coverlocked+1])
|
||||
AddOverlays(status_overlays_charging[charging+1])
|
||||
if(operating)
|
||||
add_overlay(status_overlays_equipment[equipment+1])
|
||||
add_overlay(status_overlays_lighting[lighting+1])
|
||||
add_overlay(status_overlays_environ[environ+1])
|
||||
AddOverlays(status_overlays_equipment[equipment+1])
|
||||
AddOverlays(status_overlays_lighting[lighting+1])
|
||||
AddOverlays(status_overlays_environ[environ+1])
|
||||
|
||||
if(update & 3)
|
||||
if(update_state & UPDATE_BLUESCREEN)
|
||||
|
||||
@@ -88,8 +88,8 @@
|
||||
/obj/machinery/power/smes/batteryrack/makeshift/update_icon()
|
||||
.=..()
|
||||
if(overcharge_percent > 100)
|
||||
cut_overlays()
|
||||
add_overlay("smes-crit")
|
||||
ClearOverlays()
|
||||
AddOverlays("smes-crit")
|
||||
|
||||
//This mess of if-elses and magic numbers handles what happens if the engies don't pay attention and let it eat too much charge
|
||||
//What happens depends on how much capacity has the ghetto smes and how much it is overcharged.
|
||||
|
||||
@@ -625,8 +625,8 @@ By design, d1 is the smallest direction and d2 is the highest
|
||||
item_state = "[initial(icon_state)]"
|
||||
name += " coil"
|
||||
update_held_icon()
|
||||
cut_overlays()
|
||||
add_overlay(overlay_image(icon, "[icon_state]_end", flags=RESET_COLOR))
|
||||
ClearOverlays()
|
||||
AddOverlays(overlay_image(icon, "[icon_state]_end", flags=RESET_COLOR))
|
||||
check_maptext(SMALL_FONTS(7, get_amount()))
|
||||
|
||||
/obj/item/stack/cable_coil/attackby(obj/item/attacking_item, mob/user)
|
||||
@@ -1058,13 +1058,13 @@ By design, d1 is the smallest direction and d2 is the highest
|
||||
/obj/structure/noose/post_buckle(mob/living/M)
|
||||
if(M == buckled)
|
||||
layer = MOB_LAYER
|
||||
add_overlay(over)
|
||||
AddOverlays(over)
|
||||
START_PROCESSING(SSprocessing, src)
|
||||
M.pixel_y = initial(M.pixel_y) + 8 //rise them up a bit
|
||||
M.dir = SOUTH
|
||||
else
|
||||
reset_plane_and_layer()
|
||||
cut_overlay(over)
|
||||
CutOverlays(over)
|
||||
STOP_PROCESSING(SSprocessing, src)
|
||||
pixel_x = initial(pixel_x)
|
||||
M.pixel_x = initial(M.pixel_x)
|
||||
|
||||
@@ -28,14 +28,14 @@
|
||||
return use(cell_amt) / CELLRATE
|
||||
|
||||
/obj/item/cell/update_icon()
|
||||
cut_overlays()
|
||||
ClearOverlays()
|
||||
switch(percent())
|
||||
if(95 to 100)
|
||||
add_overlay("cell-o2")
|
||||
AddOverlays("cell-o2")
|
||||
if(25 to 94)
|
||||
add_overlay("cell-o1")
|
||||
AddOverlays("cell-o1")
|
||||
if(0.05 to 25)
|
||||
add_overlay("cell-o0")
|
||||
AddOverlays("cell-o0")
|
||||
if(0 to 0.05)
|
||||
return
|
||||
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
|
||||
/obj/machinery/power/generator/update_icon()
|
||||
icon_state = anchored ? "teg-assembled" : "teg-unassembled"
|
||||
cut_overlays()
|
||||
ClearOverlays()
|
||||
if (circ1)
|
||||
circ1.temperature_overlay = null
|
||||
if (circ2)
|
||||
@@ -86,7 +86,7 @@
|
||||
return TRUE
|
||||
else
|
||||
if (lastgenlev != 0)
|
||||
add_overlay("teg-op[lastgenlev]")
|
||||
AddOverlays("teg-op[lastgenlev]")
|
||||
if (circ1 && circ2)
|
||||
var/extreme = (lastgenlev > 9) ? "ex" : ""
|
||||
if (circ1.last_temperature < circ2.last_temperature)
|
||||
|
||||
@@ -85,7 +85,7 @@
|
||||
/obj/machinery/gravity_generator/main/station/Initialize()
|
||||
. = ..()
|
||||
setup_parts()
|
||||
middle.add_overlay("activated")
|
||||
middle.AddOverlays("activated")
|
||||
update_list(TRUE)
|
||||
addtimer(CALLBACK(src, PROC_REF(round_startset)), 100)
|
||||
|
||||
@@ -180,7 +180,7 @@
|
||||
for(var/obj/machinery/gravity_generator/M in parts)
|
||||
if(!(M.stat & BROKEN))
|
||||
M.set_broken()
|
||||
middle.cut_overlays()
|
||||
middle.ClearOverlays()
|
||||
charge_count = 0
|
||||
breaker = 0
|
||||
set_power()
|
||||
@@ -305,7 +305,7 @@
|
||||
pulse_radiation(100)
|
||||
set_state(0)
|
||||
if(middle)
|
||||
middle.cut_overlays()
|
||||
middle.ClearOverlays()
|
||||
if(prob(1)) //It will spawn a small one and eat the generator. Won't cause any other issues considering it's a 1x1 and will go away on it's own.
|
||||
new /obj/singularity(src.loc)
|
||||
if(prob(33)) //Releasing all that power at once is dangerous.
|
||||
@@ -411,9 +411,9 @@
|
||||
|
||||
if(overlay_state != current_overlay)
|
||||
if(middle)
|
||||
middle.cut_overlays()
|
||||
middle.ClearOverlays()
|
||||
if(overlay_state)
|
||||
middle.add_overlay(overlay_state)
|
||||
middle.AddOverlays(overlay_state)
|
||||
current_overlay = overlay_state
|
||||
|
||||
/obj/machinery/gravity_generator/main/proc/pulse_radiation(var/amount = 20)
|
||||
|
||||
@@ -36,25 +36,25 @@
|
||||
|
||||
// update the icon state and description of the light
|
||||
/obj/item/light/proc/update()
|
||||
cut_overlays()
|
||||
ClearOverlays()
|
||||
switch(status)
|
||||
if(LIGHT_OK)
|
||||
icon_state = "[lighttype]_attachment"
|
||||
var/image/I = image(icon, "[lighttype]")
|
||||
I.color = brightness_color
|
||||
add_overlay(I)
|
||||
AddOverlays(I)
|
||||
desc = "A replacement [name]."
|
||||
if(LIGHT_BURNED)
|
||||
icon_state = "[lighttype]_attachment"
|
||||
var/image/I = image(icon, "[lighttype]_burned")
|
||||
I.color = brightness_color
|
||||
add_overlay(I)
|
||||
AddOverlays(I)
|
||||
desc = "A burnt-out [name]."
|
||||
if(LIGHT_BROKEN)
|
||||
icon_state = "[lighttype]_attachment_broken"
|
||||
var/image/I = image(icon, "[lighttype]_broken")
|
||||
I.color = brightness_color
|
||||
add_overlay(I)
|
||||
AddOverlays(I)
|
||||
desc = "A broken [name]."
|
||||
|
||||
// attack bulb/tube with object
|
||||
|
||||
@@ -230,7 +230,7 @@
|
||||
pixel_y = pixel_y
|
||||
|
||||
/obj/machinery/light/update_icon()
|
||||
cut_overlays()
|
||||
ClearOverlays()
|
||||
if ((status == LIGHT_EMPTY) || !fitting_has_empty_icon)
|
||||
icon_state = "[base_state]_empty"
|
||||
else
|
||||
@@ -252,17 +252,17 @@
|
||||
I.plane = EFFECTS_ABOVE_LIGHTING_PLANE
|
||||
else
|
||||
I.plane = plane
|
||||
add_overlay(I)
|
||||
AddOverlays(I)
|
||||
else
|
||||
add_overlay(LIGHT_FIXTURE_CACHE(icon, "[base_state]_off", target_color))
|
||||
AddOverlays(LIGHT_FIXTURE_CACHE(icon, "[base_state]_off", target_color))
|
||||
|
||||
if(LIGHT_BURNED)
|
||||
add_overlay(LIGHT_FIXTURE_CACHE(icon, "[base_state]_burned", brightness_color))
|
||||
AddOverlays(LIGHT_FIXTURE_CACHE(icon, "[base_state]_burned", brightness_color))
|
||||
stat |= BROKEN
|
||||
stat &= ~MAINT
|
||||
|
||||
if(LIGHT_BROKEN)
|
||||
add_overlay(LIGHT_FIXTURE_CACHE(icon, "[base_state]_broken", brightness_color))
|
||||
AddOverlays(LIGHT_FIXTURE_CACHE(icon, "[base_state]_broken", brightness_color))
|
||||
stat |= BROKEN
|
||||
stat &= ~MAINT
|
||||
|
||||
|
||||
@@ -60,8 +60,8 @@
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/power/radial_floodlight/update_icon()
|
||||
cut_overlays()
|
||||
ClearOverlays()
|
||||
if(on)
|
||||
var/image/light = image(icon, src, "[icon_state]-light")
|
||||
light.plane = EFFECTS_ABOVE_LIGHTING_PLANE
|
||||
add_overlay(light)
|
||||
AddOverlays(light)
|
||||
|
||||
@@ -35,26 +35,26 @@ field_generator power level display
|
||||
|
||||
|
||||
/obj/machinery/field_generator/update_icon()
|
||||
cut_overlays()
|
||||
ClearOverlays()
|
||||
if(!active)
|
||||
if(warming_up)
|
||||
add_overlay("+a[warming_up]")
|
||||
AddOverlays("+a[warming_up]")
|
||||
if(fields.len)
|
||||
add_overlay("+on")
|
||||
AddOverlays("+on")
|
||||
// Power level indicator
|
||||
// Scale % power to % num_power_levels and truncate value
|
||||
var/level = round(num_power_levels * power / field_generator_max_power)
|
||||
// Clamp between 0 and num_power_levels for out of range power values
|
||||
level = between(0, level, num_power_levels)
|
||||
if(level)
|
||||
add_overlay("+p[level]")
|
||||
AddOverlays("+p[level]")
|
||||
if(anchored)
|
||||
add_overlay("+bolts")
|
||||
AddOverlays("+bolts")
|
||||
if(state == 2)
|
||||
add_overlay("+welding")
|
||||
AddOverlays("+welding")
|
||||
var/image/lights_image = image(icon, null, "+lights")
|
||||
lights_image.plane = EFFECTS_ABOVE_LIGHTING_PLANE
|
||||
add_overlay(lights_image)
|
||||
AddOverlays(lights_image)
|
||||
|
||||
/obj/machinery/field_generator/process()
|
||||
if(Varedit_start == 1)
|
||||
|
||||
@@ -11,12 +11,12 @@
|
||||
var/creation_type = /obj/singularity
|
||||
|
||||
/obj/machinery/the_singularitygen/update_icon()
|
||||
cut_overlays()
|
||||
ClearOverlays()
|
||||
if(anchored)
|
||||
add_overlay("[icon_state]+bolts")
|
||||
AddOverlays("[icon_state]+bolts")
|
||||
var/image/lights_image = image(icon, null, "[icon_state]+lights")
|
||||
lights_image.plane = EFFECTS_ABOVE_LIGHTING_PLANE
|
||||
add_overlay(lights_image)
|
||||
AddOverlays(lights_image)
|
||||
|
||||
/obj/machinery/the_singularitygen/process()
|
||||
var/turf/T = get_turf(src)
|
||||
|
||||
@@ -479,15 +479,15 @@
|
||||
move_self = 0
|
||||
switch (current_size)
|
||||
if(1)
|
||||
add_overlay(image('icons/obj/singularity.dmi',"chain_s1"))
|
||||
AddOverlays(image('icons/obj/singularity.dmi',"chain_s1"))
|
||||
if(3)
|
||||
add_overlay(image('icons/effects/96x96.dmi',"chain_s3"))
|
||||
AddOverlays(image('icons/effects/96x96.dmi',"chain_s3"))
|
||||
if(5)
|
||||
add_overlay(image('icons/effects/160x160.dmi',"chain_s5"))
|
||||
AddOverlays(image('icons/effects/160x160.dmi',"chain_s5"))
|
||||
if(7)
|
||||
add_overlay(image('icons/effects/224x224.dmi',"chain_s7"))
|
||||
AddOverlays(image('icons/effects/224x224.dmi',"chain_s7"))
|
||||
if(9)
|
||||
add_overlay(image('icons/effects/288x288.dmi',"chain_s9"))
|
||||
AddOverlays(image('icons/effects/288x288.dmi',"chain_s9"))
|
||||
|
||||
/obj/singularity/proc/on_release()
|
||||
chained = 0
|
||||
|
||||
@@ -162,27 +162,27 @@
|
||||
return 0
|
||||
|
||||
/obj/machinery/power/smes/update_icon()
|
||||
cut_overlays()
|
||||
ClearOverlays()
|
||||
if(!can_function())
|
||||
return
|
||||
|
||||
if(inputting == 2)
|
||||
add_overlay("[icon_state]-oc2")
|
||||
AddOverlays("[icon_state]-oc2")
|
||||
else if (inputting == 1)
|
||||
add_overlay("[icon_state]-oc1")
|
||||
AddOverlays("[icon_state]-oc1")
|
||||
else if (input_attempt)
|
||||
add_overlay("[icon_state]-oc0")
|
||||
AddOverlays("[icon_state]-oc0")
|
||||
|
||||
var/clevel = chargedisplay()
|
||||
if(clevel)
|
||||
add_overlay("[icon_state]-og[clevel]")
|
||||
AddOverlays("[icon_state]-og[clevel]")
|
||||
|
||||
if(outputting == 2)
|
||||
add_overlay("[icon_state]-op2")
|
||||
AddOverlays("[icon_state]-op2")
|
||||
else if (outputting == 1)
|
||||
add_overlay("[icon_state]-op1")
|
||||
AddOverlays("[icon_state]-op1")
|
||||
else
|
||||
add_overlay("[icon_state]-op0")
|
||||
AddOverlays("[icon_state]-op0")
|
||||
|
||||
/obj/machinery/power/smes/proc/chargedisplay()
|
||||
return round(5.5*charge/(capacity ? capacity : 5e6))
|
||||
|
||||
@@ -368,9 +368,9 @@
|
||||
// Description: Allows us to use special icon overlay for critical SMESs
|
||||
/obj/machinery/power/smes/buildable/update_icon()
|
||||
if(failing)
|
||||
cut_overlays()
|
||||
add_overlay("smes-crit")
|
||||
add_overlay("smes-crit_screen")
|
||||
ClearOverlays()
|
||||
AddOverlays("smes-crit")
|
||||
AddOverlays("smes-crit_screen")
|
||||
else
|
||||
..()
|
||||
|
||||
|
||||
@@ -91,11 +91,11 @@
|
||||
|
||||
/obj/machinery/power/solar/update_icon()
|
||||
..()
|
||||
cut_overlays()
|
||||
ClearOverlays()
|
||||
if(stat & BROKEN)
|
||||
add_overlay("solar_panel-b")
|
||||
AddOverlays("solar_panel-b")
|
||||
else
|
||||
add_overlay("solar_panel")
|
||||
AddOverlays("solar_panel")
|
||||
set_angle(adir)
|
||||
return
|
||||
|
||||
@@ -526,7 +526,7 @@
|
||||
set_panels(cdir)
|
||||
|
||||
/obj/machinery/power/solar_control/update_icon()
|
||||
cut_overlays()
|
||||
ClearOverlays()
|
||||
if(stat & NOPOWER)
|
||||
set_light(0)
|
||||
return
|
||||
@@ -538,10 +538,10 @@
|
||||
if(stat & BROKEN)
|
||||
icon_state = "[initial(icon_state)]-broken"
|
||||
holographic_overlay(src, src.icon, "broken")
|
||||
add_overlay("red_key")
|
||||
AddOverlays("red_key")
|
||||
else
|
||||
holographic_overlay(src, src.icon, "solar")
|
||||
add_overlay("yellow_key")
|
||||
AddOverlays("yellow_key")
|
||||
|
||||
//
|
||||
// MISC
|
||||
|
||||
@@ -14,12 +14,12 @@
|
||||
)
|
||||
|
||||
/obj/machinery/power/tesla_coil/update_icon()
|
||||
cut_overlays()
|
||||
ClearOverlays()
|
||||
if(anchored)
|
||||
add_overlay("[icon_state]+bolts")
|
||||
AddOverlays("[icon_state]+bolts")
|
||||
var/image/lights_image = image(icon, null, "[icon_state]+lights")
|
||||
lights_image.plane = EFFECTS_ABOVE_LIGHTING_PLANE
|
||||
add_overlay(lights_image)
|
||||
AddOverlays(lights_image)
|
||||
|
||||
/obj/machinery/power/tesla_coil/RefreshParts()
|
||||
var/power_multiplier = 0
|
||||
@@ -75,12 +75,12 @@
|
||||
)
|
||||
|
||||
/obj/machinery/power/grounding_rod/update_icon()
|
||||
cut_overlays()
|
||||
ClearOverlays()
|
||||
if(anchored)
|
||||
add_overlay("[icon_state]+bolts")
|
||||
AddOverlays("[icon_state]+bolts")
|
||||
var/image/lights_image = image(icon, null, "[icon_state]+lights")
|
||||
lights_image.plane = EFFECTS_ABOVE_LIGHTING_PLANE
|
||||
add_overlay(lights_image)
|
||||
AddOverlays(lights_image)
|
||||
|
||||
/obj/machinery/power/grounding_rod/attackby(obj/item/attacking_item, mob/user)
|
||||
if(default_deconstruction_screwdriver(user, attacking_item))
|
||||
|
||||
Reference in New Issue
Block a user