@benev/archimedes 0.1.0-4 → 0.1.0-6

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.
Files changed (50) hide show
  1. package/README.md +24 -23
  2. package/package.json +2 -2
  3. package/s/ecs/index.ts +2 -2
  4. package/s/ecs/parts/apply-delta.ts +37 -0
  5. package/s/ecs/parts/change.ts +24 -12
  6. package/s/ecs/parts/entities.ts +1 -1
  7. package/s/ecs/parts/execute.ts +29 -0
  8. package/s/ecs/parts/lifecycle.ts +10 -9
  9. package/s/ecs/parts/types.ts +9 -8
  10. package/s/ecs/test/setup-example.ts +29 -24
  11. package/s/ecs/test/setup-lifecycle-counts.ts +9 -4
  12. package/s/ecs/test.ts +114 -61
  13. package/x/ecs/index.d.ts +2 -2
  14. package/x/ecs/index.js +2 -2
  15. package/x/ecs/index.js.map +1 -1
  16. package/x/ecs/parts/apply-delta.d.ts +3 -0
  17. package/x/ecs/parts/apply-delta.js +34 -0
  18. package/x/ecs/parts/apply-delta.js.map +1 -0
  19. package/x/ecs/parts/change.d.ts +10 -8
  20. package/x/ecs/parts/change.js +28 -8
  21. package/x/ecs/parts/change.js.map +1 -1
  22. package/x/ecs/parts/entities.d.ts +1 -1
  23. package/x/ecs/parts/entities.js +1 -1
  24. package/x/ecs/parts/entities.js.map +1 -1
  25. package/x/ecs/parts/execute.d.ts +3 -0
  26. package/x/ecs/parts/execute.js +18 -0
  27. package/x/ecs/parts/execute.js.map +1 -0
  28. package/x/ecs/parts/lifecycle.d.ts +1 -1
  29. package/x/ecs/parts/lifecycle.js +9 -8
  30. package/x/ecs/parts/lifecycle.js.map +1 -1
  31. package/x/ecs/parts/types.d.ts +8 -8
  32. package/x/ecs/parts/types.js +7 -8
  33. package/x/ecs/parts/types.js.map +1 -1
  34. package/x/ecs/test/setup-example.d.ts +11 -12
  35. package/x/ecs/test/setup-example.js +33 -25
  36. package/x/ecs/test/setup-example.js.map +1 -1
  37. package/x/ecs/test/setup-lifecycle-counts.d.ts +5 -1
  38. package/x/ecs/test/setup-lifecycle-counts.js +7 -4
  39. package/x/ecs/test/setup-lifecycle-counts.js.map +1 -1
  40. package/x/ecs/test.d.ts +4 -0
  41. package/x/ecs/test.js +107 -58
  42. package/x/ecs/test.js.map +1 -1
  43. package/s/ecs/parts/apply-change.ts +0 -33
  44. package/s/ecs/parts/execute-systems.ts +0 -18
  45. package/x/ecs/parts/apply-change.d.ts +0 -3
  46. package/x/ecs/parts/apply-change.js +0 -30
  47. package/x/ecs/parts/apply-change.js.map +0 -1
  48. package/x/ecs/parts/execute-systems.d.ts +0 -3
  49. package/x/ecs/parts/execute-systems.js +0 -12
  50. package/x/ecs/parts/execute-systems.js.map +0 -1
package/x/ecs/test.js CHANGED
@@ -1,110 +1,159 @@
1
1
  import { suite, test, expect } from "@e280/science";
2
- import { change } from "./parts/change.js";
2
+ import { asSystems } from "./parts/types.js";
3
3
  import { lifecycle } from "./parts/lifecycle.js";
4
- import { applyChange } from "./parts/apply-change.js";
5
- import { setupExample } from "./test/setup-example.js";
6
- import { executeSystems } from "./parts/execute-systems.js";
4
+ import { makeExecute } from "./parts/execute.js";
7
5
  import { setupLifecycleCounts } from "./test/setup-lifecycle-counts.js";
