Compare commits

..

2 Commits

5 changed files with 38 additions and 14 deletions

View File

@ -1,4 +1,4 @@
local utils = require("utils") local utils = require "lib/utils"
---Generates an empty grid ---Generates an empty grid
---@param width number ---@param width number

View File

@ -1,5 +1,25 @@
local utils = require "lib/utils"
local camera = require "lib/camera"
--- @class Level
--- @field characters Character[]
--- @field camera Camera
local level = {}
level.__index = level
local function new() local function new()
return { return setmetatable({
characters = {} characters = {},
} camera = camera.new()
}, level)
end end
function level:update(dt)
utils.each(self.characters, function(el)
el:update(dt)
end)
end
return {
new = new
}

View File

@ -16,17 +16,21 @@ function P.generateList(count, generator)
return xs return xs
end end
function P.tableMap(table, fn) --- Returns the sign of a number
local tbl = {} --- @param number number
for key, value in pairs(table) do --- @return -1 | 0 | 1
tbl[key] = fn(value)
end
return tbl
end
function P.sign(number) function P.sign(number)
return (number > 0 and 1) or (number == 0 and 0) or -1 return (number > 0 and 1) or (number == 0 and 0) or -1
end end
--- Applies a side effect for each element of a table
--- @generic T
--- @param table {[any] : T}
--- @param fn fun(el: T): nil
function P.each(table, fn)
for _, value in ipairs(table) do
fn(value)
end
end
return P return P

View File

@ -2,7 +2,7 @@
require "character" require "character"
local camera = require 'camera' local camera = require 'lib/camera'
local Vec3 = require "lib/vec3" local Vec3 = require "lib/vec3"
local tree = require "lib/tree" local tree = require "lib/tree"
local AssetBundle = require "lib/asset_bundle" local AssetBundle = require "lib/asset_bundle"