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
@@ -137,7 +137,7 @@ func _play_flag_recall(count: int) -> void:
|
||||
|
||||
# ---- 演出密度终稿(样张 v2 冻结批 T3——程序化 tween,确定性散布,零新帧资产) ----
|
||||
|
||||
var _crest_bricks: Array = [] # 纹章碎砖驻留面(close 时回收)
|
||||
var _crest_bricks: Array[ColorRect] = [] # 纹章碎砖驻留面(close 时回收)
|
||||
var _fx_crest_shards := 0
|
||||
var _fx_dust_motes := 0
|
||||
var _fx_flag_dots := 0
|
||||
|
||||
@@ -27,7 +27,7 @@ var _log: RichTextLabel
|
||||
var _summary: Label
|
||||
var _hint: Label
|
||||
var _mode := "dig" # dig = 收起摘要 / settle = 实时流(模式归组合根驱动)
|
||||
var _round_rows: Array = [] # 本结算轮行缓冲(上轮摘要构建源)
|
||||
var _round_rows: Array[Dictionary] = [] # 本结算轮行缓冲(上轮摘要构建源)
|
||||
var _pending_agg := {} # 聚合计数行 pending(type+batch_key → {row, count})
|
||||
|
||||
|
||||
@@ -85,9 +85,9 @@ func finish_settlement_round() -> void:
|
||||
_flush_pending_agg()
|
||||
if _round_rows.is_empty():
|
||||
return
|
||||
var parts: Array = []
|
||||
var parts: Array[String] = []
|
||||
for bb in _round_rows:
|
||||
parts.append(_strip_bb(String(bb)))
|
||||
parts.append(_strip_bb(str(bb)))
|
||||
var text := "上轮: " + " | ".join(parts)
|
||||
if text.length() > 190:
|
||||
text = text.substr(0, 190) + "…"
|
||||
|
||||
@@ -31,7 +31,7 @@ var round_label: Label
|
||||
var stage_center: Label
|
||||
var enemy_box: Control # 站桩壳层伴随件容器(T3 语义改写:HBoxContainer → Control)
|
||||
var log_view: BattleLogView
|
||||
var _cards: Array = [] # StandeeBody(世界本体,敌)
|
||||
var _cards: Array[Node2D] = [] # StandeeBody(世界本体,敌)
|
||||
var _row: HBoxContainer # 文本半区行(stage_center 载体 + 世界布局基准)
|
||||
var _companion_layer: Control # 壳层伴随件层(主角 slot_row 宿主;敌伴随件宿主 = enemy_box)
|
||||
var _svp_container: SubViewportContainer
|
||||
|
||||
@@ -17,11 +17,11 @@ var edge := 46.0: # 格边长(BoardView.set_cell_area 单点
|
||||
var bg_sb: StyleBoxFlat = null # 格底 StyleBox(BoardView 每次 paint 重建;呼吸微光就地改边框)
|
||||
# ── 接触带微光绘制面(2026-09-26 批:可挖域微光自"墙格整框"改"英雄格周界空间侧"——art-bible §3.2 v2.8;
|
||||
# 仅英雄格单元承载,BoardView.refresh 按可挖域写边/角码、_process 逐拍更新呼吸色)──
|
||||
var contact_bands: Array = [] # 正交接触边码 0=N/1=S/2=W/3=E(该侧整条边)
|
||||
var contact_corners: Array = [] # 斜向共享角码 0=NW/1=NE/2=SW/3=SE(角点+两侧各半条边)
|
||||
var contact_bands: Array[int] = [] # 正交接触边码 0=N/1=S/2=W/3=E(该侧整条边)
|
||||
var contact_corners: Array[int] = [] # 斜向共享角码 0=NW/1=NE/2=SW/3=SE(角点+两侧各半条边)
|
||||
var contact_col := Color(0, 0, 0, 0) # 当前呼吸色(alpha 0 = 不画)
|
||||
var plate := false # 数字色牌开关(BoardView paint 按已开格 glyph 写入——原则二)
|
||||
var outline_sides: Array = [] # 墙格地面朝向描边码 0=N/1=S/2=W/3=E(轮廓加强批——程序侧结构件)
|
||||
var outline_sides: Array[int] = [] # 墙格地面朝向描边码 0=N/1=S/2=W/3=E(轮廓加强批——程序侧结构件)
|
||||
# ── 高墙感 D 投影档(2026-09-28 挑档落码——研究件四变体用户裁 D=C+地面投影,ITB 同款高度线索)──
|
||||
# 南立面 = 墙格南缘内侧「口沿高光线 + 双段暗带」(邻地面格才画,墙群内聚);地面投影 = 北邻墙格
|
||||
# 在本已开格北缘投渐隐暗带。参数按研究件 64px 拼版实测比例换算(立面双段 0.16/0.25 格边、投影带
|
||||
|
||||
@@ -127,7 +127,7 @@ const SHOVEL_FRAME_PX := 32.0 # 铲帧画布边长(缩放比与英雄帧
|
||||
const SHOVEL_FRAME_S := 0.08 # ~80ms/帧(f0→f1→f2 共 ~240ms 即收)
|
||||
const SHOVEL_GRIP := Vector2(18, 12) # 握把锚点(素材侧锁定的画布坐标——英雄持握手位对齐点)
|
||||
|
||||
var _shovel_texs: Array = [] # 惰性装载缓存(素材缺位 = 空表静默回退——素材不入 git)
|
||||
var _shovel_texs: Array[Texture2D] = [] # 惰性装载缓存(素材缺位 = 空表静默回退——素材不入 git)
|
||||
|
||||
|
||||
# 挖掘挥铲:hand = 英雄持握手位(BoardView.hero_hand_point 出口,fx 与棋盘同层同系)——
|
||||
|
||||
@@ -102,7 +102,7 @@ var _diggable := {} # 可挖域(8 向相邻未开格)——呼吸微
|
||||
var _breath_t := 0.0
|
||||
var _contact_unit: Node2D = null # 接触带承载单元(=英雄格 CellUnit;rebuild 随清场复位)
|
||||
var _install_tw: Tween # 入场淡入 tween(rebuild 重入先杀)
|
||||
var _ripple_tws: Array = [] # R0 涟漪逐格 tween(rebuild 重入全杀)
|
||||
var _ripple_tws: Array[Tween] = [] # R0 涟漪逐格 tween(rebuild 重入全杀)
|
||||
var _dig_glow := false # 挖掘期才允许唯一在动元素(art-bible §2.1)
|
||||
var _hover := Vector2i(-9, -9)
|
||||
var _last_click := {"cell": Vector2i(-9, -9), "ms": -100000}
|
||||
@@ -768,8 +768,8 @@ func _apply_contact_bands() -> void:
|
||||
if hu == null:
|
||||
return
|
||||
_contact_unit = hu
|
||||
var bands: Array = []
|
||||
var corners: Array = []
|
||||
var bands: Array[int] = []
|
||||
var corners: Array[int] = []
|
||||
for d in [Vector2i(0, -1), Vector2i(0, 1), Vector2i(-1, 0), Vector2i(1, 0)]:
|
||||
if _diggable.has(_minesweeper.hero_pos() + d):
|
||||
bands.append(0 if d.y < 0 else (1 if d.y > 0 else (2 if d.x < 0 else 3)))
|
||||
|
||||
@@ -21,8 +21,8 @@ const ATTR_LABELS := {"atk": "攻击", "max_hp": "生命上限", "armor_class":
|
||||
var _balance_label: Label
|
||||
var _forge_holder: VBoxContainer
|
||||
var _workshop_holder: VBoxContainer
|
||||
var _forge_rows: Array = [] # [{attr, level_l, price_l, btn}]——refresh_camp 就地重刷(零重建回流)
|
||||
var _workshop_rows: Array = [] # [{item_id, progress_l, status_l}]
|
||||
var _forge_rows: Array[Dictionary] = [] # [{attr, level_l, price_l, btn}]——refresh_camp 就地重刷(零重建回流)
|
||||
var _workshop_rows: Array[Dictionary] = [] # [{item_id, progress_l, status_l}]
|
||||
var _recent_list: Label # 最近冒险(逐行拼接 label——只读账面,随 open_camp 重建)
|
||||
|
||||
|
||||
@@ -198,7 +198,7 @@ func _rebuild_workshop(data: Dictionary) -> void:
|
||||
|
||||
|
||||
func _rebuild_recent(data: Dictionary) -> void:
|
||||
var lines: Array = []
|
||||
var lines: Array[String] = []
|
||||
var recent: Array = data.get("recent", [])
|
||||
if recent.is_empty():
|
||||
lines.append(" (暂无冒险记录——完成或结束一次冒险后入账)")
|
||||
|
||||
@@ -52,7 +52,7 @@ var _hp_bar: Control
|
||||
var _attr_value: Label
|
||||
var _bonus_row: HBoxContainer
|
||||
var _bonus_value: Label
|
||||
var _cand_ids: Array = [] # 本停点候选 id 集(图上命中合法集)
|
||||
var _cand_ids: Array[int] = [] # 本停点候选 id 集(图上命中合法集)
|
||||
var _content_size := Vector2(620, 240) # 图内容包络(open_choices 按图拟合——画布 min 尺寸随它)
|
||||
var _hover_id := -1 # 悬停预承诺候选(-1 = 无)
|
||||
var abandon_btn: Button # 放弃入口(可见性归组合根 set_abandon_available——只在冒险模式开)
|
||||
@@ -230,7 +230,7 @@ func open_choices(cands: Array, runner) -> void:
|
||||
_runner = runner
|
||||
_hover_id = -1
|
||||
_reset_abandon_confirm()
|
||||
var visited: Array = []
|
||||
var visited: Array[int] = []
|
||||
if runner != null:
|
||||
visited = runner.visited_ids()
|
||||
if cands.size() > 1:
|
||||
@@ -308,7 +308,7 @@ func _refresh_status() -> void:
|
||||
ac_txt += " +%d" % ac_bonus
|
||||
_attr_value.text = "攻击 %s · 护甲 AC %s" % [atk_txt, ac_txt]
|
||||
var hp_bonus := int(_runner.bonus.get("max_hp", 0))
|
||||
var parts: Array = []
|
||||
var parts: Array[String] = []
|
||||
if atk_bonus > 0:
|
||||
parts.append("攻 +%d" % atk_bonus)
|
||||
if hp_bonus > 0:
|
||||
@@ -458,7 +458,7 @@ func _layout(nodes: Array, canvas: Control) -> Dictionary:
|
||||
func _assign_layers(nodes: Array, layer: Dictionary, slot: Dictionary) -> void:
|
||||
var layer_counts := {}
|
||||
var entry := _entry(nodes)
|
||||
var queue: Array = []
|
||||
var queue: Array[Dictionary] = []
|
||||
if not entry.is_empty():
|
||||
queue.append(entry)
|
||||
layer[entry] = 0
|
||||
|
||||
@@ -15,7 +15,7 @@ const ATTR_LABELS := {"atk": "攻击", "max_hp": "生命上限", "armor_class":
|
||||
|
||||
var _gp_label: Label
|
||||
var _cards_box: VBoxContainer
|
||||
var _card_rows: Array = [] # [{product_id, price, bought, btn}]——refresh_state 就地重刷(零重建回流)
|
||||
var _card_rows: Array[Dictionary] = [] # [{product_id, price, bought, btn}]——refresh_state 就地重刷(零重建回流)
|
||||
|
||||
|
||||
func _init() -> void:
|
||||
|
||||
Reference in new issue
Block a user