-- Compiled with roblox-ts v3.0.0 local clock = os.clock local FlagTimer local Builder do Builder = setmetatable({}, { __tostring = function() return "Builder" end, }) Builder.__index = Builder function Builder.new(...) local self = setmetatable({}, Builder) return self:constructor(...) or self end function Builder:constructor() self.timer_ = FlagTimer.new() self.auto_start_ = false end function Builder:Create() return FlagTimer.Builder.new() end function Builder:WithTimer(callback) callback(self.timer_) return self end function Builder:WithWaitTime(value) self.timer_.WaitTime = value return self end function Builder:WithAutoStart() self.auto_start_ = true return self end function Builder:Build() if self.auto_start_ then self.timer_:Start() end return self.timer_ end end setmetatable(Builder, { __call = function() return Builder.new() end, }) do FlagTimer = setmetatable({}, { __tostring = function() return "FlagTimer" end, }) FlagTimer.__index = FlagTimer function FlagTimer.new(...) local self = setmetatable({}, FlagTimer) return self:constructor(...) or self end function FlagTimer:constructor() self.WaitTime = 1 self.time_left_ = 0 self.current_time_ = 0 self.stopped_ = true end function FlagTimer:IsStopped() if self.stopped_ then return true end --recalculates stop; self.stopped_ = clock() - self.current_time_ >= self.time_left_ return self.stopped_ end function FlagTimer:Start(time_sec) if time_sec == nil then time_sec = -1 end if time_sec > 0 then self.WaitTime = time_sec end self.time_left_ = self.WaitTime self.current_time_ = os.clock() self.stopped_ = false end function FlagTimer:Stop() self.stopped_ = true end FlagTimer.Builder = Builder end return { FlagTimer = FlagTimer, }