-- setup modules={} function _init() _doall("init") end function _update60() _doall("update") end function _draw() cls(0) _doall("draw") end function _doall(x) for n in all{x.."0",x,x.."2",x.."3"} do for mod in all(modules) do local f=mod[n] if (f) f(mod) end end end function klass() local k={} k.__index=k function k:new(...) local n={} setmetatable(n,k) n:init(...) return n end return k end function alives(tbl) local tbl2={} for i in all(tbl) do if (not i.dead) add(tbl2,i) end return tbl2 end function trunc4(x) if (x < 0) return -trunc4(-x) return x\0.25/4 end function stepstep(by,x0,x1,f) local x=x0 if (x==x1) return if x0>x1 then return stepstep(by,-x0,-x1,function(x) return f(-x) end) end x=x\by*by while true do x+=by if (x>=x1) f(x1) break if (not f(x)) break end end function lerp(x,x0,x1) return x0+x*(x1-x0) end function gsv(s) local ret=split(s,"\n") for i,v in ipairs(ret) do ret[i] = type(v) == "string" and split(v,"`") or {v} end return ret end function shuf(t) for i=#t,1,-1 do local j=flr(rnd(i))+1 t[i],t[j]=t[j],t[i] end end