;; LGPL3+ AlexJGriffith ;; Execute a callback every n seconds ;; Example: ;; (local {:new new-every} (require :every)) ;; (local every (new-every love.timer.getTime)) ;; (every 2 #(print "Hello World!")) ;; (fn love.update [_dt] (every:iter)) (local M {}) (fn M.iter [self] (local clock (self.clock)) (each [index [end period callback] (ipairs self)] (when (> clock end) (callback) (tset self index 1 (+ clock period))))) (fn M.add [self period callback] (table.insert self [(+ (self.clock) period) period callback])) (fn new [clock] (setmetatable {: clock} {:__index M :__call M.add})) {: new}