Test controllable pixel

Read description

**Uses keyboard; not likely to work on mobile**

##Notes
This *will* move if you are typing in a menu, but not in an alert.
Non-shifted presses will behave *unpredictably* if there are multiple pixels.
Shift-hold presses will behave more predictably. Using multiple pixels is not supported.
The pixel has a state of "solid" and a density of 2. It might be able to move through liquids and gases according to this density.

##Controls##
WASD to move
Z to shock
X to explode
Hold shift to repeat action
Q to stop repetition if it doesn't stop after you let go of shift
This commit is contained in:
O-01-67 2022-05-24 13:56:31 -04:00 committed by GitHub
parent 69cbfcc6a2
commit dbac388676
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 86 additions and 0 deletions

View File

@ -0,0 +1,86 @@
sussyKey = null,
document.addEventListener("keyup", function(sussyListener) {
switch (sussyListener.keyCode) {
case 87:
sussyKey = "W";
break;
case 65:
sussyKey = "A";
break;
case 83:
sussyKey = "S";
break;
case 68:
sussyKey = "D";
break;
case 81:
sussyKey = "Q";
break;
case 88:
sussyKey = "X";
break;
case 90:
sussyKey = "Z";
break;
};
});
elements.controllable_pixel = {
color: "#FFFFFF",
colorOn: "#FFFF00",
behavior: behaviors.WALL,
state: "solid",
density: 2000,
conduct: 1,
hardness: 1,
tick: function(pixel) {
var xx = pixel.x
var yy = pixel.y
if(sussyKey !== null) {
switch (sussyKey) {
case "W":
tryMove(pixel,xx,yy-1)
if(shiftDown === 0) {
sussyKey = null;
}
break;
case "A":
tryMove(pixel,xx-1,yy)
if(shiftDown === 0) {
sussyKey = null;
}
break;
case "S":
tryMove(pixel,xx,yy+1)
if(shiftDown === 0) {
sussyKey = null;
}
break;
case "D":
tryMove(pixel,xx+1,yy)
if(shiftDown === 0) {
sussyKey = null;
}
break;
case "X":
explodeAt(xx,yy,4)
if(shiftDown === 0) {
sussyKey = null;
}
break;
case "Z":
if (!pixel.charge && !pixel.chargeCD && !isEmpty(pixel.x,pixel.y,true)) {
pixel.charge = 1;
}
if(shiftDown === 0) {
sussyKey = null;
}
break;
case "Q":
sussyKey = null;
break;
}
}
},
}