批末修复二: 全量闸首轮暴露的运行期断链六处——ui_kit面板哨兵改is StyleBox判别(StyleBox与布尔!=异类操作数违例,炸断全部modal_shell消费方构建=柜台/棋盘格/站桩缺失根因)+smoke_boot db.get(hero)字符串取表改combat.hero容器路径(K1′字符串形态盲区)+system_test _face_snapshot五读点改bo.ctx.getters束+camp_shop_presenter recent_summaries改meta_state.career_state投影+enemy/board_gen/difficulty三表resolver委托改直调(原写_resolver.combat...绕回自身=循环自指)+resolver_test十二处同形直调复原( T7扫荡误把测试直构resolver当db改址);冒烟15项0失败+系统测试69项0失败实证
This commit is contained in:
1 parent
730c35aa0a
commit
76794be79b
8 files changed
+25
-24
No files matched your search
@@ -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)
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -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 [],
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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(),
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in new issue
Block a user