This commit is contained in:
slweeb 2025-04-13 22:48:44 -04:00
parent 0d498fe4b0
commit c5899d5646
2 changed files with 58 additions and 133 deletions

View File

@ -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"
}

View File

@ -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,
}