refactor(迭代27 T3): 波三 账本收口——RunLedger 单类持四账+刷新双账删副本+gp_final 键删影子账——逐位一致对拍全同

P1-4 共享账本 Ledger 类化(裁点②甲 单类持四账):
- game/core/run_ledger.gd: attune_charges/vision_counter/adventure_counters/bonus 四账
  单类承载;战斗侧只拿 read/append 原语(attune_charge_has/set/consume、vision_count_add、
  counters_seed_snapshot/merge_export、bonus_add_axis)——战末 export/开局 seed 时点语义不变
- AdventureRunner 持账(run_ledger)→ LevelRunner set_run_ledger+sync_attune_inventory
  (原四散 setter 收口)→ enc 单键 ledger 下传;编排器三裸引用成员退役为 _ledger 原语调用
- 调试/单场缺省新账=零扰动面(vision_counter 缺省空=不计,原 enc 缺键守卫语义保留)

P1-2 刷新双账收口:
- main 刷新计数副本(run_scope.refresh_used_round)删除;单一事实源=编排器受理计数
- presentation_snapshot 成文面升键 refresh_used(can_refresh 邻位)——HUD 余量/遥测
  round_refresh_index 单源读快照;V5 快照一致性断言×3(smoke+ui_click HUD 文本比对)

P1-3 GP 影子账收口:
- adventure_runner summary 增 gp_final 键(close_wallet 清账前快照)
- gp_shadow_ledger.gd 全件退役删除;main 委托缝/会话账本成员删除;终局面板 GP 行
  取数=summary 键;ui_probe 影子账断言换代为 summary 键断言

验收: 逐位一致对拍三变体全同;冒烟 1079/0+run_all 26 套+probe click+render golden 0.00%
This commit is contained in:
DKChan committed 2026-10-14 23:25:45 +08:00
1 parent 26301baa9c
commit 6fd7d782cc
16 files changed
+174 -183

No files matched your search

+3 -3
View File
@@ -357,8 +357,8 @@ func _refresh_status() -> void:
var max_hp: int = _runner.effective_max_hp()
_hp_value.text = "HP %d/%d" % [int(_runner.hero_hp), int(max_hp)]
_hp_bar.queue_redraw()
var atk_bonus := int(_runner.bonus.get("atk", 0))
var ac_bonus := int(_runner.bonus.get("armor_class", 0))
var atk_bonus := int(_runner.run_ledger.bonus.get("atk", 0)) # 迭代 27 T3——加算区住 RunLedger
var ac_bonus := int(_runner.run_ledger.bonus.get("armor_class", 0))
var atk_txt := "%d" % _runner.effective_atk()
if atk_bonus > 0:
atk_txt += " +%d" % atk_bonus # 加成角标(ASCII 加号——防像素字体缺 ⁺ 字形出豆腐块)
@@ -366,7 +366,7 @@ func _refresh_status() -> void:
if ac_bonus > 0:
ac_txt += " +%d" % ac_bonus
_attr_value.text = "攻击 %s · 护甲 AC %s" % [atk_txt, ac_txt]
var hp_bonus := int(_runner.bonus.get("max_hp", 0))
var hp_bonus := int(_runner.run_ledger.bonus.get("max_hp", 0))
var parts: Array[String] = []
if atk_bonus > 0:
parts.append("攻 +%d" % atk_bonus)