## TimeManager — 时间缩放与 GameTick 计数器（Autoload: TimeManager）
## 权威来源：implementation_plan.md §2.1 Layer-0
##
## - time_scale: 全局时间缩放（慢动作 / 冻结时间 Core 效果）
## - game_tick:  物理帧计数器（每 _physics_process 递增 1）— 不受 time_scale 影响
extends Node

var time_scale: float = 1.0
var game_tick:  int   = 0

func _ready() -> void:
	process_mode = Node.PROCESS_MODE_ALWAYS  # 暂停时仍持续计数

func _physics_process(_delta: float) -> void:
	game_tick += 1
	Engine.time_scale = time_scale

## 返回当前帧缩放后 delta（供战斗系统使用）
func scaled_delta(raw_delta: float) -> float:
	return raw_delta * time_scale

## 设置时间缩放（clamp 防止异常値）
func set_time_scale(scale: float) -> void:
	time_scale = clamp(scale, 0.0, 10.0)

## 恢复正常速度
func reset_time_scale() -> void:
	time_scale = 1.0
	Engine.time_scale = 1.0

## 忽略帧计数器（关卡重置）
func reset() -> void:
	game_tick = 0
	reset_time_scale()