6
+ import { setupExample } from "./test/setup-example.js";
8
7
  export default suite({
9
8
  "create an entity": test(async () => {
10
- const { entities } = setupExample();
9
+ const { entities, change } = setupExample();
11
10
  expect(entities.size).is(0);
12
- applyChange(entities, change.create({ health: 100 }));
11
+ change.create({ health: 100 });
13
12
  expect(entities.size).is(1);
14
13
  }),
15
14
  "delete an entity": test(async () => {
16
- const { entities } = setupExample();
17
- const id = applyChange(entities, change.create({ health: 100 }));
15
+ const { entities, change } = setupExample();
16
+ const id = change.create({ health: 100 });
18
17
  expect(entities.size).is(1);
19
- applyChange(entities, change.delete(id));
18
+ change.delete(id);
20
19
  expect(entities.size).is(0);
21
20
  }),
22
21
  "merge components into entity": test(async () => {
23
- const { entities } = setupExample();
24
- const id = applyChange(entities, change.create({ health: 100, mana: 100 }));
22
+ const { entities, change } = setupExample();
23
+ const id = change.create({ health: 100, mana: 100 });
25
24
  expect(entities.require(id).health).is(100);
26
- applyChange(entities, change.merge(id, { health: 99 }));
25
+ change.merge(id, { health: 99 });
27
26
  expect(entities.require(id).health).is(99);
28
27
  expect(entities.require(id).mana).is(100);
29
28
  }),
29
+ "ignore merge after delete": test(async () => {
30
+ const { entities, change } = setupExample();
31
+ const id = change.create({ health: 100, mana: 100 });
32
+ expect(entities.get(id)).ok();
33
+ change.delete(id);
34
+ expect(entities.get(id)).not.ok();
35
+ change.merge(id, { health: 99 });
36
+ expect(entities.get(id)).not.ok();
37
+ }),
38
+ "ignore drop after delete": test(async () => {
39
+ const { entities, change } = setupExample();
40
+ const id = change.create({ health: 100, mana: 100 });
41
+ expect(entities.get(id)).ok();
42
+ change.delete(id);
43
+ expect(entities.get(id)).not.ok();
44
+ change.drop(id, "health");
45
+ expect(entities.get(id)).not.ok();
46
+ }),
30
47
  "select an entity": test(async () => {
31
- const { entities } = setupExample();
32
- applyChange(entities, change.create({ health: 100 }));
48
+ const { entities, change } = setupExample();
49
+ change.create({ health: 100 });
33
50
  expect([...entities.select("health")].length).is(1);
34
51
  }),
35
52
  "drop components from entity": test(async () => {
36
- const { entities } = setupExample();
37
- const id = applyChange(entities, change.create({ health: 100, mana: 100 }));
53
+ const { entities, change } = setupExample();
54
+ const id = change.create({ health: 100, mana: 100 });
38
55
  expect([...entities.select("health", "mana")].length).is(1);
39
- applyChange(entities, change.drop(id, "mana"));
56
+ change.drop(id, "mana");
40
57
  expect("mana" in entities.require(id)).is(false);
41
58
  expect([...entities.select("health", "mana")].length).is(0);
42
59
  }),
43
60
  "select two entities": test(async () => {
44
- const { entities } = setupExample();
45
- applyChange(entities, change.create({ health: 100 }));
46
- applyChange(entities, change.create({ health: 100 }));
61
+ const { entities, change } = setupExample();
62
+ change.create({ health: 100 });
63
+ change.create({ health: 100 });
47
64
  expect([...entities.select("health")].length).is(2);
48
65
  }),
49
66
  "select with no component keys selects all": test(async () => {
50
- const { entities } = setupExample();
51
- applyChange(entities, change.create({ health: 100 }));
52
- applyChange(entities, change.create({ health: 100 }));
67
+ const { entities, change } = setupExample();
68
+ change.create({ health: 100 });
69
+ change.create({ health: 100 });
53
70
  expect([...entities.select()].length).is(2);
54
71
  }),
55
72
  "select doesn't include non-match": test(async () => {
56
- const { entities } = setupExample();
57
- applyChange(entities, change.create({ health: 100 }));
73
+ const { entities, change } = setupExample();
74
+ change.create({ health: 100 });
58
75
  expect([...entities.select("mana")].length).is(0);
59
76
  }),
60
77
  "select includes entities with extra components": test(async () => {
61
- const { entities } = setupExample();
62
- applyChange(entities, change.create({ health: 100, mana: 100 }));
78
+ const { entities, change } = setupExample();
79
+ change.create({ health: 100, mana: 100 });
63
80
  expect([...entities.select("health")].length).is(1);
64
81
  }),
65
82
  "wizard regens mana": test(async () => {
66
- const { entities, systems } = setupExample();
67
- const creating = change.create({ health: 100, mana: 50, manaRegen: 1 });
68
- const wizardId = creating[1];
69
- applyChange(entities, creating);
70
- const changes = executeSystems(entities, systems);
83
+ const { entities, change, execute } = setupExample();
84
+ const wizardId = change.create({ health: 100, mana: 50, manaRegen: 1 });
85
+ const changes = execute();
71
86
  expect(changes.length).is(1);
72
87
  expect(entities.require(wizardId).mana).is(51);
73
88
  }),
74
89
  "death by bleeding": test(async () => {
75
- const { entities, systems } = setupExample();
76
- const creating = change.create({ health: 3, bleed: 2 });
77
- const wizardId = creating[1];
78
- applyChange(entities, creating);
90
+ const { entities, change, execute } = setupExample();
91
+ const wizardId = change.create({ health: 3, bleed: 2 });
79
92
  expect(entities.require(wizardId).health).is(3);
80
- executeSystems(entities, systems);
93
+ execute();
81
94
  expect(entities.require(wizardId).health).is(1);
82
- executeSystems(entities, systems);
95
+ execute();
83
96
  expect(entities.has(wizardId)).is(false);
84
97
  }),
85
98
  "lifecycles": test(async () => {
86
- const { entities } = setupExample();
99
+ const { entities, change } = setupExample();
87
100
  const counts = setupLifecycleCounts();
88
- const system = lifecycle(entities.readonly(), ["health"], () => {
89
- counts.enters++;
90
- return {
91
- tick: () => void counts.ticks++,
92
- exit: () => void counts.exits++,
93
- };
94
- });
95
- counts.expect(0, 0, 0);
96
- const creating = change.create({ health: 100, mana: 50 });
97
- const wizardId = creating[1];
98
- applyChange(entities, creating);
99
- executeSystems(entities, [system]);
100
- counts.expect(1, 1, 0);
101
- applyChange(entities, change.merge(wizardId, { health: 100, mana: 100 }));
102
- executeSystems(entities, [system]);
103
- counts.expect(1, 2, 0);
104
- applyChange(entities, change.delete(wizardId));
105
- executeSystems(entities, [system]);
106
- counts.expect(1, 2, 1);
101
+ const systems = asSystems(() => [
102
+ lifecycle(entities.readonly, ["health"], () => {
103
+ counts.enters++;
104
+ return {
105
+ tick: () => void counts.ticks++,
106
+ exit: () => void counts.exits++,
107
+ };
108
+ }),
109
+ ]);
110
+ const execute = makeExecute(entities, systems);
111
+ counts.expect({ enters: 0, ticks: 0, exits: 0 });
112
+ const wizardId = change.create({ health: 100, mana: 50 });
113
+ execute();
114
+ counts.expect({ enters: 1, ticks: 1, exits: 0 });
115
+ change.merge(wizardId, { health: 100, mana: 100 });
116
+ execute();
117
+ counts.expect({ enters: 1, ticks: 2, exits: 0 });
118
+ change.delete(wizardId);
119
+ execute();
120
+ counts.expect({ enters: 1, ticks: 2, exits: 1 });
107
121
  expect(entities.size).is(0);
108
122
  }),
123
+ "lifecycle can commit changes": test(async () => {
124
+ const { entities, change } = setupExample();
125
+ const systems = asSystems(change => [
126
+ lifecycle(entities.readonly, ["health"], () => {
127
+ change.create({ mana: 50 });
128
+ return {
129
+ tick: () => { },
130
+ exit: () => { },
131
+ };
132
+ }),
133
+ ]);
134
+ const execute = makeExecute(entities, systems);
135
+ change.create({ health: 100 });
136
+ execute();
137
+ expect([...entities.select("mana")].length).is(1);
138
+ }),
139
+ "lifecycle self-deletion immediate cleanup": test(async () => {
140
+ const { entities, change } = setupExample();
141
+ let ranExit = 0;
142
+ const systems = asSystems(change => [
143
+ lifecycle(entities.readonly, ["health"], (id) => {
144
+ return {
145
+ tick: () => change.delete(id),
146
+ exit: () => { ranExit++; },
147
+ };
148
+ }),
149
+ ]);
150
+ const execute = makeExecute(entities, systems);
151
+ change.create({ health: 100 });
152
+ expect([...entities.select("health")].length).is(1);
153
+ expect(ranExit).is(0);
154
+ execute();
155
+ expect(ranExit).is(1);
156
+ expect([...entities.select("health")].length).is(0);
157
+ }),
109
158
  });
