88 lines
2 KiB
Lua
88 lines
2 KiB
Lua
-- title: Doom Fire
|
|
-- author: Fabien Freling
|
|
-- desc: short description
|
|
-- script: lua
|
|
|
|
t=0
|
|
width=240
|
|
height=136
|
|
base={}
|
|
-- init with black
|
|
for i=1,width*height do
|
|
base[i] = 0
|
|
end
|
|
for i=width*(height-1),width*height do
|
|
base[i] = 15
|
|
end
|
|
cls(0)
|
|
|
|
function display()
|
|
for y=1,height do
|
|
for x=1,width do
|
|
pix(x, y, base[x+y*width])
|
|
end
|
|
end
|
|
end
|
|
|
|
function dofire()
|
|
for x=1,width do
|
|
for y=0,height-2 do
|
|
spreadfire(x, y)
|
|
end
|
|
end
|
|
end
|
|
|
|
function spreadfire(x, y)
|
|
local rand = math.random(0, 3) -- [0,3]
|
|
local delta = rand & 1
|
|
local side = -rand+1 -- [-2,1]
|
|
if x+side < 1 then side=0 end
|
|
if x+side > width then side=0 end
|
|
local dst=(x+side) + y*width
|
|
local src=x + (y+1)*width
|
|
base[dst] = base[src] - delta
|
|
if base[dst] < 0 then base[dst]=0 end
|
|
end
|
|
|
|
function TIC()
|
|
display()
|
|
-- slow down fire
|
|
if t % 2 == 0 then
|
|
dofire()
|
|
end
|
|
t=t+1
|
|
|
|
-- put off fire after 3 seconds
|
|
if t == 3*60 then
|
|
for i=width*(height-1),width*height do
|
|
base[i] = 0
|
|
end
|
|
end
|
|
end
|
|
|
|
-- <TILES>
|
|
-- 001:efffffffff222222f8888888f8222222f8fffffff8ff0ffff8ff0ffff8ff0fff
|
|
-- 002:fffffeee2222ffee88880fee22280feefff80fff0ff80f0f0ff80f0f0ff80f0f
|
|
-- 003:efffffffff222222f8888888f8222222f8fffffff8fffffff8ff0ffff8ff0fff
|
|
-- 004:fffffeee2222ffee88880fee22280feefff80ffffff80f0f0ff80f0f0ff80f0f
|
|
-- 017:f8fffffff8888888f888f888f8888ffff8888888f2222222ff000fffefffffef
|
|
-- 018:fff800ff88880ffef8880fee88880fee88880fee2222ffee000ffeeeffffeeee
|
|
-- 019:f8fffffff8888888f888f888f8888ffff8888888f2222222ff000fffefffffef
|
|
-- 020:fff800ff88880ffef8880fee88880fee88880fee2222ffee000ffeeeffffeeee
|
|
-- </TILES>
|
|
|
|
-- <WAVES>
|
|
-- 000:00000000ffffffff00000000ffffffff
|
|
-- 001:0123456789abcdeffedcba9876543210
|
|
-- 002:0123456789abcdef0123456789abcdef
|
|
-- </WAVES>
|
|
|
|
-- <SFX>
|
|
-- 000:000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000304000000000
|
|
-- </SFX>
|
|
|
|
-- <PALETTE>
|
|
-- 000:140c1c4424345d403c794a4eb23030d62424fa0000e6690cee6d10d2a12cceaa40caa13cd2aa40e6c271dad45effffff
|
|
-- </PALETTE>
|
|
|