From 7cbb19573f9ca54d734acafb9dbdbd7a10e33aab Mon Sep 17 00:00:00 2001 From: "Laetitia (O-01-67)" <68935009+O-01-67@users.noreply.github.com> Date: Tue, 24 Jan 2023 13:35:02 -0500 Subject: [PATCH] rework add arbitrary angle, phase, second color, and scale --- mods/stripe_paint.js | 145 ++++++++++++++++++++----------------------- 1 file changed, 67 insertions(+), 78 deletions(-) diff --git a/mods/stripe_paint.js b/mods/stripe_paint.js index f8af6f0c..12b27dfd 100644 --- a/mods/stripe_paint.js +++ b/mods/stripe_paint.js @@ -5,12 +5,35 @@ function averageColors(color1,color2,outputType="rgb",weight1=0.5) { return convertColorFormats(theColor,outputType); }; -function stripeFunction(pixel,sineParamFunction) { - if(pixel.oldColor == undefined || pixel.oldColor == null) { - pixel.oldColor = pixel.color; +stripeFixedDefaultProperties = { + color2: "rgb(0,0,0)", + phase: 0, + scale: 1, + angle: 0 +}; + +stripeSpreadingProperties = { + color1: "It doesn't matter what I put here; I'm just sick of writing for loops.", + color2: "stan loona", +}; + +/*stripeSpreadingProperties2 = { + phase: 0, + scale: 1, :eggTF: + angle: 0 +};*/ + +function stripeFunction(pixel) { + if(pixel.color1 == undefined || pixel.color1 == null) { + pixel.color1 = pixel.color; + }; + for(prop in stripeFixedDefaultProperties) { + if(pixel[prop] == undefined || pixel[prop] == null) { + pixel[prop] = stripeFixedDefaultProperties[prop]; + }; }; - //oldColor self staining + //color1 and color2 self staining for (var i = 0; i < adjacentCoords.length; i++) { var x = pixel.x+adjacentCoords[i][0]; var y = pixel.y+adjacentCoords[i][1]; @@ -18,36 +41,50 @@ function stripeFunction(pixel,sineParamFunction) { continue; }; var otherPixel = pixelMap[x][y]; - if(otherPixel.element == pixel.element && pixel.oldColor && otherPixel.oldColor) { - otherPixel.oldColor = averageColors(pixel.oldColor,otherPixel.oldColor); + for(prop in stripeSpreadingProperties) { + if(otherPixel.element == pixel.element && pixel[prop] && otherPixel[prop]) { + otherPixel[prop] = averageColors(pixel[prop],otherPixel[prop]); + }; }; + /*for(prop in stripeSpreadingProperties2) { + if(otherPixel.element == pixel.element && pixel[prop] !== undefined && otherPixel[prop] !== undefined) { + otherPixel[prop] = pixel[prop]/2 + otherPixel[prop]/2; + }; :eggTF: + };*/ }; - var sineWeight = (1+Math.sin(sineParamFunction(pixel)))/2; - var preColor = averageColors(pixel.oldColor,"rgb(0,0,0)","json",sineWeight); + var radians = pixel.angle * (Math.PI / 180); + + var colorNumber = (pixel.x*Math.cos(radians))+(pixel.y*Math.sin(radians)); + + var sineWeight = (1+Math.sin(pixel.phase + colorNumber / pixel.scale))/2; + + var preColor = averageColors(pixel.color1,pixel.color2,"json",sineWeight); for(colorlet in preColor) { preColor[colorlet] = Math.round(preColor[colorlet]); }; pixel.color = convertColorFormats(preColor,"rgb"); }; -function horizontalSpf(pixel) { - return pixel.y; -}; +stripePaintDesc = `Exactly what it says on the button. +
+Properties:
    +
  1. color1: The first color of the stripe
  2. +
  3. color2: The second color of the stripe (defaults to black)
  4. +
  5. scale: Relative width of the stripes, compared to the default
  6. +
  7. phase: Offset in the position of the stripes (π/2 = 1 stripe width)
  8. +
  9. angle: Angle in degrees
-function verticalSpf(pixel) { - return pixel.x; -}; +color1 and color2 spread through striped paint like dye does with itself. color1 can be set on initial placement through the color picker, but otherwise, properties must be changed through the console or with prop.js's tools. -function diagonalSpf(pixel) { - return pixel.x+pixel.y; -}; +This does not work with HSL color and the game will black screen if one is somehow used. The color conversion functions are a clusterf***.` -function diagonalAltSpf(pixel) { - return pixel.x-pixel.y; -}; - -elements.horizontal_stripe_paint = { +elements.stripe_paint = { behavior: behaviors.LIQUID, state: "liquid", density: 998, @@ -55,66 +92,18 @@ elements.horizontal_stripe_paint = { stateHigh: "smoke", color: elements.paint.color, customColor: true, - category: "stripe paint", + category: "special", properties: { - oldColor: null + color1: null, + color2: null, + scale: 1, + phase: 0, + angle: 0 }, stain: elements.dye.stain, tick: function(pixel) { - stripeFunction(pixel,horizontalSpf); + stripeFunction(pixel); }, + desc: stripePaintDesc }; -elements.vertical_stripe_paint = { - behavior: behaviors.LIQUID, - state: "liquid", - density: 998, - tempHigh: 100, - stateHigh: "smoke", - color: elements.paint.color, - customColor: true, - category: "stripe paint", - properties: { - oldColor: null - }, - stain: elements.dye.stain, - tick: function(pixel) { - stripeFunction(pixel,verticalSpf); - }, -}; - -elements.diagonal_stripe_paint = { - behavior: behaviors.LIQUID, - state: "liquid", - density: 998, - tempHigh: 100, - stateHigh: "smoke", - color: elements.paint.color, - customColor: true, - category: "stripe paint", - properties: { - oldColor: null - }, - stain: elements.dye.stain, - tick: function(pixel) { - stripeFunction(pixel,diagonalSpf); - }, -}; - -elements.diagonal_2_stripe_paint = { - behavior: behaviors.LIQUID, - state: "liquid", - density: 998, - tempHigh: 100, - stateHigh: "smoke", - color: elements.paint.color, - customColor: true, - category: "stripe paint", - properties: { - oldColor: null - }, - stain: elements.dye.stain, - tick: function(pixel) { - stripeFunction(pixel,diagonalAltSpf); - }, -}; \ No newline at end of file