sliver-engine 0.0.1-alpha-4

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 (178) hide show
  1. package/README.md +37 -0
  2. package/dist/Assets/Shapes/Arrow.d.ts +12 -0
  3. package/dist/Assets/Shapes/Arrow.d.ts.map +1 -0
  4. package/dist/Assets/Shapes/Arrow.js +32 -0
  5. package/dist/Assets/Shapes/Arrow.js.map +1 -0
  6. package/dist/Assets/Shapes/index.d.ts +4 -0
  7. package/dist/Assets/Shapes/index.d.ts.map +1 -0
  8. package/dist/Assets/Shapes/index.js +2 -0
  9. package/dist/Assets/Shapes/index.js.map +1 -0
  10. package/dist/CanvasController/SpriteLibrary.d.ts +58 -0
  11. package/dist/CanvasController/SpriteLibrary.d.ts.map +1 -0
  12. package/dist/CanvasController/SpriteLibrary.js +412 -0
  13. package/dist/CanvasController/SpriteLibrary.js.map +1 -0
  14. package/dist/CanvasController/Transformations.d.ts +5 -0
  15. package/dist/CanvasController/Transformations.d.ts.map +1 -0
  16. package/dist/CanvasController/Transformations.js +19 -0
  17. package/dist/CanvasController/Transformations.js.map +1 -0
  18. package/dist/CanvasController/index.d.ts +238 -0
  19. package/dist/CanvasController/index.d.ts.map +1 -0
  20. package/dist/CanvasController/index.js +418 -0
  21. package/dist/CanvasController/index.js.map +1 -0
  22. package/dist/Context/index.d.ts +53 -0
  23. package/dist/Context/index.d.ts.map +1 -0
  24. package/dist/Context/index.js +103 -0
  25. package/dist/Context/index.js.map +1 -0
  26. package/dist/Events/decorators.d.ts +74 -0
  27. package/dist/Events/decorators.d.ts.map +1 -0
  28. package/dist/Events/decorators.js +417 -0
  29. package/dist/Events/decorators.js.map +1 -0
  30. package/dist/Events/index.d.ts +50 -0
  31. package/dist/Events/index.d.ts.map +1 -0
  32. package/dist/Events/index.js +73 -0
  33. package/dist/Events/index.js.map +1 -0
  34. package/dist/Events/keyAccumulator.d.ts +9 -0
  35. package/dist/Events/keyAccumulator.d.ts.map +1 -0
  36. package/dist/Events/keyAccumulator.js +17 -0
  37. package/dist/Events/keyAccumulator.js.map +1 -0
  38. package/dist/Game/Saves/index.d.ts +39 -0
  39. package/dist/Game/Saves/index.d.ts.map +1 -0
  40. package/dist/Game/Saves/index.js +213 -0
  41. package/dist/Game/Saves/index.js.map +1 -0
  42. package/dist/Game/index.d.ts +45 -0
  43. package/dist/Game/index.d.ts.map +1 -0
  44. package/dist/Game/index.js +101 -0
  45. package/dist/Game/index.js.map +1 -0
  46. package/dist/GameObject/Decorators/index.d.ts +81 -0
  47. package/dist/GameObject/Decorators/index.d.ts.map +1 -0
  48. package/dist/GameObject/Decorators/index.js +183 -0
  49. package/dist/GameObject/Decorators/index.js.map +1 -0
  50. package/dist/GameObject/Hitboxes/ColisionHandler.d.ts +23 -0
  51. package/dist/GameObject/Hitboxes/ColisionHandler.d.ts.map +1 -0
  52. package/dist/GameObject/Hitboxes/ColisionHandler.js +458 -0
  53. package/dist/GameObject/Hitboxes/ColisionHandler.js.map +1 -0
  54. package/dist/GameObject/Hitboxes/index.d.ts +50 -0
  55. package/dist/GameObject/Hitboxes/index.d.ts.map +1 -0
  56. package/dist/GameObject/Hitboxes/index.js +306 -0
  57. package/dist/GameObject/Hitboxes/index.js.map +1 -0
  58. package/dist/GameObject/Library/Button.d.ts +15 -0
  59. package/dist/GameObject/Library/Button.d.ts.map +1 -0
  60. package/dist/GameObject/Library/Button.js +45 -0
  61. package/dist/GameObject/Library/Button.js.map +1 -0
  62. package/dist/GameObject/Library/Clickableshape.d.ts +14 -0
  63. package/dist/GameObject/Library/Clickableshape.d.ts.map +1 -0
  64. package/dist/GameObject/Library/Clickableshape.js +36 -0
  65. package/dist/GameObject/Library/Clickableshape.js.map +1 -0
  66. package/dist/GameObject/Library/FloatingView.d.ts +20 -0
  67. package/dist/GameObject/Library/FloatingView.d.ts.map +1 -0
  68. package/dist/GameObject/Library/FloatingView.js +39 -0
  69. package/dist/GameObject/Library/FloatingView.js.map +1 -0
  70. package/dist/GameObject/Library/Group.d.ts +8 -0
  71. package/dist/GameObject/Library/Group.d.ts.map +1 -0
  72. package/dist/GameObject/Library/Group.js +26 -0
  73. package/dist/GameObject/Library/Group.js.map +1 -0
  74. package/dist/GameObject/Library/HoverableShape.d.ts +15 -0
  75. package/dist/GameObject/Library/HoverableShape.d.ts.map +1 -0
  76. package/dist/GameObject/Library/HoverableShape.js +41 -0
  77. package/dist/GameObject/Library/HoverableShape.js.map +1 -0
  78. package/dist/GameObject/Library/SceneTranslator.d.ts +14 -0
  79. package/dist/GameObject/Library/SceneTranslator.d.ts.map +1 -0
  80. package/dist/GameObject/Library/SceneTranslator.js +104 -0
  81. package/dist/GameObject/Library/SceneTranslator.js.map +1 -0
  82. package/dist/GameObject/Library/ScrollView.d.ts +41 -0
  83. package/dist/GameObject/Library/ScrollView.d.ts.map +1 -0
  84. package/dist/GameObject/Library/ScrollView.js +112 -0
  85. package/dist/GameObject/Library/ScrollView.js.map +1 -0
  86. package/dist/GameObject/Library/ShowOnHover.d.ts +13 -0
  87. package/dist/GameObject/Library/ShowOnHover.d.ts.map +1 -0
  88. package/dist/GameObject/Library/ShowOnHover.js +33 -0
  89. package/dist/GameObject/Library/ShowOnHover.js.map +1 -0
  90. package/dist/GameObject/Library/Text.d.ts +25 -0
  91. package/dist/GameObject/Library/Text.d.ts.map +1 -0
  92. package/dist/GameObject/Library/Text.js +35 -0
  93. package/dist/GameObject/Library/Text.js.map +1 -0
  94. package/dist/GameObject/Library/TextBox.d.ts +45 -0
  95. package/dist/GameObject/Library/TextBox.d.ts.map +1 -0
  96. package/dist/GameObject/Library/TextBox.js +170 -0
  97. package/dist/GameObject/Library/TextBox.js.map +1 -0
  98. package/dist/GameObject/Library/index.d.ts +11 -0
  99. package/dist/GameObject/Library/index.d.ts.map +1 -0
  100. package/dist/GameObject/Library/index.js +11 -0
  101. package/dist/GameObject/Library/index.js.map +1 -0
  102. package/dist/GameObject/Walker.d.ts +91 -0
  103. package/dist/GameObject/Walker.d.ts.map +1 -0
  104. package/dist/GameObject/Walker.js +634 -0
  105. package/dist/GameObject/Walker.js.map +1 -0
  106. package/dist/GameObject/index.d.ts +97 -0
  107. package/dist/GameObject/index.d.ts.map +1 -0
  108. package/dist/GameObject/index.js +386 -0
  109. package/dist/GameObject/index.js.map +1 -0
  110. package/dist/Lib/Math.d.ts +2 -0
  111. package/dist/Lib/Math.d.ts.map +1 -0
  112. package/dist/Lib/Math.js +4 -0
  113. package/dist/Lib/Math.js.map +1 -0
  114. package/dist/Lib/MinHeap/index.d.ts +12 -0
  115. package/dist/Lib/MinHeap/index.d.ts.map +1 -0
  116. package/dist/Lib/MinHeap/index.js +64 -0
  117. package/dist/Lib/MinHeap/index.js.map +1 -0
  118. package/dist/Lib/Mixins/index.d.ts +8 -0
  119. package/dist/Lib/Mixins/index.d.ts.map +1 -0
  120. package/dist/Lib/Mixins/index.js +45 -0
  121. package/dist/Lib/Mixins/index.js.map +1 -0
  122. package/dist/Lib/PathfindingProxy/index.d.ts +16 -0
  123. package/dist/Lib/PathfindingProxy/index.d.ts.map +1 -0
  124. package/dist/Lib/PathfindingProxy/index.js +48 -0
  125. package/dist/Lib/PathfindingProxy/index.js.map +1 -0
  126. package/dist/Lib/Vector/index.d.ts +24 -0
  127. package/dist/Lib/Vector/index.d.ts.map +1 -0
  128. package/dist/Lib/Vector/index.js +94 -0
  129. package/dist/Lib/Vector/index.js.map +1 -0
  130. package/dist/Lib/index.d.ts +6 -0
  131. package/dist/Lib/index.d.ts.map +1 -0
  132. package/dist/Lib/index.js +6 -0
  133. package/dist/Lib/index.js.map +1 -0
  134. package/dist/Scenes/SceneManager/Transitions.d.ts +37 -0
  135. package/dist/Scenes/SceneManager/Transitions.d.ts.map +1 -0
  136. package/dist/Scenes/SceneManager/Transitions.js +165 -0
  137. package/dist/Scenes/SceneManager/Transitions.js.map +1 -0
  138. package/dist/Scenes/SceneManager/index.d.ts +24 -0
  139. package/dist/Scenes/SceneManager/index.d.ts.map +1 -0
  140. package/dist/Scenes/SceneManager/index.js +151 -0
  141. package/dist/Scenes/SceneManager/index.js.map +1 -0
  142. package/dist/Scenes/index.d.ts +44 -0
  143. package/dist/Scenes/index.d.ts.map +1 -0
  144. package/dist/Scenes/index.js +252 -0
  145. package/dist/Scenes/index.js.map +1 -0
  146. package/dist/ScriptedEvents/Combinators/index.d.ts +17 -0
  147. package/dist/ScriptedEvents/Combinators/index.d.ts.map +1 -0
  148. package/dist/ScriptedEvents/Combinators/index.js +127 -0
  149. package/dist/ScriptedEvents/Combinators/index.js.map +1 -0
  150. package/dist/ScriptedEvents/Library/TextBoxSequence.d.ts +7 -0
  151. package/dist/ScriptedEvents/Library/TextBoxSequence.d.ts.map +1 -0
  152. package/dist/ScriptedEvents/Library/TextBoxSequence.js +16 -0
  153. package/dist/ScriptedEvents/Library/TextBoxSequence.js.map +1 -0
  154. package/dist/ScriptedEvents/Library/WaitForKeyPress.d.ts +2 -0
  155. package/dist/ScriptedEvents/Library/WaitForKeyPress.d.ts.map +1 -0
  156. package/dist/ScriptedEvents/Library/WaitForKeyPress.js +1 -0
  157. package/dist/ScriptedEvents/Library/WaitForKeyPress.js.map +1 -0
  158. package/dist/ScriptedEvents/Library/WalkCharacter.d.ts +4 -0
  159. package/dist/ScriptedEvents/Library/WalkCharacter.d.ts.map +1 -0
  160. package/dist/ScriptedEvents/Library/WalkCharacter.js +14 -0
  161. package/dist/ScriptedEvents/Library/WalkCharacter.js.map +1 -0
  162. package/dist/ScriptedEvents/Library/index.d.ts +3 -0
  163. package/dist/ScriptedEvents/Library/index.d.ts.map +1 -0
  164. package/dist/ScriptedEvents/Library/index.js +3 -0
  165. package/dist/ScriptedEvents/Library/index.js.map +1 -0
  166. package/dist/ScriptedEvents/index.d.ts +42 -0
  167. package/dist/ScriptedEvents/index.d.ts.map +1 -0
  168. package/dist/ScriptedEvents/index.js +61 -0
  169. package/dist/ScriptedEvents/index.js.map +1 -0
  170. package/dist/SoundManager/index.d.ts +69 -0
  171. package/dist/SoundManager/index.d.ts.map +1 -0
  172. package/dist/SoundManager/index.js +208 -0
  173. package/dist/SoundManager/index.js.map +1 -0
  174. package/dist/index.d.ts +19 -0
  175. package/dist/index.d.ts.map +1 -0
  176. package/dist/index.js +19 -0
  177. package/dist/index.js.map +1 -0
  178. package/package.json +36 -0
