3.7 KiB
3.7 KiB
2026-10-23 工作日志
首页移除「清除存档」按钮(用户要求)
- 需求:把首页(scr-title)的「清除存档」按钮删掉。
- 改动:仅删
index.html:41的<button class="btn small" data-act="wipe">清除存档</button>一行。js/main.js里的wipehandler(确认后Save.wipe())已无按钮触发,成为未接线死代码,保留无害(用户只要求删按钮,未要求删逻辑)。 - 验证:
grep 清除存档/data-act="wipe"零残留;tools/无引用;death/map/check/solve/smoke/save/key/dom-smoke/ice九套回归全绿;预览 8123 返回 200。
主界面新增「设置」功能(用户要求)
- 需求:主界面加「设置」入口;可自定义用户名;可拖动调整手机操作按钮的位置与大小;点「确定」保存、有「恢复默认」按钮。
- 新增
js/settings.js:BUTTONS(7 个手柄键 left/right/jump/shoot/down/pause/suicide,各带默认cx,cy,size百分比+像素),meta()/place()/apply()/showUsername(),Settings.init/enter/confirm/reset,wire()给预览按钮绑「拖动移动 + 右下角圆点缩放」。工作副本work未点确定不落盘,点「返回」即丢弃。 - 存档:
js/save.js的settings:{username,touch}走Save.flush()(localStorageiwbtc_fan_v1)。 - 接线:
index.html标题菜单加「设置」按钮 +#title-user+scr-settings屏(用户名 input +#touch-preview拖拽预览 + 确定/恢复默认);js/main.js加settings/set-ok/set-resetaction 并Settings.init();js/touch.jsshow()里Settings.apply()让自定义布局在游戏内生效。 - CSS:
.tc-btn改为position:absolute;transform:translate(-50%,-50%)(active 变形同步保留 translate);新增.tc-rsz缩放手柄、.touch-preview、.set-*、#title-user样式。 - 验证:新增
tools/settings-test.mjs(默认布局/apply 定位/enter+confirm 保存用户名并写 localStorage/reset 回出厂且不自动落盘,15 断言全过);dom-smoke(main 初始化成功)、check/smoke/map/save/key/solve/ice 全绿;预览服务返回 200 且含scr-settings。
修复:拖动设置里的手柄按钮时直接跳到右下角
- 根因:
js/settings.js原wire()用「指针(clientX) − 基准偏移(off/cx0)」做绝对坐标映射定位;一旦wrap.getBoundingClientRect()取值与渲染偏差(预览百分比定位 + translate(-50%,-50%) 场景下易偏),按下首帧就把 cx/cy 算到极值 → 弹到右下角。 - 修复:改为相对位移累加——按下只记录
lastX/lastY与预览rect;pointermove把「相对上一帧的像素位移 ÷ rect 宽高 ×100」累加到当前 cx/cy(clamp 397%),缩放则按「当前指针到中心距离 ÷ 按下时距离」缩放160px)。第一帧必然停在正确位置,不再跳角。还顺手加了size(24e.stopPropagation+ try/catch 包裹setPointerCapture。 - 回归:
tools/settings-test.mjs新增「模拟拖动/缩放」4 条——派发真实 pointerdown/move/up 事件断言:cx 按位移增量变化、逆向可精确归位、缩放放大尺寸且不改位置。settings-test 共 21 断言全过,dom-smoke 初始化正常。
修复:设置界面打开后一片空白
- 根因:
js/ui.js的SCREENS数组没加'scr-settings',UI.show('scr-settings')会把所有已知屏 hidden、却从不取消设置屏的 hidden——只剩画布标题背景(用户截图即此症状)。 - 修复:SCREENS 加入
scr-settings(一行)。教训:新增 screen 必须同步 SCREENS 数组。 - 回归:
tools/settings-test.mjs增加「SCREENS 含 scr-settings / 标题有设置入口」两条源码断言,防复发;settings-test 与 dom-smoke 全绿。