40250 classic: G1 integrate W3 (§8.3 in-game help window)

Doc conflicts resolved by W0: kept all four 增量 50 change-log bullets and
appended the W3 C.5 batch record.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014yvAPqPivoY7vmBbzgqK4W
This commit is contained in:
shenlei
2026-09-02 16:10:48 +09:00
co-authored by Claude Sonnet 5
8 changed files with 431 additions and 15 deletions
+17 -1
View File
@@ -58,7 +58,7 @@
| W0 公共基础 / 集成 | 🟡 | DirectEnter、Classic Warp endpoint、`world_reset`、场景重建首版已落地;增量 49 接口冻结批次(`Entity` 补字段 + `mut_spawn_full/mut_ownership/mut_map_bgm/drain_dirty``bgm_changed` 信号、`bgm_director.gd`、§8.6 键位收敛)已提交 | Phase 1 4 工作流并行完成后执行 G1 集成 |
| W1 协议 / 账号会话 | 🟡 | 增量 50:§1.5 版本包按 locale 分支(EUROPE 发 `CG_CLIENT_VERSION2` 0xf1 + `"1215955205"`,其余发 0xfd + `MT_BUILD_TIMESTAMP`)、可执行名 setter;§1.10 `text_codec.h` UTF-8 安全定长文本裁剪 + `net_text_codec_test`,会话侧所有定长 name/sign/comment 填充改走 `to_wire()`;§2.2 `GC_CHARACTER_ADD` 按 invisible-race 丢弃 / PC·NPC 暂存 `m_pending_actor` / 其余即时 `mut_spawn`(名字取自 npclist.txt),`GC_CHAR_ADDITIONAL_INFO` 无暂存则记录并丢弃、命中则合并 9 字段 `mut_spawn_full` 后清表 | 真实 locale codepage 转码、真实双连接、enter delay;GDScript 名称长度校验统一(G1 已收) |
| W2 实体 / 世界 / 战斗 | 🟡 | §2.1 两层模型(`EntityStore` 纯数据层 + `net_world.gd` 每帧 `_update_visibility()``CHAR_STAGE_VIEW_BOUND` / `AFFECT_SHOW_ALWAYS` / `IsWall` 建 / 淡出节点)、§2.3`mut_spawn``mut_spawn_full` 整行替换 + 节点销毁重建 + 上下坐骑保坐标)、§2.4(点数快照截断 / 尾部清零 + 单索引边界)、§2.5(`mut_affect_flags` 两段拼装 + 参考调用序节点刷新)已落地并回归(增量 50) | 远服 40250 端到端可见性 / VID 复用 / affect 表现验收;`state_flags` 表现层枚举与眩晕 / 隐身等表现 |
| W3 玩法 UI / 输入 | 🟡 | 多数窗口、背包 / 任务 / 社交、键位和输入已有首版;§8.6 数字键 / F1–F4 / Ctrl+数字入口已收敛 | §8.3 帮助窗;§8.6 剩余逐行键位与表情包 |
| W3 玩法 UI / 输入 | 🟡 | 多数窗口、背包 / 任务 / 社交、键位和输入已有首版;§8.6 数字键 / F1–F4 / Ctrl+数字入口已收敛**§8.3 帮助窗`help_ui.gd` = `helpwindow.py` uiscript + `uiScriptLocale.HELP_*` 逐字,`H` 键 / ESC 菜单 `help_button` 入口,`help_ui_test` 绿)已落地** | §8.6 剩余逐行键位与表情包;帮助窗视觉 / `.sub` 贴图与真服未验证 |
| W4 渲染 / 资产 / 音频 | 🟡 | GR2 / `.msa` / `.mse`、地图 / 水体 / 天气 / BGM 部分链路已有;`bgm_director.gd` 消费点已就位 | §9.1 地图 BGM 曲目解析 + 音量、§9.2 后台恢复曲目、§9.3 生命周期单一属主 |
| W5 打包 / 发布 / 验收 | ⬜ | 已有 Godot 导出配置和构建入口 | 自包含资源包、Intel / Apple Silicon、签名和 Mac App 验收 |
@@ -162,6 +162,22 @@
> `wire_classic.h` 的 `GCPoints` 已有 `static_assert(sizeof == 1 + 255*4)``ClassicParser`
> 需在 `GC_CHARACTER_ADD[2]` / `GC_CHARACTER_UPDATE` 后调用 `mut_affect_flags()` 把
> `affect_flag[2]` 送进实体(`mut_char_update` 无 affect 形参,未接线)。G1 集成已接线(见下)。
> - **2026-09-02 增量 50Phase 1 W3 / §8.3 帮助窗)**:新增 `project/ui/help_ui.gd` —— 1:1
> 迁移 `assets/root/uihelp.py` 的 `HelpWindow`(单页版 `ENABLE_HELP_MULTIPAGE = 0` →
> `LoadDialogSinglePage`),布局走真 `assets/uiscript/uiscript/helpwindow.py`UiScript →
> UiBuild),19 条浮动帮助行 + 10 个任务栏贴纸标签 + `close_button` 的文本逐字对齐
> `uiScriptLocale.HELP_*``locale/locale/en/locale_interface.txt`);`UiManager` 未接 locale
> 回调时 `helpwindow.py` 里的 `uiScriptLocale.X` 被解析成 `<X>` 占位,`_relabel()` 用本工程
> `Locale` 表 + 英文兜底补回(含原脚本重名的两个 `help_02`)。入口:`game_scene.gd`
> `_unhandled_input` 加单条 `elif``H` 且非 Ctrl / 非 Meta → `system_menu_ui.toggle_help()`
> `Ctrl+H` 仍留给 `/user_horse_ride`);`system_menu_ui.gd` 的 `help_button` 由占位提示改为
> `close()` + `open_help()`,新增 `_ensure_help()` 懒建 / `open_help()` / `toggle_help()` 与
> 可注入的 `help_ui` 成员(`setup()` 追加可选第 6 参,旧 5 参调用不受影响)。新增
> `project/help_ui_test.gd`helpwindow.py 装载 + 19 行逐字绑定 + 任务栏标签 + close_button +
> open/close/toggle + ESC 栈顶 + `SystemMenuUI.open_help()` 懒建)。`help_ui_test` /
> `system_menu_ui_test` / `gamescene_test` / `ui_test`(附加 `system_option_ui_test` /
> `char_status_ui_test`)全绿;本 worktree 无 `build/`,未跑 C++ `ctest`。视觉 / `.sub` 贴图
> 与真服未验证。
> - **2026-09-02 增量 49W0 接口冻结批次)**:为 Phase 1 的 4 个并行工作流一次性落地跨工作流
> 共享文件的骨架,冻结接口后再拆分。`EntityStore``Entity` 补 `empire / affect_flags /
> owner_vid / state_flags` 字段;新增 `mut_spawn_full()`(§2.3 两包合并的单次落地入口)、