40 lines
1.2 KiB
Lua
40 lines
1.2 KiB
Lua
--- @class Render
|
|
--- @field shadowLayer love.Canvas
|
|
--- @field spriteLayer love.Canvas
|
|
--- @field floorLayer love.Canvas
|
|
--- @field overlayLayer love.Canvas
|
|
local render = {}
|
|
render.__index = render
|
|
|
|
function render:clear()
|
|
love.graphics.setCanvas(self.shadowLayer)
|
|
love.graphics.clear(1, 1, 1, 0)
|
|
love.graphics.setCanvas(self.spriteLayer)
|
|
love.graphics.clear()
|
|
love.graphics.setCanvas(self.floorLayer)
|
|
love.graphics.clear()
|
|
love.graphics.setCanvas(self.overlayLayer)
|
|
love.graphics.clear()
|
|
end
|
|
|
|
function render:draw()
|
|
-- пол -> тени -> спрайты -> оверлей
|
|
love.graphics.draw(self.floorLayer)
|
|
love.graphics.setBlendMode("multiply", "premultiplied")
|
|
love.graphics.draw(self.shadowLayer)
|
|
love.graphics.setBlendMode("alpha")
|
|
love.graphics.draw(self.spriteLayer)
|
|
love.graphics.draw(self.overlayLayer)
|
|
end
|
|
|
|
local function new()
|
|
return setmetatable({
|
|
shadowLayer = love.graphics.newCanvas(1280, 720),
|
|
spriteLayer = love.graphics.newCanvas(1280, 720),
|
|
floorLayer = love.graphics.newCanvas(1280, 720),
|
|
overlayLayer = love.graphics.newCanvas(1280, 720),
|
|
}, render)
|
|
end
|
|
|
|
return { new = new }
|