Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --By xXxMoNkEyMaNxXx (Whitemambaa)
- local arg={...}
- local next=next
- local time=os.time
- local tick=os.clock
- local sqrt=math.sqrt
- local ceil=math.ceil
- local match=string.match
- local remove=table.remove
- local pull=os.pullEvent
- local setAlarm=os.setAlarm
- local paint=term.write
- local setBGC=term.setBackgroundColour
- local setPos=term.setCursorPos
- local speed=8
- local length=1.5
- local palette={colours.black,colours.grey,colours.lightGrey,colours.white}
- local size={term.getSize()}
- local maxAge=(sqrt(size[1]*size[1]+size[2]*size[2])+length)/speed
- local splashes={}
- local function draw(t)
- local radii={}
- for i=1,#splashes do
- radii[i]=(t-splashes[i].t)*speed
- end
- for x=1,size[1] do
- for y=1,size[2] do
- local prod=1
- for i=1,#splashes do
- local s=splashes[i]
- local d=(radii[i]-sqrt((s[1]-x)^2+(s[2]-y)^2))/length
- local dsq=d*d
- if dsq<1 then
- prod=prod*(1-sqrt(1-dsq))
- end
- end
- setPos(x,y)
- if prod<1 then
- setBGC(palette[ceil(#palette*(1-prod))])
- else
- setBGC(32768)
- end
- paint' '
- end
- end
- end
- local enabled=true
- while enabled do
- local event={pull()}
- local now=tick()
- for i=#splashes,1,-1 do
- if now-splashes[i].t>=maxAge then
- remove(splashes,i)
- end
- end
- if event[1]=="mouse_click" then
- if #splashes==0 then
- setAlarm((time()+0.001)%24)
- end
- splashes[#splashes+1]={event[3],event[4],t=now}
- end
- if #splashes>0 then
- draw(now)
- if event[1]=="alarm" then
- setAlarm((time()+0.001)%24)
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment