style(迭代35卡①): 生成器过 09 静态扫描——核心层容器声明补参数化或改推断形(类型闸 R1 归零)、注释去 autoload 点引用形态(S5 零命中)

This commit is contained in:
DKChan committed 2026-10-24 06:37:18 +08:00
1 parent ba6604464e
commit c0059bc5db
1 file changed
+19 -19
+19 -19
View File
@@ -17,13 +17,13 @@ const REGION_SIGNATURES := ["rest", "reward", "battle"]
const SCOPE_STRUCTURE := 0 # 纯流面取数分域:结构流(代拍板 §10 ①——单流多次取数)
var _rng_service
var _params: Dictionary = {}
var _pool: Array = []
var _by_id: Dictionary = {}
var _params := {}
var _pool: Array[Dictionary] = []
var _by_id := {}
var _next_id := 0
var _detour_heads: Array = [] # 岔口侧链首节点(下一跳类型互异的修型面)
var _detour_ids: Dictionary = {} # 侧链节点 id 集(配比填余不动侧链——战斗保底只由链上槽承载)
var _fatal_flag := false # 致命封印(沿 ConfigDB._fatal_flag 体例——参数无解/产出不合格置位)
var _detour_heads: Array[Dictionary] = [] # 岔口侧链首节点(下一跳类型互异的修型面)
var _detour_ids := {} # 侧链节点 id 集(配比填余不动侧链——战斗保底只由链上槽承载)
var _fatal_flag := false # 致命封印(沿数值表单点入口的致命置位体例——参数无解/产出不合格置位)
func _init(rng_service = null) -> void:
@@ -118,7 +118,7 @@ static func check_params(params: Dictionary) -> Array:
## structural/dangling_next/dup_key/enum/domain 词表。params 为空时跳过与参数档对照的计数判据。
func validate_output(graph: Dictionary, params: Dictionary = {}) -> Array:
var errs: Array[Dictionary] = []
var nodes: Array = graph.get("nodes", [])
var nodes = graph.get("nodes", [])
if nodes.is_empty():
errs.append({"category": "structural", "message": "产出为空图(执行边界①——不合格产出禁止进玩法)"})
return errs
@@ -156,7 +156,7 @@ func validate_output(graph: Dictionary, params: Dictionary = {}) -> Array:
var terminals := []
for n in nodes:
var id0: int = int(n["id"])
var outs: Array = n["next"]
var outs = n["next"]
if int(indeg[id0]) == 0:
entries.append(id0)
if outs.is_empty():
@@ -201,7 +201,7 @@ func validate_output(graph: Dictionary, params: Dictionary = {}) -> Array:
if preds.size() != 1:
errs.append({"category": "structural", "message": "终点 %d 直接前驱数 %d ≠ 1" % [tid, preds.size()]})
continue
var pred: Dictionary = preds[0]
var pred = preds[0]
if String(pred["type"]) != "shop":
errs.append({"category": "structural", "message": "终点 %d 前一位非商店: %s" % [tid, pred["type"]]})
continue
@@ -312,17 +312,17 @@ func _add_forks(rg: RandomNumberGenerator, L: int, t: int, e: int) -> void:
for a in anchors:
if wanted <= 0:
break
var node: Dictionary = a
var node = a
var nid := int(node["id"])
if (node["next"] as Array).size() != 1:
continue # 同一节点不重复扩岔(去路数上限 3)
var v: Dictionary = _by_id[int((node["next"] as Array)[0])]
var v = _by_id[int((node["next"] as Array)[0])]
var vid := int(v["id"])
# 相邻两层不得同时扩岔:若主去路 v 也是岔口,v 的侧支会落进本岔口主支路的互斥段,
# 使侧支自己的类型不再独有(契约 5③)——两个方向都要拦。
if selected.has(vid) or succ_selected.has(nid):
continue
var v_outs: Array = v["next"]
var v_outs = v["next"]
if v_outs.is_empty():
continue # 主去路无后继(无可汇入点)——该锚点弃用
var extra := 2 if (int(_params["fork_ways_max"]) >= 3 and rg.randf() < 0.35) else 1
@@ -366,7 +366,7 @@ func _depth_count(d: int) -> int:
## 单出口图的配比填余(摆放优先、配比填余、战斗保底兜底——§8.1 次序),再统一修岔口下一跳互异。
func _assign_types(rg: RandomNumberGenerator, e: int) -> void:
if e == 1:
var free: Array = []
var free: Array[Dictionary] = []
var chain_battles := 0
for n in _pool:
if String(n["type"]) == "shop" or String(n["type"]) == "boss":
@@ -388,11 +388,11 @@ func _assign_types(rg: RandomNumberGenerator, e: int) -> void:
# 战斗保底优先:链上战斗数降到保底下限即停(侧链修型可能再让出战斗位,故保底只看链上)
if chain_battles - 1 < floor_n:
break
var node: Dictionary = free[i]
var node = free[i]
node["type"] = "rest" if ((i % 2 == 0) == rest_first) else "reward"
chain_battles -= 1
for head in _detour_heads:
var h: Dictionary = head
var h = head
var fork = null
for n in _pool:
if (n["next"] as Array).has(int(h["id"])):
@@ -460,10 +460,10 @@ func _all_paths_one_shop(by_id: Dictionary, entries: Array, terminals: Array) ->
for eid in entries:
stack.append([int(eid), 1 if String(by_id[int(eid)]["type"]) == "shop" else 0])
while not stack.is_empty():
var frame: Array = stack.pop_back()
var frame = stack.pop_back()
var id: int = int(frame[0])
var shops := int(frame[1])
var outs: Array = by_id[id]["next"]
var outs = by_id[id]["next"]
if outs.is_empty():
if shops != 1 or not terminals.has(id):
return false
@@ -475,7 +475,7 @@ func _all_paths_one_shop(by_id: Dictionary, entries: Array, terminals: Array) ->
func _check_fork_rules(nodes: Array, by_id: Dictionary, errs: Array) -> void:
for n in nodes:
var outs: Array = n["next"]
var outs = n["next"]
if outs.size() < 2:
continue
var head_types := {}
@@ -535,7 +535,7 @@ func _descendants(start: int, by_id: Dictionary) -> Dictionary:
func _fatal(msg: String) -> void:
# 致命面沿 ConfigDB._fatal 体例:Core 层置致命封印+push_error(调用方已落),退出决策归组合根
# 致命面沿数值表单点入口的既有体例:Core 层置致命封印+push_error(调用方已落),退出决策归组合根
# (main.gd `_fatal_screen`/卡② 起关拒绝路径)。generate 已致命中止时不产出任何图,
# 空返回不是兜底图——消费侧必须按 is_fatal() 拒收(契约 4 零软回退)。
_fatal_flag = true