100 lines
2.5 KiB
JavaScript
100 lines
2.5 KiB
JavaScript
|
|
msColorArray = ["#a0a0a0", "#0000ff", "#008000", "#ff0000", "#000080", "#800000", "#008080", "#000000", "#808080"]
|
||
|
|
|
||
|
|
elements.msfield = {
|
||
|
|
name: "minefield",
|
||
|
|
color: "#c0c0c0",
|
||
|
|
conduct: 1,
|
||
|
|
insulate: true,
|
||
|
|
properties: {
|
||
|
|
uwu: 0,
|
||
|
|
revealed: false,
|
||
|
|
revealedAround: false,
|
||
|
|
},
|
||
|
|
tick: function(pixel) {
|
||
|
|
if(typeof(pixel.revealed) === 'undefined') {
|
||
|
|
pixel.revealed = false
|
||
|
|
}
|
||
|
|
if(typeof(pixel.uwu) === 'undefined') {
|
||
|
|
pixel.uwu = 0
|
||
|
|
}
|
||
|
|
if(typeof(pixel.revealedAround) === 'undefined') {
|
||
|
|
pixel.revealedAround = false
|
||
|
|
}
|
||
|
|
if(pixel.charge) {
|
||
|
|
pixel.revealed = true
|
||
|
|
delete pixel.charge
|
||
|
|
if(pixel.chargeCD) {
|
||
|
|
delete pixel.chargeCD
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if(pixel.revealed) {
|
||
|
|
//count neighbors
|
||
|
|
pixel.uwu = 0
|
||
|
|
for (let i = -1; i < 2; i++) {
|
||
|
|
for (let j = -1; j < 2; j++) {
|
||
|
|
if (!isEmpty(pixel.x+j,pixel.y+i) && !outOfBounds(pixel.x+j,pixel.y+i)) {
|
||
|
|
if (pixelMap[pixel.x+j][pixel.y+i].element == "msmine") {
|
||
|
|
pixel.uwu += 1
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if(typeof(pixel.uwu) === 'number' && isFinite(pixel.uwu) && !isNaN(pixel.uwu)) {
|
||
|
|
if(pixel.uwu >= 0 && pixel.uwu <= 8) {
|
||
|
|
pixel.color = msColorArray[pixel.uwu]
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
pixel.color = "#ff00ff"
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
pixel.color = "#c0c0c0" //I feel bad suppressing the sand effect.
|
||
|
|
}
|
||
|
|
},
|
||
|
|
category: "special",
|
||
|
|
state: "solid",
|
||
|
|
hidden: true,
|
||
|
|
};
|
||
|
|
|
||
|
|
elements.msmine = {
|
||
|
|
name: "minefield",
|
||
|
|
color: "#c0c0c0",
|
||
|
|
conduct: 1,
|
||
|
|
insulate: true,
|
||
|
|
properties: {
|
||
|
|
uwu: 0,
|
||
|
|
revealed: false,
|
||
|
|
},
|
||
|
|
tick: function(pixel) {
|
||
|
|
if(pixel.charge) {
|
||
|
|
pixel.revealed = true
|
||
|
|
delete pixel.charge
|
||
|
|
if(pixel.chargeCD) {
|
||
|
|
delete pixel.chargeCD
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if(pixel.revealed) {
|
||
|
|
pixel.color = ("#" + ((192 + Math.abs((pixelTicks * 4) % 64)).toString(16) + "c0c0").padStart(6, '0'));
|
||
|
|
//oldFillStyle = ctx.fillStyle
|
||
|
|
//ctx.fillStyle = "#ff0000";
|
||
|
|
////ctx.fillRect(pixel.x*pixelSize, pixel.y*pixelSize, pixelSize/2, pixelSize);
|
||
|
|
//ctx.fillRect(23*pixelSize, 23*pixelSize, pixelSize/2, pixelSize);
|
||
|
|
//ctx.fillStyle = oldFillStyle;
|
||
|
|
} else {
|
||
|
|
pixel.color = "#c0c0c0"
|
||
|
|
}
|
||
|
|
},
|
||
|
|
category: "special",
|
||
|
|
state: "solid",
|
||
|
|
hidden: true,
|
||
|
|
};
|
||
|
|
|
||
|
|
elements.ms = { //minesweeper = {
|
||
|
|
color: ["#c0c0c0", "#c0c0c0", "#ff0000", "#008000", "#ff0000", "#000080", "#800000", "#008080", "#000000", "#808080", "#808080"],
|
||
|
|
behavior: [
|
||
|
|
"XX|XX|XX",
|
||
|
|
"XX|CH:msfield,msfield,msfield,msfield,msfield,msfield,msfield,msfield,msfield,msmine|XX",
|
||
|
|
"XX|XX|XX"
|
||
|
|
],
|
||
|
|
category: "special",
|
||
|
|
state: "solid",
|
||
|
|
};
|