Human icon tweaks (#3131)

Mostly efficiency changes to human icons, little bit of code deduplication in head icons.
The human overlay list has been changed to accept /list so that multiple items can be added to a layer without having to resort to adding overlays to an intermediary object like an /image.

changes:

Human skin color (not tone) is now stored as a hex string instead of a 3-value list.
Human body hair color (resomi only) is now stored as a hex string instead of a 3-value list.
Body markings now play nice with the human icon cache (Fixes #3110)
Hair properly uses its cache now in all cases.
Merged head organs and human icon's implementations of hair icon gen into a proc on human.
Replaced the individual hair and beard caches with a shared composited hair cache used by both head icon and mob icons.
Lists in the human overlay list are now flattened out onto the human, allowing for multiple objects within a single human icon layer without using an intermediary image.
Removed some unused caching lists.
Damage overlays no longer utilize overlays on a blank image for drawing, instead using a list in the human overlay list.
Shoe overlays no longer utilize overlays on the shoe image, instead using a list in the human overlay list.
Surgery overlays no longer utilize overlays on a blank image, instead using a list in the human overlay list.
This commit is contained in:
Lohikar
2017-07-22 17:03:00 -05:00
committed by Erki
parent 67e07d0b9e
commit 64e33fab83
6 changed files with 121 additions and 119 deletions

View File

@@ -4,12 +4,13 @@
name = "Icon Cache"
flags = SS_NO_FIRE | SS_NO_INIT
// Cached bloody overlays, key is object type.
var/list/bloody_cache = list()
var/list/holo_multiplier_cache = list()
var/list/holo_adder_cache = list()
var/list/image/fluidtrack_cache = list()
// Cached holo effect multiplier images.
var/list/holo_multiplier_cache = list() // 2-layer list: icon -> icon_state -> /image
// Cached holo effect adder images.
var/list/holo_adder_cache = list() // 2-layer list: icon -> icon_state -> /image
var/list/floor_decals = list()
var/list/flooring_cache = list()
@@ -32,14 +33,20 @@
var/list/human_icon_cache = list()
var/list/tail_icon_cache = list() //key is [species.race_key][r_skin][g_skin][b_skin]
var/list/light_overlay_cache = list()
// Cached body hair icons, used by resomi.
var/list/body_hair_cache = list()
// Cached human damage icons.
var/list/damage_icon_parts = list()
// [icon]-[icon_state]-[limb_name]-[color]
var/list/markings_cache = list()
// Cached human body markings.
var/list/markings_cache = list() // [icon]-[icon_state]-[limb_name]-[color]
var/list/human_eye_cache = list()
var/list/human_lip_cache = list()
// Cached composited human hair (beard & hair).
// Key:
// hair+beard: [beard_style][r_facial][g_facial][b_facial]_[hair_style][r_hair][g_hair][b_hair]
// haironly: nobeard_[hair_style][r_hair][g_hair][b_hair]
// beardonly: [beard_style][r_facial][g_facial][b_facial]_nohair
var/list/human_hair_cache = list()
var/list/human_beard_cache = list()
var/list/human_underwear_cache = list()
var/list/human_undershirt_cache = list()
var/list/human_socks_cache = list()