local utils = require "lib/utils" --- @class Level --- @field size Vec3 --- @field characters Character[] --- @field characterGrid CharacterGrid --- @field selector Selector --- @field camera Camera local level = {} level.__index = level local function new() local size = Vec3 { 30, 30 } -- magic numbers for testing purposes only return setmetatable({ size = size, characters = {}, characterGrid = (require "lib/grid").new(), selector = (require "lib/selector").new(), camera = (require "lib/camera").new() }, level) end function level:update(dt) self.characterGrid:reset() utils.each(self.characters, function(el) el:update(dt) end) self.camera:update(dt) self.selector:update(dt) end function level:draw() utils.each(self.characters, function(el) el:draw() end) end return { new = new }