@@ -0,0 +1,151 @@
1
+ import { fadeTransition } from "./Transitions";
2
+ class SceneManager {
3
+ scenes;
4
+ currentScene;
5
+ activeScenes = [];
6
+ context = null;
7
+ activeTransition = null;
8
+ constructor(scenes, currentScene = null) {
9
+ this.scenes = scenes;
10
+ this.currentScene = currentScene;
11
+ if (currentScene) {
12
+ this.pushSceneToActive(currentScene);
13
+ }
14
+ }
15
+ tick() {
16
+ this.context?.incrementTickCount();
17
+ this.updateTransition(performance.now());
18
+ this.activeScenes.forEach((scene) => scene.tick());
19
+ }
20
+ getScene(name) {
21
+ return this.scenes[name] || null;
22
+ }
23
+ setSceneAsCurrent(name) {
24
+ const scene = this.getScene(name);
25
+ if (scene) {
26
+ scene.setContext(this.context);
27
+ const previousActiveScenes = this.activeScenes;
28
+ this.activeScenes = [scene];
29
+ this.currentScene = scene;
30
+ scene.activate();
31
+ previousActiveScenes.forEach((activeScene) => {
32
+ if (activeScene !== scene) {
33
+ activeScene.deactivate();
34
+ }
35
+ });
36
+ }
37
+ }
38
+ getAllScenes() {
39
+ return Object.values(this.scenes);
40
+ }
41
+ getActiveScenes() {
42
+ return this.activeScenes;
43
+ }
44
+ getCurrentScene() {
45
+ return this.currentScene;
46
+ }
47
+ pushSceneToActive(scene) {
48
+ scene.setContext(this.context);
49
+ this.activeScenes.push(scene);
50
+ scene.activate();
51
+ }
52
+ popSceneFromActive() {
53
+ const popped = this.activeScenes.pop();
54
+ popped?.deactivate();
55
+ return popped;
56
+ }
57
+ bindContext(context) {
58
+ this.context = context;
59
+ this.getAllScenes().forEach((scene) => scene.setContext(context));
60
+ }
61
+ async transitionToScene(name, transition = fadeTransition(), mode = "replace") {
62
+ const target = this.getScene(name);
63
+ if (!target) {
64
+ return Promise.reject(new Error(`Scene "${name}" not found`));
65
+ }
66
+ if (this.activeTransition) {
67
+ return Promise.reject(new Error("A transition is already running"));
68
+ }
69
+ target.setContext(this.context);
70
+ const transitionScenes = {
71
+ from: this.currentScene,
72
+ to: target,
73
+ };
74
+ const fromScene = transitionScenes.from;
75
+ const incomingOnTop = transition.incomingOnTop ?? true;
76
+ const targetIndex = this.activeScenes.indexOf(target);
77
+ const fromIndex = fromScene ? this.activeScenes.indexOf(fromScene) : -1;
78
+ const targetIsActive = targetIndex !== -1;
79
+ // Ensure the incoming scene renders during the transition, respecting
80
+ // whether it should be above or below the outgoing scene.
81
+ if (!targetIsActive) {
82
+ if (mode === "push" || incomingOnTop) {
83
+ this.activeScenes = [...this.activeScenes, target];
84
+ }
85
+ else if (fromIndex >= 0) {
86
+ this.activeScenes = [
87
+ ...this.activeScenes.slice(0, fromIndex),
88
+ target,
89
+ ...this.activeScenes.slice(fromIndex),
90
+ ];
91
+ }
92
+ else {
93
+ this.activeScenes = [...this.activeScenes, target];
94
+ }
95
+ }
96
+ else if (mode === "push" || incomingOnTop) {
97
+ this.activeScenes = [
98
+ ...this.activeScenes.filter((scene) => scene !== target),
99
+ target,
100
+ ];
101
+ }
102
+ this.currentScene = target;
103
+ target.activate();
104
+ transition.setup?.(0, transitionScenes);
105
+ return new Promise((resolve) => {
106
+ this.activeTransition = {
107
+ ...transitionScenes,
108
+ startedAt: performance.now(),
109
+ config: transition,
110
+ mode,
111
+ resolve,
112
+ };
113
+ });
114
+ }
115
+ updateTransition(now) {
116
+ if (!this.activeTransition) {
117
+ return;
118
+ }
119
+ const { from, to, config, startedAt, mode, resolve } = this.activeTransition;
120
+ const elapsed = now - startedAt;
121
+ const progress = Math.min(1, elapsed / config.duration);
122
+ const easedProgress = config.easing
123
+ ? config.easing(progress)
124
+ : progress;
125
+ config.step(easedProgress, { from, to });
126
+ if (progress >= 1) {
127
+ config.cleanup?.(1, { from, to });
128
+ const previousActiveScenes = this.activeScenes;
129
+ if (mode === "replace") {
130
+ this.activeScenes = [to];
131
+ }
132
+ else if (mode === "push") {
133
+ // Keep existing stack but make sure "to" is on top once
134
+ this.activeScenes = [
135
+ ...this.activeScenes.filter((scene) => scene !== to),
136
+ to,
137
+ ];
138
+ }
139
+ const activeSet = new Set(this.activeScenes);
140
+ previousActiveScenes.forEach((scene) => {
141
+ if (!activeSet.has(scene)) {
142
+ scene.deactivate();
143
+ }
144
+ });
145
+ this.activeTransition = null;
146
+ resolve();
147
+ }
148
+ }
149
+ }
150
+ export { SceneManager };
151
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Scenes/SceneManager/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import type { CanvasController } from "../CanvasController";
2
+ import type { GameEvent } from "../Events";
3
+ import type { GameObject } from "../GameObject";
4
+ import type { GameContext } from "../Context";
5
+ import { Vector } from "../Lib/Vector";
6
+ declare class Scene {
7
+ private name;
8
+ private backgroundColor?;
9
+ private gameObjects;
10
+ private context;
11
+ private offset;
12
+ private gravity;
13
+ private opacity;
14
+ private overlayColor;
15
+ private overlayAlpha;
16
+ private didSetup;
17
+ private isActive;
18
+ private pendingEnter;
19
+ constructor(name: string, backgroundColor?: string | undefined);
20
+ setup(): void;
21
+ onEnter(): void;
22
+ onExit(): void;
23
+ tick(): void;
24
+ getGameObjects(): GameObject[];
25
+ removeGameObject(gameObject: GameObject): void;
26
+ render(canvas: CanvasController): void;
27
+ addGameObject(_objects: GameObject | GameObject[]): void;
28
+ handleEvent(event: GameEvent): void;
29
+ setContext(context: GameContext | null): void;
30
+ getContext(): GameContext | null;
31
+ getOffset(): Vector;
32
+ setOffset(offset: Vector): void;
33
+ getGravity(): Vector;
34
+ setGravity(gravity: Vector): void;
35
+ getOpacity(): number;
36
+ setOpacity(opacity: number): void;
37
+ setOverlay(color: string | null, alpha: number): void;
38
+ activate(): void;
39
+ deactivate(): void;
40
+ private runSetupIfNeeded;
41
+ private handleColisions;
42
+ }
43
+ export { Scene };
44
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Scenes/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAGvC,cAAM,KAAK;IAYG,OAAO,CAAC,IAAI;IAAU,OAAO,CAAC,eAAe,CAAC;IAX1D,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,OAAO,CAAyB;IACxC,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,YAAY,CAAkB;gBAElB,IAAI,EAAE,MAAM,EAAU,eAAe,CAAC,EAAE,MAAM,YAAA;IAElE,KAAK;IAIL,OAAO,IAAI,IAAI;IAEf,MAAM,IAAI,IAAI;IAEd,IAAI;IAQJ,cAAc;IAId,gBAAgB,CAAC,UAAU,EAAE,UAAU;IAKvC,MAAM,CAAC,MAAM,EAAE,gBAAgB;IA+C/B,aAAa,CAAC,QAAQ,EAAE,UAAU,GAAG,UAAU,EAAE,GAAG,IAAI;IAWxD,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAOnC,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI;IAgB7C,UAAU,IAAI,WAAW,GAAG,IAAI;IAIhC,SAAS,IAAI,MAAM;IAInB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B,UAAU,IAAI,MAAM;IAIpB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIjC,UAAU,IAAI,MAAM;IAIpB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIjC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAKrD,QAAQ,IAAI,IAAI;IAqBhB,UAAU,IAAI,IAAI;IASlB,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,eAAe;CAsGxB;AAED,OAAO,EAAE,KAAK,EAAE,CAAC"}
@@ -0,0 +1,252 @@
1
+ import { Vector } from "../Lib/Vector";
2
+ import { ColisionHandler } from "../GameObject/Hitboxes/ColisionHandler";
3
+ class Scene {
4
+ name;
5
+ backgroundColor;
6
+ gameObjects = [];
7
+ context = null;
8
+ offset = new Vector(0, 0);
9
+ gravity = Vector.zero();
10
+ opacity = 1;
11
+ overlayColor = null;
12
+ overlayAlpha = 0;
13
+ didSetup = false;
14
+ isActive = false;
15
+ pendingEnter = false;
16
+ constructor(name, backgroundColor) {
17
+ this.name = name;
18
+ this.backgroundColor = backgroundColor;
19
+ }
20
+ setup() {
21
+ console.log(`Setting up scene: ${this.name}`);
22
+ }
23
+ onEnter() { }
24
+ onExit() { }
25
+ tick() {
26
+ this.gameObjects.forEach((obj) => {
27
+ obj.tick();
28
+ });
29
+ this.handleColisions();
30
+ }
31
+ getGameObjects() {
32
+ return this.gameObjects;
33
+ }
34
+ removeGameObject(gameObject) {
35
+ gameObject.notifyRemovedFromScene(this);
36
+ this.gameObjects = this.gameObjects.filter((go) => go !== gameObject);
37
+ }
38
+ render(canvas) {
39
+ const ctx = this.context?.getCanvas().getContext();
40
+ if (!ctx) {
41
+ return;
42
+ }
43
+ const previousAlpha = ctx.globalAlpha;
44
+ ctx.globalAlpha = previousAlpha * this.opacity;
45
+ if (this.backgroundColor) {
46
+ // Offset the background so it moves with the scene.
47
+ ctx.save();
48
+ ctx.translate(this.offset.x, this.offset.y);
49
+ this.context
50
+ ?.getCanvas()
51
+ .getShapeDrawer()
52
+ .drawBackground(this.backgroundColor);
53
+ ctx.restore();
54
+ }
55
+ const sortedObjects = this.gameObjects
56
+ .map((obj, index) => ({ obj, index }))
57
+ .sort((a, b) => {
58
+ if (a.obj.zIndex !== b.obj.zIndex) {
59
+ return a.obj.zIndex - b.obj.zIndex;
60
+ }
61
+ return a.index - b.index;
62
+ })
63
+ .map(({ obj }) => obj);
64
+ sortedObjects.forEach((obj) => {
65
+ obj.render(canvas, this);
66
+ });
67
+ if (this.overlayColor && this.overlayAlpha > 0) {
68
+ ctx.save();
69
+ ctx.setTransform(1, 0, 0, 1, 0, 0);
70
+ ctx.globalAlpha = previousAlpha * this.overlayAlpha;
71
+ ctx.fillStyle = this.overlayColor;
72
+ ctx.fillRect(0, 0, ctx.canvas.width, ctx.canvas.height);
73
+ ctx.restore();
74
+ }
75
+ ctx.globalAlpha = previousAlpha;
76
+ this.context?.getCanvas().reset();
77
+ }
78
+ addGameObject(_objects) {
79
+ const gameObjects = Array.isArray(_objects) ? _objects : [_objects];
80
+ gameObjects.forEach((go) => {
81
+ go.scene = this;
82
+ go.setContext(this.context);
83
+ this.gameObjects.push(go);
84
+ go.notifyAddedToScene(this, this.context);
85
+ });
86
+ }
87
+ handleEvent(event) {
88
+ this.gameObjects.toReversed().forEach((obj) => {
89
+ if (event.stopPropagation)
90
+ return;
91
+ obj.handleEvent(event);
92
+ });
93
+ }
94
+ setContext(context) {
95
+ this.context = context;
96
+ this.gameObjects.forEach((obj) => {
97
+ obj.setContext(context);
98
+ obj.notifyAddedToScene(this, context);
99
+ });
100
+ if (context && this.pendingEnter) {
101
+ this.pendingEnter = false;
102
+ this.runSetupIfNeeded();
103
+ if (this.isActive) {
104
+ this.onEnter();
105
+ }
106
+ }
107
+ }
108
+ getContext() {
109
+ return this.context;
110
+ }
111
+ getOffset() {
112
+ return this.offset;
113
+ }
114
+ setOffset(offset) {
115
+ this.offset = offset;
116
+ }
117
+ getGravity() {
118
+ return this.gravity;
119
+ }
120
+ setGravity(gravity) {
121
+ this.gravity = gravity;
122
+ }
123
+ getOpacity() {
124
+ return this.opacity;
125
+ }
126
+ setOpacity(opacity) {
127
+ this.opacity = opacity;
128
+ }
129
+ setOverlay(color, alpha) {
130
+ this.overlayColor = color;
131
+ this.overlayAlpha = alpha;
132
+ }
133
+ activate() {
134
+ if (this.isActive) {
135
+ if (this.pendingEnter && this.context) {
136
+ this.pendingEnter = false;
137
+ this.runSetupIfNeeded();
138
+ this.onEnter();
139
+ }
140
+ return;
141
+ }
142
+ this.isActive = true;
143
+ if (!this.context) {
144
+ this.pendingEnter = true;
145
+ return;
146
+ }
147
+ this.runSetupIfNeeded();
148
+ this.onEnter();
149
+ }
150
+ deactivate() {
151
+ if (!this.isActive) {
152
+ return;
153
+ }
154
+ this.isActive = false;
155
+ this.pendingEnter = false;
156
+ this.onExit();
157
+ }
158
+ runSetupIfNeeded() {
159
+ if (this.didSetup) {
160
+ return;
161
+ }
162
+ this.didSetup = true;
163
+ this.setup();
164
+ }
165
+ handleColisions() {
166
+ const movableObjects = [];
167
+ const immovableObjects = [];
168
+ for (const obj of this.gameObjects) {
169
+ if (obj.phisics.immovable) {
170
+ immovableObjects.push(obj);
171
+ continue;
172
+ }
173
+ movableObjects.push(obj);
174
+ }
175
+ const objects = [...movableObjects, ...immovableObjects];
176
+ const notifiedPairs = new Set();
177
+ const allowedPairs = new Map();
178
+ const maxPasses = 4;
179
+ for (let pass = 0; pass < maxPasses; pass++) {
180
+ let resolvedAny = false;
181
+ for (let i = 0; i < objects.length; i++) {
182
+ const a = objects[i];
183
+ if (!a.isActive())
184
+ continue;
185
+ const aHitboxes = a.getHitboxes();
186
+ if (aHitboxes.length === 0)
187
+ continue;
188
+ objectPairLoop: for (let j = i + 1; j < objects.length; j++) {
189
+ const b = objects[j];
190
+ if (!b.isActive())
191
+ continue;
192
+ const bHitboxes = b.getHitboxes();
193
+ if (bHitboxes.length === 0)
194
+ continue;
195
+ const pairKey = a.id < b.id ? `${a.id}|${b.id}` : `${b.id}|${a.id}`;
196
+ let isPairAllowed = allowedPairs.get(pairKey);
197
+ if (isPairAllowed === false)
198
+ continue;
199
+ for (let haIndex = 0; haIndex < aHitboxes.length; haIndex++) {
200
+ const ha = aHitboxes[haIndex];
201
+ for (let hbIndex = 0; hbIndex < bHitboxes.length; hbIndex++) {
202
+ const hb = bHitboxes[hbIndex];
203
+ if (!ha.intersects(hb))
204
+ continue;
205
+ if (isPairAllowed === undefined) {
206
+ isPairAllowed = a.beforeColision(b) && b.beforeColision(a);
207
+ allowedPairs.set(pairKey, isPairAllowed);
208
+ }
209
+ if (!isPairAllowed) {
210
+ continue objectPairLoop;
211
+ }
212
+ const resolution = ColisionHandler.resolveCollision(ha, hb);
213
+ const penetration = resolution?.penetration ??
214
+ ColisionHandler.getPenetrationVector(ha, hb);
215
+ if (!notifiedPairs.has(pairKey)) {
216
+ notifiedPairs.add(pairKey);
217
+ a.onColision(b, penetration);
218
+ b.onColision(a, penetration.toMultiplied(-1));
219
+ }
220
+ if (!resolution)
221
+ continue;
222
+ resolvedAny = true;
223
+ const aImmovable = !!a.phisics.immovable;
224
+ const bImmovable = !!b.phisics.immovable;
225
+ if (!aImmovable) {
226
+ a.translate(resolution.deltaA);
227
+ }
228
+ if (!bImmovable) {
229
+ b.translate(resolution.deltaB);
230
+ }
231
+ if (resolution.appliedImpulse) {
232
+ if (!aImmovable) {
233
+ a.speed = resolution.velocityA;
234
+ a.angularVelocity = resolution.angularVelocityA;
235
+ }
236
+ if (!bImmovable) {
237
+ b.speed = resolution.velocityB;
238
+ b.angularVelocity = resolution.angularVelocityB;
239
+ }
240
+ }
241
+ }
242
+ }
243
+ }
244
+ }
245
+ if (!resolvedAny) {
246
+ break;
247
+ }
248
+ }
249
+ }
250
+ }
251
+ export { Scene };
252
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Scenes/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { type ScriptEvent, type ScriptState } from "..";
2
+ import type { GameContext } from "../../Context";
3
+ export declare const sequenceOf: <TState extends object>(events: ScriptEvent<TState>[], label?: string | null) => ScriptEvent<TState>;
4
+ export declare const parallel: <TState extends object>(events: ScriptEvent<TState>[], label?: string | null) => ScriptEvent<TState>;
5
+ export declare const first: <TState extends object>(events: ScriptEvent<TState>[], label?: string | null) => ScriptEvent<TState>;
6
+ export declare const conditional: <TState extends object>(predicate: (state: ScriptState<TState>) => boolean, thenEv: ScriptEvent<TState>, elseEv: ScriptEvent<TState>, label?: string | null) => ScriptEvent<TState>;
7
+ export declare const all: <TState extends object>(events: ScriptEvent<TState>[], label?: string | null) => ScriptEvent<TState>;
8
+ export declare const repeatWhile: <TState extends object>(predicate: (ctx: GameContext, state: ScriptState<TState>) => boolean, event: ScriptEvent<TState>, label?: string | null) => ScriptEvent<TState>;
9
+ export declare const repeat: <TState extends object>(event: ScriptEvent<TState>, times: number, label?: string | null) => ScriptEvent<TState>;
10
+ export declare const withTimeout: <TState extends object>(event: ScriptEvent<TState>, timeout: number, label?: string | null) => ScriptEvent<TState>;
11
+ export declare const waitTicks: <TState extends object>(timeInTicks: number) => ScriptEvent<TState>;
12
+ export declare const waitUntil: <TState extends object>(predicate: (ctx: GameContext, state: TState) => boolean, opts?: {
13
+ pollGameTicks?: number;
14
+ label?: string;
15
+ }) => ScriptEvent<TState>;
16
+ export declare const waitForKeyPress: <TState extends object>(key: string, label?: string | null) => ScriptEvent<TState>;
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ScriptedEvents/Combinators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,WAAW,EAChB,KAAK,WAAW,EACjB,MAAM,IAAI,CAAC;AACZ,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,eAAO,MAAM,UAAU,GAAI,MAAM,SAAS,MAAM,EAC9C,QAAQ,WAAW,CAAC,MAAM,CAAC,EAAE,EAC7B,QAAO,MAAM,GAAG,IAAW,wBAW5B,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAI,MAAM,SAAS,MAAM,EAC5C,QAAQ,WAAW,CAAC,MAAM,CAAC,EAAE,EAC7B,QAAO,MAAM,GAAG,IAAW,wBAc5B,CAAC;AAEF,eAAO,MAAM,KAAK,GAAI,MAAM,SAAS,MAAM,EACzC,QAAQ,WAAW,CAAC,MAAM,CAAC,EAAE,EAC7B,QAAO,MAAM,GAAG,IAAW,wBAO5B,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,MAAM,SAAS,MAAM,EAC/C,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,OAAO,EAClD,QAAQ,WAAW,CAAC,MAAM,CAAC,EAC3B,QAAQ,WAAW,CAAC,MAAM,CAAC,EAC3B,QAAO,MAAM,GAAG,IAAW,wBAS5B,CAAC;AAEF,eAAO,MAAM,GAAG,GAAI,MAAM,SAAS,MAAM,EACvC,QAAQ,WAAW,CAAC,MAAM,CAAC,EAAE,EAC7B,QAAO,MAAM,GAAG,IAAW,wBA6B5B,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,MAAM,SAAS,MAAM,EAC/C,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,OAAO,EACpE,OAAO,WAAW,CAAC,MAAM,CAAC,EAC1B,QAAO,MAAM,GAAG,IAAW,wBAwB5B,CAAC;AAEF,eAAO,MAAM,MAAM,GAAI,MAAM,SAAS,MAAM,EAC1C,OAAO,WAAW,CAAC,MAAM,CAAC,EAC1B,OAAO,MAAM,EACb,QAAO,MAAM,GAAG,IAAW,wBAW5B,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,MAAM,SAAS,MAAM,EAC/C,OAAO,WAAW,CAAC,MAAM,CAAC,EAC1B,SAAS,MAAM,EACf,QAAO,MAAM,GAAG,IAAW,wBAS5B,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,MAAM,SAAS,MAAM,EAC7C,aAAa,MAAM,wBAepB,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,MAAM,SAAS,MAAM,EAC7C,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,EACvD,OAAO;IAAE,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,wBAkBlD,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,MAAM,SAAS,MAAM,EACnD,KAAK,MAAM,EACX,QAAO,MAAM,GAAG,IAAW,wBAW5B,CAAC"}
@@ -0,0 +1,127 @@
1
+ import { abort, failed, isAborted, isErrored, runEvent, scripted, } from "..";
2
+ export const sequenceOf = (events, label = null) => {
3
+ return scripted(async (ctx, _state) => {
4
+ let state = _state;
5
+ for (const event of events) {
6
+ state = await runEvent(event, ctx, state);
7
+ }
8
+ return state;
9
+ }, label);
10
+ };
11
+ export const parallel = (events, label = null) => {
12
+ return scripted(async (ctx, state) => {
13
+ const promises = events.map((event) => runEvent(event, ctx, state));
14
+ const newState = await Promise.all(promises).then((res) => {
15
+ return res.reduce((acc, curr) => {
16
+ if (isAborted(curr))
17
+ return acc;
18
+ return { ...acc, ...curr };
19
+ }, state);
20
+ });
21
+ return newState;
22
+ }, label);
23
+ };
24
+ export const first = (events, label = null) => {
25
+ return scripted(async (ctx, state) => {
26
+ const promises = events.map((event) => runEvent(event, ctx, state));
27
+ const firstResolved = await Promise.race(promises);
28
+ return firstResolved;
29
+ }, label);
30
+ };
31
+ export const conditional = (predicate, thenEv, elseEv, label = null) => {
32
+ return scripted(async (ctx, state) => {
33
+ if (predicate(state)) {
34
+ return runEvent(thenEv, ctx, state);
35
+ }
36
+ else {
37
+ return runEvent(elseEv, ctx, state);
38
+ }
39
+ }, label);
40
+ };
41
+ export const all = (events, label = null) => {
42
+ return scripted(async (ctx, _state) => {
43
+ const promises = events.map((event) => () => runEvent(event, ctx, _state));
44
+ let state = _state;
45
+ return new Promise((resolve) => {
46
+ promises.forEach((promise, index) => {
47
+ promise().then((newState) => {
48
+ state = { ...state, ...newState };
49
+ if (isAborted(state)) {
50
+ resolve(abort(state, `Aborted on ${label || "runAll"}\n${state.aborted}`));
51
+ }
52
+ if (isErrored(state)) {
53
+ resolve(failed(state, `Failed on ${label || "runAll"}\n${state.error}`));
54
+ }
55
+ if (index === promises.length - 1)
56
+ resolve(state);
57
+ });
58
+ });
59
+ });
60
+ }, label);
61
+ };
62
+ export const repeatWhile = (predicate, event, label = null) => {
63
+ return scripted(async (ctx, state) => {
64
+ let newState = state;
65
+ while (predicate(ctx, newState)) {
66
+ if (isAborted(newState)) {
67
+ return abort(newState, `Aborted on ${label || "repeatWhile"}\n${newState.aborted}`);
68
+ }
69
+ if (isErrored(newState)) {
70
+ return failed(newState, `Failed oon ${label || "repeatWhile"}\n${newState.error}`);
71
+ }
72
+ newState = await runEvent(event, ctx, newState);
73
+ }
74
+ return newState;
75
+ });
76
+ };
77
+ export const repeat = (event, times, label = null) => {
78
+ return scripted(async (ctx, _state) => {
79
+ let state = _state;
80
+ for (let i = 0; i < times; i++) {
81
+ state = await runEvent(event, ctx, state);
82
+ }
83
+ return state;
84
+ }, label);
85
+ };
86
+ export const withTimeout = (event, timeout, label = null) => {
87
+ return scripted(async (ctx, state) => {
88
+ setTimeout(() => {
89
+ abort(state, `Timeout on ${label || "withTimeout"}`);
90
+ }, timeout);
91
+ return await runEvent(event, ctx, state);
92
+ });
93
+ };
94
+ export const waitTicks = (timeInTicks) => {
95
+ return scripted(async (ctx, state) => {
96
+ const currTicks = ctx.getTickCount();
97
+ const tickRate = ctx.getGame().getTickRate();
98
+ const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
99
+ while (ctx.getTickCount() < currTicks + timeInTicks) {
100
+ await sleep(1000 / (tickRate * 2));
101
+ }
102
+ return state;
103
+ });
104
+ };
105
+ export const waitUntil = (predicate, opts) => {
106
+ const pollGameTicks = opts?.pollGameTicks ?? 1;
107
+ const label = opts?.label ?? "waitUntil";
108
+ const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
109
+ const core = scripted(async (ctx, state) => {
110
+ const ticksPerSecond = ctx.getTickRate();
111
+ while (true) {
112
+ if (predicate(ctx, state))
113
+ return state;
114
+ await sleep(pollGameTicks * (1000 / ticksPerSecond));
115
+ }
116
+ }, label);
117
+ return core;
118
+ };
119
+ export const waitForKeyPress = (key, label = null) => {
120
+ return waitUntil((ctx, state) => {
121
+ return ctx.getPressedKeys().includes(key);
122
+ }, {
123
+ pollGameTicks: 1,
124
+ label: label ?? `waitForKeyPress(${key})`,
125
+ });
126
+ };
127
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ScriptedEvents/Combinators/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { type TextBoxOptions } from "../../GameObject/Library/TextBox";
2
+ export type TextEntry = TextBoxOptions & {
3
+ text: string;
4
+ };
5
+ export declare const DisplayTextBox: <TState extends object>(entry: TextEntry) => import("..").ScriptEvent<TState>;
6
+ export declare const TextBoxSequence: <TState extends object>(entries: TextEntry[]) => import("..").ScriptEvent<TState>;
7
+ //# sourceMappingURL=TextBoxSequence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextBoxSequence.d.ts","sourceRoot":"","sources":["../../../src/ScriptedEvents/Library/TextBoxSequence.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,KAAK,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAEhF,MAAM,MAAM,SAAS,GAAG,cAAc,GAAG;IACvC,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,MAAM,SAAS,MAAM,EAClD,OAAO,SAAS,qCAUjB,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,MAAM,SAAS,MAAM,EACnD,SAAS,SAAS,EAAE,qCAKrB,CAAC"}