Files
gplan-2/game/presentation/armed_timer.gd
T
DKChan 5f9d8e7b77 chore(代码卫生): 文件头零工作日志红线落文+全仓头注变更叙事清偿(2026-10-15 用户令)
- CLAUDE.md 硬性红线新增「文件头零工作日志」;code-conventions.md 新增 §1.4.1(含反面案例)
- 全仓 .gd 文件头注清偿:删除全部带日期条目、批次叙事段与迁移退役叙述,保留并改写为
  现在时的职责、接口契约、GDD 锚内容(main.gd 头注 42→31 行、save_manager.gd 49→45 行)
- 纯注释改动零行为变更,按用户令免测试免冒烟
2026-10-15 04:08:38 +08:00

48 lines
1.8 KiB
GDScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 武装确认计时器(只统一计时+脉冲机制,视觉三处各自保留)。
# 背景:三处二次确认计时机制异构(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()