iter9-T11+T12: 卡⑪ GP 常驻核验收口(实态已符 level-map spec:徽章 M-2 已落+刷新=写路径回执后重查〔open_choices 回执点〕合法路径;shot_probe 补徽章可见+读数=runner.gp 断言实测过;06 条目四承载面全闭移除〔钥石三处/胜利结算/冒险终局/关卡画面常驻〕)+卡⑫ C 区本关强化列表接线(HudPresenter.refresh 单点投影 runner 统一加算区 bonus{atk,max_hp,armor_class}→三行文案〔攻击/生命上限/护甲 AC,行文=代拍板〕,空加算整节隐藏;零核心触碰——呈现只读投影);冒烟 596/0+shot_probe 问题=0
This commit is contained in:
1 parent
053baeeef6
commit
fb665f87dc
3 files changed
+44
-23
No files matched your search
@@ -388,20 +388,6 @@
|
||||
|
||||
**状态**:部分收口——魔法道具槽已随迭代 7 落地(C 区四槽两步交互+库存只读面);本关强化列表**编入 M-3 迭代 9 卡⑫**(2026-09-30 用户扩编,台账 288——set_level_bonuses→runner 加算区投影接线)
|
||||
|
||||
#### GP/钥石迁出战斗屏后的展示面接线(2026-09-26 登记)
|
||||
|
||||
**现状**:信息归属批(台账 165)将 GP(中循环资源)/钥石(大循环资源)自战斗屏 C 区退役(用户二轮拍板去向):**GP = 关卡画面常驻总量 + 战斗结算画面总量+增量;钥石 = 结算画面 + 营地**。原 C 区钱包行为唯一展示面已删——数据源完好(runner.gp / MetaProgression 账本),纯呈现接线。
|
||||
|
||||
**归属冲突已收口——2026-09-27 用户拍板**:战斗胜利出现战斗总结结算、展示获得的资源(目前 = GP);战斗失败出现冒险总结结算、确认后回存档首页。battle.md OQ14「战斗结算画面」口径为准,GP 总量+增量归**战斗胜利总结结算**;本条原归属行「结算画面批 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 已收口维持)。
|
||||
|
||||
**归属**:战斗屏胜利结算批(GP 增量+总量呈现接线——battle.md 域)/ 关卡画面 UX 批(GP 常驻总量)/ 钥石侧已全部承载(大奖励屏 + 冒险总结结算 + 营地,无剩余)
|
||||
|
||||
**状态**:部分收口——2026-09-27 用户拍板归属冲突收口 + 钥石三处承载确认;剩 = 关卡画面 GP 常驻(纯呈现,归关卡画面批)。**2026-09-29 迭代 6 T7 批注记**:冒险终局面板补「本局 GP 入账 · 合计 N」(adventure_finished 收束清零前呈现侧影子账取值,零核心触碰)——「战斗结算画面」双形态(单场战斗胜利总结〔M-1 迭代 2 T5 已接〕/冒险终局面板〔本批〕)均已承载 GP,本条剩余实装面只剩关卡画面常驻。**关卡画面 GP 常驻编入 M-3 迭代 9 卡⑪**(2026-09-30 用户扩编,台账 288——level-map spec 顶栏徽章接线)
|
||||
|
||||
#### 节点奖励屏 UX spec(随魔法道具内容重定批交付,2026-09-27 登记)
|
||||
|
||||
**现状**:battle.md 原幽灵引用——design/gdd/ux/node-reward.md,2026-09-20 链接审计批入欠账基线——经 2026-09-27 欠账处置拍板改挂本条名下:节点奖励屏不立独立 spec,待魔法道具内容重定批给出奖励内容后随批出生。
|
||||
|
||||
@@ -19,6 +19,21 @@ extends RefCounted
|
||||
# HP/状态效果单投喂 B 区站桩(原 B/C 双投喂为重复展示——信息归属拍板单一展示面原则)
|
||||
static func refresh(stage: BattleStageView, info: HeroInfoPanelView, ap_bar: ApBarView,
|
||||
settlement, runner, level_active: bool, db, refresh_remaining: int) -> void:
|
||||
# 本关强化列表(v3.5 迭代 9 卡⑫ 2026-09-30——runner 统一加算区投影:商店购买与关卡大奖励
|
||||
# 共账本〔level_runner bonus{atk,max_hp,armor_class}〕;空加算=整节隐藏〔视图内空态纪律〕。
|
||||
# 呈现只读投影零核心触碰;行文格式=代拍板白名单项)
|
||||
if runner != null and level_active:
|
||||
var b: Dictionary = runner.bonus
|
||||
var lines: Array[String] = []
|
||||
if int(b.get("atk", 0)) != 0:
|
||||
lines.append("攻击 %+d" % int(b.get("atk", 0)))
|
||||
if int(b.get("max_hp", 0)) != 0:
|
||||
lines.append("生命上限 %+d" % int(b.get("max_hp", 0)))
|
||||
if int(b.get("armor_class", 0)) != 0:
|
||||
lines.append("护甲 AC %+d" % int(b.get("armor_class", 0)))
|
||||
info.set_level_bonuses(lines)
|
||||
else:
|
||||
info.set_level_bonuses([])
|
||||
if settlement == null:
|
||||
_refresh_out_of_battle(stage, info, ap_bar, runner, level_active, db)
|
||||
return
|
||||
|
||||
@@ -51,15 +51,23 @@ func _ready() -> void:
|
||||
if close_btn != null:
|
||||
close_btn.pressed.emit()
|
||||
await get_tree().process_frame
|
||||
# ③ 关卡画面(开始冒险→停点出图——冒险开始即出图,停点前移批语义)
|
||||
var lvbtn: Button = _find_button_by_prefix(main._start_overlay, "开始冒险")
|
||||
if lvbtn == null:
|
||||
_problems.append("开始冒险按钮缺失(开始层 lvbtn)")
|
||||
else:
|
||||
lvbtn.pressed.emit()
|
||||
for i in 4:
|
||||
await get_tree().process_frame
|
||||
await _snap("level")
|
||||
# ③ 关卡画面(开始冒险→停点出图——冒险开始即出图,停点前移批语义)
|
||||
var lvbtn: Button = _find_button_by_prefix(main._start_overlay, "开始冒险")
|
||||
if lvbtn == null:
|
||||
_problems.append("开始冒险按钮缺失(开始层 lvbtn)")
|
||||
else:
|
||||
lvbtn.pressed.emit()
|
||||
for i in 4:
|
||||
await get_tree().process_frame
|
||||
await _snap("level")
|
||||
# GP 常驻徽章断言(迭代 9 卡⑪核验——读数=runner.gp 现值,刷新=写路径回执后重查〔open_choices〕)
|
||||
var gp_label: Label = _find_label_by_text(main.level_screen, "◈ ")
|
||||
if gp_label == null or not gp_label.is_visible_in_tree():
|
||||
_problems.append("GP 徽章不可见(关卡画面顶栏)")
|
||||
elif main.level_screen.get("_runner") != null:
|
||||
var expect := "◈ %d" % int(main.level_screen.get("_runner").gp)
|
||||
if gp_label.text != expect:
|
||||
_problems.append("GP 徽章读数不符: %s != %s" % [gp_label.text, expect])
|
||||
# ④ 战斗(节点一——真实选路提交路径 press_candidate,ui_click_probe :199 同款)
|
||||
if main.level_screen != null and main.level_screen.visible:
|
||||
main.level_screen.press_candidate(0)
|
||||
@@ -128,6 +136,18 @@ func _find_label_rect(root: Node, text_fragment: String) -> Dictionary:
|
||||
return {}
|
||||
|
||||
|
||||
func _find_label_by_text(root: Node, text_fragment: String) -> Label:
|
||||
if root == null:
|
||||
return null
|
||||
if root is Label and String(root.text).contains(text_fragment):
|
||||
return root
|
||||
for c in root.get_children():
|
||||
var r := _find_label_by_text(c, text_fragment)
|
||||
if r != null:
|
||||
return r
|
||||
return null
|
||||
|
||||
|
||||
func _node_rect(n: Node) -> Dictionary:
|
||||
if n == null or not (n is CanvasItem):
|
||||
return {}
|
||||
|
||||
Reference in new issue
Block a user