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
|
|
|
|
|
|
2025-10-01 08:22:37 +08:00
|
|
|
func centralTime():
|
|
|
|
|
return cooldown / speedScale
|
2025-09-05 22:29:40 +08:00
|
|
|
func isCooldowned():
|
2025-10-01 08:22:37 +08:00
|
|
|
return timeSinceLastStart() >= centralTime()
|
2025-09-06 07:40:21 +08:00
|
|
|
func start():
|
2025-09-05 22:29:40 +08:00
|
|
|
var state = isCooldowned()
|
|
|
|
|
if state:
|
|
|
|
|
lastStart = WorldManager.getTime()
|
|
|
|
|
return state
|
2025-09-06 15:04:32 +08:00
|
|
|
func timeSinceLastStart():
|
|
|
|
|
return WorldManager.getTime() - lastStart
|