Merge branch 'R74nCom:main' into main

This commit is contained in:
DoobieRalsei 2024-08-07 15:30:34 -07:00 committed by GitHub
commit 5952455426
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 270 additions and 5 deletions

View File

@ -15060,12 +15060,12 @@ behaviorRules = {
categoryButton.setAttribute("current", true);
}
function setView(n) {
if (viewInfo[n]) {
view = n;
}
else { // reset view
if (!viewInfo[n] || n === 1) { // reset view
view = null;
}
else {
view = n;
}
}
function centerMouse() {
mousePos = {x:width/2,y:height/2};

View File

@ -333,19 +333,21 @@
<tr><td>heatglow.js</td><td>Red glowing effect for hot metals</td><td>nousernamefound</td></tr>
<tr><td>invisible_dye.js</td><td>Adds elements like Dye and Spray Paint that take the color of the background</td><td>Alice</td></tr>
<tr><td>invisible_wall.js</td><td>Adds an element like Wall that takes the color of the background</td><td>Alice</td></tr>
<tr><td>lightmap.js</td><td>Makes light sources glow</td><td>RedBirdly</td></tr>
<tr><td>moreViews.js</td><td>Many new rendering modes</td><td>ggod</td></tr>
<tr><td>onecolor.js</td><td>Makes all placed pixels single-colored</td><td>nousernamefound</td></tr>
<tr><td>paint_event.js</td><td>Adds a random event that randomly paints a circle</td><td>Alice</td></tr>
<tr><td>rainbow_tests.js</td><td>Adds variants of the rainbow element with different maths</td><td>Alice</td></tr>
<tr><td>shader_by_jayd.js</td><td>Adds a glow around light elements</td><td>Jayd</td></tr>
<tr><td>Shroomboxels.js</td><td>A variant of acid_and_shapes.js that uses a different trigonometric function</td><td>Alice</td></tr>
<tr><td>singleColor.js</td><td>Makes all elements pick one color each time they're drawn</td><td>stefanblox</td></tr>
<tr><td>lightmap.js</td><td>Makes light sources glow</td><td>RedBirdly</td></tr>
<!----><tr><td class="modCat" colspan="3">Compilations</td></tr><!---->
<tr><td>a_mod_by_alice.js</td><td>A mod combining most of Alices mods, and some other things</td><td>Alice</td></tr>
<tr><td>food_mods.js</td><td>A mod combining most food mods</td><td>stefanblox, moss, Tisquares, SquareScreamYT, Adora, pixelegend4, Alice, Nubo318, Clide4, rottenEgghead</td></tr>
<!----><tr><td class="modCat" colspan="3">Technical Libraries & Tests</td></tr><!---->
<tr><td>1.10example.js</td><td>Examples for modern rendering modding and more</td><td><a href="https://R74n.com" class="R74nLink">R74n</a></td></tr>
<tr><td>a_bundle_of_tests.js</td><td>Several test functions</td><td>Alice</td></tr>
<tr><td>all_stain.js</td><td>Makes every element stain solids</td><td>stefanblox</td></tr>
<tr><td>betterMenuScreens.js</td><td>Library for mods to create their own menus</td><td>ggod</td></tr>

View File

@ -3530,4 +3530,84 @@ elements.colored_filler = {
}
}
}
}
let copycatfillerElem = "sand"
elements.copycat_filler = {
color: elements.random.color,
behavior:behaviors.WALL,
category: "special",
onSelect: function(){
let ans1 = prompt("Enter the element you want to use for the copycat filler", copycatfillerElem||"sand")
copycatfillerElem = mostSimilarElement(ans1)
},
tick: function(pixel){
let fillerNeighbors = {}
if (!pixel.copycatElement){
pixel.copycatElement = copycatfillerElem
}
if (!pixel.rSeed){
pixel.rSeed = [Math.random(), Math.random(), Math.random(), Math.random()]
}
for (var i = 0; i < adjacentCoords.length; i++) {
var x = pixel.x+adjacentCoords[i][0];
var y = pixel.y+adjacentCoords[i][1];
if (isEmpty(x,y)) {
createPixel("copycat_filler", x, y)
pixelMap[x][y].copycatElement = pixel.copycatElement
}
}
for (var i = 0; i < squareCoords.length; i++) {
var x = pixel.x+squareCoords[i][0];
var y = pixel.y+squareCoords[i][1];
if (!isEmpty(x, y, true)){
var otherPixel = pixelMap[x][y];
if (otherPixel.element == "copycat_filler" && otherPixel.copycatElement != pixel.copycatElement){
fillerNeighbors[otherPixel.copycatElement] = (fillerNeighbors[otherPixel.copycatElement]||0)+1;
}
}
}
if(Object.keys(fillerNeighbors).length > 0){
let mostSeenColor = highestValueObjectKey(fillerNeighbors)
let opposingCount = sumOfObjectValues(fillerNeighbors)
if (Math.random() < neighborRandomChance[opposingCount]){
pixel.copycatElement = mostSeenColor;
}
}
},
renderer: function(pixel, ctx){
if (!pixel.copycatElement){pixel.copycatElement = copycatfillerElem}
if (!pixel.rSeed){pixel.rSeed = [Math.random(), Math.random(), Math.random(), Math.random()]}
if (typeof elements[pixel.copycatElement].color == "object"){
let selectedColor = elements[pixel.copycatElement].color[Math.floor(pixel.rSeed[1]*elements[pixel.copycatElement].color.length)]
let rgb = {
r: parseInt(selectedColor.match(/\d+/g)[0]),
g: parseInt(selectedColor.match(/\d+/g)[1]),
b: parseInt(selectedColor.match(/\d+/g)[2])
}
for (let c in rgb){
rgb[c] += Math.floor(pixel.rSeed[0] * (pixel.rSeed[2] > 0.5 ? -1 : 1) * pixel.rSeed[3] * 15);
rgb[c] = Math.max(0, Math.min(255, rgb[c]));
}
if (elements[pixel.copycatElement].glow || elements[pixel.copycatElement].isGas){
drawPlus(ctx, "rgb("+rgb.r+","+rgb.g+","+rgb.b+")", pixel.x, pixel.y, 1);
} else {
drawSquare(ctx, "rgb("+rgb.r+","+rgb.g+","+rgb.b+")", pixel.x, pixel.y);
}
} else {
let rgb = {
r: parseInt(elements[pixel.copycatElement].color.match(/\d+/g)[0]),
g: parseInt(elements[pixel.copycatElement].color.match(/\d+/g)[1]),
b: parseInt(elements[pixel.copycatElement].color.match(/\d+/g)[2])
}
for (let c in rgb){
rgb[c] += Math.floor(pixel.rSeed[0] * (pixel.rSeed[2] > 0.5 ? -1 : 1) * pixel.rSeed[3] * 15);
rgb[c] = Math.max(0, Math.min(255, rgb[c]));
}
if (elements[pixel.copycatElement].glow || elements[pixel.copycatElement].isGas){
drawPlus(ctx, "rgb("+rgb.r+","+rgb.g+","+rgb.b+")", pixel.x, pixel.y, 1);
} else {
drawSquare(ctx, "rgb("+rgb.r+","+rgb.g+","+rgb.b+")", pixel.x, pixel.y);
}
}
}
}

