---@module 'obj/Room' ---@class Room:Object ---@field area Area room area ---@field id string room id ---@field super Room ---@field main_canvas love.Canvas local Room = Object:extend() ---Instantiates room. function Room:new() self.area = Area(self) self.id = UUID() self.main_canvas = love.graphics.newCanvas(gw, gh) end ---Updates room (see [love.update()](lua://love.update)) ---@param dt number delta time function Room:update(dt) ---@diagnostic disable-next-line: undefined-field camera.smoother = Camera.smooth.damped(5) ---@diagnostic disable-next-line: param-type-mismatch camera:lockPosition(dt, gw/2, gh/2) self.area:update(dt) end ---Draws graphics (see [love.draw()](lua://love.draw)) ---**DO NOT OVERRIDE:** use Room:canvasDraw() instead function Room:draw() love.graphics.setCanvas(self.main_canvas) love.graphics.clear() camera:attach(0, 0, gw, gh) self:canvasDraw() camera:detach() if DEBUG then love.graphics.print('objects: '..#self.area.game_objects,2,gh-16) love.graphics.print('DEBUG', 2, 2) end love.graphics.setCanvas() love.graphics.setColor(255, 255, 255, 255) love.graphics.setBlendMode('alpha', 'premultiplied') love.graphics.draw(self.main_canvas, 0, 0, 0, sx, sy) love.graphics.setBlendMode('alpha') end ---Draw to the canvas function Room:canvasDraw() self.area:draw() end ---Destroys room function Room:destroy() self.area:destroy() self.area = nil end return Room