Setting to stop the camera drifting toward the pointer (t7)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -121,6 +121,31 @@ with sync_playwright() as p:
|
||||
ev("SET.zoom = 4; resizeRender(); R.snapNext = true;") # the rest of this play-through was laid out at zoom 4
|
||||
ev(f"SET.look = '{look}'"); pg.wait_for_timeout(200)
|
||||
check(f'the {look} look is drawing', ev('R.smoothOn') == (look == 'smooth'), ev('[SET.look, R.smoothOn, SM.ok]'))
|
||||
# Camera lead changes the view, not the bot or its aim.
|
||||
mouse = ev('[GAME.mouse.x, GAME.mouse.y]')
|
||||
ev("openSettings('Display')")
|
||||
pg.screenshot(path=str(out / '00-camera-settings.png'))
|
||||
pg.click('#set-cameraLead')
|
||||
check('camera lead toggle saves its value', ev("!SET.cameraLead && JSON.parse(localStorage.getItem('deepgrain.settings')).cameraLead === false"))
|
||||
pg.keyboard.press('Escape')
|
||||
paused = ev('GAME.paused')
|
||||
ev("GAME.paused = true; SET.cameraLead = false; $('cards').replaceChildren()") # cards cover the corner
|
||||
pg.mouse.move(1240, 740); pg.wait_for_timeout(1000)
|
||||
check('camera test pointer reaches the world', ev('GAME.mouse.in && GAME.mouse.x === 1240 && GAME.mouse.y === 740'))
|
||||
camera_offset = """(() => {
|
||||
const v = viewCells(), x = bot.x + bot.w / 2 - v.w / 2, y = bot.y + bot.h / 2 - v.h / 2;
|
||||
const tx = v.w >= W ? (W - v.w) / 2 : Math.max(0, Math.min(W - v.w, x));
|
||||
const ty = v.h >= H ? (H - v.h) / 2 : Math.max(0, Math.min(H - v.h, y));
|
||||
return [R.camX - tx, R.camY - ty];
|
||||
})()"""
|
||||
centred = ev(camera_offset)
|
||||
check('camera stays centred with pointer lead off', all(abs(d) < 2 for d in centred), centred)
|
||||
ev('SET.cameraLead = true')
|
||||
pg.wait_for_timeout(1000)
|
||||
led = ev(camera_offset)
|
||||
check('camera leads toward the pointer when enabled', all(b - a > 2 for a, b in zip(centred, led)), led)
|
||||
pg.mouse.move(*mouse)
|
||||
ev(f'GAME.paused = {json.dumps(paused)}; saveSettings()')
|
||||
def cell_to_screen(x, y):
|
||||
return ev(f'(() => {{ const dpr = R.canvas.width / innerWidth; const s = worldToScreenPx({x}+0.5, {y}+0.5); return [s.x/dpr, s.y/dpr]; }})()')
|
||||
def blk(bx, by): return cell_to_screen(bx * 4 + 2, by * 4 + 2)
|
||||
|
||||
Reference in New Issue
Block a user