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 }