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:
1 parent
f5edb65d25
commit
104cea6461
46 files changed
+233
-218
No files matched your search
@@ -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)
|
||||
|
||||
Reference in new issue
Block a user