154
mods/shader_by_jayd.js Normal file
View File

@ -0,0 +1,154 @@
elements.shader_test = {
color: "#FFFFFF",
category: "special",
renderer: function(pixel,ctx) {
var circlec = circleCoords(pixel.x, pixel.y, 3);
for (var i = 0; i < circlec.length; i++){
var coord = circlec[i];
var x = coord.x;
var y = coord.y;
drawSquare(ctx,"#ffffff",x,y,1,0.25)
}
}
}
elements.fire.renderer = function(pixel,ctx) {
var circlec = circleCoords(pixel.x, pixel.y, 3);
for (var i = 0; i < circlec.length; i++){
var coord = circlec[i];
var x = coord.x;
var y = coord.y;
drawSquare(ctx,pixel.color,x,y,1,0.25)
}
}
elements.cold_fire.renderer = function(pixel,ctx) {
var circlec = circleCoords(pixel.x, pixel.y, 3);
for (var i = 0; i < circlec.length; i++){
var coord = circlec[i];
var x = coord.x;
var y = coord.y;
drawSquare(ctx,pixel.color,x,y,1,0.25)
}
}
elements.light.renderer = function(pixel,ctx) {
var circlec = circleCoords(pixel.x, pixel.y, 2);
for (var i = 0; i < circlec.length; i++){
var coord = circlec[i];
var x = coord.x;
var y = coord.y;
drawSquare(ctx,pixel.color,x,y,1,0.75)
}
}
elements.laser.renderer = function(pixel,ctx) {
var circlec = circleCoords(pixel.x, pixel.y, 2);
for (var i = 0; i < circlec.length; i++){
var coord = circlec[i];
var x = coord.x;
var y = coord.y;
drawSquare(ctx,pixel.color,x,y,1,0.75)
}
}
elements.plasma.renderer = function(pixel,ctx) {
var circlec = circleCoords(pixel.x, pixel.y, 3);
for (var i = 0; i < circlec.length; i++){
var coord = circlec[i];
var x = coord.x;
var y = coord.y;
drawSquare(ctx,pixel.color,x,y,1,0.5)
}
}
elements.electric.renderer = function(pixel,ctx) {
var circlec = circleCoords(pixel.x, pixel.y, 2);
for (var i = 0; i < circlec.length; i++){
var coord = circlec[i];
var x = coord.x;
var y = coord.y;
drawSquare(ctx,pixel.color,x,y,1,0.25)
}
}
elements.heat_ray.renderer = function(pixel,ctx) {
var circlec = circleCoords(pixel.x, pixel.y, 3);
for (var i = 0; i < circlec.length; i++){
var coord = circlec[i];
var x = coord.x;
var y = coord.y;
drawSquare(ctx,pixel.color,x,y,1,0.25)
}
}
elements.freeze_ray.renderer = function(pixel,ctx) {
var circlec = circleCoords(pixel.x, pixel.y, 3);
for (var i = 0; i < circlec.length; i++){
var coord = circlec[i];
var x = coord.x;
var y = coord.y;
drawSquare(ctx,pixel.color,x,y,1,0.25)
}
}
elements.flash.renderer = function(pixel,ctx) {
var circlec = circleCoords(pixel.x, pixel.y, 3);
for (var i = 0; i < circlec.length; i++){
var coord = circlec[i];
var x = coord.x;
var y = coord.y;
drawSquare(ctx,pixel.color,x,y,1,0.7)
}
}
elements.smoke.renderer = function(pixel,ctx) {
var circlec = circleCoords(pixel.x, pixel.y, 2);
for (var i = 0; i < circlec.length; i++){
var coord = circlec[i];
var x = coord.x;
var y = coord.y;
drawSquare(ctx,pixel.color,x,y,1,0.25)
}
}
elements.radiation.renderer = function(pixel,ctx) {
var circlec = circleCoords(pixel.x, pixel.y, 2);
for (var i = 0; i < circlec.length; i++){
var coord = circlec[i];
var x = coord.x;
var y = coord.y;
drawSquare(ctx,pixel.color,x,y,1,0.25)
}
}
elements.led_r.renderer = function(pixel,ctx) {
var circlec = circleCoords(pixel.x, pixel.y, 3);
for (var i = 0; i < circlec.length; i++){
var coord = circlec[i];
var x = coord.x;
var y = coord.y;
if (pixel.charge) {
drawSquare(ctx,pixel.color,x,y,1,0.5)
}
else {
drawSquare(ctx,pixel.color,pixel.x,pixel.y,1,1)
}
}
}
elements.led_g.renderer = function(pixel,ctx) {
var circlec = circleCoords(pixel.x, pixel.y, 3);
for (var i = 0; i < circlec.length; i++){
var coord = circlec[i];
var x = coord.x;
var y = coord.y;
if (pixel.charge) {
drawSquare(ctx,pixel.color,x,y,1,0.5)
}
else {
drawSquare(ctx,pixel.color,pixel.x,pixel.y,1,1)
}
}
}
elements.led_b.renderer = function(pixel,ctx) {
var circlec = circleCoords(pixel.x, pixel.y, 3);
for (var i = 0; i < circlec.length; i++){
var coord = circlec[i];
var x = coord.x;
var y = coord.y;
if (pixel.charge) {
drawSquare(ctx,pixel.color,x,y,1,0.5)
}
else {
drawSquare(ctx,pixel.color,pixel.x,pixel.y,1,1)
}
}
}

