@typeonce/ritmo 0.6.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/dist/Brand.d.ts +9 -4
- package/dist/Brand.d.ts.map +1 -1
- package/dist/Brand.js +9 -4
- package/dist/Brand.js.map +1 -1
- package/dist/Clock.d.ts +186 -0
- package/dist/Clock.d.ts.map +1 -0
- package/dist/Clock.js +111 -0
- package/dist/Clock.js.map +1 -0
- package/dist/Command.d.ts +250 -41
- package/dist/Command.d.ts.map +1 -1
- package/dist/Command.js +59 -23
- package/dist/Command.js.map +1 -1
- package/dist/Condition.d.ts +12 -1
- package/dist/Condition.d.ts.map +1 -1
- package/dist/Condition.js.map +1 -1
- package/dist/Debug.d.ts +163 -15
- package/dist/Debug.d.ts.map +1 -1
- package/dist/Debug.js.map +1 -1
- package/dist/Decode.d.ts +1 -1
- package/dist/Decode.js +1 -1
- package/dist/Descriptor.d.ts +67 -24
- package/dist/Descriptor.d.ts.map +1 -1
- package/dist/Descriptor.js +32 -15
- package/dist/Descriptor.js.map +1 -1
- package/dist/Entity.d.ts +22 -5
- package/dist/Entity.d.ts.map +1 -1
- package/dist/Entity.js +2 -2
- package/dist/Entity.js.map +1 -1
- package/dist/EntityScope.d.ts +26 -1
- package/dist/EntityScope.d.ts.map +1 -1
- package/dist/EntityScope.js +14 -2
- package/dist/EntityScope.js.map +1 -1
- package/dist/HostClock.d.ts +49 -0
- package/dist/HostClock.d.ts.map +1 -0
- package/dist/HostClock.js +46 -0
- package/dist/HostClock.js.map +1 -0
- package/dist/Inspector.d.ts +7 -1
- package/dist/Inspector.d.ts.map +1 -1
- package/dist/Inspector.js.map +1 -1
- package/dist/Machine.d.ts +67 -36
- package/dist/Machine.d.ts.map +1 -1
- package/dist/Machine.js +10 -3
- package/dist/Machine.js.map +1 -1
- package/dist/Query.d.ts +74 -26
- package/dist/Query.d.ts.map +1 -1
- package/dist/Query.js +32 -28
- package/dist/Query.js.map +1 -1
- package/dist/Runtime.d.ts +39 -16
- package/dist/Runtime.d.ts.map +1 -1
- package/dist/Runtime.js +556 -87
- package/dist/Runtime.js.map +1 -1
- package/dist/Schedule.d.ts +217 -10
- package/dist/Schedule.d.ts.map +1 -1
- package/dist/Schedule.js +5 -0
- package/dist/Schedule.js.map +1 -1
- package/dist/Schema.d.ts +196 -44
- package/dist/Schema.d.ts.map +1 -1
- package/dist/Schema.js +29 -11
- package/dist/Schema.js.map +1 -1
- package/dist/Snapshot.d.ts +14 -0
- package/dist/Snapshot.d.ts.map +1 -1
- package/dist/Snapshot.js.map +1 -1
- package/dist/System.d.ts +212 -58
- package/dist/System.d.ts.map +1 -1
- package/dist/System.js +84 -6
- package/dist/System.js.map +1 -1
- package/dist/index.d.ts +8 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -7
- package/dist/index.js.map +1 -1
- package/dist/internal/cells.d.ts +3 -3
- package/dist/internal/cells.d.ts.map +1 -1
- package/dist/internal/cells.js +9 -11
- package/dist/internal/cells.js.map +1 -1
- package/dist/internal/debug.d.ts +13 -0
- package/dist/internal/debug.d.ts.map +1 -1
- package/dist/internal/debug.js +192 -7
- package/dist/internal/debug.js.map +1 -1
- package/dist/internal/equal.d.ts +8 -0
- package/dist/internal/equal.d.ts.map +1 -0
- package/dist/internal/equal.js +38 -0
- package/dist/internal/equal.js.map +1 -0
- package/dist/internal/fragments.d.ts.map +1 -1
- package/dist/internal/fragments.js +11 -1
- package/dist/internal/fragments.js.map +1 -1
- package/dist/internal/game.d.ts.map +1 -1
- package/dist/internal/game.js +41 -6
- package/dist/internal/game.js.map +1 -1
- package/dist/internal/order.d.ts +10 -0
- package/dist/internal/order.d.ts.map +1 -0
- package/dist/internal/order.js +122 -0
- package/dist/internal/order.js.map +1 -0
- package/dist/internal/queries.d.ts.map +1 -1
- package/dist/internal/queries.js +32 -10
- package/dist/internal/queries.js.map +1 -1
- package/dist/internal/requirements.d.ts +26 -0
- package/dist/internal/requirements.d.ts.map +1 -0
- package/dist/internal/requirements.js +46 -0
- package/dist/internal/requirements.js.map +1 -0
- package/package.json +1 -1
- package/src/Brand.ts +9 -4
- package/src/Clock.ts +311 -0
- package/src/Command.ts +407 -89
- package/src/Condition.ts +17 -1
- package/src/Debug.ts +172 -14
- package/src/Decode.ts +1 -1
- package/src/Descriptor.ts +92 -37
- package/src/Entity.ts +24 -5
- package/src/EntityScope.ts +27 -2
- package/src/HostClock.ts +64 -0
- package/src/Inspector.ts +7 -2
- package/src/Machine.ts +81 -37
- package/src/Query.ts +110 -38
- package/src/Runtime.ts +607 -111
- package/src/Schedule.ts +380 -13
- package/src/Schema.ts +249 -63
- package/src/Snapshot.ts +4 -0
- package/src/System.ts +248 -93
- package/src/index.ts +8 -7
- package/src/internal/cells.ts +10 -12
- package/src/internal/debug.ts +208 -12
- package/src/internal/equal.ts +31 -0
- package/src/internal/fragments.ts +12 -2
- package/src/internal/game.ts +61 -7
- package/src/internal/order.ts +144 -0
- package/src/internal/queries.ts +37 -13
- package/src/internal/requirements.ts +71 -0
- package/dist/Definition.d.ts +0 -99
- package/dist/Definition.d.ts.map +0 -1
- package/dist/Definition.js +0 -68
- package/dist/Definition.js.map +0 -1
- package/dist/Feature.d.ts +0 -106
- package/dist/Feature.d.ts.map +0 -1
- package/dist/Feature.js +0 -87
- package/dist/Feature.js.map +0 -1
- package/dist/Fx.d.ts +0 -128
- package/dist/Fx.d.ts.map +0 -1
- package/dist/Fx.js +0 -112
- package/dist/Fx.js.map +0 -1
- package/dist/internal/definition.d.ts +0 -17
- package/dist/internal/definition.d.ts.map +0 -1
- package/dist/internal/definition.js +0 -25
- package/dist/internal/definition.js.map +0 -1
- package/src/Definition.ts +0 -106
- package/src/Feature.ts +0 -241
- package/src/Fx.ts +0 -176
- package/src/internal/definition.ts +0 -56
package/dist/Command.d.ts
CHANGED
|
@@ -65,7 +65,7 @@ import * as Entity from "./Entity.ts";
|
|
|
65
65
|
import type * as EntityScope from "./EntityScope.ts";
|
|
66
66
|
import type * as Relation from "./Relation.ts";
|
|
67
67
|
import * as Result from "./Result.ts";
|
|
68
|
-
import type { Schema } from "./Schema.ts";
|
|
68
|
+
import type { RequirementPair, Schema } from "./Schema.ts";
|
|
69
69
|
/**
|
|
70
70
|
* Type-level helpers for staged entity construction.
|
|
71
71
|
*
|
|
@@ -108,7 +108,7 @@ type EntryOf<D> = D extends Descriptor<"component", string, any> ? Entry<D> : ne
|
|
|
108
108
|
export type SchemaEntry<S extends Schema.Any> = EntryOf<SchemaComponentDescriptor<S>>;
|
|
109
109
|
/**
|
|
110
110
|
* One entry accepted by `spawn(...)` and `insert(...)`: a plain descriptor/value
|
|
111
|
-
* pair, or a `Result` of one (from `entryRaw(...)`
|
|
111
|
+
* pair, or a `Result` of one (from `entryRaw(...)`).
|
|
112
112
|
*/
|
|
113
113
|
export type SpawnEntry<S extends Schema.Any> = SchemaEntry<S> | Result.Result<SchemaEntry<S>, any>;
|
|
114
114
|
type EntryValue<T> = [
|
|
@@ -117,10 +117,14 @@ type EntryValue<T> = [
|
|
|
117
117
|
/**
|
|
118
118
|
* Folds entries into the component proof of the resulting draft.
|
|
119
119
|
*/
|
|
120
|
-
export type FoldEntries<Entries extends ReadonlyArray<SpawnEntry<any>>, P extends Entity.ComponentProof = {}> = Entries extends readonly [
|
|
120
|
+
export type FoldEntries<Entries extends ReadonlyArray<SpawnEntry<any>>, P extends Entity.ComponentProof = {}> = number extends Entries["length"] ? P & MaybeEntries<EntryValue<Entries[number]>> : Entries extends readonly [
|
|
121
121
|
infer Head extends SpawnEntry<any>,
|
|
122
122
|
...infer Tail extends Array<SpawnEntry<any>>
|
|
123
123
|
] ? FoldEntries<Tail, Draft.InsertEntry<P, EntryValue<Head>>> : P;
|
|
124
|
+
/** The proof of entries that may each be present: every component they can hold, optional. */
|
|
125
|
+
type MaybeEntries<Entry> = {
|
|
126
|
+
readonly [E in Entry as E extends readonly [infer D extends Descriptor<"component", string, any>, unknown] ? Descriptor.Name<D> : never]?: E extends readonly [infer D extends Descriptor<"component", string, any>, unknown] ? Descriptor.Value<D> : never;
|
|
127
|
+
};
|
|
124
128
|
/**
|
|
125
129
|
* Per-entry failures, aligned with the entries: `null` for entries that
|
|
126
130
|
* succeeded or could not fail.
|
|
@@ -160,9 +164,10 @@ export type DeferredCommand<S extends Schema.Any> = {
|
|
|
160
164
|
export interface InternalWorld<S extends Schema.Any> {
|
|
161
165
|
/**
|
|
162
166
|
* Creates the entity for an id reserved by `commands.spawn(...)` with its
|
|
163
|
-
* staged components.
|
|
167
|
+
* staged components. Returns `false`, creating nothing, when the
|
|
168
|
+
* components break a `Schema.requires` requirement.
|
|
164
169
|
*/
|
|
165
|
-
readonly spawnEntity: (id: Entity.EntityId<S, any>, components: ReadonlyArray<Entity.StagedComponent>) =>
|
|
170
|
+
readonly spawnEntity: (id: Entity.EntityId<S, any>, components: ReadonlyArray<Entity.StagedComponent>) => boolean;
|
|
166
171
|
/**
|
|
167
172
|
* Removes an entity and its outgoing and incoming relations.
|
|
168
173
|
*/
|
|
@@ -176,13 +181,15 @@ export interface InternalWorld<S extends Schema.Any> {
|
|
|
176
181
|
*/
|
|
177
182
|
readonly destroyEntityScope: (scope: EntityScope.EntityScope.Any) => void;
|
|
178
183
|
/**
|
|
179
|
-
* Removes
|
|
184
|
+
* Removes components from a live entity, all or none: nothing is removed
|
|
185
|
+
* when that would leave a component without one it requires.
|
|
180
186
|
*/
|
|
181
|
-
readonly
|
|
187
|
+
readonly removeComponents: (id: Entity.EntityId<S, any>, descriptors: ReadonlyArray<Descriptor<"component", string, any>>) => void;
|
|
182
188
|
/**
|
|
183
|
-
* Inserts or replaces
|
|
189
|
+
* Inserts or replaces components on a live entity, all or none: nothing is
|
|
190
|
+
* written when an inserted component would miss one it requires.
|
|
184
191
|
*/
|
|
185
|
-
readonly
|
|
192
|
+
readonly insertComponents: (id: Entity.EntityId<S, any>, entries: ReadonlyArray<Entity.StagedComponent>) => void;
|
|
186
193
|
/**
|
|
187
194
|
* Attempts to attach one relation edge between two live entities.
|
|
188
195
|
*/
|
|
@@ -201,13 +208,15 @@ export interface InternalWorld<S extends Schema.Any> {
|
|
|
201
208
|
*/
|
|
202
209
|
export declare const entry: <D extends Descriptor<"component", string, any>>(descriptor: D, value: Descriptor.Value<D>) => Entry<D>;
|
|
203
210
|
/**
|
|
204
|
-
*
|
|
205
|
-
*
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
*
|
|
210
|
-
*
|
|
211
|
+
* Validates raw input through a constructed descriptor's own validator and
|
|
212
|
+
* returns an entry result for `spawn(...)` / `insert(...)`.
|
|
213
|
+
*
|
|
214
|
+
* This is the one way to put unvalidated data on an entity: the descriptor
|
|
215
|
+
* owns its validator (`Descriptor.ConstructedComponent(...)`, built with
|
|
216
|
+
* `Decode` or `Descriptor.fromStandardSchema`). Values that are already
|
|
217
|
+
* valid use a plain `[Descriptor, value]` entry instead. To validate authored
|
|
218
|
+
* constants once at module load, call the constructor (`Vector2.result(...)`)
|
|
219
|
+
* and keep the carried value.
|
|
211
220
|
*
|
|
212
221
|
* @example
|
|
213
222
|
* ```ts
|
|
@@ -221,11 +230,14 @@ export declare const entryResult: <D extends Descriptor<"component", string, any
|
|
|
221
230
|
*/
|
|
222
231
|
export declare const entryRaw: <D extends DescriptorModule.ConstructedDescriptor<"component", string, any, any, any>>(descriptor: D, raw: Descriptor.Raw<D>) => Result.Result<Entry<D>, Descriptor.ConstructionError<D>>;
|
|
223
232
|
/**
|
|
224
|
-
* Adds entries to a draft. Plain entries return the
|
|
225
|
-
* a `Result`, the draft is returned as a `Result`
|
|
226
|
-
* entry's failure (or `null`).
|
|
233
|
+
* Adds entries to a draft, a value not yet spawned. Plain entries return the
|
|
234
|
+
* new draft; if any entry is a `Result`, the draft is returned as a `Result`
|
|
235
|
+
* whose error lists every entry's failure (or `null`).
|
|
236
|
+
*
|
|
237
|
+
* Use this while building what a spawn will hold. Use `commands.insert` to
|
|
238
|
+
* add or replace components on an entity that already exists.
|
|
227
239
|
*/
|
|
228
|
-
export declare const
|
|
240
|
+
export declare const extend: <S extends Schema.Any, P extends Entity.ComponentProof, Root, const Entries extends ReadonlyArray<SpawnEntry<S>>>(draft: Entity.EntityDraft<S, P, Root>, ...entries: Entries) => DraftFor<S, Entries, P, Root>;
|
|
229
241
|
/**
|
|
230
242
|
* Starts a staged entity from component entries.
|
|
231
243
|
*
|
|
@@ -250,58 +262,255 @@ export declare const spawn: <S extends Schema.Any, Root = unknown, const Entries
|
|
|
250
262
|
* attach the relation when the spawn command is applied.
|
|
251
263
|
*/
|
|
252
264
|
export declare const relate: <S extends Schema.Any, P extends Entity.ComponentProof, R extends Relation.Relation.Any, Root = unknown>(draft: Entity.EntityDraft<S, P, Root>, relation: R, target: Entity.EntityId<S, Root>) => Entity.EntityDraft<S, P, Root>;
|
|
265
|
+
/** One permission of `Game.System.commands(...)`: a kind of command, and what it may touch. */
|
|
266
|
+
export interface Permission<out Kind extends PermissionKind, out Value> {
|
|
267
|
+
readonly permission: Kind;
|
|
268
|
+
readonly values: ReadonlyArray<Value>;
|
|
269
|
+
}
|
|
270
|
+
export type PermissionKind = "spawns" | "inserts" | "removes" | "despawns" | "despawnsScope" | "relates";
|
|
271
|
+
type ComponentDescriptor = Descriptor<"component", string, any>;
|
|
272
|
+
/**
|
|
273
|
+
* Allows `spawn` / `spawnIn` of drafts whose components are all among `components`.
|
|
274
|
+
* Use it for entities the system creates; use `extend` on a draft to build one.
|
|
275
|
+
*/
|
|
276
|
+
export declare const spawns: <const Components extends ReadonlyArray<ComponentDescriptor>>(...components: Components) => Permission<"spawns", Components[number]>;
|
|
277
|
+
/**
|
|
278
|
+
* Allows `insert(entity, [X, value])` with `X` among `components`: add or
|
|
279
|
+
* replace at the next `applyDeferred()`. To change a value now, on an entity
|
|
280
|
+
* you matched, write through a query (`Game.Query.write`) instead.
|
|
281
|
+
*/
|
|
282
|
+
export declare const inserts: <const Components extends ReadonlyArray<ComponentDescriptor>>(...components: Components) => Permission<"inserts", Components[number]>;
|
|
283
|
+
/** Allows `remove(entity, X)` with `X` among `components`. */
|
|
284
|
+
export declare const removes: <const Components extends ReadonlyArray<ComponentDescriptor>>(...components: Components) => Permission<"removes", Components[number]>;
|
|
285
|
+
/**
|
|
286
|
+
* Allows `despawn(entity)` where `entity` comes from a query match proving one
|
|
287
|
+
* of `components` (`match.entity`), never a raw id: the system can only
|
|
288
|
+
* despawn what it has proven is, for example, an `Enemy`.
|
|
289
|
+
*/
|
|
290
|
+
export declare const despawns: <const Components extends ReadonlyArray<ComponentDescriptor>>(...components: Components) => Permission<"despawns", Components[number]>;
|
|
291
|
+
/** Allows `despawnScope(scope)` for this scope. */
|
|
292
|
+
export declare const despawnsScope: <const Scope extends EntityScope.EntityScope.Any>(scope: Scope) => Permission<"despawnsScope", Scope>;
|
|
293
|
+
/** Allows `relate`, `unrelate`, and `reorderChildren` for these relations. */
|
|
294
|
+
export declare const relates: <const Relations extends ReadonlyArray<Relation.Relation.Any>>(...relations: Relations) => Permission<"relates", Relations[number]>;
|
|
295
|
+
type PermissionValue<Permissions, Kind extends PermissionKind> = Permissions extends Permission<Kind, infer Value> ? Value : never;
|
|
296
|
+
/**
|
|
297
|
+
* The commands a system may queue, declared in its spec as
|
|
298
|
+
* `commands: Game.System.commands(...)`. Without it, the system has no
|
|
299
|
+
* `commands`.
|
|
300
|
+
*/
|
|
301
|
+
export interface CommandAccess<out Spawns = never, out Inserts = never, out Removes = never, out Despawns = never, out Scopes = never, out Relates = never> {
|
|
302
|
+
readonly kind: "commands";
|
|
303
|
+
readonly permissions: ReadonlyArray<Permission<PermissionKind, unknown>>;
|
|
304
|
+
readonly __permissions?: (_: never) => readonly [Spawns, Inserts, Removes, Despawns, Scopes, Relates];
|
|
305
|
+
}
|
|
306
|
+
export declare namespace CommandAccess {
|
|
307
|
+
type Any = CommandAccess<any, any, any, any, any, any>;
|
|
308
|
+
}
|
|
309
|
+
/** Declares the commands a system may queue; see the permission builders. */
|
|
310
|
+
export declare const commands: <const Permissions extends ReadonlyArray<Permission<PermissionKind, unknown>>>(...permissions: Permissions) => CommandAccess<PermissionValue<Permissions[number], "spawns">, PermissionValue<Permissions[number], "inserts">, PermissionValue<Permissions[number], "removes">, PermissionValue<Permissions[number], "despawns">, PermissionValue<Permissions[number], "despawnsScope">, PermissionValue<Permissions[number], "relates">>;
|
|
311
|
+
/** The `commands` of a system that declares none. */
|
|
312
|
+
export type NotDeclared = "commands are not declared for this system: add commands: Game.System.commands(...) to its spec, with the permissions it needs (spawns, inserts, removes, despawns, despawnsScope, relates)";
|
|
313
|
+
/** A method whose permission is not declared: any call fails with an argument error naming the fix. */
|
|
314
|
+
type MethodNotDeclared<Method extends string, Builder extends string> = (...fix: ReadonlyArray<`${Method} is not declared in this system's commands: add Game.System.${Builder}(...) to Game.System.commands(...)`>) => never;
|
|
315
|
+
type Fix<Message extends string> = {
|
|
316
|
+
readonly __fixCommands__: Message;
|
|
317
|
+
};
|
|
318
|
+
type Names<D> = D extends {
|
|
319
|
+
readonly name: infer Name extends string;
|
|
320
|
+
} ? Name : never;
|
|
321
|
+
/** Every key of every member of a union of proofs (a draft with a conditional entry is a union). */
|
|
322
|
+
type AllKeys<P> = P extends unknown ? keyof P & string : never;
|
|
323
|
+
type DraftAllowed<P, Spawns> = [
|
|
324
|
+
Exclude<AllKeys<P>, Names<Spawns>>
|
|
325
|
+
] extends [never] ? unknown : Fix<`${Exclude<AllKeys<P>, Names<Spawns>>} is not declared in this system's commands: add it to Game.System.spawns(...)`>;
|
|
326
|
+
type EntriesAllowed<Entries extends ReadonlyArray<readonly [ComponentDescriptor, unknown]>, Inserts> = [
|
|
327
|
+
Exclude<Entries[number][0], Inserts>
|
|
328
|
+
] extends [never] ? unknown : Fix<`${Names<Exclude<Entries[number][0], Inserts>>} is not declared in this system's commands: add it to Game.System.inserts(...)`>;
|
|
329
|
+
type RemoveAllowed<D, Removes> = [
|
|
330
|
+
D
|
|
331
|
+
] extends [Removes] ? unknown : Fix<`${Names<D>} is not declared in this system's commands: add it to Game.System.removes(...)`>;
|
|
332
|
+
type DespawnAllowed<E, Despawns> = E extends {
|
|
333
|
+
readonly kind: "EntityRef" | "EntityMut";
|
|
334
|
+
readonly __proves?: (_: never) => infer Proves;
|
|
335
|
+
} ? [Extract<Proves, Despawns>] extends [never] ? Fix<`despawn needs an entity from a query proving ${Names<Despawns>} (declared in despawns)`> : unknown : E extends {
|
|
336
|
+
readonly [spawnedTypeId]: (_: never) => infer Spawned;
|
|
337
|
+
} ? [Extract<Spawned, Names<Despawns>>] extends [never] ? Fix<`despawn needs an entity spawned with ${Names<Despawns>} (declared in despawns)`> : unknown : Fix<`despawn needs an entity from a query proving ${Names<Despawns>} (declared in despawns), not a raw id: pass match.entity`>;
|
|
338
|
+
declare const spawnedTypeId: unique symbol;
|
|
253
339
|
/**
|
|
254
|
-
*
|
|
340
|
+
* The id `spawn` / `spawnIn` return: an `EntityId` that also records the
|
|
341
|
+
* components its draft holds in every case, so the system that queued it can
|
|
342
|
+
* `despawn` it before the next `applyDeferred()` (no query can match it yet).
|
|
343
|
+
* Stored as a plain `EntityId`, it is a raw id again.
|
|
344
|
+
*/
|
|
345
|
+
export type SpawnedId<S extends Schema.Any, Root, Components extends string> = Entity.EntityId<S, Root> & {
|
|
346
|
+
readonly [spawnedTypeId]: (_: never) => Components;
|
|
347
|
+
};
|
|
348
|
+
/** The requirements (`[requirer, required]`) of the components in `Held` that `Held` lacks. */
|
|
349
|
+
type MissingPairs<S extends Schema.Any, Held extends string> = Extract<Schema.Requires<S>, readonly [Held, string]> extends infer Pair ? Pair extends readonly [string, infer To extends string] ? To extends Held ? never : Pair : never : never;
|
|
350
|
+
/** One message per missing requirement: `"Player requires Velocity"`. */
|
|
351
|
+
type MissingMessages<Pairs> = Pairs extends readonly [infer From extends string, infer To extends string] ? `${From} requires ${To}` : never;
|
|
352
|
+
/**
|
|
353
|
+
* Accepts a draft holding every requirement of every component it holds.
|
|
354
|
+
* Direct requirements are enough: each required component must be held
|
|
355
|
+
* too, with its own requirements.
|
|
356
|
+
*/
|
|
357
|
+
type DraftRequirementsMet<S extends Schema.Any, Held extends string> = [
|
|
358
|
+
MissingPairs<S, Held>
|
|
359
|
+
] extends [never] ? unknown : Fix<`${MissingMessages<MissingPairs<S, Held>>}: add the missing entries to the draft`>;
|
|
360
|
+
/** What an insert or remove target is known to hold: a query match's proof, or a `SpawnedId`'s draft. A raw id proves nothing. */
|
|
361
|
+
type TargetHolds<E> = E extends {
|
|
362
|
+
readonly kind: "EntityRef" | "EntityMut";
|
|
363
|
+
readonly __proves?: (_: never) => infer Proves;
|
|
364
|
+
} ? Names<Proves> : E extends {
|
|
365
|
+
readonly [spawnedTypeId]: (_: never) => infer Spawned extends string;
|
|
366
|
+
} ? Spawned : never;
|
|
367
|
+
/** What a remove target is known to lack: its query's `without`. */
|
|
368
|
+
type TargetLacks<E> = E extends {
|
|
369
|
+
readonly kind: "EntityRef" | "EntityMut";
|
|
370
|
+
readonly __lacks?: (_: never) => infer Lacks;
|
|
371
|
+
} ? Names<Lacks> : never;
|
|
372
|
+
type EntryNames<Entries extends ReadonlyArray<readonly [ComponentDescriptor, unknown]>> = Names<Entries[number][0]>;
|
|
373
|
+
/** Inserted components with requirements neither inserted alongside nor proven held by the target. */
|
|
374
|
+
type InsertRequirementsMet<S extends Schema.Any, E, Entries extends ReadonlyArray<readonly [ComponentDescriptor, unknown]>> = [
|
|
375
|
+
MissingPairs<S, EntryNames<Entries> | TargetHolds<E>> & readonly [EntryNames<Entries>, string]
|
|
376
|
+
] extends [never] ? unknown : Fix<`${MissingMessages<MissingPairs<S, EntryNames<Entries> | TargetHolds<E>> & readonly [EntryNames<Entries>, string]>}: insert it in the same call, or pass match.entity from a query that proves it`>;
|
|
377
|
+
/**
|
|
378
|
+
* Removing `Removed` is sound when every component that requires one of
|
|
379
|
+
* them is removed in the same call or proven absent by the target's query
|
|
380
|
+
* (`without`): otherwise the entity may keep a requirer without its
|
|
381
|
+
* requirement.
|
|
382
|
+
*/
|
|
383
|
+
type RemoveViolations<S extends Schema.Any, E, Removed extends string> = Extract<Schema.Requires<S>, readonly [string, Removed]> extends infer Pair ? Pair extends readonly [infer From extends string, infer To extends string] ? From extends Removed | TargetLacks<E> ? never : `${To} is required by ${From}: remove ${From} in the same call, or match the entity with a query that has without: [${From}]` : never : never;
|
|
384
|
+
type RemoveRequirementsMet<S extends Schema.Any, E, Removed extends string> = [
|
|
385
|
+
RemoveViolations<S, E, Removed>
|
|
386
|
+
] extends [never] ? unknown : Fix<RemoveViolations<S, E, Removed>>;
|
|
387
|
+
/** A remove target: `match.entity`, or the id `spawn` returned in this run; never a raw id. */
|
|
388
|
+
type RemoveTargetAllowed<S extends Schema.Any, Root, E> = E extends {
|
|
389
|
+
readonly kind: "EntityRef" | "EntityMut";
|
|
390
|
+
readonly id: Entity.EntityId<S, Root>;
|
|
391
|
+
} ? unknown : E extends SpawnedId<S, Root, string> ? unknown : Fix<"remove needs an entity from a query (pass match.entity) or the id spawn returned in this run, not a raw id">;
|
|
392
|
+
/** The transitive closure of the names `N` require (cycles stop). */
|
|
393
|
+
type RequiredClosure<Pairs extends RequirementPair, N extends string, Seen extends string = never> = [
|
|
394
|
+
Exclude<N, Seen>
|
|
395
|
+
] extends [never] ? Seen : RequiredClosure<Pairs, Extract<Pairs, readonly [Exclude<N, Seen>, string]>[1], Seen | N>;
|
|
396
|
+
/**
|
|
397
|
+
* The component descriptors that `Names` require, transitively
|
|
398
|
+
* (`Schema.requires`): what `Game.System.spawns(...)` also allows.
|
|
399
|
+
*/
|
|
400
|
+
export type RequiredDescriptors<S extends Schema.Any, Names extends string> = 0 extends 1 & Names ? never : string extends Names ? never : [Extract<Schema.Requires<S>, readonly [Names, string]>] extends [never] ? never : Extract<Schema.ComponentDescriptor<S>, {
|
|
401
|
+
readonly name: Exclude<RequiredClosure<Schema.Requires<S>, Names>, Names>;
|
|
402
|
+
}>;
|
|
403
|
+
type SchemaComponent<S extends Schema.Any> = Extract<Schema.Components<S>[keyof Schema.Components<S>], ComponentDescriptor>;
|
|
404
|
+
/** An entity a system has proven something about: `match.entity`, or the id `spawn` returned. */
|
|
405
|
+
type EntityTarget<S extends Schema.Any, Root> = {
|
|
406
|
+
readonly kind: "EntityRef" | "EntityMut";
|
|
407
|
+
readonly id: Entity.EntityId<S, Root>;
|
|
408
|
+
} | SpawnedId<S, Root, string>;
|
|
409
|
+
/** The keys every member of a union of proofs requires (what a draft holds in every case). */
|
|
410
|
+
type RequiredKeys<P> = P extends unknown ? {
|
|
411
|
+
[K in keyof P]-?: {} extends Pick<P, K> ? never : K;
|
|
412
|
+
}[keyof P] & string : never;
|
|
413
|
+
type MissingSomewhere<P, All> = P extends unknown ? Exclude<All, RequiredKeys<P>> : never;
|
|
414
|
+
type HeldNames<P> = Exclude<AllKeys<P>, MissingSomewhere<P, AllKeys<P>>>;
|
|
415
|
+
/**
|
|
416
|
+
* The command API a system gets for its declared permissions. Commands are
|
|
417
|
+
* the structural mutation entrypoint: spawns, inserts, removals, despawns,
|
|
418
|
+
* and relation edits. They are queued in order and applied only at the next
|
|
419
|
+
* `applyDeferred()` (or `applyStateTransitions(...)`) schedule step.
|
|
255
420
|
*
|
|
256
|
-
*
|
|
257
|
-
*
|
|
258
|
-
*
|
|
421
|
+
* Each method exists only with its permission, and only for what it names:
|
|
422
|
+
* `spawn` needs `Game.System.spawns(...)` listing every component of the
|
|
423
|
+
* draft, `insert` needs `inserts`, `remove` needs `removes`, `despawn` needs
|
|
424
|
+
* `despawns` and an entity from a query proving one of them, `despawnScope`
|
|
425
|
+
* needs `despawnsScope`, and relation edits need `relates`.
|
|
259
426
|
*
|
|
260
427
|
* Resource and event writes are not commands: they go through the
|
|
261
428
|
* `writeResource(...)` / `writeEvent(...)` access a system declares.
|
|
262
429
|
*/
|
|
263
|
-
export interface CommandsApi<S extends Schema.Any, Root = unknown> {
|
|
430
|
+
export interface CommandsApi<S extends Schema.Any, Root = unknown, Spawns = never, Inserts = never, Removes = never, Despawns = never, Scopes = never, Relates = never> {
|
|
264
431
|
/**
|
|
265
432
|
* Queues a staged entity for spawning and returns its stable runtime id.
|
|
433
|
+
*
|
|
434
|
+
* The draft must hold every component its components require
|
|
435
|
+
* (`Schema.requires`); drafts are checked here, so a partial draft built
|
|
436
|
+
* with `Game.Command.spawn(...)` and completed with `extend(...)` is fine.
|
|
266
437
|
*/
|
|
267
|
-
readonly spawn: <P extends Entity.ComponentProof>(draft: Entity.EntityDraft<S, P, Root>) =>
|
|
438
|
+
readonly spawn: [Spawns] extends [never] ? MethodNotDeclared<"spawn", "spawns"> : <P extends Entity.ComponentProof>(draft: Entity.EntityDraft<S, P, Root> & DraftAllowed<P, Spawns> & DraftRequirementsMet<S, HeldNames<P>>) => SpawnedId<S, Root, HeldNames<P>>;
|
|
268
439
|
/**
|
|
269
|
-
* Queues an entity spawn owned by one lifetime scope
|
|
270
|
-
*
|
|
271
|
-
* Scoped entities can later be removed together with `despawnScope(...)`.
|
|
440
|
+
* Queues an entity spawn owned by one lifetime scope (removed together
|
|
441
|
+
* with `despawnScope(...)`). The draft is checked like `spawn(...)`.
|
|
272
442
|
*/
|
|
273
|
-
readonly spawnIn: <P extends Entity.ComponentProof>(scope: EntityScope.EntityScope<string, Root>, draft: Entity.EntityDraft<S, P, Root>) =>
|
|
443
|
+
readonly spawnIn: [Spawns] extends [never] ? MethodNotDeclared<"spawnIn", "spawns"> : <P extends Entity.ComponentProof>(scope: EntityScope.EntityScope<string, Root>, draft: Entity.EntityDraft<S, P, Root> & DraftAllowed<P, Spawns> & DraftRequirementsMet<S, HeldNames<P>>) => SpawnedId<S, Root, HeldNames<P>>;
|
|
274
444
|
/**
|
|
275
|
-
* Queues component inserts (or replacements) on an existing entity
|
|
445
|
+
* Queues component inserts (or replacements) on an existing entity, applied
|
|
446
|
+
* at the next `applyDeferred()`. To change a value now, on an entity you
|
|
447
|
+
* matched, write through a query (`Game.Query.write`) instead; components
|
|
448
|
+
* declared `immutable: true` change only through `insert`.
|
|
449
|
+
*
|
|
450
|
+
* Pass `match.entity`: its query proves what the entity holds, which must
|
|
451
|
+
* cover what the inserted components require (`Schema.requires`) together
|
|
452
|
+
* with the entries inserted in the same call. The id `spawn` returned in
|
|
453
|
+
* this run proves its draft. A raw `EntityId` proves nothing, so it only
|
|
454
|
+
* inserts components without requirements.
|
|
276
455
|
*
|
|
277
456
|
* Entries must already be valid; validate raw input with
|
|
278
457
|
* `Game.Command.entryRaw(...)` first.
|
|
279
458
|
*/
|
|
280
|
-
readonly insert:
|
|
459
|
+
readonly insert: [Inserts] extends [never] ? MethodNotDeclared<"insert", "inserts"> : <const E extends Entity.EntityId<S, Root> | EntityTarget<S, Root>, const Entries extends ReadonlyArray<SchemaEntry<S>>>(entity: E, ...entries: Entries & EntriesAllowed<Entries, Inserts> & InsertRequirementsMet<S, E, Entries>) => Entity.EntityId<S, Root>;
|
|
281
460
|
/**
|
|
282
|
-
* Queues an entity removal.
|
|
461
|
+
* Queues an entity removal. A despawned entity stays visible to queries
|
|
462
|
+
* until the next `applyDeferred()`, and despawns never count as writers for
|
|
463
|
+
* `Game.System.thisTick` query reads.
|
|
464
|
+
*
|
|
465
|
+
* Pass `match.entity` from a query proving one of the `despawns`
|
|
466
|
+
* components, or the id `spawn` returned in this run (it holds its draft's
|
|
467
|
+
* components); never a raw id.
|
|
283
468
|
*/
|
|
284
|
-
readonly despawn: (entity:
|
|
469
|
+
readonly despawn: [Despawns] extends [never] ? MethodNotDeclared<"despawn", "despawns"> : <const E>(entity: unknown extends DespawnAllowed<E, Despawns> ? E : DespawnAllowed<E, Despawns>) => void;
|
|
285
470
|
/**
|
|
286
471
|
* Queues removal of every entity owned by one lifetime scope.
|
|
287
472
|
*/
|
|
288
|
-
readonly despawnScope:
|
|
473
|
+
readonly despawnScope: [Scopes] extends [never] ? MethodNotDeclared<"despawnScope", "despawnsScope"> : (scope: Scopes) => void;
|
|
289
474
|
/**
|
|
290
|
-
* Queues
|
|
475
|
+
* Queues the removal of one or more components from an existing entity,
|
|
476
|
+
* applied together at the next `applyDeferred()`.
|
|
477
|
+
*
|
|
478
|
+
* Pass `match.entity` from a query, or the id `spawn` returned in this run;
|
|
479
|
+
* never a raw id. A component another one requires (`Schema.requires`) can
|
|
480
|
+
* only go together with that requirer, in the same call, or from an
|
|
481
|
+
* entity whose query has `without: [Requirer]`.
|
|
291
482
|
*/
|
|
292
|
-
readonly remove: <
|
|
483
|
+
readonly remove: [Removes] extends [never] ? MethodNotDeclared<"remove", "removes"> : <const E, const Ds extends readonly [SchemaComponent<S>, ...Array<SchemaComponent<S>>]>(entity: unknown extends RemoveTargetAllowed<S, Root, E> ? E : RemoveTargetAllowed<S, Root, E>, ...descriptors: Ds & RemoveAllowed<Ds[number], Removes> & RemoveRequirementsMet<S, E, Names<Ds[number]>>) => Entity.EntityId<S, Root>;
|
|
293
484
|
/**
|
|
294
485
|
* Queues one live relation mutation for deferred application.
|
|
295
486
|
*/
|
|
296
|
-
readonly relate: <R extends Extract<
|
|
487
|
+
readonly relate: [Relates] extends [never] ? MethodNotDeclared<"relate", "relates"> : <R extends Extract<Relates, Relation.Relation.Any>>(entity: Entity.EntityId<S, Root>, relation: R, target: Entity.EntityId<S, Root>) => void;
|
|
297
488
|
/**
|
|
298
489
|
* Queues removal of one outgoing relation when present.
|
|
299
490
|
*/
|
|
300
|
-
readonly unrelate: <R extends Extract<
|
|
491
|
+
readonly unrelate: [Relates] extends [never] ? MethodNotDeclared<"unrelate", "relates"> : <R extends Extract<Relates, Relation.Relation.Any>>(entity: Entity.EntityId<S, Root>, relation: R) => void;
|
|
301
492
|
/**
|
|
302
493
|
* Queues a hierarchy-only reorder of one parent's current children.
|
|
303
494
|
*/
|
|
304
|
-
readonly reorderChildren: <R extends Extract<
|
|
495
|
+
readonly reorderChildren: [Relates] extends [never] ? MethodNotDeclared<"reorderChildren", "relates"> : <R extends Extract<Relates, Relation.Relation.Hierarchy>>(entity: Entity.EntityId<S, Root>, relation: R, children: ReadonlyArray<Entity.EntityId<S, Root>>) => void;
|
|
496
|
+
}
|
|
497
|
+
/** The command queue the runtime gives each system: every command, unchecked, and `flush`. */
|
|
498
|
+
export interface CommandQueue<S extends Schema.Any, Root = unknown> {
|
|
499
|
+
readonly spawn: (draft: Entity.EntityDraft<S, any, Root>) => Entity.EntityId<S, Root>;
|
|
500
|
+
readonly spawnIn: (scope: EntityScope.EntityScope<string, Root>, draft: Entity.EntityDraft<S, any, Root>) => Entity.EntityId<S, Root>;
|
|
501
|
+
readonly insert: (entity: Entity.EntityId<S, Root> | {
|
|
502
|
+
readonly id: Entity.EntityId<S, Root>;
|
|
503
|
+
}, ...entries: ReadonlyArray<SchemaEntry<S>>) => Entity.EntityId<S, Root>;
|
|
504
|
+
readonly despawn: (entity: Entity.EntityId<S, Root> | {
|
|
505
|
+
readonly id: Entity.EntityId<S, Root>;
|
|
506
|
+
}) => void;
|
|
507
|
+
readonly despawnScope: (scope: EntityScope.EntityScope<string, Root>) => void;
|
|
508
|
+
readonly remove: (entity: Entity.EntityId<S, Root> | {
|
|
509
|
+
readonly id: Entity.EntityId<S, Root>;
|
|
510
|
+
}, ...descriptors: ReadonlyArray<ComponentDescriptor>) => Entity.EntityId<S, Root>;
|
|
511
|
+
readonly relate: (entity: Entity.EntityId<S, Root>, relation: Relation.Relation.Any, target: Entity.EntityId<S, Root>) => void;
|
|
512
|
+
readonly unrelate: (entity: Entity.EntityId<S, Root>, relation: Relation.Relation.Any) => void;
|
|
513
|
+
readonly reorderChildren: (entity: Entity.EntityId<S, Root>, relation: Relation.Relation.Hierarchy, children: ReadonlyArray<Entity.EntityId<S, Root>>) => void;
|
|
305
514
|
/**
|
|
306
515
|
* Drains the queued commands in insertion order.
|
|
307
516
|
*/
|
|
@@ -313,6 +522,6 @@ export interface CommandsApi<S extends Schema.Any, Root = unknown> {
|
|
|
313
522
|
* The returned API is intentionally imperative for system authors, but all
|
|
314
523
|
* mutations stay deferred until `flush()` is applied by the runtime.
|
|
315
524
|
*/
|
|
316
|
-
export declare const makeCommands: <S extends Schema.Any, Root = unknown>(allocateId: () => Entity.EntityId<S, Root>) =>
|
|
525
|
+
export declare const makeCommands: <S extends Schema.Any, Root = unknown>(allocateId: () => Entity.EntityId<S, Root>) => CommandQueue<S, Root>;
|
|
317
526
|
export {};
|
|
318
527
|
//# sourceMappingURL=Command.d.ts.map
|
package/dist/Command.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Command.d.ts","sourceRoot":"","sources":["../src/Command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AACH,OAAO,KAAK,gBAAgB,MAAM,iBAAiB,CAAA;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,KAAK,WAAW,MAAM,kBAAkB,CAAA;AACpD,OAAO,KAAK,KAAK,QAAQ,MAAM,eAAe,CAAA;AAC9C,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC;;;;;GAKG;AACH,yBAAiB,KAAK,CAAC;IACrB;;;;;OAKG;IACH,KAAY,MAAM,CAChB,CAAC,SAAS,MAAM,CAAC,cAAc,EAC/B,GAAG,SAAS,MAAM,EAClB,KAAK,IACH,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG;QACjB,QAAQ,EAAE,CAAC,IAAI,GAAG,GAAG,KAAK;KAC3B,CAAA;IAED;;OAEG;IACH,KAAY,WAAW,CACrB,CAAC,SAAS,MAAM,CAAC,cAAc,EAC/B,KAAK,SAAS,SAAS,CAAC,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,IACpE,KAAK,SAAS,SAAS,CAAC,MAAM,CAAC,SAAS,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC,GAC3F,MAAM,CAAC,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAClD,CAAC,CAAA;CACN;AAED;;GAEG;AACH,MAAM,MAAM,KAAK,CAAC,CAAC,SAAS,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AAErG;;GAEG;AACH,KAAK,yBAAyB,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,IACjD,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAA;AAEjG;;;;GAIG;AACH,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAA;AAEnF;;;GAGG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,IAAI,OAAO,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAA;AAErF;;;GAGG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;AAElG,KAAK,UAAU,CAAC,CAAC,IACf;IAAC,CAAC;CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,SAAS,CAAC,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,GAC1G,KAAK,GACL,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,GACpE,CAAC,GACD,KAAK,CAAA;AAEb;;GAEG;AACH,MAAM,MAAM,WAAW,CACrB,OAAO,SAAS,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAC9C,CAAC,SAAS,MAAM,CAAC,cAAc,GAAG,EAAE,IAClC,OAAO,SAAS,SAAS;IAC3B,MAAM,IAAI,SAAS,UAAU,CAAC,GAAG,CAAC;IAClC,GAAG,MAAM,IAAI,SAAS,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;CAC7C,GACG,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,GACzD,CAAC,CAAA;AAEL;;;GAGG;AACH,MAAM,MAAM,WAAW,CAAC,OAAO,SAAS,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI;IACxE,QAAQ,EAAE,CAAC,IAAI,MAAM,OAAO,GAC1B,OAAO,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI;CAC3E,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,QAAQ,CAClB,CAAC,SAAS,MAAM,CAAC,GAAG,EACpB,OAAO,SAAS,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAC5C,CAAC,SAAS,MAAM,CAAC,cAAc,EAC/B,IAAI,IACF,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GACpE,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,GACpD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,CAAA;AAE7F;;;;;GAKG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,IAAI;IAClD;;OAEG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,IAAI,CAAA;CAClD,CAAA;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG;IACjD;;;OAGG;IACH,QAAQ,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,IAAI,CAAA;IAC9G;;OAEG;IACH,QAAQ,CAAC,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,IAAI,CAAA;IAC7D;;OAEG;IACH,QAAQ,CAAC,iBAAiB,EAAE,CAC1B,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAC3B,KAAK,EAAE,WAAW,CAAC,WAAW,CAAC,GAAG,KAC/B,IAAI,CAAA;IACT;;OAEG;IACH,QAAQ,CAAC,kBAAkB,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,WAAW,CAAC,GAAG,KAAK,IAAI,CAAA;IACzE;;OAEG;IACH,QAAQ,CAAC,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAA;IACjH;;OAEG;IACH,QAAQ,CAAC,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IAChI;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,CAClB,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAC3B,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAC/B,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,KAC5B,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAA;IACzD;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,CACjB,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAC3B,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,KAC5B,IAAI,CAAA;IACT;;OAEG;IACH,QAAQ,CAAC,eAAe,EAAE,CACxB,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAC3B,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,SAAS,EACrC,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,KAC7C,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAA;CAC1D;AAOD;;GAEG;AACH,eAAO,MAAM,KAAK,GAAI,CAAC,SAAS,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,CAAC,cACtD,CAAC,SACN,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,KACzB,KAAK,CAAC,CAAC,CAAwB,CAAA;AAElC;;;GAGG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,cACnE,CAAC,UACL,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAChD,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAGE,CAAA;AAElC;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,QAAQ,GAAI,CAAC,SAAS,gBAAgB,CAAC,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,cAC/F,CAAC,OACR,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,KACrB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAC8F,CAAA;AAExJ;;;;GAIG;AACH,eAAO,MAAM,MAAM,GACjB,CAAC,SAAS,MAAM,CAAC,GAAG,EACpB,CAAC,SAAS,MAAM,CAAC,cAAc,EAC/B,IAAI,EACJ,KAAK,CAAC,OAAO,SAAS,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAE3C,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,cACzB,OAAO,KAClB,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,CACwF,CAAA;AAyCvH;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,KAAK,GAChB,CAAC,SAAS,MAAM,CAAC,GAAG,EACpB,IAAI,GAAG,OAAO,EACd,KAAK,CAAC,OAAO,SAAS,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,EAAE,cAEpD,OAAO,KAClB,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,CACoD,CAAA;AAIpF;;;;;GAKG;AACH,eAAO,MAAM,MAAM,GACjB,CAAC,SAAS,MAAM,CAAC,GAAG,EACpB,CAAC,SAAS,MAAM,CAAC,cAAc,EAC/B,CAAC,SAAS,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAC/B,IAAI,GAAG,OAAO,SAEP,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,YAC3B,CAAC,UACH,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,KAC/B,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAO5B,CAAA;AAEJ;;;;;;;;;GASG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,IAAI,GAAG,OAAO;IAC/D;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,cAAc,EAAE,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;IACpH;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,cAAc,EAChD,KAAK,EAAE,WAAW,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,EAC5C,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAClC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;IAC7B;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,EAAE,CACf,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAChC,GAAG,OAAO,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KACtC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;IAC7B;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,IAAI,CAAA;IAC5D;;OAEG;IACH,QAAQ,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,IAAI,CAAA;IAC7E;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,EACzH,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAChC,UAAU,EAAE,CAAC,KACV,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;IAC7B;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EACxG,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAChC,QAAQ,EAAE,CAAC,EACX,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,KAC7B,IAAI,CAAA;IACT;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAC1G,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAChC,QAAQ,EAAE,CAAC,KACR,IAAI,CAAA;IACT;;OAEG;IACH,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,EACvH,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAChC,QAAQ,EAAE,CAAC,EACX,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,KAC9C,IAAI,CAAA;IACT;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,aAAa,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAA;CACxD;AAED;;;;;GAKG;AACH,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,IAAI,GAAG,OAAO,cACnD,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,KACzC,WAAW,CAAC,CAAC,EAAE,IAAI,CAwGrB,CAAA"}
|
|
1
|
+
{"version":3,"file":"Command.d.ts","sourceRoot":"","sources":["../src/Command.ts"],"names":[],"mappings":"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"}
|
package/dist/Command.js
CHANGED
|
@@ -71,15 +71,15 @@ const unspawnedId = Entity.makeEntityId(-1);
|
|
|
71
71
|
*/
|
|
72
72
|
export const entry = (descriptor, value) => [descriptor, value];
|
|
73
73
|
/**
|
|
74
|
-
*
|
|
75
|
-
*
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
*
|
|
82
|
-
*
|
|
74
|
+
* Validates raw input through a constructed descriptor's own validator and
|
|
75
|
+
* returns an entry result for `spawn(...)` / `insert(...)`.
|
|
76
|
+
*
|
|
77
|
+
* This is the one way to put unvalidated data on an entity: the descriptor
|
|
78
|
+
* owns its validator (`Descriptor.ConstructedComponent(...)`, built with
|
|
79
|
+
* `Decode` or `Descriptor.fromStandardSchema`). Values that are already
|
|
80
|
+
* valid use a plain `[Descriptor, value]` entry instead. To validate authored
|
|
81
|
+
* constants once at module load, call the constructor (`Vector2.result(...)`)
|
|
82
|
+
* and keep the carried value.
|
|
83
83
|
*
|
|
84
84
|
* @example
|
|
85
85
|
* ```ts
|
|
@@ -91,13 +91,21 @@ export const entryResult = (descriptor, result) => result.ok
|
|
|
91
91
|
* commands.spawn(draft.value)
|
|
92
92
|
* ```
|
|
93
93
|
*/
|
|
94
|
-
export const entryRaw = (descriptor, raw) =>
|
|
94
|
+
export const entryRaw = (descriptor, raw) => {
|
|
95
|
+
const validated = DescriptorModule.constructorOf(descriptor).result(raw);
|
|
96
|
+
return validated.ok
|
|
97
|
+
? Result.success([descriptor, validated.value])
|
|
98
|
+
: Result.failure(validated.error);
|
|
99
|
+
};
|
|
95
100
|
/**
|
|
96
|
-
* Adds entries to a draft. Plain entries return the
|
|
97
|
-
* a `Result`, the draft is returned as a `Result`
|
|
98
|
-
* entry's failure (or `null`).
|
|
101
|
+
* Adds entries to a draft, a value not yet spawned. Plain entries return the
|
|
102
|
+
* new draft; if any entry is a `Result`, the draft is returned as a `Result`
|
|
103
|
+
* whose error lists every entry's failure (or `null`).
|
|
104
|
+
*
|
|
105
|
+
* Use this while building what a spawn will hold. Use `commands.insert` to
|
|
106
|
+
* add or replace components on an entity that already exists.
|
|
99
107
|
*/
|
|
100
|
-
export const
|
|
108
|
+
export const extend = (draft, ...entries) => build(draft.id, { ...draft.proof }, [...draft.components], draft.relations, entries);
|
|
101
109
|
/**
|
|
102
110
|
* Shared draft builder. Plain entries take a fast path; the first `Result`
|
|
103
111
|
* entry switches to collecting per-entry errors.
|
|
@@ -162,6 +170,31 @@ export const relate = (draft, relation, target) => Entity.draft(draft.id, draft.
|
|
|
162
170
|
target
|
|
163
171
|
}
|
|
164
172
|
]);
|
|
173
|
+
/**
|
|
174
|
+
* Allows `spawn` / `spawnIn` of drafts whose components are all among `components`.
|
|
175
|
+
* Use it for entities the system creates; use `extend` on a draft to build one.
|
|
176
|
+
*/
|
|
177
|
+
export const spawns = (...components) => ({ permission: "spawns", values: components });
|
|
178
|
+
/**
|
|
179
|
+
* Allows `insert(entity, [X, value])` with `X` among `components`: add or
|
|
180
|
+
* replace at the next `applyDeferred()`. To change a value now, on an entity
|
|
181
|
+
* you matched, write through a query (`Game.Query.write`) instead.
|
|
182
|
+
*/
|
|
183
|
+
export const inserts = (...components) => ({ permission: "inserts", values: components });
|
|
184
|
+
/** Allows `remove(entity, X)` with `X` among `components`. */
|
|
185
|
+
export const removes = (...components) => ({ permission: "removes", values: components });
|
|
186
|
+
/**
|
|
187
|
+
* Allows `despawn(entity)` where `entity` comes from a query match proving one
|
|
188
|
+
* of `components` (`match.entity`), never a raw id: the system can only
|
|
189
|
+
* despawn what it has proven is, for example, an `Enemy`.
|
|
190
|
+
*/
|
|
191
|
+
export const despawns = (...components) => ({ permission: "despawns", values: components });
|
|
192
|
+
/** Allows `despawnScope(scope)` for this scope. */
|
|
193
|
+
export const despawnsScope = (scope) => ({ permission: "despawnsScope", values: [scope] });
|
|
194
|
+
/** Allows `relate`, `unrelate`, and `reorderChildren` for these relations. */
|
|
195
|
+
export const relates = (...relations) => ({ permission: "relates", values: relations });
|
|
196
|
+
/** Declares the commands a system may queue; see the permission builders. */
|
|
197
|
+
export const commands = (...permissions) => ({ kind: "commands", permissions });
|
|
165
198
|
/**
|
|
166
199
|
* Creates a fresh command queue for a system execution.
|
|
167
200
|
*
|
|
@@ -182,7 +215,8 @@ export const makeCommands = (allocateId) => {
|
|
|
182
215
|
queue.push({
|
|
183
216
|
tag: "spawn",
|
|
184
217
|
apply(world) {
|
|
185
|
-
world.spawnEntity(id, draft.components)
|
|
218
|
+
if (!world.spawnEntity(id, draft.components))
|
|
219
|
+
return;
|
|
186
220
|
for (const stagedRelation of draft.relations) {
|
|
187
221
|
world.tryRelate(id, stagedRelation.relation, stagedRelation.target);
|
|
188
222
|
}
|
|
@@ -195,7 +229,8 @@ export const makeCommands = (allocateId) => {
|
|
|
195
229
|
queue.push({
|
|
196
230
|
tag: "spawnIn",
|
|
197
231
|
apply(world) {
|
|
198
|
-
world.spawnEntity(id, draft.components)
|
|
232
|
+
if (!world.spawnEntity(id, draft.components))
|
|
233
|
+
return;
|
|
199
234
|
world.assignEntityScope(id, scope);
|
|
200
235
|
for (const stagedRelation of draft.relations) {
|
|
201
236
|
world.tryRelate(id, stagedRelation.relation, stagedRelation.target);
|
|
@@ -204,22 +239,22 @@ export const makeCommands = (allocateId) => {
|
|
|
204
239
|
});
|
|
205
240
|
return id;
|
|
206
241
|
},
|
|
207
|
-
insert(
|
|
242
|
+
insert(target, ...entries) {
|
|
243
|
+
const entity = typeof target === "object" ? target.id : target;
|
|
208
244
|
queue.push({
|
|
209
245
|
tag: "insert",
|
|
210
246
|
apply(world) {
|
|
211
|
-
|
|
212
|
-
world.writeComponent(entity, descriptor, value);
|
|
213
|
-
}
|
|
247
|
+
world.insertComponents(entity, entries);
|
|
214
248
|
}
|
|
215
249
|
});
|
|
216
250
|
return entity;
|
|
217
251
|
},
|
|
218
252
|
despawn(entity) {
|
|
253
|
+
const id = typeof entity === "object" ? entity.id : entity;
|
|
219
254
|
queue.push({
|
|
220
255
|
tag: "despawn",
|
|
221
256
|
apply(world) {
|
|
222
|
-
world.destroyEntity(
|
|
257
|
+
world.destroyEntity(id);
|
|
223
258
|
}
|
|
224
259
|
});
|
|
225
260
|
},
|
|
@@ -231,11 +266,12 @@ export const makeCommands = (allocateId) => {
|
|
|
231
266
|
}
|
|
232
267
|
});
|
|
233
268
|
},
|
|
234
|
-
remove(
|
|
269
|
+
remove(target, ...descriptors) {
|
|
270
|
+
const entity = typeof target === "object" ? target.id : target;
|
|
235
271
|
queue.push({
|
|
236
272
|
tag: "remove",
|
|
237
273
|
apply(world) {
|
|
238
|
-
world.
|
|
274
|
+
world.removeComponents(entity, descriptors);
|
|
239
275
|
}
|
|
240
276
|
});
|
|
241
277
|
return entity;
|