schematics
This commit is contained in:
parent
4f2913fa30
commit
87ad9f4e4b
|
|
@ -263,6 +263,7 @@
|
||||||
<tr><td>pullers.js</td><td>Pixels that pull pixels towards them</td><td>voidapex11</td></tr>
|
<tr><td>pullers.js</td><td>Pixels that pull pixels towards them</td><td>voidapex11</td></tr>
|
||||||
<tr><td>pushers.js</td><td>Pixels that push elements away from them</td><td>Alice</td></tr>
|
<tr><td>pushers.js</td><td>Pixels that push elements away from them</td><td>Alice</td></tr>
|
||||||
<tr><td>sandboxels.js</td><td>Digital screen to play a mini version of Sandboxels</td><td>Nekonico</td></tr>
|
<tr><td>sandboxels.js</td><td>Digital screen to play a mini version of Sandboxels</td><td>Nekonico</td></tr>
|
||||||
|
<tr><td>schematics.js</td><td>Schematics for logic gates</td><td>SquareScreamYT</td></tr>
|
||||||
<tr><td>spouts.js</td><td>Spouts for all liquids</td><td>kaeud</td></tr>
|
<tr><td>spouts.js</td><td>Spouts for all liquids</td><td>kaeud</td></tr>
|
||||||
<tr><td>state_voids.js</td><td>Several elements that delete specific states of matter</td><td>Alice</td></tr>
|
<tr><td>state_voids.js</td><td>Several elements that delete specific states of matter</td><td>Alice</td></tr>
|
||||||
<tr><td>switches.js</td><td>Electrical switches that can be toggled</td><td>Alice</td></tr>
|
<tr><td>switches.js</td><td>Electrical switches that can be toggled</td><td>Alice</td></tr>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,211 @@
|
||||||
|
// for pasting schematics (mostly logic gates)
|
||||||
|
// created by SquareScreamYT/sq
|
||||||
|
// https://github.com/SquareScreamYT/
|
||||||
|
// https://youtube.com/@sqec
|
||||||
|
|
||||||
|
elems = {
|
||||||
|
e: "ecloner", // ecloner with flash at -250c
|
||||||
|
E: "ecloner", // ecloner with flash at 20c
|
||||||
|
c: "cloner", // cloner with flash at -250c
|
||||||
|
C: "cloner", // cloner with flash at 20c
|
||||||
|
l: "ecloner", // ecloner with sand
|
||||||
|
L: "ecloner", // ecloner with liquid light
|
||||||
|
A: "ecloner", // cloner with antifluid
|
||||||
|
a: "ecloner", // cloner with antipowder
|
||||||
|
p: "porcelain",
|
||||||
|
W: "water",
|
||||||
|
w: "wall",
|
||||||
|
m: "meat",
|
||||||
|
b: "battery",
|
||||||
|
f: "flash",
|
||||||
|
s: "sensor",
|
||||||
|
x: "wire",
|
||||||
|
F: "fuse",
|
||||||
|
v: "void",
|
||||||
|
R: "led_r",
|
||||||
|
G: "led_g",
|
||||||
|
B: "led_b",
|
||||||
|
}
|
||||||
|
|
||||||
|
schematics = {
|
||||||
|
|
||||||
|
not_gate_1: `
|
||||||
|
C e
|
||||||
|
b
|
||||||
|
m
|
||||||
|
x
|
||||||
|
`,
|
||||||
|
|
||||||
|
not_gate_2: `
|
||||||
|
CeC
|
||||||
|
|
||||||
|
pWp
|
||||||
|
wsw
|
||||||
|
`,
|
||||||
|
|
||||||
|
or_gate: `
|
||||||
|
E E
|
||||||
|
s
|
||||||
|
`,
|
||||||
|
|
||||||
|
and_gate: `
|
||||||
|
Ce eC
|
||||||
|
|
||||||
|
pWwWp
|
||||||
|
wsxsw
|
||||||
|
CeC
|
||||||
|
|
||||||
|
pWp
|
||||||
|
wsw
|
||||||
|
`,
|
||||||
|
|
||||||
|
nand_gate: `
|
||||||
|
Ce eC
|
||||||
|
|
||||||
|
pWwWp
|
||||||
|
wsxsw
|
||||||
|
`,
|
||||||
|
|
||||||
|
nor_gate: `
|
||||||
|
Ce eC
|
||||||
|
|
||||||
|
pWwWp
|
||||||
|
wsxsw
|
||||||
|
CeC
|
||||||
|
|
||||||
|
pWp
|
||||||
|
wsw
|
||||||
|
`,
|
||||||
|
|
||||||
|
xor_gate: `
|
||||||
|
w x x w
|
||||||
|
xxxe exxx
|
||||||
|
xC Cx
|
||||||
|
x pWwWp x
|
||||||
|
x wsxsw x
|
||||||
|
Ce ex xe eC
|
||||||
|
C
|
||||||
|
pWwWp pWwWp
|
||||||
|
wsxsx xsxsw
|
||||||
|
Ce eC
|
||||||
|
|
||||||
|
pWwWp
|
||||||
|
wsxsw
|
||||||
|
`,
|
||||||
|
|
||||||
|
xnor_gate: `
|
||||||
|
w x x w
|
||||||
|
xxxe exxx
|
||||||
|
xC Cx
|
||||||
|
x pWwWp x
|
||||||
|
x wsxsw x
|
||||||
|
Ce ex xe eC
|
||||||
|
C
|
||||||
|
pWwWp pWwWp
|
||||||
|
wsxsx xsxsw
|
||||||
|
Ce eC
|
||||||
|
|
||||||
|
pWwWp
|
||||||
|
wsxsw
|
||||||
|
CeC
|
||||||
|
|
||||||
|
pWp
|
||||||
|
wsw
|
||||||
|
`,
|
||||||
|
|
||||||
|
intersection_tl: `
|
||||||
|
wlww
|
||||||
|
A s
|
||||||
|
w vw
|
||||||
|
wsww
|
||||||
|
`,
|
||||||
|
|
||||||
|
intersection_tr: `
|
||||||
|
wwlw
|
||||||
|
s A
|
||||||
|
wv w
|
||||||
|
wwsw
|
||||||
|
`,
|
||||||
|
|
||||||
|
intersection_bl: `
|
||||||
|
wsww
|
||||||
|
w vw
|
||||||
|
L s
|
||||||
|
waww
|
||||||
|
`,
|
||||||
|
|
||||||
|
intersection_br: `
|
||||||
|
wwsw
|
||||||
|
wv w
|
||||||
|
s L
|
||||||
|
wwaw
|
||||||
|
`,
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function pasteSchematic(pattern, startX, startY) {
|
||||||
|
const lines = pattern.trim().split('\n');
|
||||||
|
for (let y = 0; y < lines.length; y++) {
|
||||||
|
for (let x = 0; x < lines[y].length; x++) {
|
||||||
|
const char = lines[y][x];
|
||||||
|
if (char !== ' ' && elems[char]) {
|
||||||
|
const pixelX = startX + x;
|
||||||
|
const pixelY = startY + y;
|
||||||
|
if (isEmpty(pixelX, pixelY)) {
|
||||||
|
createPixel(elems[char], pixelX, pixelY);
|
||||||
|
if (char.toLowerCase() == "e" || char.toLowerCase() == "c") {
|
||||||
|
pixelMap[pixelX][pixelY].clone = "flash"
|
||||||
|
if (char.toLowerCase() == char) {
|
||||||
|
pixelMap[pixelX][pixelY].temp = -250
|
||||||
|
}
|
||||||
|
} else if (char.toLowerCase() == "l" || char.toLowerCase() == "a") {
|
||||||
|
if (char == "a") {
|
||||||
|
pixelMap[pixelX][pixelY].clone = "antipowder"
|
||||||
|
} else if (char == "A") {
|
||||||
|
pixelMap[pixelX][pixelY].clone = "antifluid"
|
||||||
|
} else if (char == "L") {
|
||||||
|
pixelMap[pixelX][pixelY].clone = "liquid_light"
|
||||||
|
pixelMap[pixelX][pixelY].temp = -273.15
|
||||||
|
} else if (char == "l") {
|
||||||
|
pixelMap[pixelX][pixelY].clone = "sand"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (schematic in schematics) {
|
||||||
|
elements[schematic] = {
|
||||||
|
category: "schematics",
|
||||||
|
color: "#888888",
|
||||||
|
behavior: behaviors.WALL,
|
||||||
|
state: "solid",
|
||||||
|
maxSize: 1,
|
||||||
|
onSelect: (function(pattern) {
|
||||||
|
return function() {
|
||||||
|
const lines = pattern.trim().split('\n');
|
||||||
|
let pixelCount = 0;
|
||||||
|
const height = lines.length;
|
||||||
|
const width = Math.max(...lines.map(line => line.length));
|
||||||
|
for (let y = 0; y < lines.length; y++) {
|
||||||
|
for (let x = 0; x < lines[y].length; x++) {
|
||||||
|
const char = lines[y][x];
|
||||||
|
if (char !== ' ' && elems[char]) {
|
||||||
|
pixelCount++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
logMessage(pixelCount + " pixels, " + width + "x" + height);
|
||||||
|
}
|
||||||
|
})(schematics[schematic]),
|
||||||
|
tick: (function(pattern) {
|
||||||
|
return function(pixel) {
|
||||||
|
deletePixel(pixel.x, pixel.y);
|
||||||
|
pasteSchematic(pattern, pixel.x, pixel.y);
|
||||||
|
}
|
||||||
|
})(schematics[schematic]),
|
||||||
|
excludeRandom: true
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue