From 22c772620e00d02bcd409e2ddb03d762c545cbdd Mon Sep 17 00:00:00 2001 From: "Laetitia (O-01-67)" <68935009+O-01-67@users.noreply.github.com> Date: Sun, 29 Jan 2023 17:07:26 -0500 Subject: [PATCH] Set maximum random color offset (sand effect) maxColorOffset (integer): Maximum distance (in both directions) by which a color can be lightened/darkened (out of 255) by pixelColorPick Effective default value is 15 --- mods/maxColorOffset | 47 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 mods/maxColorOffset diff --git a/mods/maxColorOffset b/mods/maxColorOffset new file mode 100644 index 00000000..70925382 --- /dev/null +++ b/mods/maxColorOffset @@ -0,0 +1,47 @@ +pixelColorPick = function(pixel,customColor=null,maxOffset=null) { + var element = pixel.element; + var elementInfo = elements[element]; + //if (elementInfo.behavior instanceof Array) { + + if (pixel.charge && elementInfo.colorOn) { + customColor = elementInfo.colorOn; + } + if (customColor != null) { + if (Array.isArray(customColor)) { + customColor = customColor[Math.floor(Math.random() * customColor.length)]; + } + if (customColor.startsWith("#")) { + customColor = hexToRGB(customColor); + } + var rgb = customColor; + } + else { + var rgb = elements[element].colorObject; // {r, g, b} + // If rgb is an array, choose a random item + if (Array.isArray(rgb)) { + rgb = rgb[Math.floor(Math.random() * rgb.length)]; + } + } + // Randomly darken or lighten the RGB color + //try maxOffset parameter, then info maxColorOffset, then default 15 + var offsetAmount = (maxOffset == null ? (elementInfo.maxColorOffset == undefined ? 15 : elementInfo.maxColorOffset) : maxOffset); + + var maxColorOffset = Math.floor(Math.random() * (Math.random() > 0.5 ? -1 : 1) * Math.random() * offsetAmount); + var r = rgb.r + maxColorOffset; + var g = rgb.g + maxColorOffset; + var b = rgb.b + maxColorOffset; + // Make sure the color is within the RGB range + r = Math.max(0, Math.min(255, r)); + g = Math.max(0, Math.min(255, g)); + b = Math.max(0, Math.min(255, b)); + var color = "rgb("+r+","+g+","+b+")"; + + /*} + else { + var color = elementInfo.color; + if (Array.isArray(color)) { + color = color[Math.floor(Math.random() * color.length)]; + } + }*/ + return color; +}