clothing normal-digitigrade icon swap optimizations

This commit is contained in:
Raeschen
2021-09-05 20:35:32 +02:00
parent 0284d896cc
commit 0e542f4755
+22 -18
View File
@@ -1,6 +1,7 @@
//CHOMP Overrides for if holder is digitigrade
/obj/item/clothing
var/update_icon_define_orig = null
var/update_icon_define_orig = null // temp storage for original update_icon_define (if it exists)
var/fit_for_digi = FALSE // flag for if clothing has already been reskinned to digitigrade
/obj/item/clothing/proc/handle_digitigrade(var/mob/user)
if(ishuman(user))
@@ -20,13 +21,14 @@
update_icon_define_digi = "icons/inventory/uniform/mob_digi_ch.dmi"
else
return
// only override icon if a corresponding digitigrade replacement icon_state exists
// otherwise, keep the old non-digi icon
if(icon_state && icon_states(update_icon_define_digi).Find(icon_state))
// Don't reset if already set
if(update_icon_define <> update_icon_define_digi)
// Don't reset if already set
if(!fit_for_digi)
fit_for_digi = TRUE // set flag even if no icon_state exists, so we don't repeat checks
// only override icon if a corresponding digitigrade replacement icon_state exists
// otherwise, keep the old non-digi icon
if(icon_state && icon_states(update_icon_define_digi).Find(icon_state))
//if update_icon_define is already set to something, place it in a var to hold it temporarily
if(update_icon_define)
@@ -36,16 +38,18 @@
update_icon_define = update_icon_define_digi
// if not-digitigrade and update_icon_define set by previous digi-user, replacing an 'original' value
else if(update_icon_define_orig)
update_icon_define = update_icon_define_orig
update_icon_define_orig = null
else if(update_icon_define)
// if not-digitigrade and update_icon_define set by previous digi-user, but nothing replaced
update_icon_define = null
// if not-digitigrade, only act if the clothing was previously fit for a digitigrade char
else
if(fit_for_digi)
fit_for_digi = FALSE
//either reset update_icon_define to it's old value
// or reset update_icon_define to null
if(update_icon_define_orig)
update_icon_define = update_icon_define_orig
update_icon_define_orig = null
else
update_icon_define = null
/obj/item/clothing/shoes/equipped(var/mob/user, var/slot)
. = ..()