bard-legends-framework 0.6.14 → 0.6.15

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 (102) hide show
  1. package/dist/game-entities/attachable/attachable.d.ts +6 -20
  2. package/dist/game-entities/attachable/attachable.js +12 -71
  3. package/dist/game-entities/attachable/attachable.js.map +1 -1
  4. package/dist/game-entities/attachable/attachable.store.d.ts +8 -0
  5. package/dist/game-entities/attachable/attachable.store.js +39 -0
  6. package/dist/game-entities/attachable/attachable.store.js.map +1 -0
  7. package/dist/game-entities/attachable/attachable.test.js +12 -9
  8. package/dist/game-entities/attachable/attachable.test.js.map +1 -1
  9. package/dist/game-entities/attachable/destroyable.d.ts +16 -0
  10. package/dist/game-entities/attachable/destroyable.js +82 -0
  11. package/dist/game-entities/attachable/destroyable.js.map +1 -0
  12. package/dist/game-entities/attachable/helpers/decorate-actions-lib.d.ts +2 -0
  13. package/dist/game-entities/attachable/helpers/decorate-actions-lib.js +23 -31
  14. package/dist/game-entities/attachable/helpers/decorate-actions-lib.js.map +1 -1
  15. package/dist/game-entities/attachable/helpers/referance-variable.js +2 -2
  16. package/dist/game-entities/attachable/helpers/referance-variable.js.map +1 -1
  17. package/dist/game-entities/attachable/interfaces.d.ts +14 -0
  18. package/dist/game-entities/attachable/interfaces.js +3 -0
  19. package/dist/game-entities/attachable/interfaces.js.map +1 -0
  20. package/dist/game-entities/entity/entity.d.ts +1 -3
  21. package/dist/game-entities/entity/entity.js +8 -36
  22. package/dist/game-entities/entity/entity.js.map +1 -1
  23. package/dist/game-entities/entity/entity.test.js +12 -12
  24. package/dist/game-entities/entity/entity.test.js.map +1 -1
  25. package/dist/game-entities/entity/singleton-entity.js +1 -1
  26. package/dist/game-entities/entity/singleton-entity.js.map +1 -1
  27. package/dist/game-entities/index.d.ts +3 -1
  28. package/dist/game-entities/index.js +18 -1
  29. package/dist/game-entities/index.js.map +1 -1
  30. package/dist/game-entities/scene/scene.d.ts +1 -1
  31. package/dist/game-entities/scene/scene.js +7 -15
  32. package/dist/game-entities/scene/scene.js.map +1 -1
  33. package/dist/game-entities/scene/scene.test.js +8 -8
  34. package/dist/game-entities/scene/scene.test.js.map +1 -1
  35. package/dist/game-entities/update-cycle.d.ts +3 -2
  36. package/dist/game-entities/update-cycle.js +7 -7
  37. package/dist/game-entities/update-cycle.js.map +1 -1
  38. package/dist/game-entities/view/view.d.ts +1 -1
  39. package/dist/game-entities/view/view.js +5 -13
  40. package/dist/game-entities/view/view.js.map +1 -1
  41. package/dist/game-entities/view/view.test.js +39 -63
  42. package/dist/game-entities/view/view.test.js.map +1 -1
  43. package/dist/physics/entity-types/immovable-physics-entity.d.ts +0 -1
  44. package/dist/physics/entity-types/immovable-physics-entity.js +0 -1
  45. package/dist/physics/entity-types/immovable-physics-entity.js.map +1 -1
  46. package/dist/physics/entity-types/movable-entity.js +1 -1
  47. package/dist/physics/entity-types/movable-entity.js.map +1 -1
  48. package/dist/physics/entity-types/physics-entity.d.ts +1 -2
  49. package/dist/physics/entity-types/physics-entity.js +6 -16
  50. package/dist/physics/entity-types/physics-entity.js.map +1 -1
  51. package/dist/physics/interfaces.d.ts +1 -1
  52. package/dist/physics/module//360/237/223/220services/collision/collisions.service.js +1 -1
  53. package/dist/physics/module//360/237/223/220services/collision/collisions.service.js.map +1 -1
  54. package/dist/physics/module//360/237/223/220services/impact/eliptic-explosion.service.js +7 -7
  55. package/dist/physics/module//360/237/223/220services/impact/eliptic-explosion.service.js.map +1 -1
  56. package/dist/physics/module//360/237/247/212entities/physics-world.entity.js +1 -1
  57. package/dist/physics/module//360/237/247/212entities/physics-world.entity.js.map +1 -1
  58. package/dist/pixi/display-object/container-attributes.js +1 -1
  59. package/dist/pixi/display-object/container-attributes.js.map +1 -1
  60. package/dist/pixi/display-object/container.d.ts +1 -6
  61. package/dist/pixi/display-object/container.js +3 -23
  62. package/dist/pixi/display-object/container.js.map +1 -1
  63. package/dist/pixi/display-object/filters/base-filters/blur.filter.js +2 -2
  64. package/dist/pixi/display-object/objects/graphics.d.ts +1 -1
  65. package/dist/pixi/display-object/objects/graphics.js +4 -3
  66. package/dist/pixi/display-object/objects/graphics.js.map +1 -1
  67. package/dist/pixi/display-object/objects/helpers/filters.js +16 -9
  68. package/dist/pixi/display-object/objects/helpers/filters.js.map +1 -1
  69. package/dist/pixi/display-object/objects/sprite.d.ts +2 -2
  70. package/dist/pixi/display-object/objects/sprite.js +17 -27
  71. package/dist/pixi/display-object/objects/sprite.js.map +1 -1
  72. package/dist/pixi/display-object/objects/text.d.ts +1 -1
  73. package/dist/pixi/display-object/objects/text.js +3 -3
  74. package/dist/pixi/display-object/objects/text.js.map +1 -1
  75. package/dist/pixi/game.js +1 -1
  76. package/dist/pixi/game.js.map +1 -1
  77. package/dist/pixi/helpers/position-conversion.helper.d.ts +6 -0
  78. package/dist/pixi/helpers/position-conversion.helper.js +36 -2
  79. package/dist/pixi/helpers/position-conversion.helper.js.map +1 -1
  80. package/dist/utilities/libraries/animator/animating-content/fade-in-content.d.ts +3 -7
  81. package/dist/utilities/libraries/animator/animating-content/fade-in-content.js +14 -94
  82. package/dist/utilities/libraries/animator/animating-content/fade-in-content.js.map +1 -1
  83. package/dist/utilities/libraries/animator/animating-content/state-animation.d.ts +31 -0
  84. package/dist/utilities/libraries/animator/animating-content/state-animation.js +169 -0
  85. package/dist/utilities/libraries/animator/animating-content/state-animation.js.map +1 -0
  86. package/dist/utilities/libraries/animator/animating-content/state-animation.test.d.ts +1 -0
  87. package/dist/utilities/libraries/animator/animating-content/state-animation.test.js +298 -0
  88. package/dist/utilities/libraries/animator/animating-content/state-animation.test.js.map +1 -0
  89. package/dist/utilities/libraries/animator/animator.d.ts +4 -8
  90. package/dist/utilities/libraries/animator/animator.js +50 -50
  91. package/dist/utilities/libraries/animator/animator.js.map +1 -1
  92. package/dist/utilities/libraries/animator/animator.test.js +47 -0
  93. package/dist/utilities/libraries/animator/animator.test.js.map +1 -1
  94. package/dist/utilities/libraries/animator/index.d.ts +1 -0
  95. package/dist/utilities/libraries/animator/index.js +1 -0
  96. package/dist/utilities/libraries/animator/index.js.map +1 -1
  97. package/dist/utilities/libraries/data-structures/grid/position-to-grid-position-converter.js +2 -2
  98. package/dist/utilities/libraries/data-structures/grid/position-to-grid-position-converter.js.map +1 -1
  99. package/dist/utilities/libraries/grid-algorithms/closest-available-space/closest-available-space.helper.js +1 -1
  100. package/dist/utilities/libraries/grid-algorithms/closest-available-space/closest-available-space.helper.js.map +1 -1
  101. package/package.json +2 -2
  102. package/package.json.bak +2 -2
