Files
kidgo/.workbuddy/memory/2026-10-23.md
T
2026-10-23 17:49:29 +08:00

3.7 KiB
Raw Blame History

2026-10-23 工作日志

首页移除「清除存档」按钮(用户要求)

  • 需求:把首页(scr-title)的「清除存档」按钮删掉。
  • 改动:仅删 index.html:41 的 <button class="btn small" data-act="wipe">清除存档</button> 一行。js/main.js 里的 wipe handler(确认后 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()(localStorage iwbtc_fan_v1)。
  • 接线:index.html 标题菜单加「设置」按钮 + #title-user + scr-settings 屏(用户名 input + #touch-preview 拖拽预览 + 确定/恢复默认);js/main.js 加 settings/set-ok/set-reset action 并 Settings.init();js/touch.js show() 里 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%),缩放则按「当前指针到中心距离 ÷ 按下时距离」缩放 size(24160px)。第一帧必然停在正确位置,不再跳角。还顺手加了 e.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 全绿。