From b1774030df10972ba0ab2776ea338e1679687a2e Mon Sep 17 00:00:00 2001 From: cib Date: Fri, 22 Jun 2012 22:10:26 -0700 Subject: [PATCH] Issue #1366: Optimized UpdateDamageIcon --- code/modules/mob/living/carbon/human/human.dm | 3 +++ .../mob/living/carbon/human/human_damage.dm | 16 ++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index b5601b68578..69558e18fb5 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -62,6 +62,9 @@ var/pale = 0 var/examine_text = "" + var/previous_damage_appearance // a string describing what the organ damage previously looked like + // used to determine whether the icon needs to be rebuilt + /mob/living/carbon/human/dummy real_name = "Test Dummy" nodamage = 1 diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index 45041e244b2..97674d0d456 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -21,8 +21,24 @@ // now constructs damage icon for each organ from mask * damage field /mob/living/carbon/human/UpdateDamageIcon() + // first check whether something actually changed about damage appearance + var/damage_appearance = "" + + for(var/name in organs) + var/datum/organ/external/O = organs[name] + if(O.destroyed) damage_appearance += "d" + else + damage_appearance += O.damage_state + + if(damage_appearance == previous_damage_appearance) + // nothing to do here + return + + previous_damage_appearance = damage_appearance + var/icon/standing = new /icon('dam_human.dmi', "00") var/icon/lying = new /icon('dam_human.dmi', "00-2") + for(var/name in organs) var/datum/organ/external/O = organs[name] if(!O.destroyed)