Advertisement
Pinkishu

Untitled

Mar 19th, 2014
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.52 KB | None | 0 0
  1. timer = {}
  2. timer.timers = {}
  3. local _timer = {}
  4.  
  5. function timer.new(name,time,callback,repeating)
  6.     local t = {}
  7.     repeating = repeating or false
  8.     t.name = name
  9.     t.time = time
  10.     t.passed = 0
  11.     t.callback = callback
  12.     t.repeating = repeating
  13.     t.running = false
  14.     setmetatable(t,{__index=_timer})
  15.     return t
  16. end
  17.  
  18. function timer.add(timerObj)
  19.     timer.timers[timerObj.name] = timerObj
  20. end
  21.  
  22. function timer.remove(timerName)
  23.     timer.timers[timerName] = nil
  24. end
  25.  
  26. function timer.get(timerName)
  27.     return timer.timers[timerName]
  28. end
  29.  
  30. function timer.update(dt)
  31.     local ticked = {}
  32.     for k,v in pairs(timer.timers) do
  33.         if(v.running) then if(v:update(dt)) then ticked[v.name]=true end end
  34.     end
  35.     return ticked
  36. end
  37.  
  38. function _timer:start()
  39.     self.passed = 0
  40.     self.running = true
  41. end
  42.  
  43. function _timer:pause()
  44.     self.running = false
  45. end
  46.  
  47. function _timer:resume()
  48.     self.running = true
  49. end
  50.  
  51. function _timer:stop()
  52.     self.passed = 0
  53.     self.running = false
  54. end
  55.  
  56. function _timer:set(val)
  57.     self.passed = val
  58. end
  59.  
  60. function _timer:setCap(val,reset)
  61.     self.time = val
  62.     if(reset) then self.passed = 0 end
  63. end
  64.  
  65. function _timer:getLeft()
  66.     return self.time-self.passed
  67. end
  68.  
  69. function _timer:isRunning()
  70.     return self.running
  71. end
  72.  
  73. function _timer:update(dt)
  74.     self.passed = self.passed + dt
  75.     local tick = false
  76.     if(self.passed >= self.time) then
  77.         tick = true
  78.         if(self.callback) then self.callback() end
  79.         self.passed = self.passed - self.time
  80.         if(not self.repeating) then self.running = false end
  81.     end
  82.     return tick
  83. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement