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,306 @@
1
+ import { Vector } from "../../Lib/Vector";
2
+ const normalizeHitboxOptions = (options) => {
3
+ if (typeof options === "boolean") {
4
+ return { debug: options, solid: true };
5
+ }
6
+ return {
7
+ debug: options?.debug ?? false,
8
+ solid: options?.solid ?? true,
9
+ };
10
+ };
11
+ const clamp = (value, min, max) => Math.max(min, Math.min(max, value));
12
+ const rotateAround = (point, pivot, angle) => {
13
+ if (angle === 0)
14
+ return point.clone();
15
+ const rotated = point.toSubtracted(pivot).rotate(angle);
16
+ rotated.add(pivot);
17
+ return rotated;
18
+ };
19
+ const projectVertices = (vertices, axis) => {
20
+ let min = Number.POSITIVE_INFINITY;
21
+ let max = Number.NEGATIVE_INFINITY;
22
+ for (const vertex of vertices) {
23
+ const projection = vertex.dotProduct(axis);
24
+ min = Math.min(min, projection);
25
+ max = Math.max(max, projection);
26
+ }
27
+ return { min, max };
28
+ };
29
+ const getObbData = (vertices, size) => {
30
+ const center = vertices[0].toAdded(vertices[2]).toMultiplied(0.5);
31
+ const axisX = vertices[1].toSubtracted(vertices[0]).normalize();
32
+ const axisY = vertices[3].toSubtracted(vertices[0]).normalize();
33
+ return {
34
+ center,
35
+ axisX,
36
+ axisY,
37
+ halfX: size.x / 2,
38
+ halfY: size.y / 2,
39
+ };
40
+ };
41
+ const closestPointOnObb = (point, obb) => {
42
+ const d = point.toSubtracted(obb.center);
43
+ const distX = d.dotProduct(obb.axisX);
44
+ const distY = d.dotProduct(obb.axisY);
45
+ const clampedX = clamp(distX, -obb.halfX, obb.halfX);
46
+ const clampedY = clamp(distY, -obb.halfY, obb.halfY);
47
+ return obb.center
48
+ .toAdded(obb.axisX.toMultiplied(clampedX))
49
+ .toAdded(obb.axisY.toMultiplied(clampedY));
50
+ };
51
+ class SquareHitbox {
52
+ offset;
53
+ size;
54
+ gameObject;
55
+ solid;
56
+ debug;
57
+ constructor(offset, size, gameObject, options = {}) {
58
+ this.offset = offset;
59
+ this.size = size;
60
+ this.gameObject = gameObject;
61
+ const resolved = normalizeHitboxOptions(options);
62
+ this.debug = resolved.debug;
63
+ this.solid = resolved.solid;
64
+ }
65
+ getTransformedVertices() {
66
+ const topLeft = this.getAbsolutePosition();
67
+ const topRight = new Vector(topLeft.x + this.size.x, topLeft.y);
68
+ const bottomRight = new Vector(topLeft.x + this.size.x, topLeft.y + this.size.y);
69
+ const bottomLeft = new Vector(topLeft.x, topLeft.y + this.size.y);
70
+ const angle = this.gameObject.rotation ?? 0;
71
+ if (angle === 0) {
72
+ return [topLeft, topRight, bottomRight, bottomLeft];
73
+ }
74
+ const pivot = this.gameObject.getRotationCenter();
75
+ return [
76
+ rotateAround(topLeft, pivot, angle),
77
+ rotateAround(topRight, pivot, angle),
78
+ rotateAround(bottomRight, pivot, angle),
79
+ rotateAround(bottomLeft, pivot, angle),
80
+ ];
81
+ }
82
+ getFutureRotation() {
83
+ return ((this.gameObject.rotation ?? 0) + (this.gameObject.angularVelocity ?? 0));
84
+ }
85
+ getFutureRotationCenter() {
86
+ return this.gameObject.getRotationCenter().toAdded(this.gameObject.speed);
87
+ }
88
+ getFutureTransformedVertices() {
89
+ const topLeft = this.getFutureIntendedPosition();
90
+ const topRight = new Vector(topLeft.x + this.size.x, topLeft.y);
91
+ const bottomRight = new Vector(topLeft.x + this.size.x, topLeft.y + this.size.y);
92
+ const bottomLeft = new Vector(topLeft.x, topLeft.y + this.size.y);
93
+ const angle = this.getFutureRotation();
94
+ if (angle === 0) {
95
+ return [topLeft, topRight, bottomRight, bottomLeft];
96
+ }
97
+ const pivot = this.getFutureRotationCenter();
98
+ return [
99
+ rotateAround(topLeft, pivot, angle),
100
+ rotateAround(topRight, pivot, angle),
101
+ rotateAround(bottomRight, pivot, angle),
102
+ rotateAround(bottomLeft, pivot, angle),
103
+ ];
104
+ }
105
+ getAbsolutePosition() {
106
+ const gameObjectPosition = this.gameObject.getPosition();
107
+ return gameObjectPosition.toAdded(this.offset);
108
+ }
109
+ getFutureIntendedPosition() {
110
+ return this.gameObject.getIntendedNextPosition().toAdded(this.offset);
111
+ }
112
+ intersectsWithSquare(other) {
113
+ const verticesA = this.getTransformedVertices();
114
+ const verticesB = other.getTransformedVertices();
115
+ const axes = [
116
+ verticesA[1].toSubtracted(verticesA[0]).normalize(),
117
+ verticesA[3].toSubtracted(verticesA[0]).normalize(),
118
+ verticesB[1].toSubtracted(verticesB[0]).normalize(),
119
+ verticesB[3].toSubtracted(verticesB[0]).normalize(),
120
+ ];
121
+ for (const axis of axes) {
122
+ if (axis.squaredMagnitude() === 0)
123
+ continue;
124
+ const projA = projectVertices(verticesA, axis);
125
+ const projB = projectVertices(verticesB, axis);
126
+ if (projA.max < projB.min || projB.max < projA.min) {
127
+ return false;
128
+ }
129
+ }
130
+ return true;
131
+ }
132
+ intersectsWithCircle(other) {
133
+ const circleCenter = other.getTransformedPosition();
134
+ const vertices = this.getTransformedVertices();
135
+ const obb = getObbData(vertices, this.size);
136
+ const closest = closestPointOnObb(circleCenter, obb);
137
+ const dx = circleCenter.x - closest.x;
138
+ const dy = circleCenter.y - closest.y;
139
+ return dx * dx + dy * dy <= other.radius * other.radius;
140
+ }
141
+ intersects(other) {
142
+ if (other instanceof CircleHitbox) {
143
+ return this.intersectsWithCircle(other);
144
+ }
145
+ if (other instanceof SquareHitbox) {
146
+ return this.intersectsWithSquare(other);
147
+ }
148
+ return false;
149
+ }
150
+ willIntersectWith(other) {
151
+ if (other instanceof CircleHitbox) {
152
+ const circleCenter = other.getFutureTransformedPosition();
153
+ const vertices = this.getFutureTransformedVertices();
154
+ const obb = getObbData(vertices, this.size);
155
+ const closest = closestPointOnObb(circleCenter, obb);
156
+ const dx = circleCenter.x - closest.x;
157
+ const dy = circleCenter.y - closest.y;
158
+ return dx * dx + dy * dy <= other.radius * other.radius;
159
+ }
160
+ if (other instanceof SquareHitbox) {
161
+ const verticesA = this.getFutureTransformedVertices();
162
+ const verticesB = other.getFutureTransformedVertices();
163
+ const axes = [
164
+ verticesA[1].toSubtracted(verticesA[0]).normalize(),
165
+ verticesA[3].toSubtracted(verticesA[0]).normalize(),
166
+ verticesB[1].toSubtracted(verticesB[0]).normalize(),
167
+ verticesB[3].toSubtracted(verticesB[0]).normalize(),
168
+ ];
169
+ for (const axis of axes) {
170
+ if (axis.squaredMagnitude() === 0)
171
+ continue;
172
+ const projA = projectVertices(verticesA, axis);
173
+ const projB = projectVertices(verticesB, axis);
174
+ if (projA.max < projB.min || projB.max < projA.min) {
175
+ return false;
176
+ }
177
+ }
178
+ return true;
179
+ }
180
+ return false;
181
+ }
182
+ intersectsWithPoint(point) {
183
+ const angle = this.gameObject.rotation ?? 0;
184
+ if (angle === 0) {
185
+ const thisPos = this.getAbsolutePosition();
186
+ return !(point.x < thisPos.x ||
187
+ point.x > thisPos.x + this.size.x ||
188
+ point.y < thisPos.y ||
189
+ point.y > thisPos.y + this.size.y);
190
+ }
191
+ const vertices = this.getTransformedVertices();
192
+ const obb = getObbData(vertices, this.size);
193
+ const d = point.toSubtracted(obb.center);
194
+ const localX = d.dotProduct(obb.axisX);
195
+ const localY = d.dotProduct(obb.axisY);
196
+ return Math.abs(localX) <= obb.halfX && Math.abs(localY) <= obb.halfY;
197
+ }
198
+ renderDebug(canvas) {
199
+ if (this.debug) {
200
+ const pos = this.getAbsolutePosition();
201
+ canvas
202
+ .getShapeDrawer()
203
+ .drawRectangle(pos.x, pos.y, this.size.x, this.size.y, "red", false);
204
+ }
205
+ }
206
+ }
207
+ class CircleHitbox {
208
+ offset;
209
+ radius;
210
+ gameObject;
211
+ solid;
212
+ debug;
213
+ constructor(offset, radius, gameObject, options = {}) {
214
+ this.offset = offset;
215
+ this.radius = radius;
216
+ this.gameObject = gameObject;
217
+ const resolved = normalizeHitboxOptions(options);
218
+ this.debug = resolved.debug;
219
+ this.solid = resolved.solid;
220
+ }
221
+ getAbsolutePosition() {
222
+ const gameObjectPosition = this.gameObject.getPosition();
223
+ return gameObjectPosition.toAdded(this.offset);
224
+ }
225
+ getTransformedPosition() {
226
+ const pos = this.getAbsolutePosition();
227
+ const angle = this.gameObject.rotation ?? 0;
228
+ if (angle === 0)
229
+ return pos;
230
+ const pivot = this.gameObject.getRotationCenter();
231
+ return rotateAround(pos, pivot, angle);
232
+ }
233
+ getFutureRotation() {
234
+ return ((this.gameObject.rotation ?? 0) + (this.gameObject.angularVelocity ?? 0));
235
+ }
236
+ getFutureRotationCenter() {
237
+ return this.gameObject.getRotationCenter().toAdded(this.gameObject.speed);
238
+ }
239
+ getFutureTransformedPosition() {
240
+ const pos = this.getFutureIntendedPosition();
241
+ const angle = this.getFutureRotation();
242
+ if (angle === 0)
243
+ return pos;
244
+ const pivot = this.getFutureRotationCenter();
245
+ return rotateAround(pos, pivot, angle);
246
+ }
247
+ getFutureIntendedPosition() {
248
+ return this.gameObject.getIntendedNextPosition().toAdded(this.offset);
249
+ }
250
+ intersectWithCircle(other, thisPos, otherPos) {
251
+ const dx = thisPos.x - otherPos.x;
252
+ const dy = thisPos.y - otherPos.y;
253
+ const distance = Math.sqrt(dx * dx + dy * dy);
254
+ return distance < this.radius + other.radius;
255
+ }
256
+ intersectWithSquare(other, thisPos, _otherPos) {
257
+ const vertices = other.getTransformedVertices();
258
+ const obb = getObbData(vertices, other.size);
259
+ const closest = closestPointOnObb(thisPos, obb);
260
+ const dx = thisPos.x - closest.x;
261
+ const dy = thisPos.y - closest.y;
262
+ return dx * dx + dy * dy <= this.radius * this.radius;
263
+ }
264
+ intersects(other) {
265
+ const thisPos = this.getTransformedPosition();
266
+ if (other instanceof CircleHitbox) {
267
+ return this.intersectWithCircle(other, thisPos, other.getTransformedPosition());
268
+ }
269
+ if (other instanceof SquareHitbox) {
270
+ return this.intersectWithSquare(other, thisPos, other.getAbsolutePosition());
271
+ }
272
+ return false;
273
+ }
274
+ willIntersectWith(other) {
275
+ const thisPos = this.getFutureTransformedPosition();
276
+ if (other instanceof CircleHitbox) {
277
+ return this.intersectWithCircle(other, thisPos, other.getFutureTransformedPosition());
278
+ }
279
+ if (other instanceof SquareHitbox) {
280
+ const vertices = other.getFutureTransformedVertices();
281
+ const obb = getObbData(vertices, other.size);
282
+ const closest = closestPointOnObb(thisPos, obb);
283
+ const dx = thisPos.x - closest.x;
284
+ const dy = thisPos.y - closest.y;
285
+ return dx * dx + dy * dy <= this.radius * this.radius;
286
+ }
287
+ return false;
288
+ }
289
+ intersectsWithPoint(point) {
290
+ const thisPos = this.getTransformedPosition();
291
+ const dx = point.x - thisPos.x;
292
+ const dy = point.y - thisPos.y;
293
+ const distance = Math.sqrt(dx * dx + dy * dy);
294
+ return distance < this.radius;
295
+ }
296
+ renderDebug(canvas) {
297
+ if (this.debug) {
298
+ const pos = this.getAbsolutePosition();
299
+ const drawer = canvas.getShapeDrawer();
300
+ drawer.drawCircle(pos.x, pos.y, this.radius, "red", false);
301
+ drawer.drawLine(pos, pos.toAdded(new Vector(this.radius, 0)), 2, "red");
302
+ }
303
+ }
304
+ }
305
+ export { SquareHitbox, CircleHitbox };
306
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/GameObject/Hitboxes/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { GameObject } from "..";
2
+ import type { GameEvent } from "../../Events";
3
+ import { Vector } from "../../Lib/Vector";
4
+ declare class Button extends GameObject {
5
+ private size;
6
+ private label;
7
+ private color;
8
+ private textcolor;
9
+ private onClick;
10
+ constructor(name: string, position: Vector, size: Vector, label: string, color?: string, textcolor?: string, onClick?: (obj: Button) => void);
11
+ private renderButton;
12
+ handleEvent(event: GameEvent): void;
13
+ }
14
+ export { Button };
15
+ //# sourceMappingURL=Button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../src/GameObject/Library/Button.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAEhC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAG1C,cAAM,MAAO,SAAQ,UAAU;IAI3B,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,OAAO;gBANf,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EACR,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,KAAK,GAAE,MAAc,EACrB,SAAS,GAAE,MAAgB,EAC3B,OAAO,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAe;IAUnD,OAAO,CAAC,YAAY;IAwBX,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;CAG7C;AAED,OAAO,EAAE,MAAM,EAAE,CAAC"}
@@ -0,0 +1,45 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { GameObject } from "..";
8
+ import { onClick, onHover, onStopHovering } from "../../Events/decorators";
9
+ import { Vector } from "../../Lib/Vector";
10
+ import { SquareHitbox } from "../Hitboxes";
11
+ class Button extends GameObject {
12
+ size;
13
+ label;
14
+ color;
15
+ textcolor;
16
+ onClick;
17
+ constructor(name, position, size, label, color = "red", textcolor = "black", onClick = () => { }) {
18
+ super(name, position);
19
+ this.size = size;
20
+ this.label = label;
21
+ this.color = color;
22
+ this.textcolor = textcolor;
23
+ this.onClick = onClick;
24
+ this.setRenderFunction(this.renderButton);
25
+ this.addHitbox(new SquareHitbox(Vector.zero(), this.size, this, { solid: false }));
26
+ }
27
+ renderButton(obj, canvas) {
28
+ const shapeDrawer = canvas.getShapeDrawer();
29
+ const pos = obj.getPosition();
30
+ shapeDrawer.drawRectangle(pos.x, pos.y, this.size.x, this.size.y, this.color);
31
+ shapeDrawer.drawText(this.label, pos.x + this.size.x / 2, pos.y + this.size.y / 2, this.textcolor);
32
+ }
33
+ handleEvent(event) {
34
+ super.handleEvent(event);
35
+ }
36
+ }
37
+ __decorate([
38
+ onClick((obj) => {
39
+ obj.onClick(obj);
40
+ }),
41
+ onHover(() => { }),
42
+ onStopHovering(() => { })
43
+ ], Button.prototype, "handleEvent", null);
44
+ export { Button };
45
+ //# sourceMappingURL=Button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Button.js","sourceRoot":"","sources":["../../../src/GameObject/Library/Button.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAGhC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,MAAO,SAAQ,UAAU;IAInB;IACA;IACA;IACA;IACA;IAPV,YACE,IAAY,EACZ,QAAgB,EACR,IAAY,EACZ,KAAa,EACb,QAAgB,KAAK,EACrB,YAAoB,OAAO,EAC3B,UAAiC,GAAG,EAAE,GAAE,CAAC;QAEjD,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QANd,SAAI,GAAJ,IAAI,CAAQ;QACZ,UAAK,GAAL,KAAK,CAAQ;QACb,UAAK,GAAL,KAAK,CAAgB;QACrB,cAAS,GAAT,SAAS,CAAkB;QAC3B,YAAO,GAAP,OAAO,CAAkC;QAGjD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAE1C,IAAI,CAAC,SAAS,CACZ,IAAI,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CACnE,CAAC;IACJ,CAAC;IAEO,YAAY,CAAC,GAAe,EAAE,MAAwB;QAC5D,MAAM,WAAW,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC;QAC5C,MAAM,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;QAC9B,WAAW,CAAC,aAAa,CACvB,GAAG,CAAC,CAAC,EACL,GAAG,CAAC,CAAC,EACL,IAAI,CAAC,IAAI,CAAC,CAAC,EACX,IAAI,CAAC,IAAI,CAAC,CAAC,EACX,IAAI,CAAC,KAAK,CACX,CAAC;QAEF,WAAW,CAAC,QAAQ,CAClB,IAAI,CAAC,KAAK,EACV,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EACvB,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EACvB,IAAI,CAAC,SAAS,CACf,CAAC;IACJ,CAAC;IAOQ,WAAW,CAAC,KAAgB;QACnC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;CACF;AAHU;IALR,OAAO,CAAS,CAAC,GAAG,EAAE,EAAE;QACvB,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC,CAAC;IACD,OAAO,CAAS,GAAG,EAAE,GAAE,CAAC,CAAC;IACzB,cAAc,CAAS,GAAG,EAAE,GAAE,CAAC,CAAC;yCAGhC;AAGH,OAAO,EAAE,MAAM,EAAE,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { GameObject } from "..";
2
+ import type { ShapeRendererFn } from "../../Assets/Shapes";
3
+ import type { GameEvent } from "../../Events";
4
+ import { Vector } from "../../Lib/Vector";
5
+ declare class ClickableShape extends GameObject {
6
+ private size;
7
+ private shapeRenderFn;
8
+ private onClick;
9
+ constructor(position: Vector, size: Vector, shapeRenderFn: ShapeRendererFn, onClick: (obj: ClickableShape) => void);
10
+ private renderShape;
11
+ handleEvent(event: GameEvent): void;
12
+ }
13
+ export { ClickableShape };
14
+ //# sourceMappingURL=Clickableshape.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Clickableshape.d.ts","sourceRoot":"","sources":["../../../src/GameObject/Library/Clickableshape.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAG1C,cAAM,cAAe,SAAQ,UAAU;IAGnC,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,OAAO;gBAHf,QAAQ,EAAE,MAAM,EACR,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,eAAe,EAC9B,OAAO,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,IAAI;IAOhD,OAAO,CAAC,WAAW;IASV,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;CAC7C;AAED,OAAO,EAAE,cAAc,EAAE,CAAC"}
@@ -0,0 +1,36 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { GameObject } from "..";
8
+ import { onClick, onHover } from "../../Events/decorators";
9
+ import { Vector } from "../../Lib/Vector";
10
+ import { SquareHitbox } from "../Hitboxes";
11
+ class ClickableShape extends GameObject {
12
+ size;
13
+ shapeRenderFn;
14
+ onClick;
15
+ constructor(position, size, shapeRenderFn, onClick) {
16
+ super("ClickableShape", position);
17
+ this.size = size;
18
+ this.shapeRenderFn = shapeRenderFn;
19
+ this.onClick = onClick;
20
+ this.setRenderFunction(this.renderShape);
21
+ this.addHitbox(new SquareHitbox(Vector.zero(), this.size, this));
22
+ }
23
+ renderShape(obj, canvas) {
24
+ const context = canvas.getContext();
25
+ const pos = obj.getPosition();
26
+ this.shapeRenderFn(context, pos, this.size);
27
+ }
28
+ handleEvent(event) { }
29
+ }
30
+ __decorate([
31
+ onClick((obj, event) => {
32
+ obj.onClick(obj);
33
+ })
34
+ ], ClickableShape.prototype, "handleEvent", null);
35
+ export { ClickableShape };
36
+ //# sourceMappingURL=Clickableshape.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Clickableshape.js","sourceRoot":"","sources":["../../../src/GameObject/Library/Clickableshape.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAIhC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,cAAe,SAAQ,UAAU;IAG3B;IACA;IACA;IAJV,YACE,QAAgB,EACR,IAAY,EACZ,aAA8B,EAC9B,OAAsC;QAE9C,KAAK,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;QAJ1B,SAAI,GAAJ,IAAI,CAAQ;QACZ,kBAAa,GAAb,aAAa,CAAiB;QAC9B,YAAO,GAAP,OAAO,CAA+B;QAG9C,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACzC,IAAI,CAAC,SAAS,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IACnE,CAAC;IAEO,WAAW,CAAC,GAAe,EAAE,MAAwB;QAC3D,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QACpC,MAAM,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;QAC9B,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IAKQ,WAAW,CAAC,KAAgB,IAAS,CAAC;CAChD;AADU;IAHR,OAAO,CAAiB,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QACtC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC,CAAC;iDAC6C;AAGjD,OAAO,EAAE,cAAc,EAAE,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { GameObject } from "..";
2
+ import { Vector } from "../../Lib/Vector";
3
+ type FloatingViewOptions = {
4
+ initialOpacity?: number;
5
+ fadeStep?: number;
6
+ riseSpeed?: number;
7
+ };
8
+ declare class FloatingView extends GameObject {
9
+ private size;
10
+ private color;
11
+ private fadeStep;
12
+ private riseSpeed;
13
+ constructor(name: string, position: Vector, size: Vector, color: string, { initialOpacity, fadeStep, riseSpeed, }?: FloatingViewOptions);
14
+ private renderView;
15
+ addChild(child: GameObject): void;
16
+ tick(): void;
17
+ }
18
+ export { FloatingView };
19
+ export type { FloatingViewOptions };
20
+ //# sourceMappingURL=FloatingView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FloatingView.d.ts","sourceRoot":"","sources":["../../../src/GameObject/Library/FloatingView.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAEhC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,KAAK,mBAAmB,GAAG;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,cAAM,YAAa,SAAQ,UAAU;IACnC,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAAS;gBAGxB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,EACE,cAAkB,EAClB,QAAe,EACf,SAAa,GACd,GAAE,mBAAwB;IAa7B,OAAO,CAAC,UAAU,CAKhB;IAEO,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAKjC,IAAI,IAAI,IAAI;CAYtB;AAED,OAAO,EAAE,YAAY,EAAE,CAAC;AACxB,YAAY,EAAE,mBAAmB,EAAE,CAAC"}
@@ -0,0 +1,39 @@
1
+ import { GameObject } from "..";
2
+ import { Vector } from "../../Lib/Vector";
3
+ class FloatingView extends GameObject {
4
+ size;
5
+ color;
6
+ fadeStep;
7
+ riseSpeed;
8
+ constructor(name, position, size, color, { initialOpacity = 1, fadeStep = 0.02, riseSpeed = 1, } = {}) {
9
+ super(name, position);
10
+ this.size = size;
11
+ this.color = color;
12
+ this.setOpacity(Math.min(1, Math.max(0, initialOpacity)));
13
+ this.fadeStep = fadeStep;
14
+ this.riseSpeed = riseSpeed;
15
+ this.setRenderFunction(this.renderView);
16
+ }
17
+ renderView = (obj, canvas) => {
18
+ const pos = obj.getPosition();
19
+ canvas
20
+ .getShapeDrawer()
21
+ .drawRectangle(pos.x, pos.y, this.size.x, this.size.y, this.color, true);
22
+ };
23
+ addChild(child) {
24
+ super.addChild(child);
25
+ child.setPositionRelativeToMotherShip(true);
26
+ }
27
+ tick() {
28
+ this.getPosition().add(new Vector(0, -this.riseSpeed));
29
+ const nextOpacity = Math.max(0, this.getOpacity() - this.fadeStep);
30
+ this.setOpacity(nextOpacity);
31
+ if (nextOpacity <= 0) {
32
+ this.destroy();
33
+ return;
34
+ }
35
+ super.tick();
36
+ }
37
+ }
38
+ export { FloatingView };
39
+ //# sourceMappingURL=FloatingView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FloatingView.js","sourceRoot":"","sources":["../../../src/GameObject/Library/FloatingView.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAEhC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAQ1C,MAAM,YAAa,SAAQ,UAAU;IAC3B,IAAI,CAAS;IACb,KAAK,CAAS;IACd,QAAQ,CAAS;IACjB,SAAS,CAAS;IAE1B,YACE,IAAY,EACZ,QAAgB,EAChB,IAAY,EACZ,KAAa,EACb,EACE,cAAc,GAAG,CAAC,EAClB,QAAQ,GAAG,IAAI,EACf,SAAS,GAAG,CAAC,MACU,EAAE;QAE3B,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAEtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;QAC1D,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAE3B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1C,CAAC;IAEO,UAAU,GAAG,CAAC,GAAe,EAAE,MAAwB,EAAQ,EAAE;QACvE,MAAM,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;QAC9B,MAAM;aACH,cAAc,EAAE;aAChB,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC7E,CAAC,CAAC;IAEO,QAAQ,CAAC,KAAiB;QACjC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACtB,KAAK,CAAC,+BAA+B,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IAEQ,IAAI;QACX,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QACvD,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnE,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAE7B,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;YACrB,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,OAAO;QACT,CAAC;QAED,KAAK,CAAC,IAAI,EAAE,CAAC;IACf,CAAC;CACF;AAED,OAAO,EAAE,YAAY,EAAE,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { GameObject } from "..";
2
+ import type { GameEvent } from "../../Events";
3
+ declare class Group extends GameObject {
4
+ constructor(name: string, children: GameObject[]);
5
+ handleEvent(event: GameEvent): void;
6
+ }
7
+ export { Group };
8
+ //# sourceMappingURL=Group.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Group.d.ts","sourceRoot":"","sources":["../../../src/GameObject/Library/Group.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAI9C,cAAM,KAAM,SAAQ,UAAU;gBAChB,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE;IAYvC,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;CAC7C;AAED,OAAO,EAAE,KAAK,EAAE,CAAC"}
@@ -0,0 +1,26 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { GameObject } from "..";
8
+ import { onChildrenEvents } from "../../Events/decorators";
9
+ import { Vector } from "../../Lib/Vector";
10
+ class Group extends GameObject {
11
+ constructor(name, children) {
12
+ super(name, new Vector(0, 0));
13
+ children.forEach((child) => {
14
+ this.addChild(child);
15
+ if (this.getMotherShip()) {
16
+ child.setMotherShip(this.getMotherShip());
17
+ }
18
+ });
19
+ }
20
+ handleEvent(event) { }
21
+ }
22
+ __decorate([
23
+ onChildrenEvents()
24
+ ], Group.prototype, "handleEvent", null);
25
+ export { Group };
26
+ //# sourceMappingURL=Group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Group.js","sourceRoot":"","sources":["../../../src/GameObject/Library/Group.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAEhC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,MAAM,KAAM,SAAQ,UAAU;IAC5B,YAAY,IAAY,EAAE,QAAsB;QAC9C,KAAK,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAE9B,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACzB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACrB,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;gBACzB,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,EAAG,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAGQ,WAAW,CAAC,KAAgB,IAAS,CAAC;CAChD;AADU;IADR,gBAAgB,EAAS;wCACqB;AAGjD,OAAO,EAAE,KAAK,EAAE,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { GameObject } from "..";
2
+ import type { ShapeRendererFn } from "../../Assets/Shapes";
3
+ import type { GameEvent } from "../../Events";
4
+ import { Vector } from "../../Lib/Vector";
5
+ declare class HoverableShape extends GameObject {
6
+ private size;
7
+ private shapeRenderFn;
8
+ private onHover?;
9
+ private onStopHover?;
10
+ constructor(position: Vector, size: Vector, shapeRenderFn: ShapeRendererFn, onHover?: ((obj: HoverableShape) => void) | undefined, onStopHover?: ((obj: HoverableShape) => void) | undefined);
11
+ private renderShape;
12
+ handleEvent(event: GameEvent): void;
13
+ }
14
+ export { HoverableShape };
15
+ //# sourceMappingURL=HoverableShape.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HoverableShape.d.ts","sourceRoot":"","sources":["../../../src/GameObject/Library/HoverableShape.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAG1C,cAAM,cAAe,SAAQ,UAAU;IAGnC,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,OAAO,CAAC;IAChB,OAAO,CAAC,WAAW,CAAC;gBAJpB,QAAQ,EAAE,MAAM,EACR,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,eAAe,EAC9B,OAAO,CAAC,GAAE,CAAC,GAAG,EAAE,cAAc,KAAK,IAAI,aAAA,EACvC,WAAW,CAAC,GAAE,CAAC,GAAG,EAAE,cAAc,KAAK,IAAI,aAAA;IAOrD,OAAO,CAAC,WAAW;IAYV,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;CAC7C;AAED,OAAO,EAAE,cAAc,EAAE,CAAC"}
@@ -0,0 +1,41 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { GameObject } from "..";
8
+ import { onClick, onHover, onStopHovering } from "../../Events/decorators";
9
+ import { Vector } from "../../Lib/Vector";
10
+ import { SquareHitbox } from "../Hitboxes";
11
+ class HoverableShape extends GameObject {
12
+ size;
13
+ shapeRenderFn;
14
+ onHover;
15
+ onStopHover;
16
+ constructor(position, size, shapeRenderFn, onHover, onStopHover) {
17
+ super("ClickableShape", position);
18
+ this.size = size;
19
+ this.shapeRenderFn = shapeRenderFn;
20
+ this.onHover = onHover;
21
+ this.onStopHover = onStopHover;
22
+ this.setRenderFunction(this.renderShape);
23
+ this.addHitbox(new SquareHitbox(Vector.zero(), this.size, this));
24
+ }
25
+ renderShape(obj, canvas) {
26
+ const context = canvas.getContext();
27
+ const pos = obj.getPosition();
28
+ this.shapeRenderFn(context, pos, this.size);
29
+ }
30
+ handleEvent(event) { }
31
+ }
32
+ __decorate([
33
+ onHover((obj, event) => {
34
+ obj.onHover ? obj.onHover(obj) : null;
35
+ }),
36
+ onStopHovering((obj, event) => {
37
+ obj.onStopHover ? obj.onStopHover(obj) : null;
38
+ })
39
+ ], HoverableShape.prototype, "handleEvent", null);
40
+ export { HoverableShape };
41
+ //# sourceMappingURL=HoverableShape.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HoverableShape.js","sourceRoot":"","sources":["../../../src/GameObject/Library/HoverableShape.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAIhC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,cAAe,SAAQ,UAAU;IAG3B;IACA;IACA;IACA;IALV,YACE,QAAgB,EACR,IAAY,EACZ,aAA8B,EAC9B,OAAuC,EACvC,WAA2C;QAEnD,KAAK,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;QAL1B,SAAI,GAAJ,IAAI,CAAQ;QACZ,kBAAa,GAAb,aAAa,CAAiB;QAC9B,YAAO,GAAP,OAAO,CAAgC;QACvC,gBAAW,GAAX,WAAW,CAAgC;QAGnD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACzC,IAAI,CAAC,SAAS,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IACnE,CAAC;IAEO,WAAW,CAAC,GAAe,EAAE,MAAwB;QAC3D,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QACpC,MAAM,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;QAC9B,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IAQQ,WAAW,CAAC,KAAgB,IAAS,CAAC;CAChD;AADU;IANR,OAAO,CAAiB,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QACtC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACxC,CAAC,CAAC;IACD,cAAc,CAAiB,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QAC7C,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAChD,CAAC,CAAC;iDAC6C;AAGjD,OAAO,EAAE,cAAc,EAAE,CAAC"}