From a40ee3b8ece3fb4fbe5f2b053defb88195cc11b7 Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Sun, 19 Jan 2014 05:36:54 -0500 Subject: [PATCH] Revert "Rework of colour mixing" This reverts commit 1f0e1f62096f57fc4c44c7273489e2f564451317. --- code/modules/reagents/Chemistry-Colours.dm | 90 ++++++++++------------ 1 file changed, 39 insertions(+), 51 deletions(-) diff --git a/code/modules/reagents/Chemistry-Colours.dm b/code/modules/reagents/Chemistry-Colours.dm index 0eb2744c95f..e1b43763e81 100644 --- a/code/modules/reagents/Chemistry-Colours.dm +++ b/code/modules/reagents/Chemistry-Colours.dm @@ -1,51 +1,39 @@ -/proc/mix_color_from_reagents(var/list/reagent_list) - if(!reagent_list || !length(reagent_list)) - return 0 - - var/contents = length(reagent_list) - var/list/weight = list(contents) - var/list/color = list(contents) - var/i - - //fill the list of weights - var/listsum = 0 - for(i=1; i0xFFFF) - return - - //assemble back into #RRGGBB format - var/finalcolor = num2hex(mixedcolor) - var/colorlength = length(finalcolor) - finalcolor = copytext(finalcolor,-colorlength+1) //We don't want every colour to start with "0" - while(length(finalcolor)<6) - finalcolor = text("0[]",finalcolor) //Takes care of leading zeroes - finalcolor = text("#[]",finalcolor) - - return finalcolor +/proc/GetColors(hex) + hex = uppertext(hex) + var/hi1 = text2ascii(hex, 2) + var/lo1 = text2ascii(hex, 3) + var/hi2 = text2ascii(hex, 4) + var/lo2 = text2ascii(hex, 5) + var/hi3 = text2ascii(hex, 6) + var/lo3 = text2ascii(hex, 7) + return list(((hi1>= 65 ? hi1-55 : hi1-48)<<4) | (lo1 >= 65 ? lo1-55 : lo1-48), + ((hi2 >= 65 ? hi2-55 : hi2-48)<<4) | (lo2 >= 65 ? lo2-55 : lo2-48), + ((hi3 >= 65 ? hi3-55 : hi3-48)<<4) | (lo3 >= 65 ? lo3-55 : lo3-48)) + +/proc/mix_color_from_reagents(var/list/reagent_list) + if(!reagent_list || !reagent_list.len) return 0 + + var/list/rgbcolor = list(0,0,0) + var/finalcolor = 0 + for(var/datum/reagent/re in reagent_list) // natural color mixing bullshit/algorithm + if(!finalcolor) + rgbcolor = GetColors(re.color) + finalcolor = re.color + else + var/newcolor[3] + var/prergbcolor[3] + prergbcolor = rgbcolor + newcolor = GetColors(re.color) + + rgbcolor[1] = (prergbcolor[1]+newcolor[1])/2 + rgbcolor[2] = (prergbcolor[2]+newcolor[2])/2 + rgbcolor[3] = (prergbcolor[3]+newcolor[3])/2 + + finalcolor = rgb(rgbcolor[1], rgbcolor[2], rgbcolor[3]) + + return finalcolor + +// This isn't a perfect color mixing system, the more reagents that are inside, +// the darker it gets until it becomes absolutely pitch black! I dunno, maybe +// that's pretty realistic? I don't do a whole lot of color-mixing anyway. +// If you add brighter colors to it it'll eventually get lighter, though. \ No newline at end of file