mirror of
https://github.com/BlackMATov/evolved.lua.git
synced 2025-12-13 11:38:15 +07:00
608 lines
20 KiB
Lua
608 lines
20 KiB
Lua
local evo = require 'evolved'
|
|
|
|
do
|
|
local entity_list
|
|
|
|
do
|
|
entity_list = evo.multi_spawn(0)
|
|
assert(entity_list and #entity_list == 0)
|
|
|
|
entity_list = evo.multi_spawn(0, {})
|
|
assert(entity_list and #entity_list == 0)
|
|
end
|
|
|
|
do
|
|
entity_list = evo.multi_spawn(-1)
|
|
assert(entity_list and #entity_list == 0)
|
|
|
|
entity_list = evo.multi_spawn(-1, {})
|
|
assert(entity_list and #entity_list == 0)
|
|
end
|
|
|
|
do
|
|
entity_list = evo.builder():multi_spawn(0)
|
|
assert(entity_list and #entity_list == 0)
|
|
end
|
|
|
|
do
|
|
entity_list = evo.builder():multi_spawn(-1)
|
|
assert(entity_list and #entity_list == 0)
|
|
end
|
|
end
|
|
|
|
do
|
|
local entity_list
|
|
|
|
do
|
|
entity_list = evo.multi_spawn(1)
|
|
assert(entity_list and #entity_list == 1)
|
|
assert(entity_list[1] and evo.empty(entity_list[1]))
|
|
assert(not entity_list[2])
|
|
|
|
entity_list = evo.multi_spawn(1, {})
|
|
assert(entity_list and #entity_list == 1)
|
|
assert(entity_list[1] and evo.empty(entity_list[1]))
|
|
assert(not entity_list[2])
|
|
end
|
|
|
|
do
|
|
entity_list = evo.multi_spawn(2)
|
|
assert(entity_list and #entity_list == 2)
|
|
assert(entity_list[1] and evo.empty(entity_list[1]))
|
|
assert(entity_list[2] and evo.empty(entity_list[2]))
|
|
assert(not entity_list[3])
|
|
|
|
entity_list = evo.multi_spawn(2, {})
|
|
assert(entity_list and #entity_list == 2)
|
|
assert(entity_list[1] and evo.empty(entity_list[1]))
|
|
assert(entity_list[2] and evo.empty(entity_list[2]))
|
|
assert(not entity_list[3])
|
|
end
|
|
|
|
do
|
|
entity_list = evo.builder():multi_spawn(1)
|
|
assert(entity_list and #entity_list == 1)
|
|
assert(entity_list[1] and evo.empty(entity_list[1]))
|
|
assert(not entity_list[2])
|
|
end
|
|
|
|
do
|
|
entity_list = evo.builder():multi_spawn(2)
|
|
assert(entity_list and #entity_list == 2)
|
|
assert(entity_list[1] and evo.empty(entity_list[1]))
|
|
assert(entity_list[2] and evo.empty(entity_list[2]))
|
|
assert(not entity_list[3])
|
|
end
|
|
end
|
|
|
|
do
|
|
local entity_list
|
|
|
|
local prefab = evo.id()
|
|
|
|
do
|
|
entity_list = evo.multi_clone(0, prefab)
|
|
assert(entity_list and #entity_list == 0)
|
|
|
|
entity_list = evo.multi_clone(0, prefab, {})
|
|
assert(entity_list and #entity_list == 0)
|
|
end
|
|
|
|
do
|
|
entity_list = evo.multi_clone(-1, prefab)
|
|
assert(entity_list and #entity_list == 0)
|
|
|
|
entity_list = evo.multi_clone(-1, prefab, {})
|
|
assert(entity_list and #entity_list == 0)
|
|
end
|
|
|
|
do
|
|
entity_list = evo.builder():multi_clone(0, prefab)
|
|
assert(entity_list and #entity_list == 0)
|
|
end
|
|
|
|
do
|
|
entity_list = evo.builder():multi_clone(-1, prefab)
|
|
assert(entity_list and #entity_list == 0)
|
|
end
|
|
end
|
|
|
|
do
|
|
local entity_list
|
|
|
|
local prefab = evo.id()
|
|
|
|
do
|
|
entity_list = evo.multi_clone(1, prefab)
|
|
assert(entity_list and #entity_list == 1)
|
|
assert(entity_list[1] and evo.empty(entity_list[1]))
|
|
assert(not entity_list[2])
|
|
|
|
entity_list = evo.multi_clone(1, prefab, {})
|
|
assert(entity_list and #entity_list == 1)
|
|
assert(entity_list[1] and evo.empty(entity_list[1]))
|
|
assert(not entity_list[2])
|
|
end
|
|
|
|
do
|
|
entity_list = evo.multi_clone(2, prefab)
|
|
assert(entity_list and #entity_list == 2)
|
|
assert(entity_list[1] and evo.empty(entity_list[1]))
|
|
assert(entity_list[2] and evo.empty(entity_list[2]))
|
|
assert(not entity_list[3])
|
|
|
|
entity_list = evo.multi_clone(2, prefab, {})
|
|
assert(entity_list and #entity_list == 2)
|
|
assert(entity_list[1] and evo.empty(entity_list[1]))
|
|
assert(entity_list[2] and evo.empty(entity_list[2]))
|
|
assert(not entity_list[3])
|
|
end
|
|
|
|
do
|
|
entity_list = evo.builder():multi_clone(1, prefab)
|
|
assert(entity_list and #entity_list == 1)
|
|
assert(entity_list[1] and evo.empty(entity_list[1]))
|
|
assert(not entity_list[2])
|
|
end
|
|
|
|
do
|
|
entity_list = evo.builder():multi_clone(2, prefab)
|
|
assert(entity_list and #entity_list == 2)
|
|
assert(entity_list[1] and evo.empty(entity_list[1]))
|
|
assert(entity_list[2] and evo.empty(entity_list[2]))
|
|
assert(not entity_list[3])
|
|
end
|
|
end
|
|
|
|
do
|
|
local f1, f2 = evo.id(2)
|
|
|
|
do
|
|
local entity_list
|
|
|
|
entity_list = evo.multi_spawn(2, { [f1] = true, [f2] = 123 })
|
|
assert(entity_list and #entity_list == 2)
|
|
assert(entity_list[1] and evo.get(entity_list[1], f1) == true and evo.get(entity_list[1], f2) == 123)
|
|
assert(entity_list[2] and evo.get(entity_list[2], f1) == true and evo.get(entity_list[2], f2) == 123)
|
|
|
|
entity_list = evo.multi_spawn(2, { [f1] = false, [f2] = 456 })
|
|
assert(entity_list and #entity_list == 2)
|
|
assert(entity_list[1] and evo.get(entity_list[1], f1) == false and evo.get(entity_list[1], f2) == 456)
|
|
assert(entity_list[2] and evo.get(entity_list[2], f1) == false and evo.get(entity_list[2], f2) == 456)
|
|
end
|
|
|
|
do
|
|
local prefab = evo.builder():set(f1, true):set(f2, 123):spawn()
|
|
|
|
local entity_list
|
|
|
|
entity_list = evo.multi_clone(2, prefab)
|
|
assert(entity_list and #entity_list == 2)
|
|
assert(entity_list[1] and evo.get(entity_list[1], f1) == true and evo.get(entity_list[1], f2) == 123)
|
|
assert(entity_list[2] and evo.get(entity_list[2], f1) == true and evo.get(entity_list[2], f2) == 123)
|
|
|
|
entity_list = evo.multi_clone(2, prefab, {})
|
|
assert(entity_list and #entity_list == 2)
|
|
assert(entity_list[1] and evo.get(entity_list[1], f1) == true and evo.get(entity_list[1], f2) == 123)
|
|
assert(entity_list[2] and evo.get(entity_list[2], f1) == true and evo.get(entity_list[2], f2) == 123)
|
|
|
|
entity_list = evo.multi_clone(2, prefab, { [f1] = false, [f2] = 456 })
|
|
assert(entity_list and #entity_list == 2)
|
|
assert(entity_list[1] and evo.get(entity_list[1], f1) == false and evo.get(entity_list[1], f2) == 456)
|
|
assert(entity_list[2] and evo.get(entity_list[2], f1) == false and evo.get(entity_list[2], f2) == 456)
|
|
end
|
|
end
|
|
|
|
do
|
|
local f1, f2, f3 = evo.id(3)
|
|
|
|
do
|
|
local entity_list1, entity_list2
|
|
|
|
evo.defer()
|
|
do
|
|
entity_list1 = evo.multi_spawn(2, { [f1] = 42, [f2] = "hello", [f3] = false })
|
|
assert(entity_list1 and #entity_list1 == 2)
|
|
assert(entity_list1[1] and evo.empty(entity_list1[1]))
|
|
assert(entity_list1[2] and evo.empty(entity_list1[2]))
|
|
assert(not entity_list1[3])
|
|
|
|
entity_list2 = evo.multi_spawn(3, { [f2] = "world", [f3] = true })
|
|
assert(entity_list2 and #entity_list2 == 3)
|
|
assert(entity_list2[1] and evo.empty(entity_list2[1]))
|
|
assert(entity_list2[2] and evo.empty(entity_list2[2]))
|
|
assert(entity_list2[3] and evo.empty(entity_list2[3]))
|
|
end
|
|
evo.commit()
|
|
do
|
|
assert(entity_list1 and #entity_list1 == 2)
|
|
assert(entity_list1[1] and not evo.empty(entity_list1[1]))
|
|
assert(entity_list1[2] and not evo.empty(entity_list1[2]))
|
|
assert(not entity_list1[3])
|
|
assert(
|
|
evo.get(entity_list1[1], f1) == 42 and
|
|
evo.get(entity_list1[1], f2) == "hello" and
|
|
evo.get(entity_list1[1], f3) == false)
|
|
assert(
|
|
evo.get(entity_list1[2], f1) == 42 and
|
|
evo.get(entity_list1[2], f2) == "hello" and
|
|
evo.get(entity_list1[2], f3) == false)
|
|
|
|
assert(entity_list2 and #entity_list2 == 3)
|
|
assert(entity_list2[1] and not evo.empty(entity_list2[1]))
|
|
assert(entity_list2[2] and not evo.empty(entity_list2[2]))
|
|
assert(entity_list2[3] and not evo.empty(entity_list2[3]))
|
|
assert(not entity_list2[4])
|
|
assert(
|
|
evo.get(entity_list2[1], f1) == nil and
|
|
evo.get(entity_list2[1], f2) == "world" and
|
|
evo.get(entity_list2[1], f3) == true)
|
|
assert(
|
|
evo.get(entity_list2[2], f1) == nil and
|
|
evo.get(entity_list2[2], f2) == "world" and
|
|
evo.get(entity_list2[2], f3) == true)
|
|
assert(
|
|
evo.get(entity_list2[3], f1) == nil and
|
|
evo.get(entity_list2[3], f2) == "world" and
|
|
evo.get(entity_list2[3], f3) == true)
|
|
end
|
|
end
|
|
end
|
|
|
|
do
|
|
local f1, f2, f3 = evo.id(3)
|
|
|
|
do
|
|
local prefab = evo.builder():set(f1, false):set(f2, 123):spawn()
|
|
|
|
local entity_list1, entity_list2
|
|
|
|
evo.defer()
|
|
do
|
|
entity_list1 = evo.multi_clone(2, prefab)
|
|
assert(entity_list1 and #entity_list1 == 2)
|
|
assert(entity_list1[1] and evo.empty(entity_list1[1]))
|
|
assert(entity_list1[2] and evo.empty(entity_list1[2]))
|
|
assert(not entity_list1[3])
|
|
|
|
entity_list2 = evo.multi_clone(3, prefab, { [f2] = 456, [f3] = "world" })
|
|
assert(entity_list2 and #entity_list2 == 3)
|
|
assert(entity_list2[1] and evo.empty(entity_list2[1]))
|
|
assert(entity_list2[2] and evo.empty(entity_list2[2]))
|
|
assert(entity_list2[3] and evo.empty(entity_list2[3]))
|
|
end
|
|
evo.commit()
|
|
do
|
|
assert(entity_list1 and #entity_list1 == 2)
|
|
assert(entity_list1[1] and not evo.empty(entity_list1[1]))
|
|
assert(entity_list1[2] and not evo.empty(entity_list1[2]))
|
|
assert(not entity_list1[3])
|
|
assert(
|
|
evo.get(entity_list1[1], f1) == false and
|
|
evo.get(entity_list1[1], f2) == 123 and
|
|
evo.get(entity_list1[1], f3) == nil)
|
|
assert(
|
|
evo.get(entity_list1[2], f1) == false and
|
|
evo.get(entity_list1[2], f2) == 123 and
|
|
evo.get(entity_list1[2], f3) == nil)
|
|
|
|
assert(entity_list2 and #entity_list2 == 3)
|
|
assert(entity_list2[1] and not evo.empty(entity_list2[1]))
|
|
assert(entity_list2[2] and not evo.empty(entity_list2[2]))
|
|
assert(entity_list2[3] and not evo.empty(entity_list2[3]))
|
|
assert(not entity_list2[4])
|
|
assert(
|
|
evo.get(entity_list2[1], f1) == false and
|
|
evo.get(entity_list2[1], f2) == 456 and
|
|
evo.get(entity_list2[1], f3) == "world")
|
|
assert(
|
|
evo.get(entity_list2[2], f1) == false and
|
|
evo.get(entity_list2[2], f2) == 456 and
|
|
evo.get(entity_list2[2], f3) == "world")
|
|
assert(
|
|
evo.get(entity_list2[3], f1) == false and
|
|
evo.get(entity_list2[3], f2) == 456 and
|
|
evo.get(entity_list2[3], f3) == "world")
|
|
end
|
|
end
|
|
end
|
|
|
|
do
|
|
local f1, f2, f3 = evo.id(3)
|
|
|
|
evo.set(f1, evo.REQUIRES, { f2, f3 })
|
|
evo.set(f3, evo.TAG)
|
|
|
|
do
|
|
local entity_list, entity_count = evo.multi_spawn(2, { [f1] = 42 })
|
|
|
|
assert(entity_list and #entity_list == 2)
|
|
assert(entity_count == 2)
|
|
|
|
for i = 1, entity_count do
|
|
local e = entity_list[i]
|
|
assert(e and not evo.empty(e))
|
|
|
|
assert(evo.has(e, f1) and evo.get(e, f1) == 42)
|
|
assert(evo.has(e, f2) and evo.get(e, f2) == true)
|
|
assert(evo.has(e, f3) and evo.get(e, f3) == nil)
|
|
end
|
|
end
|
|
|
|
do
|
|
local entity_prefab = evo.builder():set(f1, 42):spawn()
|
|
|
|
local clone_list, clone_count = evo.multi_clone(2, entity_prefab)
|
|
|
|
assert(clone_list and #clone_list == 2)
|
|
assert(clone_count == 2)
|
|
|
|
for i = 1, clone_count do
|
|
local e = clone_list[i]
|
|
assert(e and not evo.empty(e))
|
|
|
|
assert(evo.has(e, f1) and evo.get(e, f1) == 42)
|
|
assert(evo.has(e, f2) and evo.get(e, f2) == true)
|
|
assert(evo.has(e, f3) and evo.get(e, f3) == nil)
|
|
end
|
|
end
|
|
|
|
do
|
|
local entity_prefab = evo.builder():set(f1, 42):spawn()
|
|
evo.remove(entity_prefab, f2, f3)
|
|
|
|
local clone_list, clone_count = evo.multi_clone(2, entity_prefab, { [f1] = 21 })
|
|
|
|
assert(clone_list and #clone_list == 2)
|
|
assert(clone_count == 2)
|
|
|
|
for i = 1, clone_count do
|
|
local e = clone_list[i]
|
|
assert(e and not evo.empty(e))
|
|
|
|
assert(evo.has(e, f1) and evo.get(e, f1) == 21)
|
|
assert(evo.has(e, f2) and evo.get(e, f2) == true)
|
|
assert(evo.has(e, f3) and evo.get(e, f3) == nil)
|
|
end
|
|
end
|
|
|
|
evo.set(f2, evo.DEFAULT, false)
|
|
|
|
do
|
|
local entity_list, entity_count = evo.multi_spawn(2, { [f1] = 42 })
|
|
|
|
assert(entity_list and #entity_list == 2)
|
|
assert(entity_count == 2)
|
|
|
|
for i = 1, entity_count do
|
|
local e = entity_list[i]
|
|
assert(e and not evo.empty(e))
|
|
|
|
assert(evo.has(e, f1) and evo.get(e, f1) == 42)
|
|
assert(evo.has(e, f2) and evo.get(e, f2) == false)
|
|
assert(evo.has(e, f3) and evo.get(e, f3) == nil)
|
|
end
|
|
end
|
|
|
|
do
|
|
local entity_prefab = evo.builder():set(f1, 42):spawn()
|
|
|
|
local clone_list, clone_count = evo.multi_clone(2, entity_prefab)
|
|
|
|
assert(clone_list and #clone_list == 2)
|
|
assert(clone_count == 2)
|
|
|
|
for i = 1, clone_count do
|
|
local e = clone_list[i]
|
|
assert(e and not evo.empty(e))
|
|
|
|
assert(evo.has(e, f1) and evo.get(e, f1) == 42)
|
|
assert(evo.has(e, f2) and evo.get(e, f2) == false)
|
|
assert(evo.has(e, f3) and evo.get(e, f3) == nil)
|
|
end
|
|
end
|
|
|
|
do
|
|
local entity_prefab = evo.builder():set(f1, 42):spawn()
|
|
evo.remove(entity_prefab, f2, f3)
|
|
|
|
local clone_list, clone_count = evo.multi_clone(2, entity_prefab, { [f1] = 21 })
|
|
|
|
assert(clone_list and #clone_list == 2)
|
|
assert(clone_count == 2)
|
|
|
|
for i = 1, clone_count do
|
|
local e = clone_list[i]
|
|
assert(e and not evo.empty(e))
|
|
|
|
assert(evo.has(e, f1) and evo.get(e, f1) == 21)
|
|
assert(evo.has(e, f2) and evo.get(e, f2) == false)
|
|
assert(evo.has(e, f3) and evo.get(e, f3) == nil)
|
|
end
|
|
end
|
|
|
|
local v_set_sum = 0
|
|
local v_insert_sum = 0
|
|
|
|
local f3_set_times = 0
|
|
local f3_insert_times = 0
|
|
|
|
evo.set(f1, evo.ON_SET, function(e, f, v)
|
|
assert(f == f1)
|
|
v_set_sum = v_set_sum + v
|
|
assert(evo.get(e, f) == v)
|
|
end)
|
|
|
|
evo.set(f1, evo.ON_INSERT, function(e, f, v)
|
|
assert(f == f1)
|
|
v_insert_sum = v_insert_sum + v
|
|
assert(evo.get(e, f) == v)
|
|
end)
|
|
|
|
evo.set(f3, evo.ON_SET, function(e, f, v)
|
|
assert(f == f3)
|
|
f3_set_times = f3_set_times + 1
|
|
assert(v == nil)
|
|
assert(evo.has(e, f))
|
|
end)
|
|
|
|
evo.set(f3, evo.ON_INSERT, function(e, f, v)
|
|
assert(f == f3)
|
|
f3_insert_times = f3_insert_times + 1
|
|
assert(v == nil)
|
|
assert(evo.has(e, f))
|
|
end)
|
|
|
|
do
|
|
local entity_list, entity_count = evo.multi_spawn(2, { [f1] = 42 })
|
|
|
|
assert(entity_list and #entity_list == 2)
|
|
assert(entity_count == 2)
|
|
|
|
for i = 1, entity_count do
|
|
local e = entity_list[i]
|
|
assert(e and not evo.empty(e))
|
|
|
|
assert(evo.has(e, f1) and evo.get(e, f1) == 42)
|
|
assert(evo.has(e, f2) and evo.get(e, f2) == false)
|
|
end
|
|
end
|
|
|
|
do
|
|
local entity_prefab = evo.builder():set(f1, 42):spawn()
|
|
|
|
local clone_list, clone_count = evo.multi_clone(2, entity_prefab)
|
|
|
|
assert(clone_list and #clone_list == 2)
|
|
assert(clone_count == 2)
|
|
|
|
for i = 1, clone_count do
|
|
local e = clone_list[i]
|
|
assert(e and not evo.empty(e))
|
|
|
|
assert(evo.has(e, f1) and evo.get(e, f1) == 42)
|
|
assert(evo.has(e, f2) and evo.get(e, f2) == false)
|
|
end
|
|
end
|
|
|
|
do
|
|
local entity_prefab = evo.builder():set(f1, 42):spawn()
|
|
evo.remove(entity_prefab, f2, f3)
|
|
|
|
local clone_list, clone_count = evo.multi_clone(2, entity_prefab, { [f1] = 21 })
|
|
|
|
assert(clone_list and #clone_list == 2)
|
|
assert(clone_count == 2)
|
|
|
|
for i = 1, clone_count do
|
|
local e = clone_list[i]
|
|
assert(e and not evo.empty(e))
|
|
|
|
assert(evo.has(e, f1) and evo.get(e, f1) == 21)
|
|
assert(evo.has(e, f2) and evo.get(e, f2) == false)
|
|
end
|
|
end
|
|
|
|
assert(v_set_sum == 42 * 6 + 21 * 2)
|
|
assert(v_insert_sum == 42 * 6 + 21 * 2)
|
|
|
|
assert(f3_set_times == 8)
|
|
assert(f3_insert_times == 8)
|
|
end
|
|
|
|
do
|
|
local function v2(x, y) return { x = x or 0, y = y or 0 } end
|
|
local function v2_clone(v) return { x = v.x, y = v.y } end
|
|
|
|
local f1, f2, f3, f4 = evo.id(4)
|
|
evo.set(f1, evo.REQUIRES, { f2, f3, f4 })
|
|
|
|
local f1_default = v2(1, 2)
|
|
local f2_default = v2(3, 4)
|
|
local f3_default = v2(10, 11)
|
|
local f4_default = v2(12, 13)
|
|
|
|
evo.set(f1, evo.DEFAULT, f1_default)
|
|
evo.set(f2, evo.DEFAULT, f2_default)
|
|
evo.set(f3, evo.DEFAULT, f3_default)
|
|
evo.set(f4, evo.DEFAULT, f4_default)
|
|
|
|
evo.set(f1, evo.DUPLICATE, v2_clone)
|
|
evo.set(f2, evo.DUPLICATE, v2_clone)
|
|
evo.set(f3, evo.DUPLICATE, v2_clone)
|
|
|
|
do
|
|
local entity_list, entity_count = evo.multi_spawn(2, { [f1] = v2(5, 6), [f2] = v2(7, 8) })
|
|
|
|
assert(entity_list and #entity_list == 2)
|
|
assert(entity_count == 2)
|
|
|
|
for i = 1, entity_count do
|
|
local e = entity_list[i]
|
|
assert(e and not evo.empty(e))
|
|
|
|
assert(evo.has(e, f1) and evo.get(e, f1) ~= f1_default)
|
|
assert(evo.get(e, f1).x == 5 and evo.get(e, f1).y == 6)
|
|
|
|
assert(evo.has(e, f2) and evo.get(e, f2) ~= f2_default)
|
|
assert(evo.get(e, f2).x == 7 and evo.get(e, f2).y == 8)
|
|
|
|
assert(evo.has(e, f3) and evo.get(e, f3) ~= f3_default)
|
|
assert(evo.get(e, f3).x == 10 and evo.get(e, f3).y == 11)
|
|
|
|
assert(evo.has(e, f4) and evo.get(e, f4) == f4_default)
|
|
end
|
|
end
|
|
|
|
do
|
|
local entity_prefab = evo.builder():set(f1, v2(5, 6)):set(f2, v2(7, 8)):spawn()
|
|
|
|
local clone_list, clone_count = evo.multi_clone(2, entity_prefab, { [f2] = f2_default })
|
|
|
|
assert(clone_list and #clone_list == 2)
|
|
assert(clone_count == 2)
|
|
|
|
for i = 1, clone_count do
|
|
local e = clone_list[i]
|
|
assert(e and not evo.empty(e))
|
|
|
|
assert(evo.has(e, f1) and evo.get(e, f1) ~= f1_default and evo.get(e, f1) ~= evo.get(entity_prefab, f1))
|
|
assert(evo.get(e, f1).x == 5 and evo.get(e, f1).y == 6)
|
|
|
|
assert(evo.has(e, f2) and evo.get(e, f2) ~= f2_default and evo.get(e, f2) ~= evo.get(entity_prefab, f2))
|
|
assert(evo.get(e, f2).x == 3 and evo.get(e, f2).y == 4)
|
|
|
|
assert(evo.has(e, f3) and evo.get(e, f3) ~= f3_default)
|
|
assert(evo.get(e, f3).x == 10 and evo.get(e, f3).y == 11)
|
|
|
|
assert(evo.has(e, f4) and evo.get(e, f4) == f4_default)
|
|
end
|
|
end
|
|
|
|
do
|
|
local entity_prefab = evo.builder():set(f1, v2(5, 6)):set(f2, v2(7, 8)):spawn()
|
|
evo.remove(entity_prefab, f2, f3, f4)
|
|
|
|
local clone_list, clone_count = evo.multi_clone(2, entity_prefab, { [f2] = f2_default })
|
|
|
|
assert(clone_list and #clone_list == 2)
|
|
assert(clone_count == 2)
|
|
|
|
for i = 1, clone_count do
|
|
local e = clone_list[i]
|
|
assert(e and not evo.empty(e))
|
|
|
|
assert(evo.has(e, f1) and evo.get(e, f1) ~= f1_default and evo.get(e, f1) ~= evo.get(entity_prefab, f1))
|
|
assert(evo.get(e, f1).x == 5 and evo.get(e, f1).y == 6)
|
|
|
|
assert(evo.has(e, f2) and evo.get(e, f2) ~= f2_default and evo.get(e, f2) ~= evo.get(entity_prefab, f2))
|
|
assert(evo.get(e, f2).x == 3 and evo.get(e, f2).y == 4)
|
|
|
|
assert(evo.has(e, f3) and evo.get(e, f3) ~= f3_default)
|
|
assert(evo.get(e, f3).x == 10 and evo.get(e, f3).y == 11)
|
|
|
|
assert(evo.has(e, f4) and evo.get(e, f4) == f4_default)
|
|
end
|
|
end
|
|
end
|