From cb98cbd19f2c8e05c34567624639e8610135aabd Mon Sep 17 00:00:00 2001 From: Timothy Teakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Wed, 28 Apr 2021 22:33:05 +0100 Subject: [PATCH] colour backend --- code/modules/client/preferences.dm | 15 ++++++++- code/modules/surgery/bodyparts/_bodyparts.dm | 35 ++++++++++++-------- 2 files changed, 35 insertions(+), 15 deletions(-) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 6eef427b27..0e9618067b 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -528,8 +528,21 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "" var/list/markings = features[marking_type] for(var/list/marking_list in markings) + var/marking_index = markings.Find(marking_list) // consider changing loop to go through indexes over lists instead of using Find here var/actual_name = GLOB.bodypart_names[num2text(marking_list[1])] // get the actual name from the bitflag representing the part the marking is applied to - dat += "" + var/color_marking_dat = "" + var/datum/sprite_accessory/S = (actual_name == "mam_body_markings") ? GLOB.mam_body_markings_list[marking_list[2]] : GLOB.body_markings_list[marking_list[2]] + if(S && S.matrixed_sections && S.matrixed_sections != MATRIX_NONE) + // we know it has one matrixed section at minimum + color_marking_dat += "   " + // if it has a second section, add it + if(S.matrixed_sections == MATRIX_RED_BLUE || S.matrixed_sections == MATRIX_GREEN_BLUE || S.matrixed_sections == MATRIX_RED_GREEN) + color_marking_dat += "   " + // if it has a third section, add it + if(S.matrixed_sections == MATRIX_ALL) + color_marking_dat += "   " + color_marking_dat += " Change
" + dat += "" dat += "
[marking_list[2]] - [actual_name] ˄ ˅ X
[marking_list[2]] - [actual_name] ˄ ˅ X [color_marking_dat]
" for(var/mutant_part in GLOB.all_mutant_parts) diff --git a/code/modules/surgery/bodyparts/_bodyparts.dm b/code/modules/surgery/bodyparts/_bodyparts.dm index 5664319a38..f970e04726 100644 --- a/code/modules/surgery/bodyparts/_bodyparts.dm +++ b/code/modules/surgery/bodyparts/_bodyparts.dm @@ -700,8 +700,12 @@ marking_value = Smark?.icon_state || lowertext(H.dna.features["mam_body_markings"]) else marking_value = "plain" - message_admins("MATCH FOUND FOR [marking[1]] ON PART [body_part] ON USER [C], VALUE IS [body_markings_icon] AND [marking_value]") - body_markings_list += list(list(body_markings_icon, marking_value)) + var/list/color_values + if(length(marking) == 3) + color_values = marking[3] + else + color_values = list("#FFFFFF", "#FFFFFF", "#FFFFFF") + body_markings_list += list(list(body_markings_icon, marking_value, color_values)) markings_color = list(colorlist) else @@ -796,8 +800,8 @@ if((body_zone != BODY_ZONE_HEAD && body_zone != BODY_ZONE_CHEST)) should_draw_gender = FALSE + var/list/markings_list = list() if(is_organic_limb()) - message_admins("UPDATING ORGANIC LIMB FOR [owner] AT [src]") limb.icon = base_bp_icon || 'icons/mob/human_parts.dmi' if(should_draw_gender) limb.icon_state = "[species_id]_[body_zone]_[icon_gender]" @@ -810,23 +814,28 @@ limb.icon_state = "[species_id]_[body_zone]" // Body markings - var/list/marking_list if(length(body_markings_list)) if(species_id == "husk") - marking_list += image('modular_citadel/icons/mob/markings_notmammals.dmi', "husk_[body_zone]", -MARKING_LAYER, image_dir) + . += image('modular_citadel/icons/mob/markings_notmammals.dmi', "husk_[body_zone]", -MARKING_LAYER, image_dir) else if(species_id == "husk" && use_digitigrade) - marking_list += image('modular_citadel/icons/mob/markings_notmammals.dmi', "husk_[digitigrade_type]_[use_digitigrade]_[body_zone]", -MARKING_LAYER, image_dir) + . += image('modular_citadel/icons/mob/markings_notmammals.dmi', "husk_[digitigrade_type]_[use_digitigrade]_[body_zone]", -MARKING_LAYER, image_dir) else for(var/list/marking_list in body_markings_list) // marking stores icon and value for the specific bodypart if(!use_digitigrade) if(body_zone == BODY_ZONE_CHEST) - marking_list += image(marking_list[1], "[marking_list[2]]_[body_zone]_[icon_gender]", -MARKING_LAYER, image_dir) + markings_list.Add(image(marking_list[1], "[marking_list[2]]_[body_zone]_[icon_gender]", -MARKING_LAYER, image_dir)) + message_admins("length is now [length(markings_list)]") else - marking_list += image(marking_list[1], "[marking_list[2]]_[body_zone]", -MARKING_LAYER, image_dir) + markings_list.Add(image(marking_list[1], "[marking_list[2]]_[body_zone]", -MARKING_LAYER, image_dir)) + message_admins("length is now [length(markings_list)]") else - marking_list += image(marking_list[1], "[marking_list[2]]_[digitigrade_type]_[use_digitigrade]_[body_zone]", -MARKING_LAYER, image_dir) - . += marking_list + markings_list.Add(image(marking_list[1], "[marking_list[2]]_[digitigrade_type]_[use_digitigrade]_[body_zone]", -MARKING_LAYER, image_dir)) + message_admins("length is now [length(markings_list)]") + if(color_src && length(marking_list) == 3) + message_admins("trying to color list of length [length(marking_list)] and also trying to access index [length(markings_list)] on a list of the same length") + markings_list[length(markings_list)].color = marking_list[3] + . += markings_list // Citadel End @@ -908,10 +917,8 @@ if(!isnull(body_markings)) if(species_id == "husk") - - marking.color = "#141414" - else - marking.color = list(markings_color) + for(var/image/marking in markings_list) + marking.color = "#141414" /obj/item/bodypart/deconstruct(disassembled = TRUE) drop_organs()