docs(ux): 关卡画面 UX spec 建档——ux/level-map.md 占位升格版(信息层级五层/三停点布局/组件清单/GP 常驻徽章/交互映射/AC)+三项设计提案挂 06 待拍板(HP 常驻读数/图上点击选路/放弃二次确认);停点标题措辞修正清偿台账 143 遗留;HUD框架 屏级权威按屏分治+义务清单挂指针;02 入册 v1.1;battle/level-clear 导航行互链(doc_link 死链 0/已知 0;gdd_lint 失败集=基线 8 文件零新增;term 疑似 1 既有)

This commit is contained in:
DKChan committed 2026-09-27 15:36:21 +08:00
1 parent 98a2e78752
commit 5c8c3f5d98
6 files changed
+267 -7

No files matched your search

+2
View File
@@ -65,6 +65,7 @@
| `battle.md` | 战斗屏 UX spec:三区布局、信息归属、交互映射、动效、上游义务对照 | Complete·随批修订 |
| `interaction-patterns.md` | 交互 pattern 库:核心 8 成文 + 目录 20 条 | Complete |
| `level-clear.md` | 关卡结算屏 UX spec:大奖励三件套兑付与钥石/GP 结算呈现 | 义务锁定版·视觉终稿后置 |
| `level-map.md` | 关卡画面 UX spec:选路枢纽三停点布局、GP 常驻徽章、交互映射与拍板点 | 占位升格版·视觉终稿后置 |
## 子系统命名对照表(中文规范名 ↔ 英文代号)
@@ -114,3 +115,4 @@
| v0.8 | 2026-09-21 | 元进度实现批:`元进度.md` 状态列「范围草案·待设计」→「已定稿·已实现」(2026-09-21 实现批落地,数值 provisional 归设计批标定) |
| v0.9 | 2026-09-27 | UX 文档欠账处置批:`ux/` 目录入索引(battle.md / interaction-patterns.md / 新建 level-clear.md);四项欠账处置——player-journey 不建、accessibility-requirements 不另立(改指 HUD框架 基线 + 设置与本地化)、node-reward 挂魔法道具内容重定批(06 登记)、level-clear 建档 |
| v1.0 | 2026-09-27 | 节点图生成立项批(用户拍板立项——06 条目「关卡内结构随机生成」随批改状态):`systems/冒险循环/` 新建 `关卡节点图生成.md` 设计草案 v0.1(图模板/模板池/抽签三概念、三级台阶路线、MC 测量对账条款、五拍板点);文档树补行 + 命名对照表补 `NODE_MAP_GENERATION` 行 |
| v1.1 | 2026-09-27 | 关卡画面 UX spec 建档(关卡画面 UX 批):`ux/` 表补 `level-map.md` 行——选路枢纽三停点布局、GP 常驻徽章、交互映射与 AC 成文,三项设计提案挂 06 待拍板 |
+15 -1
View File
@@ -359,7 +359,7 @@
**归属冲突已收口——2026-09-27 用户拍板**:战斗胜利出现战斗总结结算、展示获得的资源(目前 = GP);战斗失败出现冒险总结结算、确认后回存档首页。battle.md OQ14「战斗结算画面」口径为准,GP 总量+增量归**战斗胜利总结结算**;本条原归属行「结算画面批 GP 增量」系登记偏差已修正。
**接线缺口**:战斗胜利结算现行文案(battle_end_text「战斗胜利!敌人全灭。」)无 GP 呈现——增量+总量上胜利结算为本条剩余实装面;关卡画面常驻总量归关卡画面批。
**接线缺口**:战斗胜利结算现行文案(battle_end_text「战斗胜利!敌人全灭。」)无 GP 呈现——增量+总量上胜利结算为本条剩余实装面;关卡画面常驻总量的呈现规格已建 [level-map](ux/level-map.md)(2026-09-27,顶栏 GP 常驻徽章 = 图标+数字直角数据框),实装归关卡画面批。
钥石呈现现行承载即拍板口径——大奖励屏(big_reward_text 钥石增量+累计 = Boss 层进账)、冒险总结结算(keystone_settle_text 入账明细 = 「结算画面」指认)、营地(存量);三处并存系「进账时刻 / 收束明细 / 存量可用」不同义,不构成重复展示(level-clear.md OQ3 已收口维持)。
@@ -377,6 +377,20 @@ NodeOverlay 现行实态为模态覆盖层:恢复点全量服务(回复读
**状态**:待办——2026-09-27 欠账处置拍板:不立独立档、债挂内容批;tools/doc_link_known.txt 对应欠账行随之清空
#### 关卡画面 UX spec 三项设计提案(HP 常驻读数/图上点击选路/放弃二次确认)(2026-09-27 登记)
**现状**:关卡画面 UX spec 已建 [level-map](ux/level-map.md)(占位升格版——信息层级/三分区布局/组件清单/三停点状态/交互映射/AC 成文;停点标题措辞修正清偿台账 143 遗留;GP 常驻徽章落地面)。三项设计提案待拍板:
①**跨战斗生命(HP)常驻读数上顶栏**——推荐上:选路风险评估需要(低血择疗),数据源 runner.hero_hp 现成,两铁律过闸(选路停点战斗屏被遮蔽,不构成同屏重复展示面)。
②**图上直接点击候选节点选路**——推荐做:候选亮金描边已是视觉焦点,悬停预承诺(pattern 4)后点击即提交,候选按钮保留为等价冗余通道(press_candidate 探针面不动),未拍板前按钮为唯一提交通道。
③**放弃冒险二次确认**——推荐做:现行单击即发,与不可逆终结整局的分量不匹配(pattern 7 破坏性确认合规),确认态 = 文案转确认语 + 危险红脉冲约 3 秒回落。
**归属**:关卡画面实装批(随表现层升级批排期;视觉终稿前置 = 表现层样张)
**状态**:待拍板(2026-09-27 登记;荐值 = 三项均做,分析见 spec Open Questions)
### 数据配置
@@ -12,7 +12,7 @@ HUD框架把各玩法系统产生的事实变成玩家看得见、点得动、
## 系统范围
边界这样划:本系统管"怎么呈现、怎么翻译输入、弹层怎么排队"。一个动作合不合法、结果算什么意思,归排雷玩法、行动经济、战斗结算等上游裁定;画面具体长什么样、组件落在哪一像素,屏级权威是 [battle.md](../../ux/battle.md)——本文只锁系统级契约。
边界这样划:本系统管"怎么呈现、怎么翻译输入、弹层怎么排队"。一个动作合不合法、结果算什么意思,归排雷玩法、行动经济、战斗结算等上游裁定;画面具体长什么样、组件落在哪一像素,屏级权威按屏分治——战斗屏是 [battle.md](../../ux/battle.md)、关卡画面是 [level-map.md](../../ux/level-map.md)——本文只锁系统级契约。
负责:
@@ -33,7 +33,7 @@ HUD框架把各玩法系统产生的事实变成玩家看得见、点得动、
|---|---|
| 任何玩法状态与玩法数值 | 各玩法系统;数值表本体归[数据配置](数据配置.md) |
| 合法性判定与机制语义裁定 | [排雷玩法](../排雷循环/排雷玩法.md)、[行动经济](../排雷循环/行动经济.md)、[战斗结算](../战斗循环/战斗结算.md) |
| 屏级布局与动画时长的像素级裁决 | [battle.md](../../ux/battle.md) |
| 屏级布局与动画时长的像素级裁决 | [battle.md](../../ux/battle.md)(战斗屏)与 [level-map.md](../../ux/level-map.md)(关卡画面) |
| 美术终稿与动画密度 | [art-bible](../../../art/art-bible.md)与[战斗表现](../战斗循环/战斗表现.md) |
| 音频、教学内容、本地化文本生产 | [音频](音频.md)、[教学引导](教学引导.md)、[设置与本地化](设置与本地化.md) |
| 任何随机消费 | 无——呈现层零随机 |
@@ -169,7 +169,7 @@ HUD框架站在玩家与全部玩法系统之间:挖掘期它是输入的翻
| [排雷玩法](../排雷循环/排雷玩法.md) | 已开 / 未开格态一眼可辨;悬停预承诺与可挖域常驻指示;移动路径预览即合法性指示;每次拒绝可感知且棋盘面细因可区分;停手被改判可感知 |
| [行动经济](../排雷循环/行动经济.md) | 行动点与储备常显;储备清零反馈;棋盘面与资源面拒绝可区分;刷新入口与代价可读 |
| [战斗结算](../战斗循环/战斗结算.md) | 未生效类明细行(奖励未生效)的呈现;高光行强调 |
| [关卡节点地图](../冒险循环/关卡节点地图.md) | 节点链进度呈现(关卡画面选路覆盖层节点态承载:暗金已过、金当前、候选下一跳通道亮金、Boss 紫赤描边(旗朱→紫赤 2026-09-26 封印紫批));选路覆盖层只读呈现(零自动推进停点语义) |
| [关卡节点地图](../冒险循环/关卡节点地图.md) | 节点链进度呈现(关卡画面选路覆盖层节点态承载:暗金已过、金当前、候选下一跳通道亮金、Boss 紫赤描边(旗朱→紫赤 2026-09-26 封印紫批));选路覆盖层只读呈现(零自动推进停点语义)——屏级 spec:[level-map](../../ux/level-map.md)(2026-09-27 建档) |
| [敌人系统](../战斗循环/敌人系统.md) | 意图线索映射成文且全局恒定;单位顺位与血条可读;敌方共享层数各卡同值 |
| [增益状态](../战斗循环/增益状态.md) | 状态栏常显;无状态时整排槽隐藏;有利 / 有害极性呈现不看数值符号 |
| [地图战斗资源](../战斗循环/地图战斗资源.md) | 已开格的奖励身份常读 |
@@ -253,3 +253,4 @@ HUD框架站在玩家与全部玩法系统之间:挖掘期它是输入的翻
| v0.8 | 2026-09-23 | **停点前移批(冒险入口流程倒置修复,用户 2026-09-23 拍板;上位裁决 `../../../dev/architecture/adr-0006-board-node2d-rendering.md` 与 `../../../dev/architecture/board-node2d-migration-plan.md` §1,代码实装另批并行)**:① 战斗屏布局四区 → 三区——删 A 区关卡进度条行(LevelStripView 退役删除,节点链进度呈现移出战斗屏、只留关卡画面);C/D 区纵向 520 → 548;装板校验变量与实算同步(棋盘区高 504、可用高度 488);② 呈现义务来源清单「关卡节点地图」行改承载口径——节点链进度由关卡画面选路覆盖层节点态承载(暗金已过 / 金当前 / 候选下一跳通道亮金 / Boss 旗朱描边),不另设进度条组件;③ 「四区」措辞全线改「三区」(负责表、节题、结构冻结、验收、下游战斗表现交付行),双舞台常驻语义不动。**批内代拍板三项已追认(2026-09-24 用户确认)**:① B/C/D 字母保持不重编(字母是跨文档/代码注释的承载标识);② A 区 28px 纵向空间划归 C/D 底行(520 → 548;1920 档换算仍归表现层升级批);③ 关卡画面进度呈现由选路覆盖层节点态直接承载、不另设进度条组件 |
| v0.9 | 2026-09-23 | 渲染技术注记(棋盘 Node2D 迁移批 Phase A,代码实装同批;上位裁决 ADR-0006):棋盘本体 Node2D 化——BoardView 内部由 GridContainer+逐格控件改为 Control 壳 + SubViewport + Node2D 世界,类名/信号/公共方法契约不变、探针零改造;三区布局与性能预算(同屏 draw calls < 200)不变;程序化占位视觉等价平移,素材终稿按 art-bible §8.2 格面 32×32 暂定档槽位 1:1 换入 |
| v0.10 | 2026-09-26 | 渲染技术注记(战斗舞台 Node2D 迁移批 Phase B,代码实装同批;上位裁决 ADR-0006):B 区战斗舞台 Node2D 化——BattleStageView 内部由 PanelContainer+Control 站桩改为 Control 壳 + SubViewportContainer + SubViewport + Node2D 世界(StageWorld/StandeeBody),类名/setter 面/公共方法契约不变、调用点零改造;状态图标行与悬停 tooltip 保留 Control 载体挂壳层(伴随件);C6 字体注入挂点复用(set_world_font);三区布局与性能预算(同屏 draw calls < 200)不变;占位表现等价平移(时序常量逐字对照——等价证明见 production/qa/battle-stage-node2d-等价证明-2026-09-26.md) |
| v0.11 | 2026-09-27 | 关卡画面 UX spec 建档([level-map](../../ux/level-map.md),关卡画面 UX 批——用户拍板立项):义务清单「关卡节点地图」行挂屏级 spec 指针;屏级权威行与不负责表改按屏分治口径(战斗屏 = battle.md / 关卡画面 = level-map.md)。文档面零机制改动 |
+3 -2
View File
@@ -47,8 +47,8 @@
战斗屏是**上下文相关屏**(仅由战斗节点进入),非顶层常驻。关卡内节点进度常驻关卡画面(选路覆盖层的常驻形态,节点态即进度呈现:已过暗金、当前金、候选通道亮金、Boss 紫赤描边),战斗屏零进度承载——战斗结束返回关卡画面,玩家始终知道自己身处图中第几环。
- 上游屏:关卡节点图(分支节点图形态,切片第一关为单链特例)
- 下游屏:关卡画面(选路枢纽)——战斗胜利后返回选路;落地奖励/恢复节点时由关卡画面域开节点覆盖层(NodeOverlay,恢复点全量服务、奖励点占位待内容定稿)确认兑付——节点奖励屏不立独立 spec,呈现义务随魔法道具内容重定批交付(2026-09-27 欠账处置拍板,06 待办挂该批名下)
- 上游屏:关卡画面(选路枢纽,屏级 spec:[level-map.md](level-map.md)——2026-09-27 建档;分支节点图形态,切片第一关为单链特例)
- 下游屏:关卡画面(选路枢纽,spec:[level-map.md](level-map.md))——战斗胜利后返回选路;落地奖励/恢复节点时由关卡画面域开节点覆盖层(NodeOverlay,恢复点全量服务、奖励点占位待内容定稿)确认兑付——节点奖励屏不立独立 spec,呈现义务随魔法道具内容重定批交付(2026-09-27 欠账处置拍板,06 待办挂该批名下)
- 下游屏:关卡结算([level-clear.md](level-clear.md),末节点 Boss 胜利——2026-09-27 建档)
- 平行屏:结算明细回看 overlay(本屏内域屏)、图例面板 overlay(本屏内域屏)
@@ -444,3 +444,4 @@
| 2026-09-26 | **信息归属二轮拍板(用户 2026-09-26,OQ13/14 收口)**:① 我方护甲 AC 补入 C 区攻击数据框(唯一展示面——布局表/组件清单/线框图同步);② GP/钥石去向定案:GP = 关卡画面常驻总量 + 战斗结算画面总量+增量,钥石 = 结算画面 + 营地(具体呈现归对应 UX spec 批次);③ 敌方 AC 展示面挂起——用户口径「敌方 AC 无任何展示」与现行代码冲突(standee_view.gd 底库名字行渲染「名字·护甲·AC%d」,系敌人技能池批克制对策可读性义务),证据链已呈报待终裁,本 spec 暂不改敌人站桩行 |
| 2026-09-26 | **敌方 AC 展示终裁收口(用户 2026-09-26 终裁)**:敌方 AC 数值全屏退役(任何区不直接展示)、护甲类型改图标方式展示(形状+色相双通道,终稿图标资产归美术批)、敌人站桩底座下名字行退回纯名字+护甲类型图标;旧「克制对策可读性义务」降级承载——类型保留、数值退役。终裁理由(用户口径):HP 信息已足够,攻防数值不直接写上;护甲类型图标保留克制对策可读性。同步改写:信息归属树敌人站桩行、Component Inventory 敌人站桩立绘行、OQ13。**代码实装说明**:`standee_view.gd` 改造(站桩名字行去 AC 数值 + 护甲类型图标化)由并行代码批执行,本批只做文档同步 |
| 2026-09-27 | **UX 文档欠账处置批(用户四项拍板:player-journey 不建 / accessibility 不另立改指 HUD框架 / node-reward 改挂魔法道具内容重定批 / level-clear 建档 design/gdd/ux/level-clear.md)**:① 删 §Player Context ⚠️ player-journey 未建注记,OQ1 改收口注记;② §Accessibility 头、§Transitions 减动效行、OQ2 改指 HUD框架「可访问性基线」节 + 设置与本地化待设计清单 #1(tools/doc_link_known.txt 欠账行随之清空);③ 导航残留修正——§Navigation Position 图胜利分支、§Entry/Exit 离开表、§Interaction Map 胜利 overlay 行改按现行代码实态(胜利后返回关卡画面选路;节点覆盖层 = 关卡画面域、落地奖励/恢复节点时开出;胜利/失败 overlay 组件锚 battle_end_overlay.gd)——原「胜利 → 节点奖励/恢复覆盖层」系停点前移批前残留;④ OQ3 过期陈述更正(interaction-patterns.md 2026-09-12 已建成)、OQ8 改收口注记。本批只动文档面,代码零改动 |
| 2026-09-27 | 关卡画面 UX spec 建档联动(关卡画面 UX 批):§Navigation Position 上游屏/下游屏行挂 [level-map.md](level-map.md) 屏级 spec 指针——关卡画面(选路覆盖层常驻形态)的布局/组件/交互/状态规格自此有独立权威文档。零机制改动 |
+2 -1
View File
@@ -39,7 +39,7 @@
```
- 上游屏:战斗屏(胜利终局 overlay「下一节点」确认——battle.md Exit 表)
- 下游屏:关卡画面(下一关开始,选路枢纽);末关时改接冒险结算(相邻域屏)
- 下游屏:关卡画面(下一关开始,选路枢纽——屏级 spec:[level-map.md](level-map.md),2026-09-27 建档);末关时改接冒险结算(相邻域屏)
## Entry & Exit Points
@@ -116,3 +116,4 @@
|---|---|
| 2026-09-27 | 初稿(UX 文档欠账处置批,用户拍板建档):义务锁定版——大奖励三件套/钥石入账/清库反馈预留成文;现行载体(_inter_overlay 与 BattleEndOverlay 复用)与代码锚如实登记;GP 归属两处登记不一致挂 OQ1,拍板前不新增 GP 呈现义务 |
| 2026-09-27 | GP 归属拍板对齐批(用户口径:战斗胜利→战斗总结结算展示获得资源〔目前 GP〕;战斗失败→冒险总结结算→确认回存档首页):OQ1 收口——GP 总量+增量归战斗胜利总结结算(battle.md OQ14 为准),本屏不承载 GP;OQ3 收口——「结算画面」指认 = 冒险总结结算,大奖励屏钥石进账 + 冒险总结结算明细两处并存维持;信息归属 GP 移入禁入清单;Data Requirements GP 行改零访问;06 归属行同步修正 |
| 2026-09-27 | 关卡画面 UX spec 建档联动:§Navigation Position 下游屏行挂 level-map.md 屏级 spec 指针。零机制改动 |
+241
View File
@@ -0,0 +1,241 @@
# UX Spec: 关卡画面(选路枢纽,Level Map)
> **Status**: 新立——占位升格版(结构、信息面、交互、状态与验收成文;视觉终稿以表现层样张为前置,见 OQ4)
> **Author**: user + ZCode(关卡画面 UX 批)
> **Last Updated**: 2026-09-27
> **Platform Target**: PC (Steam)——Keyboard/Mouse 主,全部操作纯鼠标可完成(同 [battle.md](battle.md))
> **Template**: UX Spec
> **覆盖范围**: 选路覆盖层常驻形态(关卡停点全景)· 入口停点 · 岔路停点 · 单链停点 · 放弃冒险入口
> **不覆盖**: 节点覆盖层(NodeOverlay——奖励/恢复兑付反馈,呈现义务随魔法道具内容重定批交付)、商店覆盖层、关卡结算屏([level-clear.md](level-clear.md))、战斗屏([battle.md](battle.md))
> **机制权威**: [关卡节点地图](../systems/冒险循环/关卡节点地图.md)(选路、兑付、停点语义;节点图逐局随机的来源另见[关卡节点图生成](../systems/冒险循环/关卡节点图生成.md)——只换图的来源,不换本屏的呈现语义);**系统契约**: [HUD框架](../systems/表现与支撑/HUD框架.md)(订阅纪律、模态层级、可访问性基线)
---
## Purpose & Player Need
关卡画面是中循环(关卡内)的枢纽屏。停点前移批(2026-09-23)之后,关卡开始即呈现这张图,此后每次兑付确认都回到它再选路——玩家在这里看图、选路、出发,直到关底 Boss 分出胜负。
一句话目的:**让「我在图上哪、下一步能去哪、去了会发生什么」一眼可读,选路即出发。**
- 节点图本体承载 P4(地牢下探隐喻):方块地牢观感的整层纵览,本层的形状与去路尽收眼底
- 候选选路口承载 P1(推理的掌控感):下一步的去向明示(节点类型字面),零自动推进——每一步都是玩家亲手走出来的
- 顶栏语境承载规划原料:当前所在关卡与常驻资源读数,支撑「要不要先进商店房」一类选路判断
若此屏缺失或难用:中循环失去锚点(玩家不知道自己走到第几环);零自动推进沦为「被迫逐步确认」的负担而非掌控感。
## Player Context on Arrival
- **到达时机**:关卡开始即出图(停点前移——入口不自动进入,第一次选路就是「出发」);或每次兑付确认后返回(战后回图、奖励/恢复反馈确认后回图、商店覆盖层离开后回图)
- **到达前刚在做**:上一场战斗的结算画面,或奖励/恢复/商店覆盖层的确认动作
- **情绪状态**:谋定后动——[art-bible](../../art/art-bible.md) §2.7 下探过渡的「纵深的期待」(能量 4/10);画面应安静可读,不给选路决策添噪
- **到达方式**:游戏推进送入(模态覆盖层打开,底层内容锁定)
## Navigation Position
```
存档/营地 ──开始冒险──▶ 冒险结构(关卡序列)──▶ 【关卡画面(选路枢纽,本 spec)】
├─ 选战斗/Boss 节点 → 战斗屏(battle.md)
├─ 选奖励/恢复节点 → 节点覆盖层(NodeOverlay,本屏域内弹出)
├─ 选商店节点 → 商店覆盖层(本屏域内弹出)
└─ Boss 胜利 → 关卡结算(level-clear.md)→ 下一关开始 → 回本屏
放弃冒险(任意选路停点)→ 冒险终结 → 返回存档/营地
```
- 上游屏:关卡结算确认(下一关开始)或冒险开始
- 下游屏:战斗屏 / 节点覆盖层 / 商店覆盖层(三者兑付确认后**一律回本屏**再选路——战后回图)
- 本屏是模态覆盖层形态:打开时底层内容锁定(pattern 6),关闭即进入所选节点的兑付流程
## Layout Specification
### Information Hierarchy
本屏必须传达的全部信息,按注视优先级分五层:
1. **节点图本体**(第一注视点):节点方块(五类型字面:战/赏/疗/王/商)、通道连线、当前位置、可选去路
2. **候选选路口**:亮金候选通道 + 候选节点亮金描边 + 底部候选按钮——「下一步能去哪」的三重冗余
3. **常驻语境**(顶栏):关卡名(第 N 层·名称)、GP 常驻总量(2026-09-26 二轮拍板去向:GP = 关卡画面常驻总量,[battle.md](battle.md) OQ14 口径经 2026-09-27 GP 归属拍板对齐批维持)
4. **边缘动作**:放弃冒险入口(破坏性,危险红族,异位呈现)
5. **进度语境**:已过/当前/未来三态节点直接读图呈现——节点态即节点链进度呈现载体,**不另设进度条组件**(关卡节点地图 呈现侧口径 2026-09-17 用户拍板)
### Layout Zones
按 1280×800 基座(ADR-0002)。本屏为模态全屏接管:暗幕(现行 0.6 黑)铺满,内容居中三段。
| 区 | 位置与尺寸 | 内容 |
|---|---|---|
| **顶栏语境** | 居中横排,图区上方,高约 32px | 左:关卡名(`level_row.display_name`,如「第二层 · 幽暗地域」);右:GP 常驻徽章(金币图标+数字,直角细线数据框——GP 值域超点阵适用档,走 pattern 5 的 When-NOT-to-Use 路线);HP 常驻读数是否并列右侧 = OQ1 待拍板,拍板前不实现 |
| **节点图区** | 居中 | 整幅节点图自绘:节点方块 + 通道折线 + 节点态着色 + Boss 紫赤描边。现行程序化占位为定值画布 620×240(层距 122px / 行距 58px / 节点方块 52×36px,现两关行集均容得下);目标形态随图自适应(画布宽随层数、高随同层最大节点数),公式与终值随实装批定、视觉随样张批 |
| **底部动作栏** | 图区下方横排,高约 48px | 左:候选按钮(横排,一候选一钮;单候选时单钮「继续前进」);右端:放弃冒险按钮(危险红族文字,与候选按钮保持间距——破坏性确认异位,pattern 7) |
### Component Inventory
| 组件 | 类型 | 内容 | 交互 | 现有实现锚 |
|---|---|---|---|---|
| 关卡名标签 | 文本 | `level_row.display_name`(关卡表行读数) | 只读 | 新建(现行标题位升级) |
| GP 常驻徽章 | 直角细线数据框 | 金币图标 + 数字(`runner.gp`,冒险钱包读数;刷新经 `wallet_changed` 信号投影〔gain/buy/clear 三事件〕或写路径回执后重查) | 只读 | 新建(GP 去向拍板落地面) |
| 节点图画布 | 自绘 Control | 节点方块(五类型字面 + 编号)、通道折线、节点态着色、Boss 紫赤描边(BOSS_PURPLE——2026-09-26 封印紫批语义:紫赤本色) | 悬停 / 点击候选(OQ2) | ✅ route_overlay.gd `_draw_graph`(程序化占位) |
| 候选按钮 ×N | 按钮(凸圆角可按的砖) | 文案「节点 N · 战斗房」/ 单链「继续前进(战斗房)」 | 点击提交选路 | ✅ route_overlay.gd(press_candidate 探针面保持) |
| 放弃冒险按钮 | 按钮(危险红族) | 「放弃冒险(同失败结算——已获大奖励保留)」;二次确认态见 OQ3 | 点击(现行单击即发;确认态为提案) | ✅ route_overlay.gd(可见性归组合根,仅冒险模式开) |
| 标题行 | 文本 | 停点语境提示(见布局决策 1 三停点标题) | 只读 | ✅ route_overlay.gd `_title`(措辞待改) |
**布局决策 1 —— 停点标题措辞修正(清偿台账 143 遗留)**:现行入口停点标题沿用「继续前进(战斗房)」,与「尚未走出第一步」的语境矛盾。三停点标题定稿:
| 停点 | 候选数 | 标题 |
|---|---|---|
| 入口停点 | 1(入口节点) | 「出发——选择首个节点」 |
| 单链停点 | 1 | 「继续前进」 |
| 岔路停点 | ≥2 | 「选择下一节点」 |
**布局决策 2 —— 图上直接点击选路(提案,OQ2)**:候选节点的亮金描边本身是可点目标,悬停预承诺(pattern 4)后点击即提交——图与按钮从「展示 + 操作」分离变为双通道等价。候选按钮保留(无障碍冗余 + 探针 `press_candidate` 面不动)。未拍板前按钮为唯一提交通道。
**布局决策 3 —— 放弃冒险二次确认(提案,OQ3)**:放弃 = 整局冒险终结,不可逆(pattern 7 破坏性确认)。现行单击即发;提案 = 首击转入确认态(按钮文案变「再点一次确认放弃——不可逆」,危险红边框脉冲约 3 秒,超时回落),二击才提交。代价语义(已获大奖励保留、同失败结算)常驻按钮文案。
### ASCII Wireframe
```
1280 × 800 ────────────────────────────────────────────────────────────────────
│ (暗幕 0.6——底层战斗屏锁定透出) │
│ 第二层 · 幽暗地域 [◈ 128](GP 常驻徽章) │
│ │
│ [战0]──┐ │
│ ├──[战3]──┬──[赏6]──┐ │
│ [战1]──┤ │ ├──[王8] │
│ [战2]──┴──[疗4]──┴──[战7]──┘ (战=已过·暗金 疗=当前·金 │
│ 亮金描边=候选 王=紫赤描边·Boss) │
│ │
│ [ 节点 6 · 奖励点 ] [ 节点 7 · 战斗房 ] 放弃冒险(同失败结算) │
└──────────────────────────────────────────────────────────────────────────────┘
```
> 图为岔路停点示意(第二关行集):已过节点暗金、当前节点金、候选节点亮金描边、Boss 紫赤描边。节点字形(战/赏/疗/王/商单字)与折线通道均为程序化占位——终稿 = 节点图标组(♻ 素材批采购清单在案;图标键候选家族 = `node_type` 五键,扩键走 art-bible §4.6 修订)+ 地牢通道质感,随表现层样张批。
---
## States & Variants
| State / Variant | Trigger | What Changes |
|---|---|---|
| **入口停点(默认首态)** | 关卡开始(停点前移) | 标题「出发——选择首个节点」;唯一候选 = 入口节点;图上全部节点为未来态 |
| **单链停点** | 兑付确认后、恰 1 个下一跳 | 标题「继续前进」;单候选按钮 |
| **岔路停点** | 兑付确认后、≥2 个下一跳 | 标题「选择下一节点」;候选按钮横排;亮金通道与候选描边逐一分叉可辨 |
| **悬停预承诺(OQ2 提案)** | 悬停候选节点 | 该节点亮金描边加粗 + 所属通道增亮 + 光标切指针态;移出即回落(仅预承诺,点击才提交) |
| **放弃确认态(OQ3 提案)** | 首击放弃按钮 | 文案转确认语 + 危险红边框脉冲约 3 秒;超时或移出回落;二击提交 `abandon_requested` |
| **换层进入** | 上一关结算确认 → 新关开始 | 本屏以新关卡数据淡入(无专属开场演出——art-bible §2.7 下探过渡演出的承载归场景表现批,本屏不设计) |
| **减动效** | 设置开关(切片期 TunePanel) | 淡入、描边脉冲等全部 tween 时长减半或跳终态(UiKit.motion 单点包装,同 battle.md 通道) |
**无拒绝子态**:候选提交恒合法(候选集即合法集),本屏无资源面/棋盘面拒绝路径;战斗中放弃由组合根可见性封死(按钮只在选路停点可见——接口契约:战斗中放弃一律拒绝)。
---
## Interaction Map
| 组件 | 动作 | 输入 | 即时反馈 | 结果(经组合根) |
|---|---|---|---|---|
| 候选按钮 | 提交选路 | 左键 | 按钮下压,本屏关闭 | `route_chosen(node_id)` → `LevelRunner.pick_next_node`——到达即兑付,无进入前确认步 |
| 候选节点(图上,OQ2 提案) | 提交选路 | 左键 | 悬停预承诺 + 点击同上 | 同上(与按钮等价双通道) |
| 放弃冒险按钮 | 终结整局冒险 | 左键(现行单击;确认态见 OQ3) | 危险红族反馈 | `abandon_requested` → 组合根走冒险终结(同失败结算——已获大奖励保留) |
**零自动推进纪律**(关卡节点地图 定稿):本屏是唯一的行进发起口——不选就停在图上;没有任何定时、默认或顺延的自动前进路径。兑付后确认挂各兑付面(战斗结算画面 / 节点覆盖层 / 商店覆盖层离开动作),本屏不重复确认步。
---
## Data Requirements
| Data | Source System | Read / Write | Notes |
|---|---|---|---|
| 节点图结构 / 当前节点 / 已到序列 / 候选集 | LevelRunner 只读成文出口:`nodes()` / `current_node_id()` / `visited_ids()` / `next_candidate_ids()` / `node_id_of()` / `node_out_ids()` | Read | 呈现只读(关卡节点地图 验收「呈现只读」条);节点态四色直接读图 |
| GP 常驻总量 | `runner.gp`(冒险钱包) | Read | 刷新经 `wallet_changed` 信号投影(gain/buy/clear 三事件)或写路径回执后重查;冒险收束清零后本屏不可达(收束即离屏) |
| 关卡名 | `level_row.display_name`(关卡表行) | Read | 字段名实现期核对(level.tres 行键 `display_name` 在案) |
| HP 常驻读数(OQ1,未拍板不实现) | `runner.hero_hp`(跨战斗生命携带) | Read | 拍板通过后接线;两铁律过闸分析见 OQ1 |
| 选路提交 | LevelRunner | **Write** | 唯一写路径 = `route_chosen` → 组合根 → `pick_next_node`;本屏零其他写面 |
| 放弃请求 | 组合根 | **Write** | `abandon_requested` → 冒险终结流程(归冒险结构) |
**架构注记**:与 battle.md 同族——UI 不拥有任何游戏状态,全部读经核心只读面,全部写经组合根(ADR-0001/0003);呈现层直接订阅的推进信号属 HUD框架 已锁两线之一(战斗结算明细流水 + 关卡节点地图推进信号)。
---
## Transitions & Animations
| 时刻 | 过渡 | 依据 |
|---|---|---|
| 打开(进图 / 兑付确认后回图) | 暗幕 + 内容淡入(约 200ms,同装板淡入档) | pattern 6 模态纪律;底层锁定 |
| 选路提交 | 本屏关闭,直达所选节点兑付流程 | 到达即兑付(关卡节点地图) |
| 放弃确认态(OQ3 提案) | 危险红边框脉冲约 3 秒(单段呼吸,非频闪) | pattern 7;闪烁基线(≤3 次/秒)内 |
| 减动效 | 上述全部时长减半或跳终态 | HUD框架 可访问性基线 |
---
## Accessibility
无障碍基线权威 = [HUD框架](../systems/表现与支撑/HUD框架.md)「可访问性基线」节,本屏无新增豁免。呈现侧内建承诺:
- **节点态形状冗余**(全局语义红线「无任何信息仅靠色相承载」的合规项):已过 = 暗金无描边、当前 = 金填充 + 唯一焦点方块、候选 = 亮金粗描边 + 候选按钮文字冗余、未来 = 暗底无描边;Boss = 紫赤描边 + 「王」字形冗余。四态在灰度截图下可分类(AC)
- **对比**:节点字面对方块底、顶栏数字对底 ≥4.5:1;色值取 art-bible §4.1 冻结色板(占位亦适用)
- **字号下限**:节点字形 ≥14px、标题 ≥16px、按钮/徽章 ≥14px(1280×800 基座,像素字体整数倍缩放)
- **破坏性异位**:放弃按钮与候选按钮分区放置(位置通道,art-bible §4.5 #7);确认态不依赖色相单独承载(文案 + 脉冲双通道)
- **纯鼠标**:全部操作纯鼠标可完成;MVP 不做键盘焦点序(同 battle.md 留痕)
---
## Localization Considerations
- **中文像素字体随包**(ADR-0003 硬前置,同 battle.md)
- **按钮文案 4 汉字上限**:「放弃冒险」「确认放弃」;候选按钮为模板插值(「节点 N · 战斗房」),宽度按最长节点类型名(4 字)+ 编号预留,固定槽高 + clip 兜底
- **关卡名**:`display_name` 最长 token「第三层 · 灰矮人矿城」(9 字符)——顶栏标签预留 40% 膨胀宽度
- **数字格式**:全部整数;GP 徽章图标+数字不依赖文本承载语义
---
## Acceptance Criteria
**布局与可读**
- [ ] 关卡开始即出图(停点前移语义),入口节点不自动进入;每次兑付确认后回到本屏
- [ ] 1280×800 与 16:9 全屏下顶栏/图区/动作栏无遮挡、无重叠、无内容裁切;节点图完整可见(含 Boss)
- [ ] 节点四态(已过/当前/候选/未来)+ Boss 描边在灰度截图下可分类;色值对 art-bible §4.1 色板在案
- [ ] 顶栏关卡名与 GP 常驻徽章可见、读数与 `runner` 现值一致(GP 经 gain/buy/clear 事件刷新)
**交互与流程**
- [ ] 三停点标题按布局决策 1 呈现(入口停点不再出现「继续前进(战斗房)」措辞——台账 143 遗留清偿)
- [ ] 候选提交经组合根唯一写路径(`route_chosen` → `pick_next_node`),到达即兑付;零自动推进(无任何不选而行的路径)
- [ ] 候选按钮与图上点击(若 OQ2 通过)两通道提交等价;`press_candidate` 探针路径不回归
- [ ] 放弃按钮仅冒险模式可见(调试两层不可达);若 OQ3 通过:单击不提交、确认态超时回落、二击才终结
- [ ] 放弃后走冒险终结(同失败结算),已获大奖励保留语义可见
**模态与测试**
- [ ] 模态纪律(pattern 6):打开时底层输入锁定;关闭逐层恢复——场景级断言
- [ ] 场景级 headless 测试:真实实例化本屏 + 驱动选路全程 + 断言零脚本错误(ui_probe 家族扩展)
- [ ] 中文渲染无豆腐块;像素字体整数倍缩放;全部操作纯鼠标可完成
---
## Open Questions
1. **HP 常驻读数是否上顶栏(拍板前置,06 已登记)**:推荐**上**——选路风险评估需要(低血择疗、临 Boss 战前的自知);数据源 `runner.hero_hp` 现成。两铁律过闸:循环口径——HP 是关卡内跨战斗携带读数,选路决策正消费它(关卡节点地图 依赖表「跨战斗生命携带的读数」同源);单一展示面——本屏打开时战斗屏被锁定遮蔽,不构成同屏重复展示面(与 B 区站桩血条不同屏并存)。拍板前不实现(顶栏 = 关卡名 + GP 两件)
2. **图上直接点击选路(提案,见布局决策 2)**:推荐**做**——候选描边已是视觉焦点,双段路径(看图→移到按钮)是纯摩擦;按钮保留为等价通道。未拍板前按钮为唯一提交通道
3. **放弃冒险二次确认(提案,见布局决策 3)**:推荐**做**——pattern 7 合规(破坏性确认),现行单击即发与「不可逆终结整局」的分量不匹配
4. **视觉终稿**:节点字形/通道质感/画布参数以表现层样张过审为前置(节点图标组 ♻ 采购清单在案);本 spec 的 AC 为功能性判据,不含视觉终稿判据(同 level-clear.md OQ4 先例)
---
## 上游义务对照表
| 义务源 | 义务 | 本 spec 承载落点 |
|---|---|---|
| [关卡节点地图](../systems/冒险循环/关卡节点地图.md) | 呈现侧口径:方块地牢观感、节点态四色、不另设进度条 | Information Hierarchy 第 5 层 + 图区组件行 |
| 关卡节点地图 | 零自动推进、兑付后确认、选路只读 | Interaction Map + Data Requirements + AC |
| 关卡节点地图 | 呈现只读(节点图/当前位置/可选下一跳对呈现层只读可见) | Data Requirements 只读出口清单 |
| [HUD框架](../systems/表现与支撑/HUD框架.md) | 模态 overlay 层级纪律、订阅纪律(推进信号两线之一) | Navigation Position + Data Requirements 架构注记 |
| HUD框架 | 可访问性基线全量(对比/色弱/字号/闪烁/减动效/纯鼠标/中文字体) | Accessibility |
| [battle.md](battle.md) OQ14 二轮拍板 | GP = 关卡画面常驻总量 | 顶栏 GP 常驻徽章 |
| [art-bible](../../art/art-bible.md) | 方块地牢观感(§3.2 圆角方形世界侧)、色板冻结(§4.1)、半拟物(§7.1)、明度恒定(§2) | 图区组件 + Accessibility 对比条 |
---
## 修订记录
| 日期 | 改动 |
|---|---|
| 2026-09-27 | 初稿(关卡画面 UX 批,用户拍板立项):占位升格版——信息层级五层/三分区布局/组件清单/三停点状态/交互与数据锚/AC 成文;停点标题措辞修正(清偿台账 143 遗留);GP 常驻徽章落地面(2026-09-26 二轮拍板去向,经 GP 归属拍板对齐批维持);三项提案挂 OQ(HP 常驻读数/图上直接点击选路/放弃二次确认)登记 06 待拍板;视觉终稿以表现层样张为前置。实现锚 = route_overlay.gd 程序化占位现行 |