mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 02:34:00 +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
|
/obj/structure/table
|
||||||
name = "table frame"
|
name = "table frame"
|
||||||
icon = 'icons/obj/tables.dmi'
|
icon = 'icons/obj/tables.dmi'
|
||||||
@@ -292,37 +294,44 @@
|
|||||||
qdel(src)
|
qdel(src)
|
||||||
return shards
|
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()
|
/obj/structure/table/update_icon()
|
||||||
if(flipped != 1)
|
if(flipped != 1)
|
||||||
icon_state = "blank"
|
icon_state = "blank"
|
||||||
overlays.Cut()
|
overlays.Cut()
|
||||||
|
|
||||||
var/image/I
|
|
||||||
|
|
||||||
// Base frame shape. Mostly done for glass/diamond tables, where this is visible.
|
// Base frame shape. Mostly done for glass/diamond tables, where this is visible.
|
||||||
for(var/i = 1 to 4)
|
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
|
overlays += I
|
||||||
|
|
||||||
// Standard table image
|
// Standard table image
|
||||||
if(material)
|
if(material)
|
||||||
for(var/i = 1 to 4)
|
for(var/i = 1 to 4)
|
||||||
I = image(icon, "[material.icon_base]_[connections[i]]", dir = 1<<(i-1))
|
var/image/I = get_table_image(icon, "[material.icon_base]_[connections[i]]", 1<<(i-1), material.icon_colour, 255 * material.opacity)
|
||||||
if(material.icon_colour) I.color = material.icon_colour
|
|
||||||
I.alpha = 255 * material.opacity
|
|
||||||
overlays += I
|
overlays += I
|
||||||
|
|
||||||
// Reinforcements
|
// Reinforcements
|
||||||
if(reinforced)
|
if(reinforced)
|
||||||
for(var/i = 1 to 4)
|
for(var/i = 1 to 4)
|
||||||
I = image(icon, "[reinforced.icon_reinf]_[connections[i]]", dir = 1<<(i-1))
|
var/image/I = get_table_image(icon, "[reinforced.icon_reinf]_[connections[i]]", 1<<(i-1), reinforced.icon_colour, 255 * reinforced.opacity)
|
||||||
I.color = reinforced.icon_colour
|
|
||||||
I.alpha = 255 * reinforced.opacity
|
|
||||||
overlays += I
|
overlays += I
|
||||||
|
|
||||||
if(carpeted)
|
if(carpeted)
|
||||||
for(var/i = 1 to 4)
|
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
|
overlays += I
|
||||||
else
|
else
|
||||||
overlays.Cut()
|
overlays.Cut()
|
||||||
|
|||||||
Reference in New Issue
Block a user