2025-08-19 20:26:57 +03:00

49 lines
1.1 KiB
Lua

local utils = require "lib.utils.utils"
--- @class CharacterGrid
--- @field __grid {string: Id|nil}
local grid = {}
grid.__index = grid
local function encode(x, y)
return tostring(x) .. ";" .. tostring(y)
end
--- Adds a character id to the grid
--- @param id Id
function grid:add(id)
local character = Tree.level.characters[id]
if not character then return end
local centerX, centerY = math.floor(character.logic.mapLogic.position.x + 0.5),
math.floor(character.logic.mapLogic.position.y + 0.5)
local sizeX, sizeY = character.logic.mapLogic.size.x, character.logic.mapLogic.size.y
for y = centerY, centerY + sizeY - 1 do
for x = centerX, centerX + sizeX - 1 do
self.__grid[encode(x, y)] = character.id
end
end
end
--- @param x integer
--- @param y integer
function grid:get(x, y)
return self.__grid[encode(x, y)]
end
--- clears the grid
function grid:reset()
self.__grid = {}
end
--- Generates an empty grid
--- @return CharacterGrid
local function new()
return setmetatable({
__grid = {}
}, grid)
end
return { new = new }