@@ -1,24 +1,10 @@
1
- import { Action, Variable } from 'actions-lib';
2
- export interface Destroyable {
3
- destroy(...args: any[]): void;
4
- }
5
- export interface Unsubscribable {
6
- unsubscribe(...args: any[]): void;
7
- }
8
- export type CanBeAttached = Destroyable | Unsubscribable | CanBeAttached[] | Variable<CanBeAttached>;
9
- export declare abstract class Attachable implements Destroyable {
10
- private static nextAvailableIds;
11
- private static attachables;
12
- static findAttachableParent(attachableCandidate: Attachable | string): Attachable;
1
+ import { Destroyable } from './destroyable';
2
+ import { CanBeAttached, IAttachable } from './interfaces';
3
+ export declare abstract class Attachable extends Destroyable implements IAttachable {
13
4
  readonly id: string;
14
- readonly onDestroy: Action<void>;
15
- protected destroyed: boolean;
16
- protected childDestroy: () => void;
17
- protected attachableDestroy: () => void;
18
5
  private attachments;
19
6
  constructor();
20
- destroy(): void;
21
- private setAttachment;
22
- private removeAttachment;
23
- private destroyAttachment;
7
+ protected destroySelf(): void;
8
+ setAttachment(child: CanBeAttached): void;
9
+ removeAttachment(child: CanBeAttached): void;
24
10
  }
@@ -1,57 +1,22 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Attachable = void 0;
4
- const actions_lib_1 = require("actions-lib");
5
- const helpers_lib_1 = require("helpers-lib");
6
- const update_cycle_1 = require("../update-cycle");
7
- class Attachable {
8
- static { this.nextAvailableIds = new Map(); }
9
- static { this.attachables = new Map(); }
10
- static findAttachableParent(attachableCandidate) {
11
- let attachable;
12
- if (helpers_lib_1.Comparator.isString(attachableCandidate)) {
13
- let attachableId = attachableCandidate;
14
- attachable = this.attachables.get(attachableId);
15
- if (!attachable) {
16
- throw new Error(`Attachable: attachable not found by id! id: ${attachableId}`);
17
- }
18
- }
19
- else if (attachableCandidate instanceof Attachable) {
20
- attachable = attachableCandidate;
21
- }
22
- else {
23
- throw new Error(`Attachable: attachable not found! attachable candidate: ${attachableCandidate}`);
24
- }
25
- return attachable;
26
- }
4
+ const attachable_store_1 = require("./attachable.store");
5
+ const destroyable_1 = require("./destroyable");
6
+ class Attachable extends destroyable_1.Destroyable {
27
7
  constructor() {
8
+ super();
28
9
  this.id = '';
29
- this.onDestroy = new actions_lib_1.Action();
30
- this.destroyed = false;
31
- this.childDestroy = this.destroy.bind(this);
32
- this.attachableDestroy = () => {
33
- this.onDestroy.trigger();
34
- Attachable.attachables.delete(this.id);
35
- let attachedEntities = [...this.attachments];
36
- attachedEntities.forEach(item => this.destroyAttachment(item));
37
- this.attachments = [];
38
- };
39
10
  this.attachments = [];
40
- let numberPartOfTheId = Attachable.nextAvailableIds.get(this.constructor.name) || 1;
41
- Attachable.nextAvailableIds.set(this.constructor.name, numberPartOfTheId + 1);
42
- this.id = `${this.constructor.name}:${numberPartOfTheId}`;
43
- Attachable.attachables.set(this.id, this);
44
- this.destroy = function () {
45
- update_cycle_1.UpdateCycle.waitUntilDestroyPhase(() => {
46
- if (!this.destroyed) {
47
- this.destroyed = true;
48
- this.attachableDestroy();
49
- this.childDestroy();
50
- }
51
- });
52
- };
11
+ this.id = attachable_store_1.AttachableStore.registerAttachable(this);
12
+ }
13
+ destroySelf() {
14
+ super.destroySelf();
15
+ attachable_store_1.AttachableStore.unregisterAttachable(this);
16
+ let attachedEntities = [...this.attachments];
17
+ attachedEntities.forEach(item => this.destroyAttachment(item));
18
+ this.attachments = [];
53
19
  }
54
- destroy() { }
55
20
  setAttachment(child) {
56
21
  if (this.destroyed) {
57
22
  this.destroyAttachment(child);
@@ -66,30 +31,6 @@ class Attachable {
66
31
  this.attachments.splice(index, 1);
67
32
  }
68
33
  }
69
- destroyAttachment(object) {
70
- if (object instanceof actions_lib_1.Variable) {
71
- this.destroyAttachment(object.value);
72
- }
73
- else if (object instanceof Array) {
74
- object.forEach((item) => this.destroyAttachment(item));
75
- }
76
- else if (helpers_lib_1.Comparator.isObject(object)) {
77
- let item = object;
78
- if (helpers_lib_1.Comparator.isFunction(item.destroy)) {
79
- item.destroy();
80
- }
81
- else if (helpers_lib_1.Comparator.isFunction(item.unsubscribe)) {
82
- item.unsubscribe();
83
- }
84
- }
85
- else {
86
- throw new Error(`Attachable: destroyAttachment is used with not supperted type! Target: "${object}"`);
87
- }
88
- }
89
34
  }
90
35
  exports.Attachable = Attachable;
91
- update_cycle_1.UpdateCycle.hardResetAction.subscribe(() => {
92
- Attachable['nextAvailableIds'].clear();
93
- Attachable['attachables'].clear();
94
- });
95
36
  //# sourceMappingURL=attachable.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"attachable.js","sourceRoot":"","sources":["../../../src/game-entities/attachable/attachable.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"attachable.js","sourceRoot":"","sources":["../../../src/game-entities/attachable/attachable.ts"],"names":[],"mappings":";;;AAAA,yDAAqD;AACrD,+CAA4C;AAG5C,MAAsB,UAAW,SAAQ,yBAAW;IAKlD;QACE,KAAK,EAAE,CAAC;QALD,OAAE,GAAW,EAAE,CAAC;QAEjB,gBAAW,GAAoB,EAAE,CAAC;QAIxC,IAAI,CAAC,EAAE,GAAG,kCAAe,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACrD,CAAC;IAES,WAAW;QACnB,KAAK,CAAC,WAAW,EAAE,CAAC;QACpB,kCAAe,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,gBAAgB,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7C,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;IACxB,CAAC;IAED,aAAa,CAAC,KAAoB;QAChC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,gBAAgB,CAAC,KAAoB;QACnC,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACf,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;CACF;AAhCD,gCAgCC"}
@@ -0,0 +1,8 @@
1
+ import { IAttachable } from './interfaces';
2
+ export declare class AttachableStore {
3
+ private static nextAvailableIds;
4
+ private static attachables;
5
+ static findAttachableParent(attachableCandidate: IAttachable | string): IAttachable;
6
+ static registerAttachable(attachable: IAttachable): string;
7
+ static unregisterAttachable(attachable: IAttachable): void;
8
+ }
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AttachableStore = void 0;
4
+ const helpers_lib_1 = require("helpers-lib");
5
+ const update_cycle_1 = require("../update-cycle");
6
+ class AttachableStore {
7
+ static { this.nextAvailableIds = new Map(); }
8
+ static { this.attachables = new Map(); }
9
+ static findAttachableParent(attachableCandidate) {
10
+ let attachable;
11
+ if (helpers_lib_1.Comparator.isString(attachableCandidate)) {
12
+ let attachableId = attachableCandidate;
13
+ attachable = this.attachables.get(attachableId);
14
+ if (!attachable) {
15
+ throw new Error(`Attachable: attachable not found by id! id: ${attachableId}`);
16
+ }
17
+ }
18
+ else {
19
+ attachable = attachableCandidate;
20
+ }
21
+ return attachable;
22
+ }
23
+ static registerAttachable(attachable) {
24
+ let numberPartOfTheId = AttachableStore.nextAvailableIds.get(attachable.constructor.name) || 1;
25
+ AttachableStore.nextAvailableIds.set(attachable.constructor.name, numberPartOfTheId + 1);
26
+ let id = `${attachable.constructor.name}:${numberPartOfTheId}`;
27
+ AttachableStore.attachables.set(id, attachable);
28
+ return id;
29
+ }
30
+ static unregisterAttachable(attachable) {
31
+ AttachableStore.attachables.delete(attachable.id);
32
+ }
33
+ }
34
+ exports.AttachableStore = AttachableStore;
35
+ update_cycle_1.UpdateCycle.hardResetAction.subscribe(() => {
36
+ AttachableStore['nextAvailableIds'].clear();
37
+ AttachableStore['attachables'].clear();
38
+ });
39
+ //# sourceMappingURL=attachable.store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachable.store.js","sourceRoot":"","sources":["../../../src/game-entities/attachable/attachable.store.ts"],"names":[],"mappings":";;;AAAA,6CAAyC;AAGzC,kDAA8C;AAE9C,MAAa,eAAe;aACX,qBAAgB,GAAG,IAAI,GAAG,EAAkB,CAAC;aAC7C,gBAAW,GAAG,IAAI,GAAG,EAAuB,CAAC;IAE5D,MAAM,CAAC,oBAAoB,CAAC,mBAAyC;QACnE,IAAI,UAAuB,CAAC;QAC5B,IAAI,wBAAU,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;YAC7C,IAAI,YAAY,GAAW,mBAA6B,CAAC;YACzD,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,CAAgB,CAAC;YAC/D,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CAAC,+CAA+C,YAAY,EAAE,CAAC,CAAC;YACjF,CAAC;QACH,CAAC;aAAM,CAAC;YACN,UAAU,GAAG,mBAAkC,CAAC;QAClD,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,UAAuB;QAC/C,IAAI,iBAAiB,GAAG,eAAe,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/F,eAAe,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,EAAE,iBAAiB,GAAG,CAAC,CAAC,CAAC;QACzF,IAAI,EAAE,GAAG,GAAG,UAAU,CAAC,WAAW,CAAC,IAAI,IAAI,iBAAiB,EAAE,CAAC;QAC/D,eAAe,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QAChD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,CAAC,oBAAoB,CAAC,UAAuB;QACjD,eAAe,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;;AA5BH,0CA6BC;AAED,0BAAW,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,EAAE;IACzC,eAAe,CAAC,kBAAkB,CAAC,CAAC,KAAK,EAAE,CAAC;IAC5C,eAAe,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC;AACzC,CAAC,CAAC,CAAC"}
@@ -50,7 +50,10 @@ decorate_actions_lib_1.ActionsLibDecorator.decorate(ActionsLib);
50
50
  ], SampleScene);
51
51
  SampleScene.open(undefined);
52
52
  });
