42 lines
752 B
Lua
42 lines
752 B
Lua
local gc=love.graphics
|
|
local setColor=gc.setColor
|
|
local setWidth=gc.setLineWidth
|
|
local rect=gc.rectangle
|
|
|
|
local fx={}
|
|
|
|
local FXdraw={}
|
|
function FXdraw.ripple(S)
|
|
setWidth(6)
|
|
setColor(1,1,1,1-S.t)
|
|
local r=(10*S.t)^1.2
|
|
rect("line",S[1]-r,S[2]-r,S[3]+2*r,S[4]+2*r)
|
|
end
|
|
function FXdraw.shade(S)
|
|
setColor(S[1],S[2],S[3],1-S.t)
|
|
rect("fill",S[4],S[5],S[6],S[7],2)
|
|
end
|
|
|
|
local sysFX={}
|
|
function sysFX.update(dt)
|
|
for i=#fx,1,-1 do
|
|
local S=fx[i]
|
|
S.t=S.t+dt*S.rate
|
|
if S.t>=1 then
|
|
for i=i,#fx do
|
|
fx[i]=fx[i+1]
|
|
end
|
|
end
|
|
end
|
|
end
|
|
function sysFX.draw()
|
|
for i=1,#fx do
|
|
fx[i]:draw()
|
|
end
|
|
end
|
|
--0=ripple,x,y,w,h
|
|
--1=shade,r,g,b,x,y,w,h
|
|
function sysFX.new(type,duration,...)
|
|
fx[#fx+1]={draw=FXdraw[type],t=0,rate=1/duration,...}
|
|
end
|
|
return sysFX |