Files
gplan-2/game/presentation/armed_timer.gd
T
DKChan fec30644bd T3(D3): ArmedTimer helper——三处武装确认计时机制收口(P4乙:缝零动+视觉零变化)
新件 game/presentation/armed_timer.gd(RefCounted):武装/回落/超时/减动效档四能力
(motion_still 档判单点;elapsed 相位取数——1Hz 连续呼吸视觉零变化;窗口<=0=挂起语义)。
三处迁移:
①AP 条弃图刷新(ap_bar_view):tween 秒表(4.0s)→ArmedTimer;三探针缝
  press_refresh_for_probe/confirm_visible/press_confirm_for_probe 语义等价零动
  (click 探针 :513-515 弃图确认链断言全绿实证);字面量 4.0 升 REFRESH_CONFIRM_WINDOW_S。
②选路放弃钮(level_map_screen):_process 帧驱动倒计时+1Hz 呼吸→timer.tick+elapsed 相位;
  减动效静态半透变体语义零变化(档判据归 motion_still);真实二击路径零改。
③战斗总结结算框(main):_settlement_stop_pending 裸布尔→ArmedTimer 挂起态属性化
  (窗口 0;读=armed/写=arm/disarm——探针与冒烟直读写接缝语义零变化;main 无 _process
  无需 tick 线)。
闸:click 三种子绿(7/9191、11/7343、23/6026 帧)+冒烟 718/0+run_all 15+ui_probe 绿。
2026-10-04 07:10:00 +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.
# 武装确认计时器(迭代 13 T3/D3——P4 乙裁决:只统一计时+脉冲机制,视觉三处各自保留)。
# 收口债:三处二次确认计时机制异构(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()