53
- (0, vitest_1.test)('destroyable', () => {
53
+ (0, vitest_1.test)('dummy', () => {
54
+ (0, vitest_1.expect)(true).toBeTruthy();
55
+ });
56
+ (0, vitest_1.test)('destroyable', async () => {
54
57
  let Sample = class Sample extends entity_1.Entity {
55
58
  };
56
59
  Sample = __decorate([
@@ -68,10 +71,10 @@ decorate_actions_lib_1.ActionsLibDecorator.decorate(ActionsLib);
68
71
  let foo = new Foo();
69
72
  sample['setAttachment'](foo);
70
73
  sample.destroy();
71
- update_cycle_1.UpdateCycle.triggerUpdateTick(1); // Update cycle should take place to destroy functions to be called
74
+ await update_cycle_1.UpdateCycle.triggerUpdateTick(1); // Update cycle should take place to destroy functions to be called
72
75
  (0, vitest_1.expect)(foo.destroyed).toBeTruthy();
73
76
  });
74
- (0, vitest_1.test)('destroyable, delayed', () => {
77
+ (0, vitest_1.test)('destroyable, delayed', async () => {
75
78
  let Sample = class Sample extends entity_1.Entity {
76
79
  };
77
80
  Sample = __decorate([
@@ -89,10 +92,10 @@ decorate_actions_lib_1.ActionsLibDecorator.decorate(ActionsLib);
89
92
  let foo = new Foo();
90
93
  sample['setAttachment'](foo);
91
94
  sample.destroy();
92
- update_cycle_1.UpdateCycle.triggerUpdateTick(1); // Update cycle should take place to destroy functions to be called
95
+ await update_cycle_1.UpdateCycle.triggerUpdateTick(1); // Update cycle should take place to destroy functions to be called
93
96
  (0, vitest_1.expect)(foo.destroyed).toBeTruthy();
94
97
  });
95
- (0, vitest_1.test)('subscription', () => {
98
+ (0, vitest_1.test)('subscription', async () => {
96
99
  let Sample = class Sample extends entity_1.Entity {
97
100
  };
98
101
  Sample = __decorate([
@@ -104,10 +107,10 @@ decorate_actions_lib_1.ActionsLibDecorator.decorate(ActionsLib);
104
107
  foo.subscribe(() => { }).attach(sample);
105
108
  (0, vitest_1.expect)(foo.listenerCount).toEqual(1);
106
109
  sample.destroy();
107
- update_cycle_1.UpdateCycle.triggerUpdateTick(1); // Update cycle should take place to destroy functions to be called
110
+ await update_cycle_1.UpdateCycle.triggerUpdateTick(1); // Update cycle should take place to destroy functions to be called
108
111
  (0, vitest_1.expect)(foo.listenerCount).toEqual(0);
109
112
  });
110
- (0, vitest_1.test)('entity attachment in constructor', () => {
113
+ (0, vitest_1.test)('entity attachment in constructor', async () => {
111
114
  let childDestoyIsCalled = false;
112
115
  let Parent = class Parent extends entity_1.Entity {
113
116
  constructor() {
@@ -120,7 +123,7 @@ decorate_actions_lib_1.ActionsLibDecorator.decorate(ActionsLib);
120
123
  __metadata("design:paramtypes", [])
121
124
  ], Parent);
122
125
  let Child = class Child extends entity_1.Entity {
123
- destroy() {
126
+ afterDestroy() {
124
127
  childDestoyIsCalled = true;
125
128
  }
126
129
  };
@@ -129,7 +132,7 @@ decorate_actions_lib_1.ActionsLibDecorator.decorate(ActionsLib);
129
132
  ], Child);
130
133
  let parent = new Parent().attach(scene_1.Scene.activeScene);
131
134
  parent.destroy();
132
- update_cycle_1.UpdateCycle.triggerUpdateTick(1); // Update cycle should take place to destroy functions to be called
135
+ await update_cycle_1.UpdateCycle.triggerUpdateTick(1); // Update cycle should take place to destroy functions to be called
133
136
  (0, vitest_1.expect)(childDestoyIsCalled).toBeTruthy();
134
137
  });
135
138
  });
@@ -1 +1 @@
1
- {"version":3,"file":"attachable.test.js","sourceRoot":"","sources":["../../../src/game-entities/attachable/attachable.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"attachable.test.js","sourceRoot":"","sources":["../../../src/game-entities/attachable/attachable.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { Action } from 'actions-lib';
2
+ import { CanBeAttached, IAttachable } from './interfaces';
3
+ export declare abstract class Destroyable {
4
+ private attachedParent;
5
+ protected attachIsCalled: boolean;
6
+ protected destroyed: boolean;
7
+ protected destroyIsCalled: boolean;
8
+ readonly onDestroy: Action<void>;
9
+ constructor();
10
+ destroy(): Promise<void>;
11
+ protected afterDestroy(): void;
12
+ protected destroySelf(): void;
13
+ attach(parent: IAttachable | string): this;
14
+ skipAttachCheck(): this;
15
+ protected destroyAttachment(object: CanBeAttached): void;
16
+ }
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Destroyable = void 0;
4
+ const actions_lib_1 = require("actions-lib");
5
+ const helpers_lib_1 = require("helpers-lib");
6
+ const update_cycle_1 = require("../update-cycle");
7
+ const attachable_store_1 = require("./attachable.store");
8
+ class Destroyable {
9
+ constructor() {
10
+ this.attachIsCalled = false;
11
+ this.destroyed = false;
12
+ this.destroyIsCalled = false;
13
+ this.onDestroy = new actions_lib_1.Action();
14
+ setTimeout(() => {
15
+ if (!this.destroyed && !this.attachIsCalled) {
16
+ throw new Error(`Destroyable: The object is not attached to anything!`);
17
+ }
18
+ });
19
+ }
20
+ async destroy() {
21
+ if (!this.destroyIsCalled) {
22
+ this.destroyIsCalled = true;
23
+ let promise = new Promise(resolve => {
24
+ update_cycle_1.UpdateCycle.waitUntilDestroyPhase().then(() => {
25
+ if (!this.destroyed) {
26
+ this.destroySelf();
27
+ this.afterDestroy();
28
+ this.destroyed = true;
29
+ }
30
+ resolve();
31
+ });
32
+ });
33
+ update_cycle_1.UpdateCycle['promisesThatWaitsForDestruction'].push(promise);
34
+ return promise;
35
+ }
36
+ }
37
+ afterDestroy() { }
38
+ destroySelf() {
39
+ this.onDestroy.trigger();
40
+ this.attachedParent?.removeAttachment(this);
41
+ this.attachedParent = undefined;
42
+ }
43
+ attach(parent) {
44
+ this.attachIsCalled = true;
45
+ if (!this.destroyed) {
46
+ let parentEntity = attachable_store_1.AttachableStore.findAttachableParent(parent);
47
+ // @ts-ignore
48
+ if (parentEntity === this) {
49
+ throw new Error(`Entity cannot be attach to itself! entity: "${this.constructor.name}"`);
50
+ }
51
+ this.attachedParent = parentEntity;
52
+ parentEntity.setAttachment(this);
53
+ }
54
+ return this;
55
+ }
56
+ skipAttachCheck() {
57
+ this.attachIsCalled = true;
58
+ return this;
59
+ }
60
+ destroyAttachment(object) {
61
+ if (object instanceof actions_lib_1.Variable) {
62
+ this.destroyAttachment(object.value);
63
+ }
64
+ else if (object instanceof Array) {
65
+ object.forEach((item) => this.destroyAttachment(item));
66
+ }
67
+ else if (helpers_lib_1.Comparator.isObject(object)) {
68
+ let item = object;
69
+ if (helpers_lib_1.Comparator.isFunction(item.destroy)) {
70
+ item.destroy();
71
+ }
72
+ else if (helpers_lib_1.Comparator.isFunction(item.unsubscribe)) {
73
+ item.unsubscribe();
74
+ }
75
+ }
76
+ else {
77
+ throw new Error(`Destroyable: destroyAttachment is used with not supperted type! Target: "${object}"`);
78
+ }
79
+ }
80
+ }
81
+ exports.Destroyable = Destroyable;
82
+ //# sourceMappingURL=destroyable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"destroyable.js","sourceRoot":"","sources":["../../../src/game-entities/attachable/destroyable.ts"],"names":[],"mappings":"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"}
@@ -3,10 +3,12 @@ declare module 'actions-lib' {
3
3
  interface ActionSubscription {
4
4
  attach(parent: Attachable | string): ActionSubscription;
5
5
  skipAttachCheck(): ActionSubscription;
6
+ decorateActionSubscription(): ActionSubscription;
6
7
  }
7
8
  interface ReducerEffectChannel<EffectType, ResponseType> {
8
9
  attach(parent: Attachable | string): ReducerEffectChannel<EffectType, ResponseType>;
9
10
  skipAttachCheck(): ReducerEffectChannel<EffectType, ResponseType>;
11
+ decorateEffectChannel(): ReducerEffectChannel<EffectType, ResponseType>;
10
12
  }
11
13
  }
12
14
  export declare class ActionsLibDecorator {
@@ -25,7 +25,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.ActionsLibDecorator = void 0;
27
27
  const ActionsLib = __importStar(require("actions-lib"));
28
- const attachable_1 = require("../attachable");
28
+ const attachable_store_1 = require("../attachable.store");
29
29
  class ActionsLibDecorator {
30
30
  // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
31
31
  static decorate(actionsLib) {
@@ -39,7 +39,7 @@ class ActionsLibDecorator {
39
39
  }
40
40
  static decorateAttachFunctions(actionsLib) {
41
41
  actionsLib.ActionSubscription.prototype.attach = function (parent) {
42
- let parentEntity = attachable_1.Attachable.findAttachableParent(parent);
42
+ let parentEntity = attachable_store_1.AttachableStore.findAttachableParent(parent);
43
43
  parentEntity['setAttachment'](this);
44
44
  this.$meta = { attachIsCalled: true, attachedParent: parentEntity };
45
45
  return this;
@@ -48,13 +48,21 @@ class ActionsLibDecorator {
48
48
  this.$meta = { attachIsCalled: true };
49
49
  return this;
50
50
  };
51
+ actionsLib.ActionSubscription.prototype.decorateActionSubscription = function () {
52
+ setTimeout(() => {
53
+ if (!this.$meta?.attachIsCalled) {
54
+ throw new Error(`ActionsLibDecorator: subscribe is called without attach!`);
55
+ }
56
+ });
57
+ return this;
58
+ };
51
59
  let originalCombine = actionsLib.ActionSubscription.combine;
52
60
  actionsLib.ActionSubscription.combine = function (subscriptions) {
53
61
  subscriptions.forEach(subscription => subscription.skipAttachCheck());
54
62
  return originalCombine(subscriptions);
55
63
  };
56
64
  actionsLib.ReducerEffectChannel.prototype.attach = function (parent) {
57
- let parentEntity = attachable_1.Attachable.findAttachableParent(parent);
65
+ let parentEntity = attachable_store_1.AttachableStore.findAttachableParent(parent);
58
66
  parentEntity['setAttachment'](this);
59
67
  this.$meta = { attachIsCalled: true, attachedParent: parentEntity };
60
68
  return this;
@@ -63,6 +71,14 @@ class ActionsLibDecorator {
63
71
  this.$meta = { attachIsCalled: true };
64
72
  return this;
65
73
  };
74
+ actionsLib.ReducerEffectChannel.prototype.decorateEffectChannel = function () {
75
+ setTimeout(() => {
76
+ if (!this.$meta?.attachIsCalled) {
77
+ throw new Error(`ActionsLibDecorator: effect is called without attach!`);
78
+ }
79
+ });
80
+ return this;
81
+ };
66
82
  }
67
83
  static decorateUnsubscriptions(actionsLib) {
68
84
  let originalUnsubscribe = actionsLib.ActionSubscription.prototype.unsubscribe;
@@ -87,45 +103,21 @@ class ActionsLibDecorator {
87
103
  static decorateSubscriptions(actionsLib) {
88
104
  let originalActionSubscribe = actionsLib.Action.prototype.subscribe;
89
105
  actionsLib.Action.prototype.subscribe = function (callback) {
90
- let subscription = originalActionSubscribe.call(this, callback);
91
- setTimeout(() => {
92
- if (!subscription.$meta?.attachIsCalled) {
93
- throw new Error(`Action: subscribe is called without attach!`);
94
- }
95
- });
96
- return subscription;
106
+ return originalActionSubscribe.call(this, callback).decorateActionSubscription();
97
107
  };
98
108
  let originalVariableSubscribe = actionsLib.Variable.prototype.subscribe;
99
109
  actionsLib.Variable.prototype.subscribe = function (callback) {
100
- let subscription = originalVariableSubscribe.call(this, callback);
101
- setTimeout(() => {
102
- if (!subscription.$meta?.attachIsCalled) {
103
- throw new Error(`Variable: subscribe is called without attach!`);
104
- }
105
- });
106
- return subscription;
110
+ return originalVariableSubscribe.call(this, callback).decorateActionSubscription();
107
111
  };
108
112
  let originalReducerSubscribe = actionsLib.Reducer.prototype.subscribe;
109
113
  actionsLib.Reducer.prototype.subscribe = function (callback) {
110
- let subscription = originalReducerSubscribe.call(this, callback);
111
- setTimeout(() => {
112
- if (!subscription.$meta?.attachIsCalled) {
113
- throw new Error(`Reducer: subscribe is called without attach!`);
114
- }
115
- });
116
- return subscription;
114
+ return originalReducerSubscribe.call(this, callback).decorateActionSubscription();
117
115
  };
118
116
  }
119
117
  static decorateEffectChannels(actionsLib) {
120
118
  let originalEffect = actionsLib.Reducer.prototype.effect;
121
119
  actionsLib.Reducer.prototype.effect = function (value) {
122
- let effectChannel = originalEffect.call(this, value);
123
- setTimeout(() => {
124
- if (!effectChannel.$meta?.attachIsCalled) {
125
- throw new Error(`Reducer: effect is called without attach!`);
126
- }
127
- });
128
- return effectChannel;
120
+ return originalEffect.call(this, value).decorateEffectChannel();
129
121
  };
130
122
  }
131
123
  }
@@ -1 +1 @@
1
- {"version":3,"file":"decorate-actions-lib.js","sourceRoot":"","sources":["../../../../src/game-entities/attachable/helpers/decorate-actions-lib.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"decorate-actions-lib.js","sourceRoot":"","sources":["../../../../src/game-entities/attachable/helpers/decorate-actions-lib.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ReferanceVariable = void 0;
4
4
  const actions_lib_1 = require("actions-lib");
5
- const attachable_1 = require("../attachable");
5
+ const attachable_store_1 = require("../attachable.store");
6
6
  class ReferanceVariable {
7
7
  get value() {
8
8
  return this.variable.value;
@@ -24,7 +24,7 @@ class ReferanceVariable {
24
24
  this.destroySubscription?.unsubscribe();
25
25
  this.destroySubscription = undefined;
26
26
  if (data) {
27
- this.destroySubscription = attachable_1.Attachable.findAttachableParent(data)
27
+ this.destroySubscription = attachable_store_1.AttachableStore.findAttachableParent(data)
28
28
  .onDestroy.subscribe(() => {
29
29
  this.set(undefined);
30
30
  })
@@ -1 +1 @@
1
- {"version":3,"file":"referance-variable.js","sourceRoot":"","sources":["../../../../src/game-entities/attachable/helpers/referance-variable.ts"],"names":[],"mappings":";;;AAAA,6CAAsG;AAEtG,8CAA2C;AAE3C,MAAa,iBAAiB;IAI5B,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;IAC7B,CAAC;IACD,IAAI,KAAK,CAAC,KAAyB;QACjC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;IACrC,CAAC;IAED,YAAoB,OAAiC;QAAjC,YAAO,GAAP,OAAO,CAA0B;QAd7C,aAAQ,GAAG,IAAI,sBAAQ,CAAqB,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;IActB,CAAC;IAEzD,GAAG,CAAC,IAAwB;QAC1B,IAAI,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,mBAAmB,EAAE,WAAW,EAAE,CAAC;QACxC,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;QAErC,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,mBAAmB,GAAG,uBAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC;iBAC7D,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE;gBACxB,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACtB,CAAC,CAAC;iBACD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACnC,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,CAAC,QAA4D;QACpE,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAED,qBAAqB,CAAC,QAA4C;QAChE,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;IACvC,CAAC;IAED,iBAAiB,CAAC,IAAwB,EAAE,QAA4C;QACtF,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAwB;QACtC,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;CACF;AAxDD,8CAwDC"}
1
+ {"version":3,"file":"referance-variable.js","sourceRoot":"","sources":["../../../../src/game-entities/attachable/helpers/referance-variable.ts"],"names":[],"mappings":";;;AAAA,6CAAsG;AAGtG,0DAAsD;AAEtD,MAAa,iBAAiB;IAI5B,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;IAC7B,CAAC;IACD,IAAI,KAAK,CAAC,KAAyB;QACjC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;IACrC,CAAC;IAED,YAAoB,OAAiC;QAAjC,YAAO,GAAP,OAAO,CAA0B;QAd7C,aAAQ,GAAG,IAAI,sBAAQ,CAAqB,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;IActB,CAAC;IAEzD,GAAG,CAAC,IAAwB;QAC1B,IAAI,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,mBAAmB,EAAE,WAAW,EAAE,CAAC;QACxC,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;QAErC,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,mBAAmB,GAAG,kCAAe,CAAC,oBAAoB,CAAC,IAAI,CAAC;iBAClE,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE;gBACxB,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACtB,CAAC,CAAC;iBACD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACnC,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,CAAC,QAA4D;QACpE,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAED,qBAAqB,CAAC,QAA4C;QAChE,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;IACvC,CAAC;IAED,iBAAiB,CAAC,IAAwB,EAAE,QAA4C;QACtF,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAwB;QACtC,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;CACF;AAxDD,8CAwDC"}
@@ -0,0 +1,14 @@
1
+ import { Action, Variable } from 'actions-lib';
2
+ export interface IDestroyable {
3
+ destroy(): void;
4
+ }
5
+ export interface IAttachable {
6
+ readonly id: string;
7
+ readonly onDestroy: Action<void>;
8
+ setAttachment(child: CanBeAttached): void;
9
+ removeAttachment(child: CanBeAttached): void;
10
+ }
11
+ export interface IUnsubscribable {
12
+ unsubscribe(...args: any[]): void;
13
+ }
14
+ export type CanBeAttached = IDestroyable | IUnsubscribable | CanBeAttached[] | Variable<CanBeAttached>;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../src/game-entities/attachable/interfaces.ts"],"names":[],"mappings":""}
@@ -5,12 +5,10 @@ export declare abstract class Entity extends Attachable {
5
5
  static getInstanceById<T extends Entity>(this: new (...args: any[]) => T, entityId: string | undefined): T | undefined;
6
6
  static getInstanceByIdOrFail<T extends Entity>(this: new (...args: any[]) => T, entityId: string): T;
7
7
  static getEntities<T extends Entity>(this: new (...args: any[]) => T): T[];
8
- protected attachIsCalled: boolean;
9
- private attachedParent?;
10
8
  private viewCreationHelper;
11
9
  constructor();
10
+ protected destroySelf(): void;
12
11
  attach(parent: Attachable | string): this;
13
12
  update(time: number, delta: number): void;
14
- protected entityDestroy(): void;
15
13
  private updateTick;
16
14
  }