fix(iter37①): T2 呈现/组合根缺陷修——蓄力档分档·庆祝句柄·互斥四口·模态 fail-fast·站桩按 id 解析
- d2 蓄力档 `_intent_charge` 布尔分档(颜色相等判据退役,深浅金同值不再误判);d4 庆祝浮动 tween 句柄 kill 纪律(close 必杀) - d5/d6/d7/d8 互斥四口:调试钮判据并入 `_sync_sim_button` 单点、组合根两守卫补模拟态/冒险态、`is_running()` 运行态查询面 - d9 ModalStack open/close fail-fast+遮挡账合并非覆盖(重复 open 不再吞旧账);d12 target_id 产发(damage_controller 四处)+站桩两口 id 先名兜底;d17 await 后实例守卫;d18 参数类型注解 - 断言:standee_fx_sweep_test(新增,18 项)/modal_flow_test V6-5(5 项 wd9,V6-1~4 原样同绿)/damage_controller_test target_id/pacing_queue_test 排播 target_id/system_test wd6+wd7 - 代拍板:d18 卡片字面 `lumas_out: Array[Variant] = null` 在 Godot 4.7 解析报错(typed array 不可默认 null),改用 `Variant = null`——唯一合法注法,零行为变化,随代拍板追认单留痕
This commit is contained in:
1 parent
1b9736f065
commit
0529e1691c
19 files changed
+348
-21
No files matched your search
@@ -7,9 +7,35 @@
|
||||
# 运行:godot --headless --path game --script res://tests/unit/presentation/pacing_queue_test.gd(expect 0)
|
||||
extends SceneTree
|
||||
|
||||
const RowPacerScript := preload("res://presentation/row_pacer.gd")
|
||||
|
||||
var _problems: Array = []
|
||||
|
||||
|
||||
# 记参假站桩(d12 排播半):继承真类以过类型面,只记解析入参
|
||||
class FakeStage extends BattleStageView:
|
||||
var calls: Array = []
|
||||
|
||||
func enemy_standee_center(target_id: String, display_name: String) -> Variant:
|
||||
calls.append([target_id, display_name])
|
||||
return Vector2(10, 10)
|
||||
|
||||
|
||||
# 记参假演出层(同上——play_* 全部只记不演)
|
||||
class FakeFx extends SettlementFxView:
|
||||
var calls: Array = []
|
||||
|
||||
func play_projectile(_from: Vector2, _to: Vector2, _glyph: String, _col: Color, _crit: bool = false) -> void:
|
||||
calls.append(["projectile", _to])
|
||||
|
||||
func play_damage_number(_pos: Vector2, _text: String, _col: Color, _crit: bool = false) -> void:
|
||||
calls.append(["mark", _pos])
|
||||
|
||||
func play_status_pulse(_pos: Vector2, _col: Color) -> void:
|
||||
calls.append(["pulse", _pos])
|
||||
|
||||
|
||||
|
||||
func check(cond: bool, msg: String) -> void:
|
||||
if not cond:
|
||||
_problems.append(msg)
|
||||
@@ -98,6 +124,21 @@ func _init() -> void:
|
||||
UiKit.motion_scale = 0.5
|
||||
check(main.pace_delay_for("damage", "heal") == 0.0, "减动效段间延迟归零(行不跳过——同帧直落快路)")
|
||||
UiKit.motion_scale = 1.0
|
||||
# ---- 断言④:排播两处取用按行 target_id 解析站桩(d12 排播半——假 stage 记参)----
|
||||
var rp = RowPacerScript.new()
|
||||
var fstage := FakeStage.new(null)
|
||||
var ffx := FakeFx.new()
|
||||
rp.stage = fstage
|
||||
rp.board_view = main.board_view
|
||||
rp.settlement_fx = ffx
|
||||
rp._play_settlement_mark({"type": "damage", "target": "哥布林", "target_id": "goblin_b", "value": 3})
|
||||
check(fstage.calls.size() == 1 and fstage.calls[0] == ["goblin_b", "哥布林"],
|
||||
"结算标出按行 target_id 解析站桩(id 与名同传——d12)")
|
||||
rp._play_cross_zone_fx({"type": "damage", "target": "哥布林", "target_id": "goblin_b", "value": 3})
|
||||
check(fstage.calls.size() == 2 and fstage.calls[1] == ["goblin_b", "哥布林"],
|
||||
"跨区弹道按行 target_id 解析站桩(id 与名同传——d12)")
|
||||
check(ffx.calls.size() == 2, "两路解析成功后演出层各接一拍(记参面非空)")
|
||||
rp.free()
|
||||
_finish()
|
||||
|
||||
|
||||
|
||||
Reference in new issue
Block a user