simplify singles

This commit is contained in:
BlackMATov
2024-11-25 18:43:53 +07:00
parent 0567a4aa99
commit 8ee93224e6
4 changed files with 45 additions and 11 deletions

View File

@@ -86,9 +86,9 @@ chunk:components -> entity -> (any[])
```
singles.single -> any -> (entity)
singles.set -> entity -> any -> (entity)
singles.get -> entity -> (any)
singles.has -> entity -> (boolean)
singles.assign -> entity -> any -> ()
```
## Module `vectors`

View File

@@ -1,2 +1,3 @@
require 'develop.untests.idpools_untests'
require 'develop.untests.registry_untests'
require 'develop.untests.singles_untests'

View File

@@ -0,0 +1,33 @@
---@diagnostic disable: invisible
local evo = require 'evolved.evolved'
do
local e = evo.registry.entity()
assert(not evo.singles.has(e))
assert(evo.singles.get(e) == nil)
assert(evo.singles.set(e, 42))
assert(evo.singles.has(e))
assert(evo.singles.get(e) == 42)
end
do
local s = evo.singles.single()
assert(evo.singles.has(s))
assert(evo.singles.get(s) == true)
assert(s == evo.singles.set(s, 42))
assert(evo.singles.get(s) == 42)
end
do
local s = evo.singles.single(42)
assert(evo.singles.has(s))
assert(evo.singles.get(s) == 42)
assert(s == evo.singles.set(s, true))
assert(evo.singles.get(s) == true)
assert(s == evo.singles.set(s, false))
assert(evo.singles.get(s) == false)
end

View File

@@ -8,28 +8,28 @@ local singles = {}
---@nodiscard
function singles.single(component)
local single = registry.entity()
registry.insert(single, single, component)
return single
return single:set(single, component)
end
---@param single evolved.entity
---@param component any
---@return evolved.entity
function singles.set(single, component)
return single:set(single, component)
end
---@param single evolved.entity
---@return any
---@nodiscard
function singles.get(single)
return registry.get(single, single)
return single:get(single)
end
---@param single evolved.entity
---@return boolean
---@nodiscard
function singles.has(single)
return registry.has(single, single)
end
---@param single evolved.entity
---@param component any
function singles.assign(single, component)
registry.assign(single, single, component)
return single:has(single)
end
return singles