来源:
src/ui_manager.h
src/input_context.cpp
src/sdltiles.h
android/app/src/main/java/com/crimsoncrossbunker/cataclysmcb/AndroidUiMode.java
commit d32b9cc880a8
source-and-tests
UI 平台矩阵¶
CCB 的 UI 由同一语义 action/view-model 层通过多条 renderer/input 路径呈现。每个 UI 修改 都必须说明实际覆盖了哪些路径。
路径¶
| 路径 | 构建/运行边界 | 应收集证据 |
|---|---|---|
| Curses | terminal cell、颜色与 keyboard | terminal 类型/尺寸、locale、key path |
| SDL2 tiles | fallback desktop renderer 与 SDL2 input/audio | OS、renderer、scale、font、device |
| SDL3 tiles | SDL3 renderer/GPU shader 与 recovery | GPU/backend、artifact format、recovery |
| Native UI | ui_adaptor、input_context、curses-compatible window |
resize/redraw 与 input action |
| Lua UI/ImGui | capability-gated Lua page 与 native ImGui 集成 | manifest、API v5、native fallback |
| Android | Java HUD/touch/text input 与 SDL3 native runtime | device/API、UI mode、orientation、touch |
共同不变量¶
语义 action ID 稳定;cell/pixel coordinate 只在显式边界转换;resize 先建立 layout 再 redraw;renderer recreation 失效 GPU resource;翻译文本/font fallback 不能假设固定 byte/glyph width;新 UI 在窄尺寸仍可操作。
验证矩阵¶
至少覆盖 keyboard navigation、cancel/confirm、resize、窄 viewport、translation 与直接 修改路径。renderer/coordinate 修改在分支不同处需要 SDL2/SDL3 与 Android;Lua UI 还要 验证 disabled/native fallback build。
可访问性与失败证据¶
保持可见 focus、可理解 action name、非纯颜色状态、可读 contrast 和 keyboard 操作。 收集 route、mode、resolution/scale、locale、input device、截图/录屏,以及 stale frame、 错误坐标或 input 丢失附近首段 debug log。
生成与本地数据¶
screenshot、recording、renderer capture 与 local UI profile 默认是证据 artifact,除非任务 明确新增 checked fixture。没有政策审查,不要把用户 keybinding 或设备布局作为项目默认。