sandboxels/mods/borders.js

68 lines
2.4 KiB
JavaScript
Raw Normal View History

2025-11-26 10:07:13 -05:00
let isMachine = {"machines":true}
2025-11-30 17:45:32 -05:00
elements.static.border = false;
2025-11-25 22:02:54 -05:00
window.addEventListener("load", () => {
let oldPreRenderer = viewInfo[1].pre;
let oldPixelRenderer = viewInfo[1].pixel;
viewInfo[1].pre = function(ctx) {
if (oldPreRenderer) oldPreRenderer(ctx);
currentPixels.forEach(pixel => {
2025-11-26 10:07:13 -05:00
if ((elements[pixel.element].movable !== true && isMachine[elements[pixel.element].category] === undefined) || elements[pixel.element].isGas === true) return;
2025-11-30 17:45:32 -05:00
if (elements[pixel.element].border === false) return;
2025-11-25 22:02:54 -05:00
let edge = false;
for (var i = 0; i < adjacentCoords.length; i++) {
var coords = adjacentCoords[i];
var x = pixel.x + coords[0];
var y = pixel.y + coords[1];
if (isEmpty(x,y)) {
// if (elements[pixelMap[x][y].element].id !== elements[pixel.element].id || elements[pixelMap[x][y].element].state !== elements[pixel.element].id) continue
edge = true;
break;
}
}
2025-11-26 10:19:56 -05:00
if (edge) drawSquare(ctx,"rgb(0,0,0)",pixel.x-1,pixel.y-1,3);
2025-11-25 22:02:54 -05:00
})
}
viewInfo[1].pixel = function(pixel, ctx) {
2025-11-26 10:07:13 -05:00
if (elements[pixel.element].movable || isMachine[elements[pixel.element].category] === true) return oldPixelRenderer(pixel, ctx);
2025-11-25 21:57:38 -05:00
let edge = false;
2025-11-30 17:45:32 -05:00
if (elements[pixel.element].border !== false) {
for (var i = 0; i < adjacentCoords.length; i++) {
var coords = adjacentCoords[i];
var x = pixel.x + coords[0];
var y = pixel.y + coords[1];
if (isEmpty(x,y) || (!outOfBounds(x,y) &&
elements[pixelMap[x][y].element].movable
)) {
// if (elements[pixelMap[x][y].element].id !== elements[pixel.element].id || elements[pixelMap[x][y].element].state !== elements[pixel.element].id) continue
edge = true;
break;
}
2025-11-25 21:57:38 -05:00
}
2025-11-30 17:45:32 -05:00
};
2025-11-25 22:02:54 -05:00
if (edge) drawSquare(ctx,"rgb(0,0,0)",pixel.x,pixel.y);
else oldPixelRenderer(pixel, ctx);
2025-11-25 21:57:38 -05:00
}
2025-11-25 22:02:54 -05:00
// viewInfo[1].post = function(ctx) {
// currentPixels.forEach(pixel => {
// let edge = false;
// for (var i = 0; i < adjacentCoords.length; i++) {
// var coords = adjacentCoords[i];
// var x = pixel.x + coords[0];
// var y = pixel.y + coords[1];
// if (!isEmpty(x,y,true) && elements[pixelMap[x][y].element].movable !== elements[pixel.element].movable) {
// // if (elements[pixelMap[x][y].element].id !== elements[pixel.element].id || elements[pixelMap[x][y].element].state !== elements[pixel.element].id) continue
// edge = true;
// break;
// }
// }
// if (edge) drawSquare(ctx,"rgb(0,0,0)",pixel.x-0.5,pixel.y-0.5,2);
// })
// }
2025-11-25 21:57:38 -05:00
2025-11-25 22:02:54 -05:00
})
2025-11-25 21:57:38 -05:00