mirror of
https://github.com/BlackMATov/evolved.lua.git
synced 2025-12-14 12:10:23 +07:00
default/construct predef fragments
This commit is contained in:
@@ -273,3 +273,78 @@ do
|
||||
assert(evo.get(e2, f1) == 42 and evo.get(e2, f2) == 44)
|
||||
end
|
||||
end
|
||||
|
||||
do
|
||||
local f1, f2, f3, f4 = evo.id(), evo.id(), evo.id(), evo.id()
|
||||
evo.set(f1, evo.DEFAULT, 42)
|
||||
evo.set(f2, evo.DEFAULT, false)
|
||||
|
||||
local e = evo.id()
|
||||
|
||||
evo.set(e, f1)
|
||||
evo.set(e, f2)
|
||||
evo.set(e, f3)
|
||||
evo.set(e, f4, false)
|
||||
|
||||
assert(evo.get(e, f1) == 42)
|
||||
assert(evo.get(e, f2) == false)
|
||||
assert(evo.get(e, f3) == true)
|
||||
assert(evo.get(e, f4) == false)
|
||||
end
|
||||
|
||||
do
|
||||
local f1, f2, f3, f4, f5 = evo.id(), evo.id(), evo.id(), evo.id(), evo.id()
|
||||
evo.set(f1, evo.CONSTRUCT, function(_, a, b) return a - b end)
|
||||
evo.set(f2, evo.CONSTRUCT, function(_, c) return c end)
|
||||
evo.set(f3, evo.CONSTRUCT, function() return nil end)
|
||||
evo.set(f4, evo.CONSTRUCT, function() return false end)
|
||||
evo.set(f5, evo.CONSTRUCT, function(e) return e end)
|
||||
|
||||
local e = evo.id()
|
||||
|
||||
evo.insert(e, f1, 43, 1)
|
||||
evo.insert(e, f2, false)
|
||||
evo.insert(e, f3, 43)
|
||||
evo.insert(e, f4, 43)
|
||||
evo.insert(e, f5)
|
||||
|
||||
assert(evo.get(e, f1) == 42)
|
||||
assert(evo.get(e, f2) == false)
|
||||
assert(evo.get(e, f3) == true)
|
||||
assert(evo.get(e, f4) == false)
|
||||
assert(evo.get(e, f5) == e)
|
||||
|
||||
evo.assign(e, f1, 42, 2)
|
||||
evo.assign(e, f2, true)
|
||||
evo.assign(e, f3, 43)
|
||||
evo.assign(e, f4, 43)
|
||||
evo.assign(e, f5, 43)
|
||||
|
||||
assert(evo.get(e, f1) == 40)
|
||||
assert(evo.get(e, f2) == true)
|
||||
assert(evo.get(e, f3) == true)
|
||||
assert(evo.get(e, f4) == false)
|
||||
assert(evo.get(e, f5) == e)
|
||||
end
|
||||
|
||||
do
|
||||
local f1, f2 = evo.id(), evo.id()
|
||||
evo.set(f1, evo.DEFAULT, 42)
|
||||
evo.set(f1, evo.CONSTRUCT, function() return nil end)
|
||||
evo.set(f2, evo.DEFAULT, 42)
|
||||
evo.set(f2, evo.CONSTRUCT, function() return false end)
|
||||
|
||||
local e = evo.id()
|
||||
|
||||
evo.set(e, f1, 43)
|
||||
evo.set(e, f2, 43)
|
||||
|
||||
assert(evo.get(e, f1) == 42)
|
||||
assert(evo.get(e, f2) == false)
|
||||
|
||||
evo.set(e, f1, 43)
|
||||
evo.set(e, f2, 43)
|
||||
|
||||
assert(evo.get(e, f1) == 42)
|
||||
assert(evo.get(e, f2) == false)
|
||||
end
|
||||
|
||||
49
evolved.lua
49
evolved.lua
@@ -116,6 +116,40 @@ end
|
||||
---
|
||||
---
|
||||
|
||||
evolved.DEFAULT = __acquire_id()
|
||||
evolved.CONSTRUCT = __acquire_id()
|
||||
|
||||
---
|
||||
---
|
||||
---
|
||||
---
|
||||
---
|
||||
|
||||
---@param entity evolved.entity
|
||||
---@param fragment evolved.fragment
|
||||
---@param component evolved.component
|
||||
---@param ... any construct additional parameters
|
||||
---@return evolved.component
|
||||
local function __construct(entity, fragment, component, ...)
|
||||
local construct = evolved.get(fragment, evolved.CONSTRUCT)
|
||||
|
||||
if construct ~= nil then
|
||||
component = construct(entity, component, ...)
|
||||
end
|
||||
|
||||
if component == nil then
|
||||
component = evolved.get(fragment, evolved.DEFAULT)
|
||||
end
|
||||
|
||||
return component == nil and true or component
|
||||
end
|
||||
|
||||
---
|
||||
---
|
||||
---
|
||||
---
|
||||
---
|
||||
|
||||
---@param fragment evolved.fragment
|
||||
---@return evolved.chunk
|
||||
---@nodiscard
|
||||
@@ -515,7 +549,10 @@ end
|
||||
---@param entity evolved.entity
|
||||
---@param fragment evolved.fragment
|
||||
---@param component evolved.component
|
||||
function evolved.set(entity, fragment, component)
|
||||
---@param ... any construct additional parameters
|
||||
function evolved.set(entity, fragment, component, ...)
|
||||
component = __construct(entity, fragment, component, ...)
|
||||
|
||||
if not __alive_id(entity) then
|
||||
return false
|
||||
end
|
||||
@@ -582,8 +619,11 @@ end
|
||||
---@param entity evolved.entity
|
||||
---@param fragment evolved.fragment
|
||||
---@param component evolved.component
|
||||
---@param ... any construct additional parameters
|
||||
---@return boolean is_assigned
|
||||
function evolved.assign(entity, fragment, component)
|
||||
function evolved.assign(entity, fragment, component, ...)
|
||||
component = __construct(entity, fragment, component, ...)
|
||||
|
||||
if not __alive_id(entity) then
|
||||
return false
|
||||
end
|
||||
@@ -611,8 +651,11 @@ end
|
||||
---@param entity evolved.entity
|
||||
---@param fragment evolved.fragment
|
||||
---@param component evolved.component
|
||||
---@param ... any construct additional parameters
|
||||
---@return boolean is_inserted
|
||||
function evolved.insert(entity, fragment, component)
|
||||
function evolved.insert(entity, fragment, component, ...)
|
||||
component = __construct(entity, fragment, component, ...)
|
||||
|
||||
if not __alive_id(entity) then
|
||||
return false
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user