From c5899d56469282e17fc060e94a994c06709ac6b1 Mon Sep 17 00:00:00 2001 From: slweeb <91897291+slweeb@users.noreply.github.com> Date: Sun, 13 Apr 2025 22:48:44 -0400 Subject: [PATCH] mods --- mods/building.js | 35 +++++++++++ mods/devtests.js | 156 +++++++---------------------------------------- 2 files changed, 58 insertions(+), 133 deletions(-) diff --git a/mods/building.js b/mods/building.js index f5f70af1..70e04531 100644 --- a/mods/building.js +++ b/mods/building.js @@ -116,4 +116,39 @@ worldgentypes.city = { // ["bird", 0.025, 10], ], baseHeight: 0.25 +} + + +currentBuildingElement = "wood"; + +function buildSelectHandler(r) { + if (!r) { return; } + e = r.replace(/ /g, "_"); + es = mostSimilarElement(e); + if (es) { + currentBuildingElement = es; + logMessage("Element \"" + e + "\" selected"); + } + else { + currentBuildingElement = "wood"; + logMessage("Element \"" + e + "\" not found"); + selectElement(null); + } +} + +elements.slab = { + color: "#888888", + onSelect: () => { + promptInput("Which element should the slab be?", buildSelectHandler, "Select Material") + }, + onPlace: (pixel) => { + pixel.mat = currentBuildingElement; + }, + renderer: (pixel,ctx) => { + let color = elements[pixel.mat].color; + if (Array.isArray(color)) color = color[0]; + if (color) { ctx.fillStyle = color; } + ctx.fillRect(canvasCoord(pixel.x), canvasCoord(pixel.y+0.5), pixelSize, pixelSize/2); + }, + category: "solids" } \ No newline at end of file diff --git a/mods/devtests.js b/mods/devtests.js index d6414882..457ccb9c 100644 --- a/mods/devtests.js +++ b/mods/devtests.js @@ -193,138 +193,28 @@ elements.clone_fluid = { // category: "special" // } -addCanvasLayer("devtests"); -addCanvasLayer("devtests2"); -canvasLayersPre.unshift(canvasLayers["devtests"]); -devtestsCtx = canvasLayers["devtests"].getContext("2d"); -devtestsCtx2 = canvasLayers["devtests2"].getContext("2d"); -delete canvasLayers.devtests; -delete canvasLayers.devtests2; - -viewInfo[9] = { // Blur - name: "blur", - pixel: viewInfo[1].pixel, - post: function(ctx) { - devtestsCtx.canvas.width = ctx.canvas.width; - devtestsCtx.canvas.height = ctx.canvas.height; - devtestsCtx.filter = "blur(80px)"; - // Draw the blurred content on the canvas - devtestsCtx.drawImage(canvasLayers["pixels"], 0, 0); - devtestsCtx.filter = "none"; - }, -}; - -elements.fire.emit = true; -elements.lightning.emit = 15; -elements.electric.emit = true; -elements.plasma.emit = true; -elements.uranium.emit = 3; -elements.uranium.emitColor = "#009800"; -elements.rainbow.emit = true; -elements.static.emit = true; -elements.flash.emit = true; -elements.cold_fire.emit = true; -elements.blaster.emit = true; -elements.ember.emit = true; -elements.fw_ember.emit = 10; -elements.bless.emit = true; -elements.pop.emit = true; -elements.explosion.emit = true; -elements.n_explosion.emit = 10; -elements.supernova.emit = 20; -elements.midas_touch.emit = true; -elements.fireball.emit = true; - -elements.sun.emit = 15; -elements.light.emit = 3; -elements.liquid_light.emit = true; -elements.laser.emit = 3; -elements.neutron.emit = 3; -elements.proton.emit = 3; -elements.radiation.emit = 3; -elements.fallout.emit = 3; -elements.rad_steam.emit = 2; -elements.rad_steam.emitColor = "#6ad48c"; -elements.rad_cloud.emit = 2; -elements.rad_cloud.emitColor = "#009800"; -elements.rad_glass.emit = 2; -elements.rad_glass.emitColor = "#009800"; -elements.rad_shard.emit = 2; -elements.rad_shard.emitColor = "#009800"; -elements.malware.emit = 2; -elements.border.emit = 2; - -viewInfo[8] = { // Blur Glow (Emissive pixels only) - name: "blurglow", - pixel: viewInfo[1].pixel, - effects: true, - colorEffects: true, - pre: function(ctx) { - devtestsCtx2.canvas.width = ctx.canvas.width; - devtestsCtx2.canvas.height = ctx.canvas.height; - }, - pixel: viewInfo[1].pixel, - post: function(ctx) { - devtestsCtx.canvas.width = ctx.canvas.width; - devtestsCtx.canvas.height = ctx.canvas.height; - devtestsCtx.filter = "blur(30px)"; - // Draw the blurred content on the canvas - devtestsCtx.drawImage(devtestsCtx2.canvas, 0, 0); - devtestsCtx.filter = "none"; - }, -}; - -// viewInfo[7] = { // Pixelized Glow (Emissive pixels only) -// name: "pixelglow", -// pixel: viewInfo[1].pixel, -// effects: true, -// colorEffects: true, -// pre: function(ctx) { -// devtestsCtx2.canvas.width = width; -// devtestsCtx2.canvas.height = height; -// devtestsCtx.canvas.width = ctx.canvas.width; -// devtestsCtx.canvas.height = ctx.canvas.height; -// if (devtestsCtx.msImageSmoothingEnabled !== false) { -// devtestsCtx.msImageSmoothingEnabled = false; -// devtestsCtx.mozImageSmoothingEnabled = false; -// devtestsCtx.webkitImageSmoothingEnabled = false; -// devtestsCtx.imageSmoothingEnabled = false; -// } -// }, -// pixel: viewInfo[1].pixel, -// post: function(ctx) { -// // devtestsCtx.canvas.width = ctx.canvas.width; -// // devtestsCtx.canvas.height = ctx.canvas.height; -// // devtestsCtx.filter = "blur(30px)"; -// // Draw the blurred content on the canvas -// devtestsCtx.filter = "blur(30px)"; -// devtestsCtx.drawImage(devtestsCtx2.canvas, 0, 0, width, height, 0, 0, devtestsCtx.canvas.width, devtestsCtx.canvas.height); -// devtestsCtx.filter = "none"; -// devtestsCtx.drawImage(devtestsCtx.canvas, 0, 0, devtestsCtx.canvas.width, devtestsCtx.canvas.height, 0, 0, devtestsCtx.canvas.width, devtestsCtx.canvas.height); -// }, -// }; - -renderEachPixel(function(pixel,ctx) { - if (view === 8) { - if (elements[pixel.element].emit || pixel.emit || (elements[pixel.element].colorOn && pixel.charge)) { - let a = (settings.textures !== 0) ? pixel.alpha : undefined; - let d = elements[pixel.element].emit||true; - if (d === true) d = 5; - let r = Math.floor(d/2); - drawSquare(devtestsCtx2,elements[pixel.element].emitColor||pixel.color,pixel.x-r,pixel.y-r,d,a); - // viewInfo[1].pixel(pixel,devtestsCtx2); +elements.hue_paint = { + color: elements.paint.color, + tool: (pixel) => { + let hsl; + if (pixel.color.match(/^rgb/)) { + hsl = RGBToHSL(pixel.color.match(/\d+/g)); } - if (pixel.charge && !elements[pixel.element].colorOn) { - drawSquare(devtestsCtx2,"#ffff00",pixel.x-1,pixel.y-1,3); + if (hsl) { + let newRGB = hexToRGB(currentColorMap.hue_paint); + let newHSL = RGBToHSL([newRGB.r,newRGB.g,newRGB.b]); + hsl[0] = parseFloat(newHSL[0]); + hsl[1] = parseFloat(hsl[1]); + if (hsl[1] < 0.05) hsl[1] = 0.1; + hsl[2] = parseFloat(hsl[2]); + newRGB = HSLtoRGB(hsl); + newRGB[0] = Math.floor(newRGB[0]); + newRGB[1] = Math.floor(newRGB[1]); + newRGB[2] = Math.floor(newRGB[2]); + pixel.color = "rgb("+newRGB.join(",")+")"; + delete pixel.origColor; } - } - // else if (view === 7) { - // let a = (settings.textures !== 0) ? pixel.alpha : undefined; - // let d = elements[pixel.element].emit||true; - // if (d === true) d = 5; - // let r = Math.floor(d/2); - // devtestsCtx2.fillStyle = pixel.color; - // if (devtestsCtx2.globalAlpha !== a) { devtestsCtx2.globalAlpha = a; } - // devtestsCtx2.fillRect(pixel.x-r, pixel.y-r, d, d); - // } -}) + }, + category: "special", + customColor: true, +} \ No newline at end of file