sandboxels/mods/1.10example.js

118 lines
2.8 KiB
JavaScript
Raw Permalink Normal View History

2024-08-02 16:21:02 -04:00
/* == Custom View Modes == */
viewInfo[4] = { // Small Pixels
name: "grid",
pre: function(ctx) {
// run any code before pixels are rendered
drawSquare(ctx,"#00ff00",20,20,5);
},
pixel: function(pixel,ctx) {
// run any code when each individual pixel is rendered
drawSquare(ctx,pixel.color,pixel.x,pixel.y,0.66)
},
post: function(ctx) {
// run any code after pixels are rendered
drawPlus(ctx,"#ff0000",10,10) // Like a gas
}
};
// Number keys will automatically switch views.
/* == Custom Element Renderers == */
elements.ball.renderer = function(pixel,ctx) {
// Draw three horizontal squares
drawSquare(ctx,"#00ff00",pixel.x-1,pixel.y);
drawSquare(ctx,"#00ff00",pixel.x,pixel.y);
drawSquare(ctx,"#00ff00",pixel.x+1,pixel.y);
};
/* == Custom Global Renderers == */
renderEachPixel(function(pixel,ctx) {
// run any code when each individual pixel is rendered
if (pixel.element === "rock") {
drawSquare(ctx,"#00ff00",pixel.x,pixel.y-1);
}
})
renderPrePixel(function(ctx) {
// run any code before pixels are rendered
drawSquare(ctx,"#ff00ff",10,40);
})
renderPostPixel(function(ctx) {
// run any code after pixels are rendered
drawSquare(ctx,"#ffff00",30,40);
})
runPerPixel(function(pixel) {
// run any code on each pixel every tick
tryMove(pixel,pixel.x+1,pixel.y);
})
runEveryTick(function() {
// run any code after pixels are simulated per tick
if (pixelTicks % 90 === 0) {
logMessage("tick"+pixelTicks);
}
})
// If you NEED to overwrite drawPixels(), which is NOT RECOMMENDED, you must return true.
/*
oldDrawPixels = drawPixels;
drawPixels = function(forceTick=false) {
oldDrawPixels(forceTick);
// ...
return true;
};
*/
/* == Custom canvas layers == */
// WARNING: Performance may decrease. Use canvasLayers.pixels unless necessary.
addCanvasLayer("effects");
// One of the following is required to have the layer render automatically.
canvasLayersPost.push(canvasLayers["effects"]); // Render after pixels
// canvasLayersPre.push(canvasLayers["effects"]); // Render before pixels
effectsCtx = canvasLayers["effects"].getContext("2d");
/* == Custom Keybinds == */
keybinds["Digit7"] = function(e) {
console.log(e);
}
// Override existing keybind
keybinds["KeyH"] = function() {
logMessage("H was pressed!");
}
/* == New Element Events == */
elements.slime.onPlace = function(pixel) {
logMessage(pixel.element+" placed")
}
elements.slime.onDelete = function(pixel) {
logMessage(pixel.element+" deleted at "+pixelTicks)
}
elements.slime.onChange = function(pixel,element) {
logMessage(pixel.element+" changed into "+element)
}
elements.slime.onBreak = function(pixel) {
// breakInto property not necessary to fire
logMessage(pixel.element+" broken")
}