diff --git a/README.md b/README.md index 1413111..1969593 100644 --- a/README.md +++ b/README.md @@ -31,8 +31,8 @@ registry.destroy -> entity -> () registry.get -> entity -> entity -> (any) registry.get_or -> entity -> entity -> any -> (any) registry.has -> entity -> entity -> (boolean) -registry.has_all -> entity -> entity -> entity... -> (boolean) -registry.has_any -> entity -> entity -> entity... -> (boolean) +registry.has_all -> entity -> entity... -> (boolean) +registry.has_any -> entity -> entity... -> (boolean) registry.assign -> entity -> entity -> any -> () registry.insert -> entity -> entity -> any -> () registry.remove -> entity -> entity -> () @@ -52,8 +52,8 @@ entity:destroy -> () entity:get -> entity -> (any) entity:get_or -> entity -> any -> (any) entity:has -> entity -> (boolean) -entity:has_all -> entity -> entity... -> (boolean) -entity:has_any -> entity -> entity... -> (boolean) +entity:has_all -> entity... -> (boolean) +entity:has_any -> entity... -> (boolean) entity:assign -> entity -> any -> () entity:insert -> entity -> any -> () entity:remove -> entity -> () diff --git a/evolved/registry.lua b/evolved/registry.lua index 5164a81..7bef438 100644 --- a/evolved/registry.lua +++ b/evolved/registry.lua @@ -107,17 +107,12 @@ local function __chunk_has_fragment(chunk, fragment) end ---@param chunk evolved.chunk ----@param fragment evolved.entity ----@param ... evolved.entity +---@param ... evolved.entity fragments ---@return boolean ---@nodiscard -local function __chunk_has_all_fragments(chunk, fragment, ...) +local function __chunk_has_all_fragments(chunk, ...) local components = chunk.__components - if components[fragment] == nil then - return false - end - for i = 1, select('#', ...) do if components[select(i, ...)] == nil then return false @@ -128,17 +123,12 @@ local function __chunk_has_all_fragments(chunk, fragment, ...) end ---@param chunk evolved.chunk ----@param fragment evolved.entity ----@param ... evolved.entity +---@param ... evolved.entity fragments ---@return boolean ---@nodiscard -local function __chunk_has_any_fragments(chunk, fragment, ...) +local function __chunk_has_any_fragments(chunk, ...) local components = chunk.__components - if components[fragment] ~= nil then - return true - end - for i = 1, select('#', ...) do if components[select(i, ...)] ~= nil then return true @@ -348,21 +338,21 @@ function registry.has(entity, fragment) end ---@param entity evolved.entity ----@param fragment evolved.entity ----@param ... evolved.entity +---@param ... evolved.entity fragments ---@return boolean ---@nodiscard -function registry.has_all(entity, fragment, ...) - return entity.__chunk ~= nil and __chunk_has_all_fragments(entity.__chunk, fragment, ...) +function registry.has_all(entity, ...) + if entity.__chunk == nil then return select('#', ...) == 0 end + return __chunk_has_all_fragments(entity.__chunk, ...) end ---@param entity evolved.entity ----@param fragment evolved.entity ----@param ... evolved.entity +---@param ... evolved.entity fragments ---@return boolean ---@nodiscard -function registry.has_any(entity, fragment, ...) - return entity.__chunk ~= nil and __chunk_has_any_fragments(entity.__chunk, fragment, ...) +function registry.has_any(entity, ...) + if entity.__chunk == nil then return false end + return __chunk_has_any_fragments(entity.__chunk, ...) end ---@param entity evolved.entity