Rename screw tubes to screw conveyors (t44)

Player text says Screw conveyor; code uses screw (BP_SCREW, piece id
screw, screwIntake...). No compatibility code for old saves or
blueprints. Suite outputs match before and after apart from names.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-26 18:59:13 -04:00
co-authored by Claude Opus 5.5
parent 5e7069d637
commit 1f8a89db6a
45 changed files with 351 additions and 327 deletions
+7 -7
View File
@@ -1,4 +1,4 @@
// Throughput of belts and screw tubes: grains delivered per second. Whatever lands
// Throughput of belts and screw conveyors: grains delivered per second. Whatever lands
// past the outlet is taken away, so the output pile never backs up into the line.
const { load, flatWorld, rect, ticks, count } = require('../../test/harness');
const { run } = load();
@@ -11,18 +11,18 @@ function rate(x0, x1, y0, y1) {
for (let k = 0; k < 300; k++) run(`simTick(); ${sink}`);
return run('__got') / 5;
}
// sideways tube fed by a walled hopper sitting on its first two blocks
// sideways screw fed by a walled hopper sitting on its first two blocks
fresh();
run('for (let bx = 20; bx < 30; bx++) placeBlock(BP_TUBE, 1, bx, 20, true);');
run('for (let bx = 20; bx < 30; bx++) placeBlock(BP_SCREW, 1, bx, 20, true);');
run('for (let y = 0; y < 80; y++) { setCell(y*W+79, STONE, AMB[y], 0); setCell(y*W+96, STONE, AMB[y], 0); }');
rect(run, 80, 0, 95, 79, run('SAND'));
res.tubeSideways = rate(120, 319, 84, 119);
res.tubeLanes = run('(() => { const s = new Set(); for (let y = 80; y < 84; y++) for (let x = 100; x < 120; x++) if (mat[y*W+x] === SAND) s.add(y); return s.size; })()');
// lift: a column of up-tubes in a pit of sand, turned sideways at the top
res.screwSideways = rate(120, 319, 84, 119);
res.screwLanes = run('(() => { const s = new Set(); for (let y = 80; y < 84; y++) for (let x = 100; x < 120; x++) if (mat[y*W+x] === SAND) s.add(y); return s.size; })()');
// lift: a column of up-screws in a pit of sand, turned sideways at the top
fresh();
run('for (let y = 120; y < 196; y++) for (let x = 90; x < 130; x++) setCell(y*W+x, EMPTY, AMB[y], 0)');
rect(run, 90, 130, 129, 195, run('SAND'));
run('for (let by = 20; by <= 37; by++) placeBlock(BP_TUBE, 0, 26, by, true); for (let bx = 26; bx <= 40; bx++) placeBlock(BP_TUBE, 1, bx, 19, true);');
run('for (let by = 20; by <= 37; by++) placeBlock(BP_SCREW, 0, 26, by, true); for (let bx = 26; bx <= 40; bx++) placeBlock(BP_SCREW, 1, bx, 19, true);');
res.lift = rate(164, 319, 80, 119);
res.liftLanes = run('(() => { const s = new Set(); for (let y = 76; y < 80; y++) for (let x = 120; x < 160; x++) if (mat[y*W+x] === SAND) s.add(y); return s.size; })()');
// belt: 12 blocks, a pile dropped on its back end
+2 -2
View File
@@ -8,8 +8,8 @@ for (let x = (bx - 3) * BS; x < (bx + 27) * BS; x++) surfY[x] = (by + 4) * BS;
const mo = addMold('ingot', bx, by - 4, RSTONE, true);
const beltY = Math.ceil((mo.y + mo.h) / BS) + 1;
for (let x = bx; x < bx + 9; x++) placeBlock(BP_BELT, 1, x, beltY, true);
for (let y = by - 11; y < beltY; y++) placeBlock(BP_TUBE, 0, bx + 9, y, true);
for (let x = bx + 9; x < bx + 16; x++) placeBlock(BP_TUBE, 1, x, by - 12, true);
for (let y = by - 11; y < beltY; y++) placeBlock(BP_SCREW, 0, bx + 9, y, true);
for (let x = bx + 9; x < bx + 16; x++) placeBlock(BP_SCREW, 1, x, by - 12, true);
for (let x = bx + 16; x < bx + 25; x++) placeBlock(BP_BELT, 1, x, by - 11, true);
placeBlock(BP_WALL, RSTONE, bx + 25, by - 12, true);
mo.cavs[0].forEach(i => setCell(i, MCU, 1090, 0));
+1 -1
View File
@@ -3,7 +3,7 @@
// python3 tools/shot.py /tmp/belt-heap.png --setup tools/scenes/clear-sky.js --js "$(cat tools/scenes/belt-heap.js)" --ticks 240 --zoom 7
const bx = BX + 6, by = BY;
for (let x = bx; x < bx + 12; x++) placeBlock(BP_BELT, 1, x, by, true);
for (let y = by - 10; y <= by; y++) placeBlock(BP_TUBE, 0, bx + 12, y, true);
for (let y = by - 10; y <= by; y++) placeBlock(BP_SCREW, 0, bx + 12, y, true);
for (let y = by * 4 - 30; y < by * 4; y++) for (let x = (bx + 2) * 4; x < (bx + 10) * 4; x++)
setCell(y * W + x, y >= by * 4 - 6 ? SAND : CUORE, AMB[y], 0);
window.CAM = [(bx + 7) * 4, (by - 5) * 4];
+1 -1
View File
@@ -1,7 +1,7 @@
// Run after clear-sky.js: a belt takes sand from a pile, up a diagonal screw to an upper belt.
const tx = BX + 12, ty = BY - 1;
for (let x = BX + 3; x < tx; x++) placeBlock(BP_BELT, 1, x, BY, true);
for (let k = 0; k < 10; k++) placeBlock(BP_TUBE, 4, tx + k, ty - k, true);
for (let k = 0; k < 10; k++) placeBlock(BP_SCREW, 4, tx + k, ty - k, true);
for (let x = tx + 10; x < tx + 18; x++) placeBlock(BP_BELT, 1, x, ty - 9, true);
for (let y = BY * 4 - 22; y < BY * 4; y++) for (let x = (BX + 4) * 4; x < (BX + 11) * 4; x++) setCell(y * W + x, SAND, 20, 0);
window.CAM = [(tx + 4) * 4, (ty - 4) * 4];
+5 -5
View File
@@ -1,13 +1,13 @@
// Run after clear-sky.js. Paused, empty pipes make casing, flights and mouths easy to inspect.
const jx = BX + 5, jy = BY - 3;
for (let k = 1; k <= 4; k++) placeBlock(BP_TUBE, 0, jx, jy + k, true);
for (let k = 0; k < 6; k++) placeBlock(BP_TUBE, 4, jx + k, jy - k, true);
for (let k = 1; k <= 4; k++) placeBlock(BP_TUBE, 0, jx + 5, jy - 5 - k, true);
for (let k = 1; k <= 4; k++) placeBlock(BP_SCREW, 0, jx, jy + k, true);
for (let k = 0; k < 6; k++) placeBlock(BP_SCREW, 4, jx + k, jy - k, true);
for (let k = 1; k <= 4; k++) placeBlock(BP_SCREW, 0, jx + 5, jy - 5 - k, true);
const hx = BX + 21, hy = BY - 3;
for (let k = 1; k <= 4; k++) placeBlock(BP_BELT, 1, hx - k, hy, true);
for (let k = 0; k < 6; k++) placeBlock(BP_TUBE, 4, hx + k, hy - k, true);
for (let k = 0; k < 6; k++) placeBlock(BP_SCREW, 4, hx + k, hy - k, true);
for (let k = 1; k <= 4; k++) placeBlock(BP_BELT, 1, hx + 5 + k, hy - 5, true);
for (let k = 0; k < 4; k++) placeBlock(BP_TUBE, 5, BX + 32 + k, BY - 10 + k, true);
for (let k = 0; k < 4; k++) placeBlock(BP_SCREW, 5, BX + 32 + k, BY - 10 + k, true);
window.JOINTS = {
verticalIn: [jx * 4 + 2, jy * 4 + 4],
verticalOut: [(jx + 5) * 4 + 2, (jy - 5) * 4],