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 += "| [marking_list[2]] - [actual_name] | ˄ ˅ X |
"
+ 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 += "| [marking_list[2]] - [actual_name] | ˄ ˅ X [color_marking_dat] |
"
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()