-fixed screen flickering -fixed menubar (now works as intended) -reworked sliders (behaviour more like scrollbars) -visual fix to dropdowns
75 lines
1.9 KiB
Lua
75 lines
1.9 KiB
Lua
local function Timer(name)
|
|
local objectType = "Timer"
|
|
|
|
local timer = 0
|
|
local savedRepeats = 0
|
|
local repeats = 0
|
|
local timerObj
|
|
local eventSystem = BasaltEvents()
|
|
local timerIsActive = false
|
|
|
|
local object = {
|
|
name = name,
|
|
getType = function(self)
|
|
return objectType
|
|
end;
|
|
|
|
getZIndex = function(self)
|
|
return 1
|
|
end;
|
|
|
|
getName = function(self)
|
|
return self.name
|
|
end;
|
|
|
|
setTime = function(self, _timer, _repeats)
|
|
timer = _timer or 0
|
|
savedRepeats = _repeats or 1
|
|
return self
|
|
end;
|
|
|
|
start = function(self)
|
|
if(timerIsActive)then
|
|
os.cancelTimer(timerObj)
|
|
end
|
|
repeats = savedRepeats
|
|
timerObj = os.startTimer(timer)
|
|
timerIsActive = true
|
|
return self
|
|
end;
|
|
|
|
isActive = function(self)
|
|
return timerIsActive
|
|
end;
|
|
|
|
cancel = function(self)
|
|
if (timerObj ~= nil) then
|
|
os.cancelTimer(timerObj)
|
|
end
|
|
timerIsActive = false
|
|
return self
|
|
end;
|
|
|
|
onCall = function(self, func)
|
|
eventSystem:registerEvent("timed_event", func)
|
|
return self
|
|
end;
|
|
|
|
eventHandler = function(self, event, tObj)
|
|
if event == "timer" and tObj == timerObj and timerIsActive then
|
|
eventSystem:sendEvent("timed_event", self)
|
|
if (repeats >= 1) then
|
|
repeats = repeats - 1
|
|
if (repeats >= 1) then
|
|
timerObj = os.startTimer(timer)
|
|
end
|
|
elseif (repeats == -1) then
|
|
timerObj = os.startTimer(timer)
|
|
end
|
|
end
|
|
end;
|
|
}
|
|
object.__index = object
|
|
|
|
return object
|
|
end |