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 }