Every transport piece moves material at belt speed and capacity (t105)
This commit is contained in:
@@ -67,7 +67,7 @@ for(const grade of [-1,1]) {
|
||||
const released=collect(s,800);
|
||||
check(`grade ${grade} resumes after the head clears`,released.out===160 && released.left===0,JSON.stringify(released));
|
||||
line(grade);
|
||||
run(`for(let bx=26;bx<32;bx++)removeBlock(bx,${s.outlet});setCell((${s.by+9*grade}*4+${grade<0?0:3}-1)*W+103,SAND,20,0);tick=2;tickStamp++;machinesTick();`);
|
||||
run(`for(let bx=26;bx<32;bx++)removeBlock(bx,${s.outlet});setCell((${s.by+9*grade}*4+${grade<0?0:3}-1)*W+103,SAND,20,0);tick=4;tickStamp++;machinesTick();`);
|
||||
check(`grade ${grade} launches off an open end along its face`,run(`flyers.length===1 && flyers[0].vx>0 && Math.sign(flyers[0].vy)===${grade}`));
|
||||
run(`spawnBar(BARCU,${s.feedX || 44},${s.inlet*4-2},0,0);`);
|
||||
const barLaunch=run('(()=>{for(let k=0;k<400;k++){simTick();if(ents[0].ix>=104)return ents[0].vx>0;}return false;})()');
|
||||
@@ -179,22 +179,22 @@ for (const grade of [-1,1]) {
|
||||
run('rebuildPower();slopeCleatsTick(false);');
|
||||
if(grade>0) check('a downhill run has no cleats',run('cleatCells.length===0'));
|
||||
else check(`grade ${grade} cleats block every downhill crossing`,run(`cleatCells.length>0 && cleatCells.every(i=>!enter(SAND,PH_POWDER,i,${grade},1) && !enter(SAND,PH_POWDER,i+W+${grade},${grade},1))`));
|
||||
check(`grade ${grade} bare face slides between steps without stamping the load`,run(`(()=>{
|
||||
check(`grade ${grade} ${grade<0?'bare face slides':'carrying bed waits'} between steps without stamping the load`,run(`(()=>{
|
||||
for(let x=72;x<96;x++){
|
||||
const by=${s.by}+((x>>2)-16)*${grade}, y=beltFaceY(blockP[by*BW+(x>>2)],x>>2,by,x)-1,i=y*W+x;
|
||||
if(cleatMask[i] || cleatMask[i+W+${grade}])continue;
|
||||
setCell(i,SAND,20,0);tick=3;tickStamp++;machinesTick();
|
||||
const unstamped=stamp[i]!==tickStamp;
|
||||
for(let k=0;k<200 && mat[i]===SAND;k++)powder(i,x,y,SAND);
|
||||
return unstamped && mat[i]===EMPTY;
|
||||
return unstamped && ${grade<0?"mat[i]===EMPTY":"mat[i]===SAND"};
|
||||
} return false;
|
||||
})()`));
|
||||
}
|
||||
fresh();
|
||||
run('placeBlock(BP_FILTER_DOWN,128,20,20,true,{m:[],inv:0});setCell(79*W+80,GRAVEL,20,0);tickStamp++;tick=SCREEN_NUDGE_TICKS-1;screenNudge(80*W+80,1,null);');
|
||||
run('placeBlock(BP_FILTER_DOWN,128,20,20,true,{m:[],inv:0});setCell(79*W+80,GRAVEL,20,0);tickStamp++;tick=2;screenNudge(80*W+80,1,null);');
|
||||
check('screen waits between its configured nudges',run('mat[79*W+80]===GRAVEL && stamp[79*W+80]!==tickStamp'));
|
||||
run('tick++;screenNudge(80*W+80,1,null);');
|
||||
check('screen nudges just its mesh contact downhill at the configured rate',run('mat[80*W+81]===GRAVEL && mat[79*W+80]===EMPTY'));
|
||||
run('tick+=2;screenNudge(80*W+80,1,null);');
|
||||
check('screen carries its mesh contact downhill at the shared diagonal rate',run('mat[80*W+81]===GRAVEL && mat[79*W+80]===EMPTY'));
|
||||
fresh();run('placeBlock(BP_BELT_UP,1,20,32,true);');
|
||||
run(fs.readFileSync('src/render/slope-belts.js','utf8'));
|
||||
// The renderer prepares joins and power first; stripe pitch is measured along the rotated band.
|
||||
|
||||
Reference in New Issue
Block a user