交互 UI 设置
每个交互模块都按同一套原子合同描述:
- 触发源:哪个物理输入或游戏事件开始它。
- 事务所有者:从按下到抬手,谁独占这次输入。
- 逻辑提交点:何时真正改变经济或存档。
- 视觉资产:PNG、sheet、bitmap 字体或代码绘制。
- 时序: authored FPS、生命周期与调度频率。
- 取消路径:移动阈值、离环、切页、息屏、lost capture。
- 降级策略:reduced motion 和 ambient 如何处理。
- 固件映射:C++、渲染脏区与硬件服务对应位置。
模块矩阵
| 模块 | 主要资产 | 逻辑提交 | Full | Reduced / Ambient |
|---|---|---|---|---|
| 点按 | fx_tap 8 帧 | pointer up | 24 FPS + 粒子 | 首帧 / 静默 |
| 长按 | 核心 charge/press + 代码环 | release | 三段 + burst | 缩短 / 取消 |
| 粒子浮字 | bitmap ASCII + 代码粒子 | 事件后 | 8–48 粒子 | 3–8 / 静默 |
| 外缘切页 | 代码弧、detent tick | 每累计 45° | 连续预览 | 静态跳转 |
| SHOP 内环 | helper 帧 + TEAM 线 | 稳定 release | preview + fx_grow | 首帧 FX |
| 卡片横滑 | 双态图标、代码 clip | release | 连续 offset | 结果跳转 |
| STAR 发射 | fx_loop 10 帧 | 二次确认 | 18 FPS + 粒子 | 首帧 / 不允许 ambient |
| 倾斜 | 160×160 像素带 | 每个 IMU sample | 30 Hz 视觉 | 15 Hz / 不唤醒 |
| 息屏 | core_sleep_loop 6 帧 | timeout | 2 FPS | 纯黑可选 |
所有 GIF 都从仓库中的冻结帧或历史截图生成,生成脚本位于 website/scripts/generate_media.py;它们是说明媒介,不是另做一套与游戏无关的视觉模拟。
