Files
gplan-2/game/presentation/armed_timer.gd
T
DKChan 9a72394652 chore(代码卫生): 头注存量清偿批——82 文件按两类白名单改写为 ## 文档注释载体
按 code-conventions §1.4.1 第三轮定稿执行:core 22+schemas 18+presentation 根 14+views 28,全部头注 #→##、删日期/变更叙事/GDD 与架构反向链接/字段与域清单/机制描述,保留职责摘要+真实使用约束(防事故禁令/单一入口/信号契约每信号一行)。main.gd 31→5 行、save_manager 45→5 行、adventure_runner 37→5 行为最大单件。子代理分模块执行(波一 core+schemas、波二 presentation+views,并发≤2)。验收=tools/verify_comment_only_change.py 逐字节校验(82 文件头注区外逐行一致=零行为变更)+audit_file_headers 全绿;纯注释批免冒烟(先例 5843270)
2026-10-16 23:28:07 +08:00

44 lines
1.5 KiB
GDScript

## 武装确认计时器:三处二次确认(AP 条弃图刷新/选路放弃钮/战斗总结结算框)共用的计时+脉冲机制,视觉各自保留。
## 探针接缝禁动:AP 条 press_refresh_for_probe/confirm_visible/press_confirm_for_probe 三缝与结算框挂起态的组合根读写面。
## 减动效档判据单点 motion_still()——视觉层共用此处取相位/静态化,禁各自内联 motion_scale 判断。
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()