Neckrat d07d26680c implemented character movement & initial selector
Co-authored-by: Ivan Yuriev <ivanyr44@gmail.com>
2025-08-09 02:32:15 +03:00

48 lines
1.2 KiB
Lua

local utils = require "lib/utils"
--- @class Grid
local grid = {}
grid.__index = grid
--- Adds a character id to the grid
--- @param character Character
function grid:add(character)
local centerX, centerY = math.floor(character.position.x), math.floor(character.position.y)
local sizeX, sizeY = character.size.x, character.size.y
for y = centerY, centerY + sizeY - 1 do
for x = centerX, centerX + sizeX - 1 do
self[x][y] = character.id
end
end
end
--- Removes a character id from the grid
--- @param character Character
function grid:remove(character)
local centerX, centerY = math.floor(character.position.x), math.floor(character.position.y)
local sizeX, sizeY = character.size.x, character.size.y
for y = centerY, centerY + sizeY - 1 do
for x = centerX, centerX + sizeX - 1 do
self[x][y] = nil
end
end
end
--- Generates an empty grid
--- @param width number
--- @param height number
--- @return Grid
local function generateGrid(width, height)
local g = utils.generateList(width, function(_)
return utils.generateList(height, function(_)
return {}
end)
end)
return setmetatable(g, grid)
end
return { new = generateGrid }