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([])
|
info.set_level_bonuses([])
|
||||||
# 流派件持有投影(迭代 12 呈现补齐 2026-10-04——用户反馈「局内奖励选了什么看不到」:
|
# 流派件持有投影(迭代 12 呈现补齐 2026-10-04——用户反馈「局内奖励选了什么看不到」:
|
||||||
# 逐流派聚合行+成型档位;常驻可读+空态隐藏。档位求值=RelicsEngine 纯函数直调)
|
# 逐流派聚合行+成型档位;常驻可读+空态隐藏。档位求值=RelicsEngine 纯函数直调)
|
||||||
if runner != null and level_active and db != null and db.relics != null and not (db.relics.rows as Array).is_empty():
|
if runner != null and level_active:
|
||||||
var held: Array = runner.relics_held()
|
info.set_relic_holdings(relic_holdings_lines(db, 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)
|
|
||||||
else:
|
else:
|
||||||
info.set_relic_holdings([])
|
info.set_relic_holdings([])
|
||||||
if settlement == null:
|
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)
|
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——组合根直改视图收敛入此) ----
|
# ---- 战斗收尾反馈与结算视觉同步(T3 HUD 单通道批 2026-10-02——组合根直改视图收敛入此) ----
|
||||||
|
|
||||||
# battle_over 收尾反馈:死亡兜底灰化 → 主角态回 idle → RAP 清零脉冲(调试收尾路)→ 状态全清可见反馈。
|
# battle_over 收尾反馈:死亡兜底灰化 → 主角态回 idle → RAP 清零脉冲(调试收尾路)→ 状态全清可见反馈。
|
||||||
|
|||||||
@@ -707,6 +707,7 @@ func _on_battle_end_continue() -> void:
|
|||||||
if _settlement_stop_pending:
|
if _settlement_stop_pending:
|
||||||
_settlement_stop_pending = false
|
_settlement_stop_pending = false
|
||||||
_enter_level_screen()
|
_enter_level_screen()
|
||||||
|
level_screen.set_relic_holdings(" · ".join(HudPresenter.relic_holdings_lines(db, runner.relics_held())))
|
||||||
level_screen.open_choices(_pending_candidates, runner)
|
level_screen.open_choices(_pending_candidates, runner)
|
||||||
_pending_candidates = []
|
_pending_candidates = []
|
||||||
_refresh_presentations()
|
_refresh_presentations()
|
||||||
@@ -973,6 +974,7 @@ func _on_choices_presented(candidates: Array) -> void:
|
|||||||
_refresh_presentations()
|
_refresh_presentations()
|
||||||
return
|
return
|
||||||
_enter_level_screen()
|
_enter_level_screen()
|
||||||
|
level_screen.set_relic_holdings(" · ".join(HudPresenter.relic_holdings_lines(db, runner.relics_held())))
|
||||||
level_screen.open_choices(candidates, runner)
|
level_screen.open_choices(candidates, runner)
|
||||||
_refresh_presentations()
|
_refresh_presentations()
|
||||||
|
|
||||||
|
|||||||
@@ -68,6 +68,17 @@ func _init() -> void:
|
|||||||
item_slots.add_child(slot)
|
item_slots.add_child(slot)
|
||||||
_slot_panels.append(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 区站桩,随战斗消散)分区,防「战斗结束被清」误读;空态整节隐藏
|
# 与战斗内状态效果(B 区站桩,随战斗消散)分区,防「战斗结束被清」误读;空态整节隐藏
|
||||||
_bonus_section = VBoxContainer.new()
|
_bonus_section = VBoxContainer.new()
|
||||||
@@ -78,16 +89,6 @@ func _init() -> void:
|
|||||||
_bonus_list = VBoxContainer.new()
|
_bonus_list = VBoxContainer.new()
|
||||||
_bonus_list.add_theme_constant_override("separation", 2)
|
_bonus_list.add_theme_constant_override("separation", 2)
|
||||||
_bonus_section.add_child(_bonus_list)
|
_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:
|
func set_attack(atk: int, mod_text: String) -> void:
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ var _hp_bar: Control
|
|||||||
var _attr_value: Label
|
var _attr_value: Label
|
||||||
var _bonus_row: HBoxContainer
|
var _bonus_row: HBoxContainer
|
||||||
var _bonus_value: Label
|
var _bonus_value: Label
|
||||||
|
var _relic_value: Label # 流派件持有行(迭代 12 呈现补齐——组合根投喂聚合文案)
|
||||||
var _cand_ids: Array[int] = [] # 本停点候选 id 集(图上命中合法集)
|
var _cand_ids: Array[int] = [] # 本停点候选 id 集(图上命中合法集)
|
||||||
var _content_size := Vector2(620, 240) # 图内容包络(open_choices 按图拟合——画布 min 尺寸随它)
|
var _content_size := Vector2(620, 240) # 图内容包络(open_choices 按图拟合——画布 min 尺寸随它)
|
||||||
var _hover_id := -1 # 悬停预承诺候选(-1 = 无)
|
var _hover_id := -1 # 悬停预承诺候选(-1 = 无)
|
||||||
@@ -135,6 +136,10 @@ func _init() -> void:
|
|||||||
bonus_inner.add_child(bonus_cap)
|
bonus_inner.add_child(bonus_cap)
|
||||||
_bonus_value = UiKit.label("", 15, true, UiKit.WARM)
|
_bonus_value = UiKit.label("", 15, true, UiKit.WARM)
|
||||||
bonus_inner.add_child(_bonus_value)
|
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)
|
bottom.add_child(_bonus_row)
|
||||||
var spacer := Control.new()
|
var spacer := Control.new()
|
||||||
spacer.size_flags_horizontal = Control.SIZE_EXPAND_FILL
|
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:
|
func set_abandon_available(v: bool) -> void:
|
||||||
abandon_btn.visible = v
|
abandon_btn.visible = v
|
||||||
|
|
||||||
@@ -315,7 +325,8 @@ func _refresh_status() -> void:
|
|||||||
if ac_bonus > 0:
|
if ac_bonus > 0:
|
||||||
parts.append("AC +%d" % ac_bonus)
|
parts.append("AC +%d" % ac_bonus)
|
||||||
_bonus_value.text = " · ".join(parts)
|
_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 同路径) ----
|
# ---- 图上命中(布局决策 2——唯一提交通道;探针 press_candidate 同路径) ----
|
||||||
|
|||||||
Reference in new issue
Block a user