110
159
  //# sourceMappingURL=test.js.map
package/x/ecs/test.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"test.js","sourceRoot":"","sources":["../../s/ecs/test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../../s/ecs/test.ts"],"names":[],"mappings":"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"}
@@ -1,33 +0,0 @@
1
-
2
- import {Entities} from "./entities.js"
3
- import {ChangeSet, Change, Components, ChangeKind, ChangeMerge, ChangeDrop} from "./types.js"
4
-
5
- export function applyChange<C extends Components>(entities: Entities<C>, change: Change<C>) {
6
- switch (change[0]) {
7
- case ChangeKind.Set: return applySet<C>(entities, <ChangeSet<C>>change)
8
- case ChangeKind.Merge: return applyMerge<C>(entities, <ChangeMerge<C>>change)
9
- case ChangeKind.Drop: return applyDrop<C>(entities, <ChangeDrop<C>>change)
10
- default: throw new Error(`unknown change kind "${change[0]}"`)
11
- }
12
- }
13
-
14
- function applySet<C extends Components>(entities: Entities<C>, [, id, components]: ChangeSet<C>) {
15
- if (components) entities.set(id, components as Partial<C>)
16
- else entities.delete(id)
17
- return id
18
- }
19
-
20
- function applyMerge<C extends Components>(entities: Entities<C>, [, id, patch]: ChangeMerge<C>) {
21
- const components = entities.guarantee(id, () => ({}))
22
- Object.assign(components, patch)
23
- entities.set(id, components)
24
- return id
25
- }
26
-
27
- function applyDrop<C extends Components>(entities: Entities<C>, [, id, keys]: ChangeDrop<C>) {
28
- const components = entities.guarantee(id, () => ({}))
29
- for (const key of keys) delete components[key]
30
- entities.set(id, components)
31
- return id
32
- }
33
-
@@ -1,18 +0,0 @@
1
-
2
- import {Entities} from "./entities.js"
3
- import {applyChange} from "./apply-change.js"
4
- import {Change, Components, System} from "./types.js"
5
-
6
- export function executeSystems<C extends Components>(entities: Entities<C>, systems: System<C>[]) {
7
- const changes: Change<C>[] = []
8
-
9
- for (const system of systems) {
10
- for (const change of system()) {
11
- applyChange(entities, change)
12
- changes.push(change)
13
- }
14
- }
15
-
16
- return changes
17
- }
18
-
@@ -1,3 +0,0 @@
1
- import { Entities } from "./entities.js";
2
- import { Change, Components } from "./types.js";
3
- export declare function applyChange<C extends Components>(entities: Entities<C>, change: Change<C>): string;
@@ -1,30 +0,0 @@
1
- import { ChangeKind } from "./types.js";
2
- export function applyChange(entities, change) {
3
- switch (change[0]) {
4
- case ChangeKind.Set: return applySet(entities, change);
5
- case ChangeKind.Merge: return applyMerge(entities, change);
6
- case ChangeKind.Drop: return applyDrop(entities, change);
7
- default: throw new Error(`unknown change kind "${change[0]}"`);
8
- }
9
- }
10
- function applySet(entities, [, id, components]) {
11
- if (components)
12
- entities.set(id, components);
13
- else
14
- entities.delete(id);
15
- return id;
16
- }
17
- function applyMerge(entities, [, id, patch]) {
18
- const components = entities.guarantee(id, () => ({}));
19
- Object.assign(components, patch);
20
- entities.set(id, components);
21
- return id;
22
- }
23
- function applyDrop(entities, [, id, keys]) {
24
- const components = entities.guarantee(id, () => ({}));
25
- for (const key of keys)
26
- delete components[key];
27
- entities.set(id, components);
28
- return id;
29
- }
30
- //# sourceMappingURL=apply-change.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"apply-change.js","sourceRoot":"","sources":["../../../s/ecs/parts/apply-change.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgC,UAAU,EAA0B,MAAM,YAAY,CAAA;AAE7F,MAAM,UAAU,WAAW,CAAuB,QAAqB,EAAE,MAAiB;IACzF,QAAQ,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QACnB,KAAK,UAAU,CAAC,GAAG,CAAC,CAAC,OAAO,QAAQ,CAAI,QAAQ,EAAgB,MAAM,CAAC,CAAA;QACvE,KAAK,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,UAAU,CAAI,QAAQ,EAAkB,MAAM,CAAC,CAAA;QAC7E,KAAK,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,SAAS,CAAI,QAAQ,EAAiB,MAAM,CAAC,CAAA;QAC1E,OAAO,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,wBAAwB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IAC/D,CAAC;AACF,CAAC;AAED,SAAS,QAAQ,CAAuB,QAAqB,EAAE,CAAC,EAAE,EAAE,EAAE,UAAU,CAAe;IAC9F,IAAI,UAAU;QAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,UAAwB,CAAC,CAAA;;QACrD,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IACxB,OAAO,EAAE,CAAA;AACV,CAAC;AAED,SAAS,UAAU,CAAuB,QAAqB,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,CAAiB;IAC7F,MAAM,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACrD,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;IAChC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,CAAA;IAC5B,OAAO,EAAE,CAAA;AACV,CAAC;AAED,SAAS,SAAS,CAAuB,QAAqB,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,CAAgB;IAC1F,MAAM,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACrD,KAAK,MAAM,GAAG,IAAI,IAAI;QAAE,OAAO,UAAU,CAAC,GAAG,CAAC,CAAA;IAC9C,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,CAAA;IAC5B,OAAO,EAAE,CAAA;AACV,CAAC"}
@@ -1,3 +0,0 @@
1
- import { Entities } from "./entities.js";
2
- import { Change, Components, System } from "./types.js";
3
- export declare function executeSystems<C extends Components>(entities: Entities<C>, systems: System<C>[]): Change<C>[];
@@ -1,12 +0,0 @@
1
- import { applyChange } from "./apply-change.js";
2
- export function executeSystems(entities, systems) {
3
- const changes = [];
4
- for (const system of systems) {
5
- for (const change of system()) {
6
- applyChange(entities, change);
7
- changes.push(change);
8
- }
9
- }
10
- return changes;
11
- }
12
- //# sourceMappingURL=execute-systems.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"execute-systems.js","sourceRoot":"","sources":["../../../s/ecs/parts/execute-systems.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,WAAW,EAAC,MAAM,mBAAmB,CAAA;AAG7C,MAAM,UAAU,cAAc,CAAuB,QAAqB,EAAE,OAAoB;IAC/F,MAAM,OAAO,GAAgB,EAAE,CAAA;IAE/B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC9B,KAAK,MAAM,MAAM,IAAI,MAAM,EAAE,EAAE,CAAC;YAC/B,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;YAC7B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACrB,CAAC;IACF,CAAC;IAED,OAAO,OAAO,CAAA;AACf,CAAC"}