- CLAUDE.md 硬性红线新增「文件头零工作日志」;code-conventions.md 新增 §1.4.1(含反面案例) - 全仓 .gd 文件头注清偿:删除全部带日期条目、批次叙事段与迁移退役叙述,保留并改写为 现在时的职责、接口契约、GDD 锚内容(main.gd 头注 42→31 行、save_manager.gd 49→45 行) - 纯注释改动零行为变更,按用户令免测试免冒烟
48 lines
1.8 KiB
GDScript
48 lines
1.8 KiB
GDScript
# 武装确认计时器(只统一计时+脉冲机制,视觉三处各自保留)。
|
||
# 背景:三处二次确认计时机制异构(AP 条弃图刷新=tween 秒表 / 选路放弃钮=_process 帧驱动
|
||
# 倒计时 / 战斗总结结算框=纯载荷暂存裸布尔)——本类为单一计时实现。
|
||
# 保缝纪律:AP 条三探针缝(press_refresh_for_probe/confirm_visible/press_confirm_for_probe)
|
||
# 语义等价零动;放弃钮真实二击路径零改;结算框挂起态经组合根属性继续可读写(探针接缝)。
|
||
# 减动效档:档判据单点 motion_still()——脉冲相位由视觉层取 elapsed 自算(1Hz 连续呼吸
|
||
# 视觉零变化),减动效档视觉层走静态呈现(放弃钮静态半透先例)。
|
||
class_name ArmedTimer
|
||
extends RefCounted
|
||
|
||
signal expired # 窗口到点回落边沿(仅 window_s > 0 时发出;宿主接回落视觉复位)
|
||
|
||
var window_s := 0.0 # 超时窗口秒(<=0 = 无窗口——挂起直到显式回落,结算框语义)
|
||
var elapsed := 0.0 # 武装起算累计秒(视觉层呼吸相位取数;tick 累计)
|
||
|
||
var _armed := false
|
||
|
||
|
||
# 档判据单点(减动效档四能力之一——两处视觉层共用,替代各自内联 UiKit.motion_scale 判断)
|
||
static func motion_still() -> bool:
|
||
return UiKit.motion_scale < 1.0
|
||
|
||
|
||
func arm(window_override := -1.0) -> void:
|
||
if window_override >= 0.0:
|
||
window_s = window_override
|
||
_armed = true
|
||
elapsed = 0.0
|
||
|
||
|
||
func disarm() -> void:
|
||
_armed = false
|
||
elapsed = 0.0
|
||
|
||
|
||
func is_armed() -> bool:
|
||
return _armed
|
||
|
||
|
||
# 帧驱动(宿主 _process 委托;unarmed 或无窗口时零开销直返——结算框挂起态无需接 tick)
|
||
func tick(delta: float) -> void:
|
||
if not _armed or window_s <= 0.0:
|
||
return
|
||
elapsed += delta
|
||
if elapsed >= window_s:
|
||
disarm()
|
||
expired.emit()
|