123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- -- title: atmos
- -- author: pixelbath
- -- desc: some atmospheric-type particle effects
- -- PARTICLE/VFX STUFF
- particletype = 'rain' -- snow|rain|stars
- particles = {}
- local starcolors = { 9, 10, 11, 12}
- t = 0
- function particleinit(numparticles)
- particles = {}
- if particletype == 'stars' then
- for i = 0, numparticles do
- table.insert(particles, {
- x = math.random() * 240,
- y = math.random() * 136,
- twinkle = math.random() > 0.49, -- randomly pick true/false
- color = starcolors[math.random(#starcolors)],
- t = 0,
- vel = 0,
- })
- end
- end
- if particletype == 'rain' or particletype == 'snow' then
- for i = 0, numparticles do
- table.insert(particles, {
- x = math.random() * 240,
- y = math.random() * 136,
- lastx = 0,
- lasty = -3,
- t = 0,
- vel = (math.random() * 3) + 1,
- })
- end
- end
- end
- function particleupdate()
- if particletype == 'stars' then
- for i = 1,#particles do
- local p = particles[i]
- if not p.twinkle then goto continueTwinkle end
- ::continueTwinkle::
- if t % 15 == 0 and math.random() > 0.1 then
- p.color = starcolors[math.random(#starcolors)]
- end
- end
- end
- if particletype == 'rain' then
- for i = 1,#particles do
- local p = particles[i]
- if p.lasty and p.lasty > 136 then
- p.y = 0
- p.lasty = 0
- p.color = 9
- p.x = math.random() * 240
- end
- p.lasty = p.y
- p.lastx = p.x
- p.y = p.y + p.vel
- end
- end
-
- if particletype == 'snow' then
- for i = 1,#particles do
- local p = particles[i]
- if p.y and p.y > 136 then
- p.y = 0
- p.lasty = 0
- p.color = 12
- p.x = math.random() * 240
- end
- p.x = p.x - (math.random() - 0.4)
- p.y = p.y + p.vel
- end
- end
- end
- function particledraw()
- if particletype == 'rain' then
- for i = 1,#particles do
- local p = particles[i]
- line(p.x, p.y, p.lastx, p.lasty, p.color)
- end
- else
- for i = 1,#particles do
- local p = particles[i]
- pix(p.x, p.y, p.color)
- end
- end
- end
- particleinit(100)
- function TIC()
- if btnp(4) then
- particletype='rain'
- particleinit(100)
- end
- if btnp(5) then
- particletype='stars'
- particleinit(80)
- end
- if btnp(6) then
- particletype='snow'
- particleinit(100)
- end
- cls(0)
- particleupdate()
- particledraw()
- t = t + 1
- end
- -- <PALETTE>
- -- 000:1a1c2c5d275db13e53ef7d57ffcd75a7f07038b76425717929366f3b5dc941a6f673eff7f4f4f494b0c2566c86333c57
- -- </PALETTE>
|