more tests
This commit is contained in:
parent
22c9701faf
commit
667ef07534
|
|
@ -344,3 +344,87 @@ elements.black_pink_test = {
|
||||||
function updateDistanceDisplayDescription() {
|
function updateDistanceDisplayDescription() {
|
||||||
elements.distance_display.desc = `It gets more blue the closer it gets to a distance display anchor. The current scale factor is ${distanceScale} (bigger number = smaller blue radius). <span onclick=distanceScalePrompt() style=\"color: #ff00ff;\";>Click here</span> to open the scale prompt.<br/><em>Note: Info pages do not update automatically and must be closed and reopened to show the changed scale.</em>`;
|
elements.distance_display.desc = `It gets more blue the closer it gets to a distance display anchor. The current scale factor is ${distanceScale} (bigger number = smaller blue radius). <span onclick=distanceScalePrompt() style=\"color: #ff00ff;\";>Click here</span> to open the scale prompt.<br/><em>Note: Info pages do not update automatically and must be closed and reopened to show the changed scale.</em>`;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if(enabledMods.includes("mods/code_library.js")) {
|
||||||
|
function createDownAtFirstAvailableSpace(element,x) {
|
||||||
|
//Get the Y of the first empty pixel on a row which is on a full pixel or the bottom of the canvas
|
||||||
|
//1. map(x => !x) coerces empty pixels' `undefined` values to !false = true, while full pixels are coerced to !true = false
|
||||||
|
//2. spread with false adds a sentinel value for the bottom of the canvas
|
||||||
|
//3. slice(1) removes empty (OOB) position at y=0
|
||||||
|
//4. indexOf(false) always shows the first matching item
|
||||||
|
//5. an offset I don't understand (probably from that slice) shifts the first match to the empty spot above the first full pixel
|
||||||
|
var firstEmptyY = [...pixelMap[x].map(obj => !obj),false].slice(1).indexOf(false);
|
||||||
|
|
||||||
|
if(firstEmptyY == -1) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
createPixel(element,x,firstEmptyY);
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
|
||||||
|
function createReplacingGases(element,x,y) {
|
||||||
|
if(isEmpty(x,y,false)) {
|
||||||
|
createPixel(element,x,y);
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
if(!isEmpty(x,y,true)) {
|
||||||
|
var isGas = (elements[pixelMap[x][y].element].state == "gas");
|
||||||
|
if(isGas) {
|
||||||
|
deletePixel(x,y);
|
||||||
|
createPixel(element,x,y);
|
||||||
|
};
|
||||||
|
return isGas;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
function cdafasIgnoringGas(element,x) {
|
||||||
|
//Get the Y of the first empty pixel on a row which is on a full pixel or the bottom of the canvas
|
||||||
|
//1. map(x => !x) coerces empty pixels' `undefined` values to !false = true, while full pixels are coerced to !true = false
|
||||||
|
//2. spread with false adds a sentinel value for the bottom of the canvas
|
||||||
|
//3. slice(1) removes empty (OOB) position at y=0
|
||||||
|
//4. indexOf(false) always shows the first matching item
|
||||||
|
//5. an offset I don't understand (probably from that slice) shifts the first match to the empty spot above the first full pixel
|
||||||
|
var firstEmptyY = [...pixelMap[x].map(obj =>!obj || elements[obj.element].state == "gas"),false].slice(1).indexOf(false);
|
||||||
|
|
||||||
|
if(firstEmptyY == -1) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
createReplacingGases(element,x,firstEmptyY);
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.temporal_fire_test = {
|
||||||
|
color: ["#8f8f8f","3f3f3f"],
|
||||||
|
behavior: behaviors.WALL,
|
||||||
|
properties: {
|
||||||
|
direction: 1,
|
||||||
|
counter: 1,
|
||||||
|
active: true,
|
||||||
|
fromX: null,
|
||||||
|
},
|
||||||
|
tick: function(pixel) {
|
||||||
|
if(pixel.fromX == null) {
|
||||||
|
pixel.fromX = pixel.x;
|
||||||
|
};
|
||||||
|
if(!pixel) {
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
if(!pixel.active) {
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
var newX = pixel.fromX + pixel.counter;
|
||||||
|
if(outOfBounds(newX,1)) {
|
||||||
|
pixel.active = false;
|
||||||
|
newX = pixel.fromX + pixel.counter; //reset
|
||||||
|
pixel.counter = 1;
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
cdafasIgnoringGas("fire",newX);
|
||||||
|
pixel.counter += pixel.direction;
|
||||||
|
},
|
||||||
|
state: "gas",
|
||||||
|
category: "special",
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue