mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 10:12:45 +00:00
Table Iconstate Cache
Adds the table iconstate cache because it was super silly to make so many images.
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
var/list/table_icon_cache = list()
|
||||
|
||||
/obj/structure/table
|
||||
name = "table frame"
|
||||
icon = 'icons/obj/tables.dmi'
|
||||
@@ -292,37 +294,44 @@
|
||||
qdel(src)
|
||||
return shards
|
||||
|
||||
/proc/get_table_image(var/icon/ticon,var/ticonstate,var/tdir,var/tcolor,var/talpha)
|
||||
var/icon_cache_key = "\ref[ticon]-[ticonstate]-[tdir]-[tcolor]-[talpha]"
|
||||
var/image/I = table_icon_cache[icon_cache_key]
|
||||
if(!I)
|
||||
I = image(icon = ticon, icon_state = ticonstate, dir = tdir)
|
||||
if(tcolor)
|
||||
I.color = tcolor
|
||||
if(talpha)
|
||||
I.alpha = talpha
|
||||
table_icon_cache[icon_cache_key] = I
|
||||
|
||||
return I
|
||||
|
||||
/obj/structure/table/update_icon()
|
||||
if(flipped != 1)
|
||||
icon_state = "blank"
|
||||
overlays.Cut()
|
||||
|
||||
var/image/I
|
||||
|
||||
// Base frame shape. Mostly done for glass/diamond tables, where this is visible.
|
||||
for(var/i = 1 to 4)
|
||||
I = image(icon, dir = 1<<(i-1), icon_state = connections[i])
|
||||
var/image/I = get_table_image(icon, connections[i], 1<<(i-1))
|
||||
overlays += I
|
||||
|
||||
// Standard table image
|
||||
if(material)
|
||||
for(var/i = 1 to 4)
|
||||
I = image(icon, "[material.icon_base]_[connections[i]]", dir = 1<<(i-1))
|
||||
if(material.icon_colour) I.color = material.icon_colour
|
||||
I.alpha = 255 * material.opacity
|
||||
var/image/I = get_table_image(icon, "[material.icon_base]_[connections[i]]", 1<<(i-1), material.icon_colour, 255 * material.opacity)
|
||||
overlays += I
|
||||
|
||||
// Reinforcements
|
||||
if(reinforced)
|
||||
for(var/i = 1 to 4)
|
||||
I = image(icon, "[reinforced.icon_reinf]_[connections[i]]", dir = 1<<(i-1))
|
||||
I.color = reinforced.icon_colour
|
||||
I.alpha = 255 * reinforced.opacity
|
||||
var/image/I = get_table_image(icon, "[reinforced.icon_reinf]_[connections[i]]", 1<<(i-1), reinforced.icon_colour, 255 * reinforced.opacity)
|
||||
overlays += I
|
||||
|
||||
if(carpeted)
|
||||
for(var/i = 1 to 4)
|
||||
I = image(icon, "carpet_[connections[i]]", dir = 1<<(i-1))
|
||||
var/image/I = get_table_image(icon, "carpet_[connections[i]]", 1<<(i-1))
|
||||
overlays += I
|
||||
else
|
||||
overlays.Cut()
|
||||
|
||||
Reference in New Issue
Block a user