三层职责
游戏世界仍按原分辨率绘制,碰撞、移动、掉落和音频规则不归 UI 管理。桌面 HUD 使用独立 Canvas,按显示尺寸及设备像素比绘制文字;原世界 Canvas 的尺寸、镜头、像素图像和交互坐标不变。尺寸较小的画面使用 HTML 快捷栏和生命/魔力行,点击调用原工具槽或治疗按钮,而不是复制一套库存规则。
HTML 负责开始、暂停、失败、设置、帮助、确认与拾取提示。正文按正常字形换行,不用 fillText 的 maxWidth 把长中文压扁。地图内的实体与部分历史标签仍属于兼容区;未宣称所有游戏文字已迁出。
数据与文件
player-copy.mjs 根据角色、关卡与模式返回展示文案;player-interface.mjs 只读取快照并调用明确动作;hud-surface.mjs 管理独立的显示表面与窄屏控件。adventure-render.mjs 绘制 HUD 模型,缺少拾取纹理时使用中性图形,完整名称与效果由 HTML 提示呈现。
src/app/player.template.html 是当前候选入口。src/app/index.template.html、console.css 和 golden 片段用于底稿校验,不能当成当前 UI 编辑。迁移区仍有33个片段,不能仅因32个模块登记就认为全部解耦。
输入和暂停
界面使用原输入入口分流,不再加第二个游戏循环。显示控件获得焦点时清除保持中的输入。设置/帮助只恢复自己触发的暂停。重新开始、切换角色和恢复默认键位有原生确认对话框,默认焦点在取消。自定义 R/C 为游戏动作时不抢占。按键捕获期间不接受另一层确认输入。
原设置会话仍负责绑定与保存;完整表格包含交互动作。提示根据当前绑定生成。角色不同,帮助也不同;坦克不显示跳跃教程,洛克人提示按住蓄力、松开发射。菜单方向键依据实际列数移动,Enter开始所选角色,Space仅选择。手柄菜单使用边沿触发与释放后再确认,实体设备仍需验收。
字号与布局
正文16px,紧凑说明14px;角色角标与数量等辅助信息12px。大号模式主要放大HTML正文,不宣称所有像素内容已等比放大。窄屏HUD生命/魔力14px,快捷槽数字12px,改为独立区域而非压缩进小画面。全屏保持原画布区域,HUD走覆盖层;手机全屏仍需实机检查。
高对比、系统减少动态效果与现有显示偏好保留。页面菜单可以单轴滚动,键盘焦点可见。不以自动检查作为可达性认证。
生命周期与资源
界面依附现有更新时机,无额外requestAnimationFrame或MutationObserver。退出时先把仍被兼容音频回调引用的节点放回存活宿主,再释放UI,避免迟到的blur/audio事件引用空节点。前进后退缓存只挂起,不当作永久销毁。提示历史最多8条,不写入存档、不上传。存储键与现有改键/存档分离,无新增字体、外部脚本、追踪或音频。