From 76794be79bad2e3977969ab271e63e5546a4ef42 Mon Sep 17 00:00:00 2001 From: DKChan <524912269@qq.com> Date: Thu, 29 Oct 2026 01:33:48 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=B9=E6=9C=AB=E4=BF=AE=E5=A4=8D=E4=BA=8C:?= =?UTF-8?q?=20=E5=85=A8=E9=87=8F=E9=97=B8=E9=A6=96=E8=BD=AE=E6=9A=B4?= =?UTF-8?q?=E9=9C=B2=E7=9A=84=E8=BF=90=E8=A1=8C=E6=9C=9F=E6=96=AD=E9=93=BE?= =?UTF-8?q?=E5=85=AD=E5=A4=84=E2=80=94=E2=80=94ui=5Fkit=E9=9D=A2=E6=9D=BF?= =?UTF-8?q?=E5=93=A8=E5=85=B5=E6=94=B9is=20StyleBox=E5=88=A4=E5=88=AB(Styl?= =?UTF-8?q?eBox=E4=B8=8E=E5=B8=83=E5=B0=94!=3D=E5=BC=82=E7=B1=BB=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E6=95=B0=E8=BF=9D=E4=BE=8B,=E7=82=B8=E6=96=AD?= =?UTF-8?q?=E5=85=A8=E9=83=A8modal=5Fshell=E6=B6=88=E8=B4=B9=E6=96=B9?= =?UTF-8?q?=E6=9E=84=E5=BB=BA=3D=E6=9F=9C=E5=8F=B0/=E6=A3=8B=E7=9B=98?= =?UTF-8?q?=E6=A0=BC/=E7=AB=99=E6=A1=A9=E7=BC=BA=E5=A4=B1=E6=A0=B9?= =?UTF-8?q?=E5=9B=A0)+smoke=5Fboot=20db.get(hero)=E5=AD=97=E7=AC=A6?= =?UTF-8?q?=E4=B8=B2=E5=8F=96=E8=A1=A8=E6=94=B9combat.hero=E5=AE=B9?= =?UTF-8?q?=E5=99=A8=E8=B7=AF=E5=BE=84(K1=E2=80=B2=E5=AD=97=E7=AC=A6?= =?UTF-8?q?=E4=B8=B2=E5=BD=A2=E6=80=81=E7=9B=B2=E5=8C=BA)+system=5Ftest=20?= =?UTF-8?q?=5Fface=5Fsnapshot=E4=BA=94=E8=AF=BB=E7=82=B9=E6=94=B9bo.ctx.ge?= =?UTF-8?q?tters=E6=9D=9F+camp=5Fshop=5Fpresenter=20recent=5Fsummaries?= =?UTF-8?q?=E6=94=B9meta=5Fstate.career=5Fstate=E6=8A=95=E5=BD=B1+enemy/bo?= =?UTF-8?q?ard=5Fgen/difficulty=E4=B8=89=E8=A1=A8resolver=E5=A7=94?= =?UTF-8?q?=E6=89=98=E6=94=B9=E7=9B=B4=E8=B0=83(=E5=8E=9F=E5=86=99=5Fresol?= =?UTF-8?q?ver.combat...=E7=BB=95=E5=9B=9E=E8=87=AA=E8=BA=AB=3D=E5=BE=AA?= =?UTF-8?q?=E7=8E=AF=E8=87=AA=E6=8C=87)+resolver=5Ftest=E5=8D=81=E4=BA=8C?= =?UTF-8?q?=E5=A4=84=E5=90=8C=E5=BD=A2=E7=9B=B4=E8=B0=83=E5=A4=8D=E5=8E=9F?= =?UTF-8?q?(=20T7=E6=89=AB=E8=8D=A1=E8=AF=AF=E6=8A=8A=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E7=9B=B4=E6=9E=84resolver=E5=BD=93db=E6=94=B9=E5=9D=80);?= =?UTF-8?q?=E5=86=92=E7=83=9F15=E9=A1=B90=E5=A4=B1=E8=B4=A5+=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=E6=B5=8B=E8=AF=9569=E9=A1=B90=E5=A4=B1=E8=B4=A5?= =?UTF-8?q?=E5=AE=9E=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game/data/schemas/board_gen_table.gd | 2 +- game/data/schemas/difficulty_table.gd | 2 +- game/data/schemas/enemy_table.gd | 2 +- game/presentation/camp_shop_presenter.gd | 2 +- game/presentation/views/ui_kit.gd | 5 ++-- game/tests/smoke_boot.gd | 2 +- game/tests/system_test.gd | 10 ++++---- .../unit/core/config_db_resolver_test.gd | 24 +++++++++---------- 8 files changed, 25 insertions(+), 24 deletions(-) diff --git a/game/data/schemas/board_gen_table.gd b/game/data/schemas/board_gen_table.gd index 78420031..a8322475 100644 --- a/game/data/schemas/board_gen_table.gd +++ b/game/data/schemas/board_gen_table.gd @@ -115,4 +115,4 @@ var _resolver # R1 解析协作件(ConfigDB load_tables ## 进度行解析委托(消费面 db.combat.board_gen.resolve_row——R1 ceil/clamp 语义归 ConfigDbResolver) func resolve_row(L: int, D: int) -> Dictionary: - return _resolver.combat.board_gen.resolve_row(L, D) + return _resolver.resolve_board_gen(L, D) diff --git a/game/data/schemas/difficulty_table.gd b/game/data/schemas/difficulty_table.gd index db21e2bd..f7ff7cf5 100644 --- a/game/data/schemas/difficulty_table.gd +++ b/game/data/schemas/difficulty_table.gd @@ -35,4 +35,4 @@ var _resolver # R1 解析协作件(ConfigDB load_tables ## 难度修饰解析委托(消费面 db.run.difficulty.resolve_modifiers——clamp 语义归 ConfigDbResolver) func resolve_modifiers(L: int, D: int) -> Dictionary: - return _resolver.run.difficulty.resolve_modifiers(L, D) + return _resolver.resolve_difficulty_modifiers(L, D) diff --git a/game/data/schemas/enemy_table.gd b/game/data/schemas/enemy_table.gd index 851f2a6c..bb13f710 100644 --- a/game/data/schemas/enemy_table.gd +++ b/game/data/schemas/enemy_table.gd @@ -214,4 +214,4 @@ var _resolver # R1 解析协作件(ConfigDB load_tables ## 带寻址行集解析委托(消费面 db.combat.enemy.resolve_rowset——D 维 band_of 落带语义归 ConfigDbResolver) func resolve_rowset(L: int, D: int, row_kind: String) -> Array[Dictionary]: - return _resolver.combat.enemy.resolve_rowset(L, D, row_kind) + return _resolver.resolve_enemy_rowset(L, D, row_kind) diff --git a/game/presentation/camp_shop_presenter.gd b/game/presentation/camp_shop_presenter.gd index 174ed80b..a17d329c 100644 --- a/game/presentation/camp_shop_presenter.gd +++ b/game/presentation/camp_shop_presenter.gd @@ -65,7 +65,7 @@ func camp_data() -> Dictionary: "attune": meta.attune_camp_status() if meta != null else {}, # 同调装配面投影 "tree": meta.tree_camp_status()["rows"] if meta != null else [], # 树面投影(含 forge_workshop/ks_workshop 钥匙门判据行) "fork_groups": meta.tree_camp_status()["fork_groups"] if meta != null else [], - "recent": _save_get.call().recent_summaries() if _save_get.call() != null else [], + "recent": _save_get.call().meta_state.career_state()["recent_summaries"] if _save_get.call() != null else [], } diff --git a/game/presentation/views/ui_kit.gd b/game/presentation/views/ui_kit.gd index adac263f..c7894476 100644 --- a/game/presentation/views/ui_kit.gd +++ b/game/presentation/views/ui_kit.gd @@ -464,12 +464,13 @@ const PANEL_DEFAULT := true # modal_shell 面板哨兵(非 StyleBox 实例 # 面板哨兵解析(六参收拢五参——三态:null=无面板〔原 with_panel=false〕/PANEL_DEFAULT=默认样式盒面板 -# 〔原 with_panel=true+panel_sb=null〕/StyleBox 实例=自定义样式盒面板〔原双参形态〕) +# 〔原 with_panel=true+panel_sb=null〕/StyleBox 实例=自定义样式盒面板〔原双参形态〕; +# 判别用 is StyleBox——StyleBox 与布尔哨兵直接 != 属异类操作数违例) static func _resolve_shell_panel(panel_sb) -> PanelContainer: if panel_sb == null: return null var panel := PanelContainer.new() - if panel_sb != PANEL_DEFAULT: + if panel_sb is StyleBox: panel.add_theme_stylebox_override("panel", panel_sb) return panel diff --git a/game/tests/smoke_boot.gd b/game/tests/smoke_boot.gd index 76a5c9c0..815dfd96 100644 --- a/game/tests/smoke_boot.gd +++ b/game/tests/smoke_boot.gd @@ -38,7 +38,7 @@ func _check_autoloads() -> void: var node: Node = get_node_or_null(NodePath("/root/" + autoload_name)) check(node != null, "autoload %s 在位" % autoload_name) var db: Node = get_node_or_null(NodePath("/root/ConfigDB")) - check(db != null and bool(db.get("is_ready")) and db.get("hero") != null, + check(db != null and bool(db.get("is_ready")) and db.get("combat") != null and db.get("combat").get("hero") != null, "ConfigDB 就绪且配置表全载(is_ready+hero 表在座,校验失败会致命中止)") check(load(MAIN_SCENE_PATH) != null, "主屏场景资源可加载(%s)" % MAIN_SCENE_PATH) check(load(FONT_PATH) != null, "全局字体资源可加载(%s)" % FONT_PATH) diff --git a/game/tests/system_test.gd b/game/tests/system_test.gd index 4b8ce8dc..5002295f 100644 --- a/game/tests/system_test.gd +++ b/game/tests/system_test.gd @@ -318,11 +318,11 @@ func _face_snapshot(main: Node) -> Dictionary: return { "treasure_settlement": tu._settlement_get.call(), "treasure_runner": tu._runner_get.call(), - "bonus_meta": bo._meta_get.call(), - "bonus_save": bo._save_get.call(), - "bonus_adventure": bo._adventure_get.call(), - "bonus_runner": bo._runner_get.call(), - "bonus_mode": bo._adventure_mode_get.call(), + "bonus_meta": bo.ctx.getters.meta_get.call(), + "bonus_save": bo.ctx.getters.save_get.call(), + "bonus_adventure": bo.ctx.getters.adventure_get.call(), + "bonus_runner": bo.ctx.getters.runner_get.call(), + "bonus_mode": bo.ctx.getters.adventure_mode_get.call(), "camp_meta": cp._meta_get.call(), "camp_save": cp._save_get.call(), "camp_runner": cp._runner_get.call(), diff --git a/game/tests/unit/core/config_db_resolver_test.gd b/game/tests/unit/core/config_db_resolver_test.gd index fcbb6d64..ce8e97ae 100644 --- a/game/tests/unit/core/config_db_resolver_test.gd +++ b/game/tests/unit/core/config_db_resolver_test.gd @@ -54,16 +54,16 @@ func _difficulty_table(): func _test_band_hit() -> void: - var hit: Array = _resolver.combat.enemy.resolve_rowset(1, 4, "battle") + var hit: Array = _resolver.resolve_enemy_rowset(1, 4, "battle") Kit.check("带命中取偏难一侧:请求深度 4 命中带 5(逐字不回带 0)〔fv1〕", hit.size() == 1 and String((hit[0] as Dictionary).get("enemy_id", "")) == "hobgoblin") - var exact: Array = _resolver.combat.enemy.resolve_rowset(1, 5, "battle") + var exact: Array = _resolver.resolve_enemy_rowset(1, 5, "battle") Kit.check("精确落带:请求深度 5 命中带 5〔fv1〕", exact.size() == 1 and String((exact[0] as Dictionary).get("enemy_id", "")) == "hobgoblin") func _test_rowset_order_preserved() -> void: - var rows: Array = _resolver.combat.enemy.resolve_rowset(1, 0, "battle") + var rows: Array = _resolver.resolve_enemy_rowset(1, 0, "battle") var ids: Array[String] = [] for r in rows: ids.append(String((r as Dictionary).get("enemy_id", ""))) @@ -73,7 +73,7 @@ func _test_rowset_order_preserved() -> void: func _test_top_band_clamp() -> void: _diags.clear() - var rows: Array = _resolver.combat.enemy.resolve_rowset(1, 99, "battle") + var rows: Array = _resolver.resolve_enemy_rowset(1, 99, "battle") Kit.check("越顶带 clamp 取顶带行集(battle 顶带 5)〔fv3〕", rows.size() == 1 and String((rows[0] as Dictionary).get("enemy_id", "")) == "hobgoblin") var clamp_hit := false @@ -82,13 +82,13 @@ func _test_top_band_clamp() -> void: clamp_hit = true Kit.check("越顶带发 warning resolve_depth_clamp〔fv3〕", clamp_hit) var warn_before: int = _diags.size() - _resolver.combat.enemy.resolve_rowset(1, 99, "battle") + _resolver.resolve_enemy_rowset(1, 99, "battle") Kit.check("同键重复请求警告去重(四元组注册表)〔fv3〕", _diags.size() == warn_before) func _test_row_kind_routing() -> void: - var battle_rows: Array = _resolver.combat.enemy.resolve_rowset(1, 0, "battle") - var boss_rows: Array = _resolver.combat.enemy.resolve_rowset(1, 0, "boss") + var battle_rows: Array = _resolver.resolve_enemy_rowset(1, 0, "battle") + var boss_rows: Array = _resolver.resolve_enemy_rowset(1, 0, "boss") Kit.check("行类路由:同请求深度 battle 与 boss 命中不同键域〔fv4〕", battle_rows.size() == 2 and boss_rows.size() == 1 and String((boss_rows[0] as Dictionary).get("enemy_id", "")) == "ogre_chief") @@ -96,13 +96,13 @@ func _test_row_kind_routing() -> void: func _test_request_oob() -> void: _diags.clear() - _resolver.combat.enemy.resolve_rowset(0, 0, "battle") + _resolver.resolve_enemy_rowset(0, 0, "battle") Kit.check("关卡序号 <1 → fatal request_oob〔fv5〕", _has_fatal_oob()) _diags.clear() - _resolver.combat.enemy.resolve_rowset(1, -1, "battle") + _resolver.resolve_enemy_rowset(1, -1, "battle") Kit.check("节点深度 <0 → fatal request_oob〔fv5〕", _has_fatal_oob()) _diags.clear() - _resolver.combat.enemy.resolve_rowset(1, 0, "elite") + _resolver.resolve_enemy_rowset(1, 0, "elite") Kit.check("row_kind 非法 → fatal request_oob〔fv5〕", _has_fatal_oob()) @@ -114,11 +114,11 @@ func _has_fatal_oob() -> bool: func _test_difficulty_clamp() -> void: - var m: Dictionary = _resolver.run.difficulty.resolve_modifiers(1, 0) + var m: Dictionary = _resolver.resolve_difficulty_modifiers(1, 0) Kit.check("难度乘数越域被 clamp:hp 99 → 上限 10", absf(float(m.get("hp_mult", 0.0)) - 10.0) < 0.001) Kit.check("难度乘数越域被 clamp:atk 0.01 → 下限 0.1", absf(float(m.get("atk_mult", 0.0)) - 0.1) < 0.001) Kit.check("未登记坐标返回空修饰(零值不伪装成 ×1)", - _resolver.run.difficulty.resolve_modifiers(3, 3).is_empty()) + _resolver.resolve_difficulty_modifiers(3, 3).is_empty()) class _FakeDifficulty: