mirror of
https://github.com/BlackMATov/evolved.lua.git
synced 2025-12-15 12:19:47 +07:00
dummy DUPLICATE fragment
This commit is contained in:
@@ -26,6 +26,7 @@ TAG :: fragment
|
|||||||
NAME :: fragment
|
NAME :: fragment
|
||||||
DEFAULT :: fragment
|
DEFAULT :: fragment
|
||||||
CONSTRUCT :: fragment
|
CONSTRUCT :: fragment
|
||||||
|
DUPLICATE :: fragment
|
||||||
|
|
||||||
INCLUDES :: fragment
|
INCLUDES :: fragment
|
||||||
EXCLUDES :: fragment
|
EXCLUDES :: fragment
|
||||||
@@ -126,6 +127,7 @@ fragment_builder:name :: string -> fragment_builder
|
|||||||
fragment_builder:single :: component -> fragment_builder
|
fragment_builder:single :: component -> fragment_builder
|
||||||
fragment_builder:default :: component -> fragment_builder
|
fragment_builder:default :: component -> fragment_builder
|
||||||
fragment_builder:construct :: {any... -> component} -> fragment_builder
|
fragment_builder:construct :: {any... -> component} -> fragment_builder
|
||||||
|
fragment_builder:duplicate :: {component -> component} -> fragment_builder
|
||||||
fragment_builder:on_set :: {entity, fragment, component, component?} -> fragment_builder
|
fragment_builder:on_set :: {entity, fragment, component, component?} -> fragment_builder
|
||||||
fragment_builder:on_assign :: {entity, fragment, component, component} -> fragment_builder
|
fragment_builder:on_assign :: {entity, fragment, component, component} -> fragment_builder
|
||||||
fragment_builder:on_insert :: {entity, fragment, component} -> fragment_builder
|
fragment_builder:on_insert :: {entity, fragment, component} -> fragment_builder
|
||||||
|
|||||||
65
evolved.lua
65
evolved.lua
@@ -41,6 +41,7 @@ local evolved = {
|
|||||||
|
|
||||||
---@alias evolved.default evolved.component
|
---@alias evolved.default evolved.component
|
||||||
---@alias evolved.construct fun(...: any): evolved.component
|
---@alias evolved.construct fun(...: any): evolved.component
|
||||||
|
---@alias evolved.duplicate fun(c: evolved.component): evolved.component
|
||||||
|
|
||||||
---@alias evolved.execute fun(c: evolved.chunk, es: evolved.entity[], ec: integer)
|
---@alias evolved.execute fun(c: evolved.chunk, es: evolved.entity[], ec: integer)
|
||||||
---@alias evolved.prologue fun()
|
---@alias evolved.prologue fun()
|
||||||
@@ -649,6 +650,7 @@ local __TAG = __acquire_id()
|
|||||||
local __NAME = __acquire_id()
|
local __NAME = __acquire_id()
|
||||||
local __DEFAULT = __acquire_id()
|
local __DEFAULT = __acquire_id()
|
||||||
local __CONSTRUCT = __acquire_id()
|
local __CONSTRUCT = __acquire_id()
|
||||||
|
local __DUPLICATE = __acquire_id()
|
||||||
|
|
||||||
local __INCLUDES = __acquire_id()
|
local __INCLUDES = __acquire_id()
|
||||||
local __EXCLUDES = __acquire_id()
|
local __EXCLUDES = __acquire_id()
|
||||||
@@ -792,9 +794,9 @@ local function __id_name(id)
|
|||||||
end
|
end
|
||||||
|
|
||||||
---@param ... any component arguments
|
---@param ... any component arguments
|
||||||
---@return evolved.component
|
---@return evolved.component argument_list
|
||||||
---@nodiscard
|
---@nodiscard
|
||||||
local function __component_list(...)
|
local function __component_list_ctor(...)
|
||||||
local argument_count = __lua_select('#', ...)
|
local argument_count = __lua_select('#', ...)
|
||||||
|
|
||||||
if argument_count == 0 then
|
if argument_count == 0 then
|
||||||
@@ -810,6 +812,25 @@ local function __component_list(...)
|
|||||||
return argument_list
|
return argument_list
|
||||||
end
|
end
|
||||||
|
|
||||||
|
---@param argument_list evolved.component
|
||||||
|
---@return evolved.component argument_list
|
||||||
|
---@nodiscard
|
||||||
|
local function __component_list_copy(argument_list)
|
||||||
|
local argument_count = #argument_list
|
||||||
|
|
||||||
|
if argument_count == 0 then
|
||||||
|
return {}
|
||||||
|
end
|
||||||
|
|
||||||
|
local dupl_argument_list = __lua_table_new(argument_count, 0)
|
||||||
|
|
||||||
|
__lua_table_move(
|
||||||
|
argument_list, 1, argument_count,
|
||||||
|
1, dupl_argument_list)
|
||||||
|
|
||||||
|
return dupl_argument_list
|
||||||
|
end
|
||||||
|
|
||||||
---@param fragment evolved.fragment
|
---@param fragment evolved.fragment
|
||||||
---@return evolved.storage
|
---@return evolved.storage
|
||||||
---@nodiscard
|
---@nodiscard
|
||||||
@@ -1086,7 +1107,7 @@ local function __new_chunk(chunk_parent, chunk_fragment)
|
|||||||
local chunk_component_fragments = __lua_setmetatable({}, __debug_fns.chunk_component_fragments_mt)
|
local chunk_component_fragments = __lua_setmetatable({}, __debug_fns.chunk_component_fragments_mt)
|
||||||
|
|
||||||
local has_defaults_or_constructs = (chunk_parent and chunk_parent.__has_defaults_or_constructs)
|
local has_defaults_or_constructs = (chunk_parent and chunk_parent.__has_defaults_or_constructs)
|
||||||
or __evolved_has_any(chunk_fragment, __DEFAULT, __CONSTRUCT)
|
or __evolved_has_any(chunk_fragment, __DEFAULT, __CONSTRUCT, __DUPLICATE)
|
||||||
|
|
||||||
local has_set_or_assign_hooks = (chunk_parent and chunk_parent.__has_set_or_assign_hooks)
|
local has_set_or_assign_hooks = (chunk_parent and chunk_parent.__has_set_or_assign_hooks)
|
||||||
or __evolved_has_any(chunk_fragment, __ON_SET, __ON_ASSIGN)
|
or __evolved_has_any(chunk_fragment, __ON_SET, __ON_ASSIGN)
|
||||||
@@ -5933,6 +5954,7 @@ __builder_fns.entity_builder.__index = __builder_fns.entity_builder
|
|||||||
---@field package __single? evolved.component
|
---@field package __single? evolved.component
|
||||||
---@field package __default? evolved.component
|
---@field package __default? evolved.component
|
||||||
---@field package __construct? evolved.construct
|
---@field package __construct? evolved.construct
|
||||||
|
---@field package __duplicate? evolved.duplicate
|
||||||
---@field package __on_set? evolved.set_hook
|
---@field package __on_set? evolved.set_hook
|
||||||
---@field package __on_assign? evolved.set_hook
|
---@field package __on_assign? evolved.set_hook
|
||||||
---@field package __on_insert? evolved.set_hook
|
---@field package __on_insert? evolved.set_hook
|
||||||
@@ -6100,6 +6122,13 @@ function __builder_fns.fragment_builder:construct(construct)
|
|||||||
return self
|
return self
|
||||||
end
|
end
|
||||||
|
|
||||||
|
---@param duplicate evolved.duplicate
|
||||||
|
---@return evolved.fragment_builder builder
|
||||||
|
function __builder_fns.fragment_builder:duplicate(duplicate)
|
||||||
|
self.__duplicate = duplicate
|
||||||
|
return self
|
||||||
|
end
|
||||||
|
|
||||||
---@param on_set evolved.set_hook
|
---@param on_set evolved.set_hook
|
||||||
---@return evolved.fragment_builder builder
|
---@return evolved.fragment_builder builder
|
||||||
function __builder_fns.fragment_builder:on_set(on_set)
|
function __builder_fns.fragment_builder:on_set(on_set)
|
||||||
@@ -6142,6 +6171,7 @@ function __builder_fns.fragment_builder:build()
|
|||||||
local single = self.__single
|
local single = self.__single
|
||||||
local default = self.__default
|
local default = self.__default
|
||||||
local construct = self.__construct
|
local construct = self.__construct
|
||||||
|
local duplicate = self.__duplicate
|
||||||
local on_set = self.__on_set
|
local on_set = self.__on_set
|
||||||
local on_assign = self.__on_assign
|
local on_assign = self.__on_assign
|
||||||
local on_insert = self.__on_insert
|
local on_insert = self.__on_insert
|
||||||
@@ -6153,6 +6183,7 @@ function __builder_fns.fragment_builder:build()
|
|||||||
self.__single = nil
|
self.__single = nil
|
||||||
self.__default = nil
|
self.__default = nil
|
||||||
self.__construct = nil
|
self.__construct = nil
|
||||||
|
self.__duplicate = nil
|
||||||
self.__on_set = nil
|
self.__on_set = nil
|
||||||
self.__on_assign = nil
|
self.__on_assign = nil
|
||||||
self.__on_insert = nil
|
self.__on_insert = nil
|
||||||
@@ -6195,6 +6226,12 @@ function __builder_fns.fragment_builder:build()
|
|||||||
component_list[component_count] = construct
|
component_list[component_count] = construct
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if duplicate then
|
||||||
|
component_count = component_count + 1
|
||||||
|
fragment_list[component_count] = __DUPLICATE
|
||||||
|
component_list[component_count] = duplicate
|
||||||
|
end
|
||||||
|
|
||||||
if on_set then
|
if on_set then
|
||||||
component_count = component_count + 1
|
component_count = component_count + 1
|
||||||
fragment_list[component_count] = __ON_SET
|
fragment_list[component_count] = __ON_SET
|
||||||
@@ -6781,7 +6818,7 @@ local function __update_chunk_caches_trace(chunk)
|
|||||||
local chunk_parent, chunk_fragment = chunk.__parent, chunk.__fragment
|
local chunk_parent, chunk_fragment = chunk.__parent, chunk.__fragment
|
||||||
|
|
||||||
local has_defaults_or_constructs = (chunk_parent and chunk_parent.__has_defaults_or_constructs)
|
local has_defaults_or_constructs = (chunk_parent and chunk_parent.__has_defaults_or_constructs)
|
||||||
or __evolved_has_any(chunk_fragment, __DEFAULT, __CONSTRUCT)
|
or __evolved_has_any(chunk_fragment, __DEFAULT, __CONSTRUCT, __DUPLICATE)
|
||||||
|
|
||||||
local has_set_or_assign_hooks = (chunk_parent and chunk_parent.__has_set_or_assign_hooks)
|
local has_set_or_assign_hooks = (chunk_parent and chunk_parent.__has_set_or_assign_hooks)
|
||||||
or __evolved_has_any(chunk_fragment, __ON_SET, __ON_ASSIGN)
|
or __evolved_has_any(chunk_fragment, __ON_SET, __ON_ASSIGN)
|
||||||
@@ -6888,6 +6925,11 @@ local function __update_fragment_constructs(fragment)
|
|||||||
__trace_fragment_chunks(fragment, __update_chunk_caches_trace, fragment)
|
__trace_fragment_chunks(fragment, __update_chunk_caches_trace, fragment)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
---@param fragment evolved.fragment
|
||||||
|
local function __update_fragment_duplicates(fragment)
|
||||||
|
__trace_fragment_chunks(fragment, __update_chunk_caches_trace, fragment)
|
||||||
|
end
|
||||||
|
|
||||||
__evolved_set(__TAG, __ON_INSERT, __update_fragment_tags)
|
__evolved_set(__TAG, __ON_INSERT, __update_fragment_tags)
|
||||||
__evolved_set(__TAG, __ON_REMOVE, __update_fragment_tags)
|
__evolved_set(__TAG, __ON_REMOVE, __update_fragment_tags)
|
||||||
|
|
||||||
@@ -6897,6 +6939,9 @@ __evolved_set(__DEFAULT, __ON_REMOVE, __update_fragment_defaults)
|
|||||||
__evolved_set(__CONSTRUCT, __ON_INSERT, __update_fragment_constructs)
|
__evolved_set(__CONSTRUCT, __ON_INSERT, __update_fragment_constructs)
|
||||||
__evolved_set(__CONSTRUCT, __ON_REMOVE, __update_fragment_constructs)
|
__evolved_set(__CONSTRUCT, __ON_REMOVE, __update_fragment_constructs)
|
||||||
|
|
||||||
|
__evolved_set(__DUPLICATE, __ON_INSERT, __update_fragment_duplicates)
|
||||||
|
__evolved_set(__DUPLICATE, __ON_REMOVE, __update_fragment_duplicates)
|
||||||
|
|
||||||
---
|
---
|
||||||
---
|
---
|
||||||
---
|
---
|
||||||
@@ -6908,6 +6953,7 @@ __evolved_set(__TAG, __NAME, 'TAG')
|
|||||||
__evolved_set(__NAME, __NAME, 'NAME')
|
__evolved_set(__NAME, __NAME, 'NAME')
|
||||||
__evolved_set(__DEFAULT, __NAME, 'DEFAULT')
|
__evolved_set(__DEFAULT, __NAME, 'DEFAULT')
|
||||||
__evolved_set(__CONSTRUCT, __NAME, 'CONSTRUCT')
|
__evolved_set(__CONSTRUCT, __NAME, 'CONSTRUCT')
|
||||||
|
__evolved_set(__DUPLICATE, __NAME, 'DUPLICATE')
|
||||||
|
|
||||||
__evolved_set(__INCLUDES, __NAME, 'INCLUDES')
|
__evolved_set(__INCLUDES, __NAME, 'INCLUDES')
|
||||||
__evolved_set(__EXCLUDES, __NAME, 'EXCLUDES')
|
__evolved_set(__EXCLUDES, __NAME, 'EXCLUDES')
|
||||||
@@ -6941,10 +6987,14 @@ __evolved_set(__DESTROY_POLICY_REMOVE_FRAGMENT, __NAME, 'DESTROY_POLICY_REMOVE_F
|
|||||||
|
|
||||||
__evolved_set(__TAG, __TAG)
|
__evolved_set(__TAG, __TAG)
|
||||||
|
|
||||||
__evolved_set(__INCLUDES, __CONSTRUCT, __component_list)
|
__evolved_set(__INCLUDES, __CONSTRUCT, __component_list_ctor)
|
||||||
__evolved_set(__EXCLUDES, __CONSTRUCT, __component_list)
|
__evolved_set(__INCLUDES, __DUPLICATE, __component_list_copy)
|
||||||
|
|
||||||
__evolved_set(__AFTER, __CONSTRUCT, __component_list)
|
__evolved_set(__EXCLUDES, __CONSTRUCT, __component_list_ctor)
|
||||||
|
__evolved_set(__EXCLUDES, __DUPLICATE, __component_list_copy)
|
||||||
|
|
||||||
|
__evolved_set(__AFTER, __CONSTRUCT, __component_list_ctor)
|
||||||
|
__evolved_set(__AFTER, __DUPLICATE, __component_list_copy)
|
||||||
|
|
||||||
__evolved_set(__DISABLED, __TAG)
|
__evolved_set(__DISABLED, __TAG)
|
||||||
|
|
||||||
@@ -7152,6 +7202,7 @@ evolved.TAG = __TAG
|
|||||||
evolved.NAME = __NAME
|
evolved.NAME = __NAME
|
||||||
evolved.DEFAULT = __DEFAULT
|
evolved.DEFAULT = __DEFAULT
|
||||||
evolved.CONSTRUCT = __CONSTRUCT
|
evolved.CONSTRUCT = __CONSTRUCT
|
||||||
|
evolved.DUPLICATE = __DUPLICATE
|
||||||
|
|
||||||
evolved.INCLUDES = __INCLUDES
|
evolved.INCLUDES = __INCLUDES
|
||||||
evolved.EXCLUDES = __EXCLUDES
|
evolved.EXCLUDES = __EXCLUDES
|
||||||
|
|||||||
Reference in New Issue
Block a user