From c50b740e3c68c7e6eae280683b7edc9d3054fa7b Mon Sep 17 00:00:00 2001 From: BlackMATov Date: Sat, 28 Dec 2024 09:51:44 +0700 Subject: [PATCH] simplify set/assign/insert signatures --- README.md | 6 +++--- evolved.lua | 62 +++++++++++++++++++++++++++-------------------------- 2 files changed, 35 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index 475874b..f5d12a1 100644 --- a/README.md +++ b/README.md @@ -14,9 +14,9 @@ has :: entity, fragment -> boolean has_all :: entity, fragment... -> boolean has_any :: entity, fragment... -> boolean -set :: entity, fragment, component, any... -> boolean, boolean -assign :: entity, fragment, component, any... -> boolean, boolean -insert :: entity, fragment, component, any... -> boolean, boolean +set :: entity, fragment, any... -> boolean, boolean +assign :: entity, fragment, any... -> boolean, boolean +insert :: entity, fragment, any... -> boolean, boolean remove :: entity, fragment... -> boolean, boolean clear :: entity -> boolean, boolean diff --git a/evolved.lua b/evolved.lua index c5e5cd1..b88b08a 100644 --- a/evolved.lua +++ b/evolved.lua @@ -154,13 +154,21 @@ evolved.EXCLUDE_LIST = __acquire_id() ---@param entity evolved.entity ---@param fragment evolved.fragment ----@param component evolved.component ----@param ... any construct additional parameters +---@param ... any component arguments ---@return evolved.component -local function __construct(entity, fragment, component, ...) +local function __construct(entity, fragment, ...) local default, construct = evolved.get(fragment, evolved.DEFAULT, evolved.CONSTRUCT) - if construct ~= nil then component = construct(entity, fragment, component, ...) end - if component == nil then component = default end + + local component = ... + + if construct ~= nil then + component = construct(entity, fragment, ...) + end + + if component == nil then + component = default + end + return component == nil and true or component end @@ -622,10 +630,9 @@ end ---@param entity evolved.entity ---@param fragment evolved.fragment ----@param component evolved.component ----@param ... any construct additional parameters -local function __defer_set(entity, fragment, component, ...) - component = __construct(entity, fragment, component, ...) +---@param ... any component arguments +local function __defer_set(entity, fragment, ...) + local component = __construct(entity, fragment, ...) local bytes = __defer_bytecode local length = __defer_bytecode_length @@ -640,10 +647,9 @@ end ---@param entity evolved.entity ---@param fragment evolved.fragment ----@param component evolved.component ----@param ... any construct additional parameters -local function __defer_assign(entity, fragment, component, ...) - component = __construct(entity, fragment, component, ...) +---@param ... any component arguments +local function __defer_assign(entity, fragment, ...) + local component = __construct(entity, fragment, ...) local bytes = __defer_bytecode local length = __defer_bytecode_length @@ -658,10 +664,9 @@ end ---@param entity evolved.entity ---@param fragment evolved.fragment ----@param component evolved.component ----@param ... any construct additional parameters -local function __defer_insert(entity, fragment, component, ...) - component = __construct(entity, fragment, component, ...) +---@param ... any component arguments +local function __defer_insert(entity, fragment, ...) + local component = __construct(entity, fragment, ...) local bytes = __defer_bytecode local length = __defer_bytecode_length @@ -723,7 +728,7 @@ end --- ---@param count? integer ----@return evolved.id ... +---@return evolved.id ... ids ---@nodiscard function evolved.id(count) count = count or 1 @@ -855,12 +860,11 @@ end ---@param entity evolved.entity ---@param fragment evolved.fragment ----@param component evolved.component ----@param ... any construct additional parameters +---@param ... any component arguments ---@return boolean is_set ---@return boolean is_deferred -function evolved.set(entity, fragment, component, ...) - component = __construct(entity, fragment, component, ...) +function evolved.set(entity, fragment, ...) + local component = __construct(entity, fragment, ...) if __defer_depth > 0 then __defer_set(entity, fragment, component) @@ -915,12 +919,11 @@ end ---@param entity evolved.entity ---@param fragment evolved.fragment ----@param component evolved.component ----@param ... any construct additional parameters +---@param ... any component arguments ---@return boolean is_assigned ---@return boolean is_deferred -function evolved.assign(entity, fragment, component, ...) - component = __construct(entity, fragment, component, ...) +function evolved.assign(entity, fragment, ...) + local component = __construct(entity, fragment, ...) if __defer_depth > 0 then __defer_assign(entity, fragment, component) @@ -949,12 +952,11 @@ end ---@param entity evolved.entity ---@param fragment evolved.fragment ----@param component evolved.component ----@param ... any construct additional parameters +---@param ... any component arguments ---@return boolean is_inserted ---@return boolean is_deferred -function evolved.insert(entity, fragment, component, ...) - component = __construct(entity, fragment, component, ...) +function evolved.insert(entity, fragment, ...) + local component = __construct(entity, fragment, ...) if __defer_depth > 0 then __defer_insert(entity, fragment, component)