48 lines
1.2 KiB
Lua
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 = character.position.x, 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
|
|
grid[x][y] = character.id
|
|
end
|
|
end
|
|
end
|
|
|
|
--- Removes a character id from the grid
|
|
--- @param character Character
|
|
function grid:remove(character)
|
|
local centerX, centerY = character.position.x, 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
|
|
grid[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 nil
|
|
end)
|
|
end)
|
|
|
|
return setmetatable(g, grid)
|
|
end
|
|
|
|
return { new = generateGrid }
|