From fc26bcf860480c550ef8fa4d369a27be4177593b Mon Sep 17 00:00:00 2001 From: DKChan <524912269@qq.com> Date: Sun, 4 Oct 2026 03:49:16 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=81=E6=B4=BE=E4=BB=B6=E6=8C=81=E6=9C=89?= =?UTF-8?q?=E5=91=88=E7=8E=B0=E8=A1=A5=E9=BD=90=EF=BC=88=E8=BF=AD=E4=BB=A3?= =?UTF-8?q?12=E5=91=88=E7=8E=B0=E7=BC=BA=E5=8F=A3=E2=80=94=E2=80=94?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E8=AF=95=E7=8E=A9=E5=8F=8D=E9=A6=88=E3=80=8C?= =?UTF-8?q?=E5=B1=80=E5=86=85=E5=A5=96=E5=8A=B1=E9=80=89=E4=BA=86=E4=BB=80?= =?UTF-8?q?=E4=B9=88=E7=9C=8B=E4=B8=8D=E5=88=B0=E3=80=8D=EF=BC=89=EF=BC=9A?= =?UTF-8?q?HUD=20C=E5=8C=BA=E6=95=B0=E6=8D=AE=E6=A1=86=E4=B8=8B=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E3=80=8C=E6=B5=81=E6=B4=BE=E4=BB=B6=E3=80=8D=E5=B8=B8?= =?UTF-8?q?=E9=A9=BB=E6=AE=B5=EF=BC=88HeroInfoPanelView=20set=5Frelic=5Fho?= =?UTF-8?q?ldings+=E9=80=90=E6=B5=81=E6=B4=BE=E8=81=9A=E5=90=88=E8=A1=8C?= =?UTF-8?q?=E3=80=8C=E9=AD=94=E6=B3=95=20=C3=972=20=C2=B7=20=E6=A1=A3?= =?UTF-8?q?=E4=B8=80=E3=80=8D=E5=BC=8F+=E6=88=90=E5=9E=8B=E6=A1=A3?= =?UTF-8?q?=E4=BD=8D=E7=82=B9=E4=BA=AE+=E7=A9=BA=E6=80=81=E6=95=B4?= =?UTF-8?q?=E8=8A=82=E9=9A=90=E8=97=8F=E5=90=8C=E6=9C=AC=E5=85=B3=E5=BC=BA?= =?UTF-8?q?=E5=8C=96=E6=AE=B5=E7=BA=AA=E5=BE=8B=EF=BC=89=EF=BC=9Bhud=5Fpre?= =?UTF-8?q?senter=20refresh=E6=8A=95=E5=BD=B1=EF=BC=88runner.relics=5Fheld?= =?UTF-8?q?=E8=AF=BB=E9=9D=A2=E6=96=B0=E5=A2=9E+RelicsEngine.tiers=5Ffor?= =?UTF-8?q?=E6=A1=A3=E4=BD=8D=E6=B1=82=E5=80=BC=E7=9B=B4=E8=B0=83=E2=80=94?= =?UTF-8?q?=E2=80=94=E6=88=98=E6=96=97=E5=86=85/=E8=8A=82=E7=82=B9?= =?UTF-8?q?=E9=97=B4=E9=9A=99=E5=8F=8C=E5=88=86=E6=94=AF=E5=96=82=E5=85=A5?= =?UTF-8?q?=EF=BC=8C=E5=85=91=E4=BB=98=E5=90=8E=5Frefresh=5Fpresentations?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E5=8F=8D=E6=98=A0=EF=BC=89=EF=BC=9B=E5=86=92?= =?UTF-8?q?=E7=83=9F+2=E6=96=AD=E8=A8=80=EF=BC=88=E7=A9=BA=E6=80=81?= =?UTF-8?q?=E9=9A=90=E8=97=8F/=E6=8C=81=E6=9C=89=E5=91=88=E7=8E=B0?= =?UTF-8?q?=EF=BC=89=E2=86=92718/0=E4=B8=89=E9=97=B8+ui=5Fprobe=E7=BB=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game/core/level_runner.gd | 5 ++++ game/presentation/hud_presenter.gd | 21 +++++++++++++++++ .../views/hero_info_panel_view.gd | 23 +++++++++++++++++++ game/smoke/smoke_all.gd | 7 ++++++ 4 files changed, 56 insertions(+) diff --git a/game/core/level_runner.gd b/game/core/level_runner.gd index 1d164437..286d1630 100644 --- a/game/core/level_runner.gd +++ b/game/core/level_runner.gd @@ -599,6 +599,11 @@ func set_relics(ids: Array) -> void: _relics = ids +# 流派件持有集读面(迭代 12 呈现补齐——HUD C 区流派件段数据源) +func relics_held() -> Array: + return _relics.duplicate() + + # 树 rule 键集注入(迭代 12 T10——begin_battle enc.tree_rules 携带;Fork 激活侧 effects) var _tree_rules: Array = [] diff --git a/game/presentation/hud_presenter.gd b/game/presentation/hud_presenter.gd index 6333a3eb..ea0604a0 100644 --- a/game/presentation/hud_presenter.gd +++ b/game/presentation/hud_presenter.gd @@ -34,6 +34,27 @@ static func refresh(stage: BattleStageView, info: HeroInfoPanelView, ap_bar: ApB info.set_level_bonuses(lines) else: 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) + else: + info.set_relic_holdings([]) if settlement == null: _refresh_out_of_battle(stage, info, ap_bar, runner, level_active, db) return diff --git a/game/presentation/views/hero_info_panel_view.gd b/game/presentation/views/hero_info_panel_view.gd index 937eb64f..d39d90b9 100644 --- a/game/presentation/views/hero_info_panel_view.gd +++ b/game/presentation/views/hero_info_panel_view.gd @@ -21,6 +21,8 @@ var _selected_handle := 0 # 选中态(0=无;组合根回写 var _slot_handles: Array = [] # 槽位→handle 映射(set_aux_inventory 刷新) var _bonus_section: VBoxContainer # 本关强化(预留——空态隐藏,接线归大奖励/锻造呈现批) var _bonus_list: VBoxContainer +var _relic_section: VBoxContainer # 流派件持有段(迭代 12 呈现补齐——空态隐藏) +var _relic_list: VBoxContainer func _init() -> void: @@ -76,6 +78,16 @@ 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: @@ -88,6 +100,17 @@ func set_armor(ac: int) -> void: _armor_label.text = "护甲 AC %d" % ac +# 流派件持有段(迭代 12 呈现补齐):lines = 聚合文案行(「魔法 ×2 · 档一」式)——空数组 = 整节隐藏 +func set_relic_holdings(lines: Array) -> void: + for c2 in _relic_list.get_children(): + _relic_list.remove_child(c2) + c2.queue_free() + for line in lines: + var l2 := UiKit.label(String(line), 16, false, COL_INK) + _relic_list.add_child(l2) + _relic_section.visible = not lines.is_empty() + + # 本关强化列表(预留接线面):lines = 文案行数组(如「锻造 +2 攻击」)——空数组 = 整节隐藏 func set_level_bonuses(lines: Array) -> void: for c in _bonus_list.get_children(): diff --git a/game/smoke/smoke_all.gd b/game/smoke/smoke_all.gd index d5b33a6f..04aacc85 100644 --- a/game/smoke/smoke_all.gd +++ b/game/smoke/smoke_all.gd @@ -725,6 +725,13 @@ func _smoke_relics() -> void: "深挖钻头=开掘 +1 AP/每 4 格深层产出(R4 甲非信息税对价)· 蓄力三件=层值 1/减伤 1/层/满层 ×2") check(orch.action_economy.relic_ap_carry and orch.action_economy.relic_dig_extra == 1, "蓄力/钻头 action_economy 注入(ap_carry 改写停手转存 + 付费开掘对价注入——关着 false/0 零扰动)") + # ⑦c 流派件持有呈现段(2026-10-04 用户反馈补齐——C 区「流派件」节:聚合行+成型档位;空态隐藏) + var panel = load("res://presentation/views/hero_info_panel_view.gd").new() + panel.set_relic_holdings([]) + check(not panel._relic_section.visible, "流派件段空态隐藏(视图空态纪律同本关强化段)") + panel.set_relic_holdings(["魔法 ×2 · 档一", "开格 ×1 · 散件"]) + check(panel._relic_section.visible and panel._relic_list.get_child_count() == 2, + "流派件段持有呈现(聚合行+成型档位常驻可读——「局内奖励选了什么看不到」缺口承载)") # ⑦b 深挖钻头付费开掘回归(2026-10-04 试玩缺陷修复——对价挂付费侧):AP=1 降级照常开格 # (用户实测「AP=1 无法开格只能标旗」的回归闸);AP=2 付全价积付费计数(深层产出配额取数面)。 var ae_dd = load("res://core/action_economy.gd").new(_db)