80 lines
1.1 KiB
Lua
80 lines
1.1 KiB
Lua
-- 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 csv(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 |