diff --git a/game/core/breakpoint_store.gd b/game/core/breakpoint_store.gd index 699a5367..85af6d25 100644 --- a/game/core/breakpoint_store.gd +++ b/game/core/breakpoint_store.gd @@ -222,7 +222,7 @@ func _bp_read_int(key: String, bp: Dictionary, fallback: int, params: Dictionary # ---- 断点域六成员公开读写面(5.1 封装修复——宿主私取清零:方法体一律一行转发自有成员,零逻辑增量)---- # 断点承载注入(宿主构造后接线——save_manager 后绑) -func bind_save_manager(sm) -> void: +func bind_save_manager(sm: SaveManagerCore) -> void: _save_manager = sm diff --git a/game/tests/unit/contracts/system_contracts_test.gd b/game/tests/unit/contracts/system_contracts_test.gd index 4c212e80..350e1308 100644 --- a/game/tests/unit/contracts/system_contracts_test.gd +++ b/game/tests/unit/contracts/system_contracts_test.gd @@ -13,6 +13,7 @@ const RngServiceScript := preload("res://core/rng_service.gd") const StatusContainerScript := preload("res://core/status_container.gd") const UnitContainerScript := preload("res://core/unit_container.gd") const DamageControllerScript := preload("res://core/damage_controller.gd") +const BattleFactsScript := preload("res://core/battle_facts.gd") const Kit := preload("res://tests/unit/test_kit.gd") # T6 收口:_check/汇总退出样板单点 @@ -98,13 +99,13 @@ func _test_ticket_nine_columns() -> void: func _bare_controller(): var db = ConfigDBScript.new() - # 只取 open_ticket 纯构造面——四个依赖一律传真实实例,不用空桩: - # DamageController 的 db/rng/units/effects 全是定型标注,传无类型的空桩会触发 + # 只取 open_ticket 纯构造面——五个依赖一律传真实实例,不用空桩: + # DamageController 的 db/rng/units/effects/facts 全是定型标注,传无类型的空桩会触发 # 「Trying to assign value of type '' to a variable of type '…'」脚本错误——该错误不改退出码, # 却让赋值静默失败(成员留 null),脚本错误扫描落地后必红。三者均可零消费构造。 var units = UnitContainerScript.new(db) var effects = StatusContainerScript.new(db) - return DamageControllerScript.new(db, RngServiceScript.new(), units, effects) + return DamageControllerScript.new(db, RngServiceScript.new(), units, effects, BattleFactsScript.new()) # ---- B4→B3:增益授予布尔受理口径(受理/拒绝二元面 + 投影一致性) ---- diff --git a/game/tests/unit/core/save_manager_domain_test.gd b/game/tests/unit/core/save_manager_domain_test.gd index 26211e86..4574f1c9 100644 --- a/game/tests/unit/core/save_manager_domain_test.gd +++ b/game/tests/unit/core/save_manager_domain_test.gd @@ -478,7 +478,7 @@ func _smoke_save_slots() -> void: fsrc.store_string(JSON.stringify({"version": 7, "meta": {"keystone_balance": 1234}})) fsrc.close() DirAccess.remove_absolute(slot_tpl % 1) - ml.slots._migrate_legacy_save(legacy_src, slot_tpl % 1, legacy_src + ".migrated.bak") + ml.slots.migrate_legacy_save(legacy_src, slot_tpl % 1, legacy_src + ".migrated.bak") var migrated: Dictionary = JSON.parse_string(FileAccess.get_file_as_string(slot_tpl % 1)) Kit.check("sv12 旧档字节迁入槽 1(逐域相等——余额 1234)〔卡① sv12〕", int((migrated.get("meta", {}) as Dictionary).get("keystone_balance", -1)) == 1234) @@ -489,7 +489,7 @@ func _smoke_save_slots() -> void: var fsrc2 := FileAccess.open(legacy_src, FileAccess.WRITE) fsrc2.store_string(JSON.stringify({"version": 7, "meta": {"keystone_balance": 777}})) fsrc2.close() - ml.slots._migrate_legacy_save(legacy_src, slot_tpl % 1, legacy_src + ".migrated.bak") + ml.slots.migrate_legacy_save(legacy_src, slot_tpl % 1, legacy_src + ".migrated.bak") var slot1_now: Dictionary = JSON.parse_string(FileAccess.get_file_as_string(slot_tpl % 1)) Kit.check("sv12 幂等:槽 1 已存在不重迁(预置 777 零覆盖、源保留)〔卡① sv12〕", int((slot1_now.get("meta", {}) as Dictionary).get("keystone_balance", -1)) == 1234 diff --git a/game/tests/unit/data_config/forge_table_test.gd b/game/tests/unit/data_config/forge_table_test.gd index 226a5114..7bca3562 100644 --- a/game/tests/unit/data_config/forge_table_test.gd +++ b/game/tests/unit/data_config/forge_table_test.gd @@ -216,5 +216,5 @@ func _test_negative_cases() -> void: func _test_effect_kinds_closed() -> void: Kit.check("效果引擎效果类型闭集 32 种(甲案词表退役——overflow/attack_segments 摘名)〔锻造工坊批 V11〕", EffectEngineScript.EFFECT_KINDS.size() == 32) - Kit.check("效果引擎事件词表在册 22 种(迭代 46 换图系扩签 refresh_request/board_refreshed 换代)〔锻造工坊批 V11〕", - EffectEngineScript.EVENTS.size() == 22) + Kit.check("效果引擎事件词表在册 21 种(charge_full 位摘名——蓄力层删键批)〔锻造工坊批 V11〕", + EffectEngineScript.EVENTS.size() == 21)