From 132a3c9526a3747dc10495319d1c85f1074d6f13 Mon Sep 17 00:00:00 2001 From: Timothy Teakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Tue, 8 Dec 2020 19:29:34 +0000 Subject: [PATCH] color non polychromic items --- code/controllers/subsystem/job.dm | 22 +++++++++++++--------- code/modules/client/preferences.dm | 23 ++++++++++++++++++++++- 2 files changed, 35 insertions(+), 10 deletions(-) diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm index 14d49d55ea..4963e33cc3 100644 --- a/code/controllers/subsystem/job.dm +++ b/code/controllers/subsystem/job.dm @@ -691,6 +691,19 @@ SUBSYSTEM_DEF(job) if(!permitted) continue var/obj/item/I = new G.path + if(I && length(i[LOADOUT_COLOR])) //handle loadout colors + //handle polychromic items + if((G.loadout_flags & LOADOUT_CAN_COLOR_POLYCHROMIC) && length(G.loadout_initial_colors)) + var/datum/element/polychromic/polychromic = I.comp_lookup["item_worn_overlays"] //stupid way to do it but GetElement does not work for this + if(polychromic && istype(polychromic)) + var/list/polychromic_entry = polychromic.colors_by_atom[I] + if(polychromic_entry) + polychromic.colors_by_atom[I] = i[LOADOUT_COLOR] + I.update_icon() + else + //handle non-polychromic items (they only have one color) + I.add_atom_colour(i[LOADOUT_COLOR][1], FIXED_COLOUR_PRIORITY) + I.update_icon() if(!M.equip_to_slot_if_possible(I, G.slot, disable_warning = TRUE, bypass_equip_delay_self = TRUE)) // If the job's dresscode compliant, try to put it in its slot, first if(iscarbon(M)) var/mob/living/carbon/C = M @@ -705,15 +718,6 @@ SUBSYSTEM_DEF(job) I.forceMove(get_turf(M)) // If everything fails, just put it on the floor under the mob. else qdel(I) - if(I) //handle loadout colors last - if((G.loadout_flags & LOADOUT_CAN_COLOR_POLYCHROMIC) && length(G.loadout_initial_colors)) - var/datum/element/polychromic/polychromic = I.comp_lookup["item_worn_overlays"] //stupid way to do it but GetElement does not work for this - if(polychromic && istype(polychromic)) - var/list/polychromic_entry = polychromic.colors_by_atom[I] - if(polychromic_entry) - polychromic.colors_by_atom[I] = i[LOADOUT_COLOR] - I.update_icon() - /datum/controller/subsystem/job/proc/FreeRole(rank) if(!rank) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index e466037696..3931216702 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -880,9 +880,15 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(loadout_item) class_link = "style='white-space:normal;' class='linkOn' href='?_src_=prefs;preference=gear;toggle_gear_path=[html_encode(name)];toggle_gear=0'" if(gear.loadout_flags & LOADOUT_CAN_COLOR_POLYCHROMIC) - extra_color_data += "
Color" + extra_color_data += "
Color" for(var/loadout_color in loadout_item[LOADOUT_COLOR]) extra_color_data += "   " + else + var/loadout_color_non_poly = "#FFFFFF" + if(length(loadout_item[LOADOUT_COLOR])) + loadout_color_non_poly = loadout_item[LOADOUT_COLOR][1] + extra_color_data += "
Color" + extra_color_data += "   " else if(gear_points <= 0) class_link = "style='white-space:normal;' class='linkOff'" else if(donoritem) @@ -2655,11 +2661,26 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/list/new_loadout_data = list(LOADOUT_ITEM = "[G.type]") if(length(G.loadout_initial_colors)) new_loadout_data[LOADOUT_COLOR] = G.loadout_initial_colors + else + new_loadout_data[LOADOUT_COLOR] = list("#FFFFFF") if(loadout_data["SAVE_[loadout_slot]"]) loadout_data["SAVE_[loadout_slot]"] += list(new_loadout_data) //double packed because it does the union of the CONTENTS of the lists else loadout_data["SAVE_[loadout_slot]"] = list(new_loadout_data) //double packed because you somehow had no save slot in your loadout? if(href_list["loadout_color"]) + var/name = html_decode(href_list["loadout_gear_name"]) + var/datum/gear/G = GLOB.loadout_items[gear_category][gear_subcategory][name] + if(!G) + return + var/user_gear = has_loadout_gear(loadout_slot, "[G.type]") + if(!user_gear) + return + if(!length(user_gear[LOADOUT_COLOR])) + user_gear[LOADOUT_COLOR] = list("#FFFFFF") + var/current_color = user_gear[LOADOUT_COLOR][1] + var/new_color = input(user, "Polychromic options", "Choose Color", current_color) as color|null + user_gear[LOADOUT_COLOR][1] = sanitize_hexcolor(new_color, 6, TRUE, current_color) + if(href_list["loadout_color_polychromic"]) var/name = html_decode(href_list["loadout_gear_name"]) var/datum/gear/G = GLOB.loadout_items[gear_category][gear_subcategory][name] if(!G)