-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmodule.lua
More file actions
102 lines (83 loc) · 2.64 KB
/
module.lua
File metadata and controls
102 lines (83 loc) · 2.64 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
--[[
Author:
ZeFreestyle
--]]
local Timer = {}
Timer.__index = Timer
local Signal = require(script.Signal)
function Timer.new(second:number)
if not second or not typeof(second) == "number" then second = 0 end
local self = setmetatable({}, Timer)
self.Time = second
self.BaseTime = second
self.IsPlaying = false
self.SecondMultiplier = 1
self.SpeedTime = 1
self.TimeChanged = Signal.new()
function self:Play()
if not self.IsPlaying then
self.IsPlaying = true
self.Time = self.BaseTime
spawn(function()
while self.IsPlaying and self.Time > 0 do
self.Time = self.Time - self.SecondMultiplier
self.TimeChanged:Fire(self.Time)
wait(self.SpeedTime)
end
end)
else
warn(debug.traceback("Timer is already playing."))
end
end
function self:Pause()
if self.IsPlaying then
self.IsPlaying = false
else
warn(debug.traceback("Timer is already paused"))
end
end
function self:Resume()
if self.Time == 0 then
warn(debug.traceback("Can't resume the Timer because the timer has ended."))
else
if self.IsPlaying == false then
self.IsPlaying = true
spawn(function()
while self.IsPlaying and self.Time > 0 do
self.Time = self.Time - self.SecondMultiplier
self.TimeChanged:Fire(self.Time)
wait(self.SpeedTime)
end
end)
else
warn(debug.traceback("Timer is already playing."))
end
end
end
function self:AddTime(secondsToAdd:number)
if not secondsToAdd then error(debug.traceback("Missing 1 arguments to play the function.")) end
if not typeof(secondsToAdd) == "number" then error(debug.traceback("The secondsToAdd arguments must be a number")) end
self.Time = self.Time + secondsToAdd
end
function self:SkipTime(secondsToSkip:number)
if not secondsToSkip then error(debug.traceback("Missing 1 arguments to play the function.")) end
if not typeof(secondsToSkip) == "number" then error(debug.traceback("The secondsToSkip arguments must be a number")) end
self.Timer = self.Timer - secondsToSkip
end
function self:SetSecondMultiplier(newMultiplier:number)
if not newMultiplier then newMultiplier = 1 end
if not typeof(newMultiplier) == "number" then error(debug.traceback("The newMultiplier arguments must be a number")) end
self.SecondMultiplier = newMultiplier
end
function self:SetSpeedTime(newMultiplier:number)
if not newMultiplier then newMultiplier = 1 end
if not typeof(newMultiplier) == "number" then error(debug.traceback("The newMultiplier arguments must be a number")) end
self.SpeedTime = newMultiplier
end
function self:Stop()
self.IsPlaying = false
self.Timer = self.BaseTime
end
return self
end
return Timer