merge: 流派件持有呈现v2落籍(用户反馈战斗/关卡两界面都看不到——关卡页补齐+战斗C区段上移+投影共用;718/0+ui_probe绿)
This commit is contained in:
commit
6a81ce3862
4 files changed
+47
-28
No files matched your search
@@ -36,23 +36,8 @@ static func refresh(stage: BattleStageView, info: HeroInfoPanelView, ap_bar: ApB
|
||||
info.set_level_bonuses([])
|
||||
# 流派件持有投影(迭代 12 呈现补齐 2026-10-04——用户反馈「局内奖励选了什么看不到」:
|
||||
# 逐流派聚合行+成型档位;常驻可读+空态隐藏。档位求值=RelicsEngine 纯函数直调)
|
||||
if runner != null and level_active and db != null and db.relics != null and not (db.relics.rows as Array).is_empty():
|
||||
var held: Array = runner.relics_held()
|
||||
var rlines: Array[String] = []
|
||||
if not held.is_empty():
|
||||
var arch_names := {"magic": "魔法", "pierce": "穿刺", "normal": "普攻", "dig": "开格",
|
||||
"flag": "标旗", "charge": "蓄力", "devour": "吞噬"}
|
||||
var counts := {}
|
||||
for rid in held:
|
||||
var rrow: Dictionary = db.relic_row(String(rid))
|
||||
var arch := String(rrow.get("archetype", ""))
|
||||
counts[arch] = int(counts.get(arch, 0)) + 1
|
||||
var tiers: Dictionary = RelicsEngine.tiers_for(held, db.relics)
|
||||
for arch in counts.keys():
|
||||
var tier := int(tiers.get(arch, 0))
|
||||
var tier_text := "档二" if tier >= 2 else ("档一" if tier == 1 else "散件")
|
||||
rlines.append("%s ×%d · %s" % [String(arch_names.get(String(arch), String(arch))), int(counts[arch]), tier_text])
|
||||
info.set_relic_holdings(rlines)
|
||||
if runner != null and level_active:
|
||||
info.set_relic_holdings(relic_holdings_lines(db, runner.relics_held()))
|
||||
else:
|
||||
info.set_relic_holdings([])
|
||||
if settlement == null:
|
||||
@@ -104,6 +89,26 @@ static func _refresh_economy(ap_bar: ApBarView, s: Dictionary, db, refresh_remai
|
||||
ap_bar.set_stop_enabled(bool(s.hero.get("alive", false)) and digging)
|
||||
|
||||
|
||||
# 流派件持有聚合文案(迭代 12 呈现补齐——战斗 C 区与关卡选择页两处共用;空持有=空数组)
|
||||
static func relic_holdings_lines(db, held: Array) -> Array[String]:
|
||||
var rlines: Array[String] = []
|
||||
if db == null or db.relics == null or (db.relics.rows as Array).is_empty() or held.is_empty():
|
||||
return rlines
|
||||
var arch_names := {"magic": "魔法", "pierce": "穿刺", "normal": "普攻", "dig": "开格",
|
||||
"flag": "标旗", "charge": "蓄力", "devour": "吞噬"}
|
||||
var counts := {}
|
||||
for rid in held:
|
||||
var rrow: Dictionary = db.relic_row(String(rid))
|
||||
var arch := String(rrow.get("archetype", ""))
|
||||
counts[arch] = int(counts.get(arch, 0)) + 1
|
||||
var tiers: Dictionary = RelicsEngine.tiers_for(held, db.relics)
|
||||
for arch in counts.keys():
|
||||
var tier := int(tiers.get(arch, 0))
|
||||
var tier_text := "档二" if tier >= 2 else ("档一" if tier == 1 else "散件")
|
||||
rlines.append("%s ×%d · %s" % [String(arch_names.get(String(arch), String(arch))), int(counts[arch]), tier_text])
|
||||
return rlines
|
||||
|
||||
|
||||
# ---- 战斗收尾反馈与结算视觉同步(T3 HUD 单通道批 2026-10-02——组合根直改视图收敛入此) ----
|
||||
|
||||
# battle_over 收尾反馈:死亡兜底灰化 → 主角态回 idle → RAP 清零脉冲(调试收尾路)→ 状态全清可见反馈。
|
||||
|
||||
@@ -707,6 +707,7 @@ func _on_battle_end_continue() -> void:
|
||||
if _settlement_stop_pending:
|
||||
_settlement_stop_pending = false
|
||||
_enter_level_screen()
|
||||
level_screen.set_relic_holdings(" · ".join(HudPresenter.relic_holdings_lines(db, runner.relics_held())))
|
||||
level_screen.open_choices(_pending_candidates, runner)
|
||||
_pending_candidates = []
|
||||
_refresh_presentations()
|
||||
@@ -973,6 +974,7 @@ func _on_choices_presented(candidates: Array) -> void:
|
||||
_refresh_presentations()
|
||||
return
|
||||
_enter_level_screen()
|
||||
level_screen.set_relic_holdings(" · ".join(HudPresenter.relic_holdings_lines(db, runner.relics_held())))
|
||||
level_screen.open_choices(candidates, runner)
|
||||
_refresh_presentations()
|
||||
|
||||
|
||||
@@ -68,6 +68,17 @@ func _init() -> void:
|
||||
item_slots.add_child(slot)
|
||||
_slot_panels.append(slot)
|
||||
|
||||
# 流派件持有段(迭代 12 呈现补齐 2026-10-04——三选一流派件兑付后常驻可读:逐流派聚合行+成型档位;
|
||||
# 空态整节隐藏。用户试玩反馈「局内奖励选了什么看不到」缺口承载;2026-10-04 二次反馈上移——
|
||||
# 构筑核心信息优先级高于临时强化,且防 C 区下部裁切不可见)
|
||||
_relic_section = VBoxContainer.new()
|
||||
_relic_section.add_theme_constant_override("separation", 4)
|
||||
_relic_section.visible = false
|
||||
col.add_child(_relic_section)
|
||||
_relic_section.add_child(UiKit.label("流派件", 16, true))
|
||||
_relic_list = VBoxContainer.new()
|
||||
_relic_list.add_theme_constant_override("separation", 2)
|
||||
_relic_section.add_child(_relic_list)
|
||||
# 本关强化(预留):锻造/大奖励/关卡奖励节点的属性提升——中循环数据因改变战斗数学准入;
|
||||
# 与战斗内状态效果(B 区站桩,随战斗消散)分区,防「战斗结束被清」误读;空态整节隐藏
|
||||
_bonus_section = VBoxContainer.new()
|
||||
@@ -78,16 +89,6 @@ func _init() -> void:
|
||||
_bonus_list = VBoxContainer.new()
|
||||
_bonus_list.add_theme_constant_override("separation", 2)
|
||||
_bonus_section.add_child(_bonus_list)
|
||||
# 流派件持有段(迭代 12 呈现补齐 2026-10-04——三选一流派件兑付后常驻可读:逐流派聚合行+成型档位;
|
||||
# 空态整节隐藏。用户试玩反馈「局内奖励选了什么看不到」缺口承载)
|
||||
_relic_section = VBoxContainer.new()
|
||||
_relic_section.add_theme_constant_override("separation", 4)
|
||||
_relic_section.visible = false
|
||||
col.add_child(_relic_section)
|
||||
_relic_section.add_child(UiKit.label("流派件", 16, true))
|
||||
_relic_list = VBoxContainer.new()
|
||||
_relic_list.add_theme_constant_override("separation", 2)
|
||||
_relic_section.add_child(_relic_list)
|
||||
|
||||
|
||||
func set_attack(atk: int, mod_text: String) -> void:
|
||||
|
||||
@@ -56,6 +56,7 @@ var _hp_bar: Control
|
||||
var _attr_value: Label
|
||||
var _bonus_row: HBoxContainer
|
||||
var _bonus_value: Label
|
||||
var _relic_value: Label # 流派件持有行(迭代 12 呈现补齐——组合根投喂聚合文案)
|
||||
var _cand_ids: Array[int] = [] # 本停点候选 id 集(图上命中合法集)
|
||||
var _content_size := Vector2(620, 240) # 图内容包络(open_choices 按图拟合——画布 min 尺寸随它)
|
||||
var _hover_id := -1 # 悬停预承诺候选(-1 = 无)
|
||||
@@ -135,6 +136,10 @@ func _init() -> void:
|
||||
bonus_inner.add_child(bonus_cap)
|
||||
_bonus_value = UiKit.label("", 15, true, UiKit.WARM)
|
||||
bonus_inner.add_child(_bonus_value)
|
||||
# 流派件持有行(迭代 12 呈现补齐 2026-10-04——用户反馈关卡选择页看不到局内奖励;组合根投喂)
|
||||
_relic_value = UiKit.label("", 13, false, UiKit.WARM_SOFT)
|
||||
_relic_value.autowrap_mode = TextServer.AUTOWRAP_WORD_SMART
|
||||
bonus_inner.add_child(_relic_value)
|
||||
bottom.add_child(_bonus_row)
|
||||
var spacer := Control.new()
|
||||
spacer.size_flags_horizontal = Control.SIZE_EXPAND_FILL
|
||||
@@ -184,6 +189,11 @@ func _draw_hp_bar(bar: Control) -> void:
|
||||
|
||||
|
||||
# 放弃入口可见性(组合根在冒险启动时开、默认关——语义对象 = 整局冒险)
|
||||
# 流派件持有投影(迭代 12 呈现补齐——组合根投喂聚合文案;空文案=行隐藏)
|
||||
func set_relic_holdings(text: String) -> void:
|
||||
_relic_value.text = text
|
||||
|
||||
|
||||
func set_abandon_available(v: bool) -> void:
|
||||
abandon_btn.visible = v
|
||||
|
||||
@@ -315,7 +325,8 @@ func _refresh_status() -> void:
|
||||
if ac_bonus > 0:
|
||||
parts.append("AC +%d" % ac_bonus)
|
||||
_bonus_value.text = " · ".join(parts)
|
||||
_bonus_row.visible = not parts.is_empty()
|
||||
# 流派件持有行可见性(与加成行并框——任一非空整框显示;文案归组合根 set_relic_holdings)
|
||||
_bonus_row.visible = not parts.is_empty() or _relic_value.text != ""
|
||||
|
||||
|
||||
# ---- 图上命中(布局决策 2——唯一提交通道;探针 press_candidate 同路径) ----
|
||||
|
||||
Reference in new issue
Block a user