From de991061cd456bed40d9b6aee4702a7747f772e5 Mon Sep 17 00:00:00 2001 From: Adrer Date: Sun, 12 Nov 2023 12:40:50 +0100 Subject: [PATCH] Adds hair gradient to DNA (#23134) * Adds hair gradient to DNA * Improved define names * Update code/game/dna/dna2_helpers.dm Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> * Update code/game/dna/dna2_helpers.dm Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> * Update code/game/dna/dna2_helpers.dm Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> * Update code/game/dna/dna2_helpers.dm Co-authored-by: Contrabang <91113370+Contrabang@users.noreply.github.com> * Update code/game/dna/dna2_helpers.dm Co-authored-by: Contrabang <91113370+Contrabang@users.noreply.github.com> --------- Co-authored-by: Adrer Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> Co-authored-by: Contrabang <91113370+Contrabang@users.noreply.github.com> --- code/__DEFINES/dna.dm | 30 ++++++++++++++++++------------ code/game/dna/dna2_helpers.dm | 20 ++++++++++++++++++++ 2 files changed, 38 insertions(+), 12 deletions(-) diff --git a/code/__DEFINES/dna.dm b/code/__DEFINES/dna.dm index c24dbc17786..2643a1077d4 100644 --- a/code/__DEFINES/dna.dm +++ b/code/__DEFINES/dna.dm @@ -41,18 +41,24 @@ #define DNA_UI_TAIL_MARK_R 26 #define DNA_UI_TAIL_MARK_G 27 #define DNA_UI_TAIL_MARK_B 28 -#define DNA_UI_EYES_R 29 -#define DNA_UI_EYES_G 30 -#define DNA_UI_EYES_B 31 -#define DNA_UI_GENDER 32 -#define DNA_UI_BEARD_STYLE 33 -#define DNA_UI_HAIR_STYLE 34 -#define DNA_UI_HACC_STYLE 35 -#define DNA_UI_BACC_STYLE 36 -#define DNA_UI_HEAD_MARK_STYLE 37 -#define DNA_UI_BODY_MARK_STYLE 38 -#define DNA_UI_TAIL_MARK_STYLE 39 -#define DNA_UI_LENGTH 40 // Update this when you add something, or you WILL break shit. +#define DNA_UI_HAIR_GRADIENT_R 29 +#define DNA_UI_HAIR_GRADIENT_G 30 +#define DNA_UI_HAIR_GRADIENT_B 31 +#define DNA_UI_HAIR_GRADIENT_X 32 +#define DNA_UI_HAIR_GRADIENT_Y 33 +#define DNA_UI_EYES_R 34 +#define DNA_UI_EYES_G 35 +#define DNA_UI_EYES_B 36 +#define DNA_UI_GENDER 37 +#define DNA_UI_BEARD_STYLE 38 +#define DNA_UI_HAIR_STYLE 39 +#define DNA_UI_HACC_STYLE 40 +#define DNA_UI_BACC_STYLE 41 +#define DNA_UI_HAIR_GRADIENT_STYLE 42 +#define DNA_UI_HEAD_MARK_STYLE 43 +#define DNA_UI_BODY_MARK_STYLE 44 +#define DNA_UI_TAIL_MARK_STYLE 45 +#define DNA_UI_LENGTH 46 // Update this when you add something, or you WILL break shit. #define DNA_SE_LENGTH 55 // Was STRUCDNASIZE, size 27. 15 new blocks added = 42, plus room to grow. diff --git a/code/game/dna/dna2_helpers.dm b/code/game/dna/dna2_helpers.dm index c5949da940a..0201bcb7bb2 100644 --- a/code/game/dna/dna2_helpers.dm +++ b/code/game/dna/dna2_helpers.dm @@ -204,6 +204,14 @@ head_organ.hair_colour = rgb(head_organ.dna.GetUIValueRange(DNA_UI_HAIR_R, 255), head_organ.dna.GetUIValueRange(DNA_UI_HAIR_G, 255), head_organ.dna.GetUIValueRange(DNA_UI_HAIR_B, 255)) head_organ.sec_hair_colour = rgb(head_organ.dna.GetUIValueRange(DNA_UI_HAIR2_R, 255), head_organ.dna.GetUIValueRange(DNA_UI_HAIR2_G, 255), head_organ.dna.GetUIValueRange(DNA_UI_HAIR2_B, 255)) + //Hair Gradient + var/gradient = GetUIValueRange(DNA_UI_HAIR_GRADIENT_STYLE, length(GLOB.hair_gradients_list)) + if(ISINDEXSAFE(GLOB.hair_gradients_list, gradient)) + head_organ.h_grad_style = GLOB.hair_gradients_list[gradient] + head_organ.h_grad_offset_x = GetUIValueRange(DNA_UI_HAIR_GRADIENT_X, 32) - 16 + head_organ.h_grad_offset_y = GetUIValueRange(DNA_UI_HAIR_GRADIENT_Y, 32) - 16 + + head_organ.h_grad_colour = rgb(head_organ.dna.GetUIValueRange(DNA_UI_HAIR_GRADIENT_R, 255), head_organ.dna.GetUIValueRange(DNA_UI_HAIR_GRADIENT_G, 255), head_organ.dna.GetUIValueRange(DNA_UI_HAIR_GRADIENT_B, 255)) //Facial Hair var/beard = GetUIValueRange(DNA_UI_BEARD_STYLE,GLOB.facial_hair_styles_list.len) if((beard > 0) && (beard <= GLOB.facial_hair_styles_list.len)) @@ -255,6 +263,10 @@ head_organ.f_style = "Shaved" var/beard = GLOB.facial_hair_styles_list.Find(head_organ.f_style) + if(!head_organ.h_grad_style) + head_organ.h_grad_style = "None" + var/gradient = GLOB.hair_gradients_list.Find(head_organ.h_grad_style) + // Head Accessory if(!head_organ.ha_style) head_organ.ha_style = "None" @@ -279,8 +291,16 @@ SetUIValueRange(DNA_UI_HACC_G, color2G(head_organ.headacc_colour), 255, 1) SetUIValueRange(DNA_UI_HACC_B, color2B(head_organ.headacc_colour), 255, 1) + SetUIValueRange(DNA_UI_HAIR_GRADIENT_R, color2R(head_organ.h_grad_colour), 255, 1) + SetUIValueRange(DNA_UI_HAIR_GRADIENT_G, color2G(head_organ.h_grad_colour), 255, 1) + SetUIValueRange(DNA_UI_HAIR_GRADIENT_B, color2B(head_organ.h_grad_colour), 255, 1) + + SetUIValueRange(DNA_UI_HAIR_GRADIENT_X, head_organ.h_grad_offset_x + 16, 32, 1) + SetUIValueRange(DNA_UI_HAIR_GRADIENT_Y, head_organ.h_grad_offset_y + 16, 32, 1) + SetUIValueRange(DNA_UI_HAIR_STYLE, hair, GLOB.hair_styles_full_list.len, 1) SetUIValueRange(DNA_UI_BEARD_STYLE, beard, GLOB.facial_hair_styles_list.len, 1) + SetUIValueRange(DNA_UI_HAIR_GRADIENT_STYLE, gradient, length(GLOB.hair_gradients_list), 1) var/list/available = character.generate_valid_head_accessories() SetUIValueRange(DNA_UI_HACC_STYLE, available.Find(head_organ.ha_style), max(length(available), 1), 1)