View File

@ -0,0 +1,29 @@
//texture_pack_by_jayd
document.body.style.backgroundImage = 'url("https://jayd-rubies.github.io/1236951076024877107.png")';
gameDiv.style.border = "0px solid #ffffff";
function drawCursor() {
canvas.style.backgroundColor = "#00000000";
var layerCtx = canvasLayers.gui.getContext('2d');
var mouseOffset = Math.trunc(mouseSize/2);
var topLeft = [mousePos.x-mouseOffset,mousePos.y-mouseOffset];
var bottomRight = [mousePos.x+mouseOffset,mousePos.y+mouseOffset];
// Draw a square around the mouse
layerCtx.strokeStyle = "#FFFFFF80";
layerCtx.strokeRect(topLeft[0]*pixelSize,topLeft[1]*pixelSize,(bottomRight[0]-topLeft[0]+1)*pixelSize,(bottomRight[1]-topLeft[1]+1)*pixelSize);
// draw one transparent pixel in the center
if (settings.precision) {
layerCtx.fillStyle = "#ffffffc8";
layerCtx.fillRect(mousePos.x*pixelSize,mousePos.y*pixelSize,pixelSize,pixelSize);
}
if (shaping) {
if (shaping === 1) { // Draw a white line from shapeStart.x to shapeStart.y
layerCtx.beginPath();
layerCtx.strokeStyle = "#FFFFFF80";
layerCtx.lineWidth = 2;
layerCtx.moveTo(shapeStart.x*pixelSize+pixelSizeHalf, shapeStart.y*pixelSize+pixelSizeHalf);
layerCtx.lineTo(mousePos.x*pixelSize+pixelSizeHalf, mousePos.y*pixelSize+pixelSizeHalf);
layerCtx.stroke();
layerCtx.lineWidth = 1;
}
}
}