fix: fixes after review

This commit is contained in:
p0sel0k
2025-11-02 21:12:26 +03:00
parent a81a8646e9
commit dc642f5294

View File

@@ -1,184 +1,169 @@
-- evolved.d.tl -- evolved.d.tl
-- evolve.lua ver.: 1.4 -- evolve.lua ver.: 1.4
-- Teal declaration file for the public API of evolved.lua -- Teal declaration file for the public API of evolved.lua
local record Evolved local record Evolved
-- Basic alias types record ID
type ID = number end
type Entity = ID
type Fragment = ID
type Query = ID
type System = ID
type Component = any type Entity = ID
type Fragment = ID
type Query = ID
type System = ID
-- This is helper interface to easier create Teal custom records which can be used as components interface IComponent
interface IComponent end
end
type Component = any | IComponent
type Storage = { Component | IComponent } type Storage = { Component }
type EachState = { integer, Chunk, integer, integer }
type ExecuteState = { integer, { Chunk }, integer, {Fragment: integer} | nil }
type EachState = {integer, Chunk, integer, integer} -- {[1] = structural_changes, [2] = entity_chunk, [3] = entity_place, [4] = chunk_fragment_index} type EachIterator = function(state?: EachState): (Fragment | nil, Component | nil)
type ExecuteState = {integer, { Chunk }, integer, {Fragment: integer} | nil} -- {[1] = structural_changes, [2] = chunk_stack, [3] = chunk_stack_size, [4] = exclude_set} type ExecuteIterator = function(state?: ExecuteState): (Chunk | nil, { Entity } | nil, integer | nil)
type EachIterator = function(EachState | nil): (Fragment | nil, Component | nil) type Execute = function(chunk: Chunk, entity_list: { Entity }, entity_count: integer)
type ExecuteIterator = function(EachState | nil): (Chunk | nil, { Entity } | nil, integer | nil) type Prologue = function()
type Epilogue = function()
type Execute = function(Chunk, { Entity }, integer) type SetHook = function(entity: Entity, fragment: Fragment, new: Component, old?: Component)
type Prologue = function() type AssignHook = function(entity: Entity, fragment: Fragment, new: Component, old?: Component)
type Epilogue = function() type InsertHook = function(entity: Entity, fragment: Fragment, new: Component)
type RemoveHook = function(entity: Entity, fragment: Fragment, component: Component)
type SetHook = function(entity: Entity, fragment: Fragment, new: Component | IComponent, old?: Component | IComponent) record Chunk
type AssignHook = function(entity: Entity, fragment: Fragment, new: Component | IComponent, old?: Component | IComponent) alive: function(self: Chunk): boolean
type InsertHook = function(entity: Entity, fragment: Fragment, new: Component | IComponent) empty: function(self: Chunk): boolean
type RemoveHook = function(entity: Entity, fragment: Fragment, component: Component | IComponent) has: function(self: Chunk, fragment: Fragment): boolean
has_all: function(self: Chunk, ...: Fragment): boolean
has_any: function(self: Chunk, ...: Fragment): boolean
entities: function(self: Chunk): ({ Entity }, number)
fragments: function(self: Chunk): ({ Fragment }, number)
components: function(self: Chunk, ...: Fragment): Storage...
end
record Chunk record Builder
alive: function(self: Chunk): boolean build: function(self: Builder, prefab?: Entity): Entity
empty: function(self: Chunk): boolean multi_build: function(self: Builder, entity_count: number, prefab?: Entity): ({ Entity }, number)
has: function(self: Chunk, fragment: Fragment): boolean spawn: function(self: Builder): Entity
has_all: function(self: Chunk, ...: Fragment): boolean multi_spawn: function(self: Builder, entity_count: number): ({ Entity }, number)
has_any: function(self: Chunk, ...: Fragment): boolean clone: function(self: Builder, prefab: Entity): Entity
entities: function(self: Chunk): ({ Entity }, number) multi_clone: function(self: Builder, entity_count: number, prefab: Entity): ({ Entity }, number)
fragments: function(self: Chunk): ({ Fragment }, number) has: function(self: Builder, fragment: Fragment): boolean
components: function(self: Chunk, ...: Fragment): Storage... has_all: function(self: Builder, ...: Fragment): boolean
end has_any: function(self: Builder, ...: Fragment): boolean
get: function(self: Builder, ...: Fragment): Component...
set: function(self: Builder, fragment: Fragment, component?: Component): Builder
remove: function(self: Builder, ...: Fragment): Builder
clear: function(self: Builder): Builder
tag: function(self: Builder): Builder
name: function(self: Builder, name: string): Builder
unique: function(self: Builder): Builder
explicit: function(self: Builder): Builder
internal: function(self: Builder): Builder
default: function(self: Builder, default: Component): Builder
duplicate: function(self: Builder, duplicate: function(Component): Component): Builder
prefab: function(self: Builder): Builder
disabled: function(self: Builder): Builder
include: function(self: Builder, ...: Fragment): Builder
exclude: function(self: Builder, ...: Fragment): Builder
require: function(self: Builder, ...: Fragment): Builder
on_set: function(self: Builder, on_set: SetHook): Builder
on_assign: function(self: Builder, on_assign: AssignHook): Builder
on_insert: function(self: Builder, on_insert: InsertHook): Builder
on_remove: function(self: Builder, on_remove: RemoveHook): Builder
group: function(self: Builder, group: System): Builder
query: function(self: Builder, q: Query): Builder
execute: function(self: Builder, exec_fn: Execute): Builder
prologue: function(self: Builder, p: Prologue): Builder
epilogue: function(self: Builder, e: Epilogue): Builder
destruction_policy: function(self: Builder, policy: ID): Builder
end
record Builder TAG: Fragment
build: function(self: Builder, prefab?: Entity): Entity NAME: Fragment
multi_build: function(self: Builder, entity_count: number, prefab?: Entity): ({ Entity }, number)
spawn: function(self: Builder): Entity UNIQUE: Fragment
multi_spawn: function(self: Builder, entity_count: number): ({ Entity }, number) EXPLICIT: Fragment
INTERNAL: Fragment
clone: function(self: Builder, prefab: Entity): Entity DEFAULT: Fragment
multi_clone: function(self: Builder, entity_count: number, prefab: Entity): ({ Entity }, number) DUPLICATE: Fragment
has: function(self: Builder, fragment: Fragment): boolean PREFAB: Fragment
has_all: function(self: Builder, ...: Fragment): boolean DISABLED: Fragment
has_any: function(self: Builder, ...: Fragment): boolean
get: function(self: Builder, ...: Fragment): Component...
set: function(self: Builder, fragment: Fragment, component?: Component | IComponent): Builder INCLUDES: Fragment
remove: function(self: Builder, ...: Fragment): Builder EXCLUDES: Fragment
clear: function(self: Builder): any REQUIRES: Fragment
tag: function(self: Builder): Builder ON_SET: Fragment
name: function(self: Builder, name: string): Builder ON_ASSIGN: Fragment
ON_INSERT: Fragment
ON_REMOVE: Fragment
unique: function(self: Builder): Builder GROUP: Fragment
explicit: function(self: Builder): Builder
internal: function(self: Builder): Builder
default: function(self: Builder, default: Component | IComponent): Builder QUERY: Fragment
duplicate: function(self: Builder, duplicate: function(Component | IComponent): Component): Builder EXECUTE: Fragment
prefab: function(self: Builder): Builder PROLOGUE: Fragment
disabled: function(self: Builder): Builder EPILOGUE: Fragment
include: function(self: Builder, ...: Fragment): Builder DESTRUCTION_POLICY: Fragment
exclude: function(self: Builder, ...: Fragment): Builder DESTRUCTION_POLICY_DESTROY_ENTITY: ID
require: function(self: Builder, ...: Fragment): Builder DESTRUCTION_POLICY_REMOVE_FRAGMENT: ID
on_set: function(self: Builder, on_set: SetHook): Builder id: function(count?: number): ID...
on_assign: function(self: Builder, on_assign: AssignHook): Builder name: function(...: ID): string...
on_insert: function(self: Builder, on_insert: InsertHook): Builder
on_remove: function(self: Builder, on_remove: RemoveHook): Builder
group: function(self: Builder, group: System): Builder
query: function(self: Builder, q: Query): Builder pack: function(primary: number, secondary: number): ID
execute: function(self: Builder, exec_fn: Execute): Builder unpack: function(id: ID): (number, number)
prologue: function(self: Builder, p: Prologue): Builder defer: function(): boolean
epilogue: function(self: Builder, e: Epilogue): Builder commit: function(): boolean
cancel: function(): boolean
destruction_policy: function(self: Builder, policy: ID): Builder spawn: function(components?: { Fragment: Component }): Entity
end multi_spawn: function(entity_count: number, components?: { Fragment: Component }): ({ Entity }, number)
TAG: Fragment clone: function(prefab: Entity, components?: { Fragment: Component }): Entity
NAME: Fragment multi_clone: function(entity_count: number, prefab: Entity, components?: { Fragment: Component }): ({ Entity }, number)
UNIQUE: Fragment alive: function(entity: Entity): boolean
EXPLICIT: Fragment alive_all: function(...: Entity): boolean
INTERNAL: Fragment alive_any: function(...: Entity): boolean
DEFAULT: Fragment empty: function(entity: Entity): boolean
DUPLICATE: Fragment empty_all: function(...: Entity): boolean
empty_any: function(...: Entity): boolean
PREFAB: Fragment has: function(entity: Entity, fragment: Fragment): boolean
DISABLED: Fragment has_all: function(entity: Entity, ...: Fragment): boolean
has_any: function(entity: Entity, ...: Fragment): boolean
INCLUDES: Fragment get: function(entity: Entity, ...: Fragment): Component...
EXCLUDES: Fragment set: function(entity: Entity, fragment: Fragment, component: Component)
REQUIRES: Fragment remove: function(entity: Entity, ...: Fragment)
clear: function(...: Entity)
destroy: function(...: Entity)
ON_SET: Fragment batch_set: function(q: Query, fragment: Fragment, component: Component)
ON_ASSIGN: Fragment batch_remove: function(q: Query, ...: Fragment)
ON_INSERT: Fragment batch_clear: function(...: Query)
ON_REMOVE: Fragment batch_destroy: function(...: Query)
GROUP: Fragment each: function(entity: Entity): (EachIterator, EachState | nil)
execute: function(q: Query): (ExecuteIterator, ExecuteState | nil)
locate: function(entity: Entity): (any | nil, number)
QUERY: Fragment process: function(...: System)
EXECUTE: Fragment debug_mode: function(yesno: boolean)
PROLOGUE: Fragment collect_garbage: function()
EPILOGUE: Fragment
DESTRUCTION_POLICY: Fragment chunk: function(first_fragment: Fragment, ...: Fragment): (Chunk, { Entity }, integer)
DESTRUCTION_POLICY_DESTROY_ENTITY: ID builder: function(): Builder
DESTRUCTION_POLICY_REMOVE_FRAGMENT: ID
id: function(count?: number): ID
name: function(...: ID): string...
pack: function(primary: number, secondary: number): ID
unpack: function(id: ID): (number, number)
defer: function(): boolean
commit: function(): boolean
cancel: function(): boolean
spawn: function(components?: { Fragment: Component | IComponent }): Entity
multi_spawn: function(entity_count: number, components?: { Fragment: Component | IComponent }): ({ Entity }, number)
clone: function(prefab: Entity, components?: { Fragment: Component | IComponent }): Entity
multi_clone: function(entity_count: number, prefab: Entity, components?: { Fragment: Component | IComponent }): ({ Entity }, number)
alive: function(entity: Entity): boolean
alive_all: function(...: Entity): boolean
alive_any: function(...: Entity): boolean
empty: function(entity: Entity): boolean
empty_all: function(...: Entity): boolean
empty_any: function(...: Entity): boolean
has: function(entity: Entity, fragment: Fragment): boolean
has_all: function(entity: Entity, ...: Fragment): boolean
has_any: function(entity: Entity, ...: Fragment): boolean
get: function(entity: Entity, ...: Fragment): Component...
set: function(entity: Entity, fragment: Fragment, component: Component | IComponent)
remove: function(entity: Entity, ...: Fragment)
clear: function(...: Entity)
destroy: function(...: Entity)
batch_set: function(q: Query, fragment: Fragment, component: Component | IComponent)
batch_remove: function(q: Query, ...: Fragment)
batch_clear: function(...: Query)
batch_destroy: function(...: Query)
each: function(entity: Entity): (EachIterator, EachState | nil)
execute: function(q: Query): (ExecuteIterator, ExecuteState | nil)
locate: function(entity: Entity): (any | nil, number)
process: function(...: System)
debug_mode: function(yesno: boolean)
collect_garbage: function()
chunk: function(first_fragment: Fragment, ...: Fragment): (Chunk, { Entity }, integer)
builder: function(): Builder
end end
return Evolved return Evolved