mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-23 12:07:27 +01:00
Image caching optimizations
This commit is contained in:
@@ -65,6 +65,7 @@
|
||||
)
|
||||
var/longtermpower = 10
|
||||
var/updating_icon = 0
|
||||
var/list/status_overlays
|
||||
//var/debug = 0
|
||||
|
||||
/proc/RandomAPCWires()
|
||||
@@ -178,17 +179,15 @@
|
||||
// also add overlays for indicator lights
|
||||
|
||||
/obj/machinery/power/apc/update_icon()
|
||||
var/list/status_overlays
|
||||
|
||||
if (isnull(status_overlays)) // if no status overlays list, this is first call
|
||||
status_overlays = new
|
||||
status_overlays.len = 5
|
||||
status_overlays[1] = image('power.dmi', "apcox-[locked]") // 0=blue 1=red
|
||||
status_overlays[2] = image('power.dmi', "apco3-[charging]") // 0=red, 1=yellow/black 2=green
|
||||
status_overlays[1] = image('icons/obj/power.dmi', "apcox-[locked]") // 0=blue 1=red
|
||||
status_overlays[2] = image('icons/obj/power.dmi', "apco3-[charging]") // 0=red, 1=yellow/black 2=green
|
||||
|
||||
status_overlays[3] = image('power.dmi', "apco0-[equipment]") // 0=red, 1=green, 2=blue
|
||||
status_overlays[4] = image('power.dmi', "apco1-[lighting]")
|
||||
status_overlays[5] = image('power.dmi', "apco2-[environ]")
|
||||
status_overlays[3] = image('icons/obj/power.dmi', "apco0-[equipment]") // 0=red, 1=green, 2=blue
|
||||
status_overlays[4] = image('icons/obj/power.dmi', "apco1-[lighting]")
|
||||
status_overlays[5] = image('icons/obj/power.dmi', "apco2-[environ]")
|
||||
|
||||
if(opened)
|
||||
icon_state = "[ cell ? "apc2" : "apc1" ]" // if opened, show cell if it's inserted
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
// the power cell
|
||||
// charge from 0 to 100%
|
||||
// fits in APC to provide backup power
|
||||
/obj/item/weapon/cell/var/image/overlay_image
|
||||
|
||||
/obj/item/weapon/cell/New()
|
||||
..()
|
||||
@@ -10,14 +11,18 @@
|
||||
updateicon()
|
||||
|
||||
/obj/item/weapon/cell/proc/updateicon()
|
||||
if(isnull(src.overlay_image))
|
||||
src.overlay_image = image('icons/obj/power.dmi')
|
||||
overlays.Cut()
|
||||
|
||||
if(charge < 0.01)
|
||||
return
|
||||
else if(charge/maxcharge >=0.995)
|
||||
overlays += image('icons/obj/power.dmi', "cell-o2")
|
||||
src.overlay_image.icon_state = "cell-o2"
|
||||
overlays += src.overlay_image
|
||||
else
|
||||
overlays += image('icons/obj/power.dmi', "cell-o1")
|
||||
src.overlay_image.icon_state = "cell-o1"
|
||||
overlays += src.overlay_image
|
||||
|
||||
/obj/item/weapon/cell/proc/percent() // return % charge of cell
|
||||
return 100.0*charge/maxcharge
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
var/lastgen = 0
|
||||
var/lastgenlev = -1
|
||||
|
||||
var/image/overlay_image
|
||||
|
||||
/obj/machinery/power/generator/New()
|
||||
..()
|
||||
|
||||
@@ -48,13 +50,15 @@
|
||||
circ2 = null
|
||||
|
||||
/obj/machinery/power/generator/proc/updateicon()
|
||||
if(stat & (NOPOWER|BROKEN))
|
||||
overlays.Cut()
|
||||
else
|
||||
overlays.Cut()
|
||||
if(isnull(src.overlay_image))
|
||||
src.overlay_image = image('icons/obj/power.dmi')
|
||||
|
||||
overlays.Cut()
|
||||
if(!(stat & (NOPOWER|BROKEN)))
|
||||
|
||||
if(lastgenlev != 0)
|
||||
overlays += image('icons/obj/power.dmi', "teg-op[lastgenlev]")
|
||||
src.overlay_image.icon_state = "teg-op[lastgenlev]"
|
||||
overlays += src.overlay_image
|
||||
|
||||
/obj/machinery/power/generator/process()
|
||||
if(!circ1 || !circ2 || !anchored || stat & (BROKEN|NOPOWER))
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
var/lastgen = 0
|
||||
var/lastgenlev = -1
|
||||
|
||||
var/image/overlay_image
|
||||
|
||||
/obj/machinery/power/generator_type2/New()
|
||||
..()
|
||||
@@ -25,13 +26,15 @@
|
||||
|
||||
/obj/machinery/power/generator_type2/proc/updateicon()
|
||||
|
||||
if(stat & (NOPOWER|BROKEN))
|
||||
overlays.Cut()
|
||||
else
|
||||
overlays.Cut()
|
||||
if(isnull(src.overlay_image))
|
||||
src.overlay_image = image('icons/obj/power.dmi')
|
||||
|
||||
overlays.Cut()
|
||||
if(!(stat & (NOPOWER|BROKEN)))
|
||||
|
||||
if(lastgenlev != 0)
|
||||
overlays += image('icons/obj/power.dmi', "teg-op[lastgenlev]")
|
||||
src.overlay_image.icon_state = "teg-op[lastgenlev]"
|
||||
overlays += src.overlay_image
|
||||
|
||||
#define GENRATE 800 // generator output coefficient from Q
|
||||
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
#define SMESMAXCHARGELEVEL 200000
|
||||
#define SMESMAXOUTPUT 200000
|
||||
|
||||
|
||||
|
||||
/obj/machinery/power/smes
|
||||
name = "power storage unit"
|
||||
desc = "A high-capacity superconducting magnetic energy storage (SMES) unit."
|
||||
@@ -23,7 +25,7 @@
|
||||
var/online = 1
|
||||
var/n_tag = null
|
||||
var/obj/machinery/power/terminal/terminal = null
|
||||
|
||||
var/list/overlay_images
|
||||
|
||||
/obj/machinery/power/smes/New()
|
||||
..()
|
||||
@@ -47,17 +49,34 @@
|
||||
overlays.Cut()
|
||||
if(stat & BROKEN) return
|
||||
|
||||
overlays += image('icons/obj/power.dmi', "smes-op[online]")
|
||||
if(isnull(src.overlay_images))
|
||||
src.overlay_images = new
|
||||
src.overlay_images.len = 3
|
||||
|
||||
if(charging)
|
||||
overlays += image('icons/obj/power.dmi', "smes-oc1")
|
||||
src.overlay_images[1] = image('icons/obj/power.dmi', "smes-op[online]")
|
||||
src.overlay_images[2] = image('icons/obj/power.dmi', "smes-oc0")
|
||||
src.overlay_images[3] = image('icons/obj/power.dmi', "smes-og1")
|
||||
|
||||
var/image/buffer
|
||||
|
||||
buffer = src.overlay_images[1]
|
||||
buffer.icon_state = "smes-op[online]"
|
||||
overlays += src.overlay_images[1]
|
||||
|
||||
if(!charging && chargemode)
|
||||
buffer = src.overlay_images[2]
|
||||
buffer.icon_state = "smes-oc0"
|
||||
overlays += src.overlay_images[2]
|
||||
else
|
||||
if(chargemode)
|
||||
overlays += image('icons/obj/power.dmi', "smes-oc0")
|
||||
buffer = src.overlay_images[2]
|
||||
buffer.icon_state = "smes-oc1"
|
||||
overlays += src.overlay_images[2]
|
||||
|
||||
var/clevel = chargedisplay()
|
||||
if(clevel>0)
|
||||
overlays += image('icons/obj/power.dmi', "smes-og[clevel]")
|
||||
if(clevel > 0)
|
||||
buffer = src.overlay_images[3]
|
||||
buffer.icon_state = "smes-og[clevel]"
|
||||
overlays += src.overlay_images[3]
|
||||
return
|
||||
|
||||
|
||||
|
||||
@@ -34,6 +34,7 @@ var/list/solars_list = list()
|
||||
var/ndir = SOUTH
|
||||
var/turn_angle = 0
|
||||
var/obj/machinery/power/solar_control/control = null
|
||||
var/image/overlay_image //overlay cache image
|
||||
|
||||
/obj/machinery/power/solar/New(var/turf/loc, var/obj/item/solar_assembly/S, var/process = 1)
|
||||
..(loc)
|
||||
@@ -102,11 +103,14 @@ var/list/solars_list = list()
|
||||
/obj/machinery/power/solar/update_icon()
|
||||
..()
|
||||
overlays.Cut()
|
||||
if(isnull(src.overlay_image))
|
||||
src.overlay_image = image('icons/obj/power.dmi', layer = FLY_LAYER)
|
||||
if(stat & BROKEN)
|
||||
overlays += image('icons/obj/power.dmi', icon_state = "solar_panel-b", layer = FLY_LAYER)
|
||||
src.overlay_image.icon_state = "solar_panel-b"
|
||||
else
|
||||
overlays += image('icons/obj/power.dmi', icon_state = "solar_panel", layer = FLY_LAYER)
|
||||
src.overlay_image.icon_state = "solar_panel"
|
||||
src.dir = angle2dir(adir)
|
||||
src.overlays += src.overlay_image
|
||||
return
|
||||
|
||||
|
||||
@@ -281,6 +285,7 @@ var/list/solars_list = list()
|
||||
var/trackrate = 60 // Measured in tenths of degree per minute (i.e. defaults to 6.0 deg/min)
|
||||
var/trackdir = 1 // -1=CCW, 1=CW
|
||||
var/nexttime = 0 // Next clock time that manual tracking will move the array
|
||||
var/image/overlay_image
|
||||
|
||||
|
||||
/obj/machinery/power/solar_control/New()
|
||||
@@ -304,18 +309,18 @@ var/list/solars_list = list()
|
||||
set_panels(cdir)
|
||||
|
||||
/obj/machinery/power/solar_control/update_icon()
|
||||
overlays.Cut()
|
||||
if(isnull(src.overlay_image))
|
||||
src.overlay_image = image('icons/obj/computer.dmi', "solcon-o", layer = FLY_LAYER)
|
||||
if(stat & BROKEN)
|
||||
icon_state = "broken"
|
||||
overlays.Cut()
|
||||
return
|
||||
if(stat & NOPOWER)
|
||||
icon_state = "c_unpowered"
|
||||
overlays.Cut()
|
||||
return
|
||||
icon_state = "solar"
|
||||
overlays.Cut()
|
||||
if(cdir > 0)
|
||||
overlays += image('icons/obj/computer.dmi', "solcon-o", FLY_LAYER, angle2dir(cdir))
|
||||
overlays += src.overlay_image //it doesn't change.
|
||||
return
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user