fix(review-batch3): 类型收紧生产清零137处(P1-2三步+延伸)+autoload class_name(ConfigDb/RngServiceCore)与_init标注(P2-1)+validate_skill_pool_links/ShopTable标注(P2-4)+相位enum外String面(P2-2)+typed-rows探针实证.tres装载转换;smoke缝合20处rows.assign+str(bb)同语义;审计生产双归零(240→103/83→59全测试链),单测7套绿,冒烟576/0同基线

This commit is contained in:
DKChan committed 2026-09-29 07:01:29 +08:00
1 parent f5edb65d25
commit 104cea6461
46 files changed
+233 -218

No files matched your search

+9 -9
View File
@@ -15,13 +15,13 @@
class_name LevelTable
extends Resource
@export var rows: Array = [] # Array[Dictionary]
@export var rows: Array[Dictionary] = [] # Array[Dictionary]
const NODE_TYPES := ["battle", "reward", "rest", "boss", "shop"] # 商店房批 2026-09-21 四→五类(关卡节点地图 v1.1)
func validate() -> Array:
var errs: Array = []
var errs: Array[Dictionary] = []
if rows.is_empty():
errs.append({"category": "empty_table", "message": "LevelTable 为空"})
return errs
@@ -40,7 +40,7 @@ func validate() -> Array:
errs.append({"category": "domain", "message": "level %d rest_heal_pct 越域 [0,100]" % L})
# 模板池(关卡节点图生成 v0.4——M-3 迭代 5 T5):row.templates 非空 = 池形态,池内全模板加载期校验
# (违规致命——不只抽中的那张);空 = 旧单图形态(row.nodes 直读,向后兼容零迁移)。
var node_lists: Array = [] # [ [上下文标签, nodes 数组], ... ]
var node_lists: Array[Array] = [] # [ [上下文标签, nodes 数组], ... ]
var templates: Array = row.get("templates", [])
if templates.is_empty():
node_lists.append(["", row.get("nodes", [])])
@@ -59,7 +59,7 @@ func validate() -> Array:
# 单节点链校验体(validate 抽出——row.nodes 与池内每张模板同跑一套;ctx = 消息上下文标签)
func _validate_level_nodes(L: int, ctx: String, nodes: Array) -> Array:
var errs: Array = []
var errs: Array[Dictionary] = []
var tag: String = "" if ctx.is_empty() else "〔%s〕" % ctx
if nodes.is_empty():
errs.append({"category": "domain", "message": "level %d%s 节点链为空" % [L, tag]})
@@ -102,9 +102,9 @@ func _validate_level_nodes(L: int, ctx: String, nodes: Array) -> Array:
# 图合法性核心(返回错误列表):id 解析(图=node_depth / 单链=数组下标)→ 出边表 →
# 唯一性/前进方向/入口唯一/Boss 终点/双向可达六检。参考 关卡节点地图 v1.0 分支节点图规则。
func _validate_graph(L: int, nodes: Array, is_graph: bool, tag: String = "") -> Array:
var errs: Array = []
var ids: Array = [] # 每节点 id(下标对齐)
var nexts: Array = [] # 每节点出边 id 数组
var errs: Array[Dictionary] = []
var ids: Array[int] = [] # 每节点 id(下标对齐)
var nexts: Array[Array] = [] # 每节点出边 id 数组
var id_to_idx := {}
for i in nodes.size():
var node: Dictionary = nodes[i]
@@ -116,7 +116,7 @@ func _validate_graph(L: int, nodes: Array, is_graph: bool, tag: String = "") ->
if id_to_idx.has(nid):
errs.append({"category": "dup_key", "message": "level %d%s 节点编号重复: %d(关卡内唯一定位地址)" % [L, tag, nid]})
id_to_idx[nid] = i
var nx: Array = []
var nx: Array[int] = []
if node.has("next"):
for v in node.get("next", []):
nx.append(int(v))
@@ -135,7 +135,7 @@ func _validate_graph(L: int, nodes: Array, is_graph: bool, tag: String = "") ->
for i in nodes.size():
for tid in nexts[i]:
has_inbound[tid] = true
var entries: Array = []
var entries: Array[int] = []
for i in nodes.size():
if not has_inbound.has(ids[i]):
entries.append(i)