mirror of
https://github.com/tanema/light_world.lua.git
synced 2024-12-24 20:24:19 +00:00
78 lines
2.6 KiB
Lua
78 lines
2.6 KiB
Lua
local List = require('examples.lib.list')
|
|
local LightWorld = require('lib')
|
|
local examples = {
|
|
{"Simple", "simple.lua"},
|
|
{"Gamera", "gamera.lua"},
|
|
{"Hump", "hump.lua"},
|
|
{"Normal Map", "normalMap.lua"},
|
|
{"Animation", "animation.lua"},
|
|
{"STI Example", "simple_tiled_impl.lua"},
|
|
{"Only Postshader Example", "postshaders.lua"},
|
|
{"Complex Example", "complex.lua"},
|
|
}
|
|
local list, smallfont, bigfont, bigball, lightWorld, lightMouse
|
|
|
|
local function start(file)
|
|
local state = love.filesystem.load("examples/" .. file)()
|
|
love.update = state.update
|
|
love.draw = state.draw
|
|
love.keyreleased = state.keyrelease
|
|
love.mousepressed = state.mousepressed
|
|
love.mousereleased = state.mousereleased
|
|
love.wheelmoved = state.wheelmoved
|
|
love.keypressed = function(k)
|
|
if k == "escape"then
|
|
if file ~= "examples_list.lua" then start("examples_list.lua") else love.event.quit() end
|
|
end
|
|
if state.keypressed ~= nil then state.keypressed(k) end
|
|
end
|
|
state.load()
|
|
end
|
|
|
|
local function load()
|
|
list = List:new(50, 100, 400, 23)
|
|
smallfont = love.graphics.newFont(12)
|
|
bigfont = love.graphics.newFont(24)
|
|
list.font = smallfont
|
|
bigball = love.graphics.newImage("examples/img/love-big-ball.png")
|
|
for n, v in ipairs(examples) do
|
|
list:add(string.format("%04d", n).." "..v[1].." ("..v[2]..")", function() start(v[2]) end)
|
|
end
|
|
love.window.setTitle("LOVE Example Browser")
|
|
lightWorld = LightWorld({ambient = {0.49, 0.49, 0.49}})
|
|
lightMouse = lightWorld:newLight(20, 20, 1, 0.49, 0.24, 500)
|
|
lightWorld.post_shader:toggleEffect("scanlines")
|
|
lightMouse:setSmooth(2)
|
|
lightWorld:newCircle(620, 200, bigball:getWidth()*0.5)
|
|
end
|
|
|
|
local function update(dt)
|
|
list:update(dt)
|
|
lightMouse:setPosition(love.mouse.getX(), love.mouse.getY())
|
|
lightWorld:update(dt)
|
|
end
|
|
|
|
local function draw()
|
|
lightWorld:draw(function()
|
|
love.graphics.setBackgroundColor(0, 0, 0)
|
|
love.graphics.setColor(0.18, 0.61, 1)
|
|
love.graphics.rectangle("fill", 0, 0, love.graphics.getWidth(), love.graphics.getHeight())
|
|
love.graphics.setColor(1, 1, 1, 1)
|
|
love.graphics.setFont(bigfont)
|
|
love.graphics.print("Examples:", 50, 30)
|
|
love.graphics.setFont(smallfont)
|
|
love.graphics.print("Browse and click on the example you \nwant to run. To return the the example \nselection screen, press escape.", 500, 80)
|
|
list:draw()
|
|
love.graphics.setColor(1, 1, 1)
|
|
love.graphics.draw(bigball, 620, 200, love.timer.getTime()/5, 1, 1, bigball:getWidth() * 0.5, bigball:getHeight() * 0.5)
|
|
end)
|
|
end
|
|
|
|
return {
|
|
start = start,
|
|
draw = draw,
|
|
update = update,
|
|
load = load,
|
|
mousepressed = function(x, y, b) list:mousepressed(x, y, b) end,
|
|
}
|