2025-09-05 22:29:40 +08:00
|
|
|
class_name CooldownTimer
|
|
|
|
|
|
|
|
|
|
var cooldown: float = 100
|
|
|
|
|
var lastStart: int = 0
|
2025-10-01 08:22:37 +08:00
|
|
|
var speedScale: float = 1
|
2025-09-05 22:29:40 +08:00
|
|
|
|
2025-09-13 19:55:21 +08:00
|
|
|
func _init(cd: float = 100):
|
|
|
|
|
cooldown = cd
|
|
|
|
|
|
2026-05-04 21:34:57 +08:00
|
|
|
func centralTime() -> float:
|
2025-10-01 08:22:37 +08:00
|
|
|
return cooldown / speedScale
|
2026-05-04 21:34:57 +08:00
|
|
|
func isCooldowned() -> bool:
|
2025-10-01 08:22:37 +08:00
|
|
|
return timeSinceLastStart() >= centralTime()
|
2026-05-04 21:34:57 +08:00
|
|
|
func start() -> bool:
|
2025-09-05 22:29:40 +08:00
|
|
|
var state = isCooldowned()
|
|
|
|
|
if state:
|
|
|
|
|
lastStart = WorldManager.getTime()
|
|
|
|
|
return state
|
2026-05-04 21:34:57 +08:00
|
|
|
func timeSinceLastStart() -> float:
|
2025-09-06 15:04:32 +08:00
|
|
|
return WorldManager.getTime() - lastStart
|
2026-05-04 21:34:57 +08:00
|
|
|
func percent() -> float:
|
2026-01-24 09:43:25 +08:00
|
|
|
return timeSinceLastStart() / centralTime()
|