@energy8platform/game-engine 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/README.md +1134 -0
  2. package/dist/animation.cjs.js +505 -0
  3. package/dist/animation.cjs.js.map +1 -0
  4. package/dist/animation.d.ts +235 -0
  5. package/dist/animation.esm.js +500 -0
  6. package/dist/animation.esm.js.map +1 -0
  7. package/dist/assets.cjs.js +148 -0
  8. package/dist/assets.cjs.js.map +1 -0
  9. package/dist/assets.d.ts +97 -0
  10. package/dist/assets.esm.js +146 -0
  11. package/dist/assets.esm.js.map +1 -0
  12. package/dist/audio.cjs.js +345 -0
  13. package/dist/audio.cjs.js.map +1 -0
  14. package/dist/audio.d.ts +135 -0
  15. package/dist/audio.esm.js +343 -0
  16. package/dist/audio.esm.js.map +1 -0
  17. package/dist/core.cjs.js +1832 -0
  18. package/dist/core.cjs.js.map +1 -0
  19. package/dist/core.d.ts +633 -0
  20. package/dist/core.esm.js +1827 -0
  21. package/dist/core.esm.js.map +1 -0
  22. package/dist/debug.cjs.js +298 -0
  23. package/dist/debug.cjs.js.map +1 -0
  24. package/dist/debug.d.ts +114 -0
  25. package/dist/debug.esm.js +295 -0
  26. package/dist/debug.esm.js.map +1 -0
  27. package/dist/index.cjs.js +3623 -0
  28. package/dist/index.cjs.js.map +1 -0
  29. package/dist/index.d.ts +1607 -0
  30. package/dist/index.esm.js +3598 -0
  31. package/dist/index.esm.js.map +1 -0
  32. package/dist/ui.cjs.js +1081 -0
  33. package/dist/ui.cjs.js.map +1 -0
  34. package/dist/ui.d.ts +387 -0
  35. package/dist/ui.esm.js +1072 -0
  36. package/dist/ui.esm.js.map +1 -0
  37. package/dist/vite.cjs.js +125 -0
  38. package/dist/vite.cjs.js.map +1 -0
  39. package/dist/vite.d.ts +42 -0
  40. package/dist/vite.esm.js +122 -0
  41. package/dist/vite.esm.js.map +1 -0
  42. package/package.json +107 -0
  43. package/src/animation/Easing.ts +116 -0
  44. package/src/animation/SpineHelper.ts +162 -0
  45. package/src/animation/Timeline.ts +138 -0
  46. package/src/animation/Tween.ts +225 -0
  47. package/src/animation/index.ts +4 -0
  48. package/src/assets/AssetManager.ts +174 -0
  49. package/src/assets/index.ts +2 -0
  50. package/src/audio/AudioManager.ts +366 -0
  51. package/src/audio/index.ts +1 -0
  52. package/src/core/EventEmitter.ts +47 -0
  53. package/src/core/GameApplication.ts +306 -0
  54. package/src/core/Scene.ts +48 -0
  55. package/src/core/SceneManager.ts +258 -0
  56. package/src/core/index.ts +4 -0
  57. package/src/debug/DevBridge.ts +259 -0
  58. package/src/debug/FPSOverlay.ts +102 -0
  59. package/src/debug/index.ts +3 -0
  60. package/src/index.ts +71 -0
  61. package/src/input/InputManager.ts +171 -0
  62. package/src/input/index.ts +1 -0
  63. package/src/loading/CSSPreloader.ts +155 -0
  64. package/src/loading/LoadingScene.ts +356 -0
  65. package/src/loading/index.ts +2 -0
  66. package/src/state/StateMachine.ts +228 -0
  67. package/src/state/index.ts +1 -0
  68. package/src/types.ts +218 -0
  69. package/src/ui/BalanceDisplay.ts +155 -0
  70. package/src/ui/Button.ts +199 -0
  71. package/src/ui/Label.ts +111 -0
  72. package/src/ui/Modal.ts +134 -0
  73. package/src/ui/Panel.ts +125 -0
  74. package/src/ui/ProgressBar.ts +121 -0
  75. package/src/ui/Toast.ts +124 -0
  76. package/src/ui/WinDisplay.ts +133 -0
  77. package/src/ui/index.ts +16 -0
  78. package/src/viewport/ViewportManager.ts +241 -0
  79. package/src/viewport/index.ts +1 -0
  80. package/src/vite/index.ts +153 -0
@@ -0,0 +1,505 @@
1
+ 'use strict';
2
+
3
+ var pixi_js = require('pixi.js');
4
+
5
+ /**
6
+ * Collection of easing functions for use with Tween and Timeline.
7
+ *
8
+ * All functions take a progress value t (0..1) and return the eased value.
9
+ */
10
+ const Easing = {
11
+ linear: (t) => t,
12
+ easeInQuad: (t) => t * t,
13
+ easeOutQuad: (t) => t * (2 - t),
14
+ easeInOutQuad: (t) => (t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t),
15
+ easeInCubic: (t) => t * t * t,
16
+ easeOutCubic: (t) => --t * t * t + 1,
17
+ easeInOutCubic: (t) => t < 0.5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1,
18
+ easeInQuart: (t) => t * t * t * t,
19
+ easeOutQuart: (t) => 1 - --t * t * t * t,
20
+ easeInOutQuart: (t) => t < 0.5 ? 8 * t * t * t * t : 1 - 8 * --t * t * t * t,
21
+ easeInSine: (t) => 1 - Math.cos((t * Math.PI) / 2),
22
+ easeOutSine: (t) => Math.sin((t * Math.PI) / 2),
23
+ easeInOutSine: (t) => -(Math.cos(Math.PI * t) - 1) / 2,
24
+ easeInExpo: (t) => (t === 0 ? 0 : Math.pow(2, 10 * t - 10)),
25
+ easeOutExpo: (t) => (t === 1 ? 1 : 1 - Math.pow(2, -10 * t)),
26
+ easeInOutExpo: (t) => t === 0
27
+ ? 0
28
+ : t === 1
29
+ ? 1
30
+ : t < 0.5
31
+ ? Math.pow(2, 20 * t - 10) / 2
32
+ : (2 - Math.pow(2, -20 * t + 10)) / 2,
33
+ easeInBack: (t) => {
34
+ const c1 = 1.70158;
35
+ const c3 = c1 + 1;
36
+ return c3 * t * t * t - c1 * t * t;
37
+ },
38
+ easeOutBack: (t) => {
39
+ const c1 = 1.70158;
40
+ const c3 = c1 + 1;
41
+ return 1 + c3 * Math.pow(t - 1, 3) + c1 * Math.pow(t - 1, 2);
42
+ },
43
+ easeInOutBack: (t) => {
44
+ const c1 = 1.70158;
45
+ const c2 = c1 * 1.525;
46
+ return t < 0.5
47
+ ? (Math.pow(2 * t, 2) * ((c2 + 1) * 2 * t - c2)) / 2
48
+ : (Math.pow(2 * t - 2, 2) * ((c2 + 1) * (t * 2 - 2) + c2) + 2) / 2;
49
+ },
50
+ easeOutBounce: (t) => {
51
+ const n1 = 7.5625;
52
+ const d1 = 2.75;
53
+ if (t < 1 / d1)
54
+ return n1 * t * t;
55
+ if (t < 2 / d1)
56
+ return n1 * (t -= 1.5 / d1) * t + 0.75;
57
+ if (t < 2.5 / d1)
58
+ return n1 * (t -= 2.25 / d1) * t + 0.9375;
59
+ return n1 * (t -= 2.625 / d1) * t + 0.984375;
60
+ },
61
+ easeInBounce: (t) => 1 - Easing.easeOutBounce(1 - t),
62
+ easeInOutBounce: (t) => t < 0.5
63
+ ? (1 - Easing.easeOutBounce(1 - 2 * t)) / 2
64
+ : (1 + Easing.easeOutBounce(2 * t - 1)) / 2,
65
+ easeOutElastic: (t) => {
66
+ const c4 = (2 * Math.PI) / 3;
67
+ return t === 0
68
+ ? 0
69
+ : t === 1
70
+ ? 1
71
+ : Math.pow(2, -10 * t) * Math.sin((t * 10 - 0.75) * c4) + 1;
72
+ },
73
+ easeInElastic: (t) => {
74
+ const c4 = (2 * Math.PI) / 3;
75
+ return t === 0
76
+ ? 0
77
+ : t === 1
78
+ ? 1
79
+ : -Math.pow(2, 10 * t - 10) * Math.sin((t * 10 - 10.75) * c4);
80
+ },
81
+ };
82
+
83
+ /**
84
+ * Lightweight tween system integrated with PixiJS Ticker.
85
+ * Zero external dependencies — no GSAP required.
86
+ *
87
+ * All tweens return a Promise that resolves on completion.
88
+ *
89
+ * @example
90
+ * ```ts
91
+ * // Fade in a sprite
92
+ * await Tween.to(sprite, { alpha: 1, y: 100 }, 500, Easing.easeOutBack);
93
+ *
94
+ * // Move and wait
95
+ * await Tween.to(sprite, { x: 500 }, 300);
96
+ *
97
+ * // From a starting value
98
+ * await Tween.from(sprite, { scale: 0, alpha: 0 }, 400);
99
+ * ```
100
+ */
101
+ class Tween {
102
+ static _tweens = [];
103
+ static _tickerAdded = false;
104
+ /**
105
+ * Animate properties from current values to target values.
106
+ *
107
+ * @param target - Object to animate (Sprite, Container, etc.)
108
+ * @param props - Target property values
109
+ * @param duration - Duration in milliseconds
110
+ * @param easing - Easing function (default: easeOutQuad)
111
+ * @param onUpdate - Progress callback (0..1)
112
+ */
113
+ static to(target, props, duration, easing, onUpdate) {
114
+ return new Promise((resolve) => {
115
+ // Capture starting values
116
+ const from = {};
117
+ for (const key of Object.keys(props)) {
118
+ from[key] = Tween.getProperty(target, key);
119
+ }
120
+ const tween = {
121
+ target,
122
+ from,
123
+ to: { ...props },
124
+ duration: Math.max(1, duration),
125
+ easing: easing ?? Easing.easeOutQuad,
126
+ elapsed: 0,
127
+ delay: 0,
128
+ resolve,
129
+ onUpdate,
130
+ };
131
+ Tween._tweens.push(tween);
132
+ Tween.ensureTicker();
133
+ });
134
+ }
135
+ /**
136
+ * Animate properties from given values to current values.
137
+ */
138
+ static from(target, props, duration, easing, onUpdate) {
139
+ // Capture current values as "to"
140
+ const to = {};
141
+ for (const key of Object.keys(props)) {
142
+ to[key] = Tween.getProperty(target, key);
143
+ Tween.setProperty(target, key, props[key]);
144
+ }
145
+ return Tween.to(target, to, duration, easing, onUpdate);
146
+ }
147
+ /**
148
+ * Animate from one set of values to another.
149
+ */
150
+ static fromTo(target, fromProps, toProps, duration, easing, onUpdate) {
151
+ // Set starting values
152
+ for (const key of Object.keys(fromProps)) {
153
+ Tween.setProperty(target, key, fromProps[key]);
154
+ }
155
+ return Tween.to(target, toProps, duration, easing, onUpdate);
156
+ }
157
+ /**
158
+ * Wait for a given duration (useful in timelines).
159
+ */
160
+ static delay(ms) {
161
+ return new Promise((resolve) => setTimeout(resolve, ms));
162
+ }
163
+ /**
164
+ * Kill all tweens on a target.
165
+ */
166
+ static killTweensOf(target) {
167
+ Tween._tweens = Tween._tweens.filter((tw) => {
168
+ if (tw.target === target) {
169
+ tw.resolve();
170
+ return false;
171
+ }
172
+ return true;
173
+ });
174
+ }
175
+ /**
176
+ * Kill all active tweens.
177
+ */
178
+ static killAll() {
179
+ for (const tw of Tween._tweens) {
180
+ tw.resolve();
181
+ }
182
+ Tween._tweens.length = 0;
183
+ }
184
+ /** Number of active tweens */
185
+ static get activeTweens() {
186
+ return Tween._tweens.length;
187
+ }
188
+ // ─── Internal ──────────────────────────────────────────
189
+ static ensureTicker() {
190
+ if (Tween._tickerAdded)
191
+ return;
192
+ Tween._tickerAdded = true;
193
+ pixi_js.Ticker.shared.add(Tween.tick);
194
+ }
195
+ static tick = (ticker) => {
196
+ const dt = ticker.deltaMS;
197
+ const completed = [];
198
+ for (const tw of Tween._tweens) {
199
+ tw.elapsed += dt;
200
+ if (tw.elapsed < tw.delay)
201
+ continue;
202
+ const raw = Math.min((tw.elapsed - tw.delay) / tw.duration, 1);
203
+ const t = tw.easing(raw);
204
+ // Interpolate each property
205
+ for (const key of Object.keys(tw.to)) {
206
+ const start = tw.from[key];
207
+ const end = tw.to[key];
208
+ const value = start + (end - start) * t;
209
+ Tween.setProperty(tw.target, key, value);
210
+ }
211
+ tw.onUpdate?.(raw);
212
+ if (raw >= 1) {
213
+ completed.push(tw);
214
+ }
215
+ }
216
+ // Remove completed tweens
217
+ for (const tw of completed) {
218
+ const idx = Tween._tweens.indexOf(tw);
219
+ if (idx !== -1)
220
+ Tween._tweens.splice(idx, 1);
221
+ tw.resolve();
222
+ }
223
+ // Remove ticker when no active tweens
224
+ if (Tween._tweens.length === 0 && Tween._tickerAdded) {
225
+ pixi_js.Ticker.shared.remove(Tween.tick);
226
+ Tween._tickerAdded = false;
227
+ }
228
+ };
229
+ /**
230
+ * Get a potentially nested property (supports 'scale.x', 'position.y', etc.)
231
+ */
232
+ static getProperty(target, key) {
233
+ const parts = key.split('.');
234
+ let obj = target;
235
+ for (let i = 0; i < parts.length - 1; i++) {
236
+ obj = obj[parts[i]];
237
+ }
238
+ return obj[parts[parts.length - 1]] ?? 0;
239
+ }
240
+ /**
241
+ * Set a potentially nested property.
242
+ */
243
+ static setProperty(target, key, value) {
244
+ const parts = key.split('.');
245
+ let obj = target;
246
+ for (let i = 0; i < parts.length - 1; i++) {
247
+ obj = obj[parts[i]];
248
+ }
249
+ obj[parts[parts.length - 1]] = value;
250
+ }
251
+ }
252
+
253
+ /**
254
+ * Sequential/parallel animation timeline built on top of Tween.
255
+ *
256
+ * @example
257
+ * ```ts
258
+ * const timeline = new Timeline();
259
+ *
260
+ * // Sequential: one after another
261
+ * timeline
262
+ * .to(sprite1, { alpha: 1 }, 300)
263
+ * .to(sprite2, { x: 200 }, 500)
264
+ * .delay(200)
265
+ * .call(() => console.log('done'));
266
+ *
267
+ * // Parallel: all at once
268
+ * timeline.parallel(
269
+ * () => Tween.to(sprite1, { x: 100 }, 300),
270
+ * () => Tween.to(sprite2, { y: 200 }, 300),
271
+ * );
272
+ *
273
+ * await timeline.play();
274
+ * ```
275
+ */
276
+ class Timeline {
277
+ _steps = [];
278
+ _playing = false;
279
+ _cancelled = false;
280
+ /**
281
+ * Add a tween step (animate to target values).
282
+ */
283
+ to(target, props, duration, easing) {
284
+ this._steps.push({
285
+ fn: () => Tween.to(target, props, duration, easing),
286
+ });
287
+ return this;
288
+ }
289
+ /**
290
+ * Add a tween step (animate from given values).
291
+ */
292
+ from(target, props, duration, easing) {
293
+ this._steps.push({
294
+ fn: () => Tween.from(target, props, duration, easing),
295
+ });
296
+ return this;
297
+ }
298
+ /**
299
+ * Add a delay step.
300
+ */
301
+ delay(ms) {
302
+ this._steps.push({
303
+ fn: () => Tween.delay(ms),
304
+ });
305
+ return this;
306
+ }
307
+ /**
308
+ * Add a callback step.
309
+ */
310
+ call(fn) {
311
+ this._steps.push({
312
+ fn: async () => {
313
+ await fn();
314
+ },
315
+ });
316
+ return this;
317
+ }
318
+ /**
319
+ * Add a parallel step — all functions run simultaneously,
320
+ * step completes when all are done.
321
+ */
322
+ parallel(...fns) {
323
+ this._steps.push({
324
+ fn: () => Promise.all(fns.map((f) => f())).then(() => { }),
325
+ });
326
+ return this;
327
+ }
328
+ /**
329
+ * Play the timeline from start.
330
+ * Returns a promise that resolves when all steps complete.
331
+ */
332
+ async play() {
333
+ if (this._playing)
334
+ return;
335
+ this._playing = true;
336
+ this._cancelled = false;
337
+ for (const step of this._steps) {
338
+ if (this._cancelled)
339
+ break;
340
+ await step.fn();
341
+ }
342
+ this._playing = false;
343
+ }
344
+ /**
345
+ * Cancel the timeline.
346
+ */
347
+ cancel() {
348
+ this._cancelled = true;
349
+ }
350
+ /**
351
+ * Clear all steps.
352
+ */
353
+ clear() {
354
+ this._steps.length = 0;
355
+ this._cancelled = false;
356
+ this._playing = false;
357
+ return this;
358
+ }
359
+ /** Whether the timeline is currently playing */
360
+ get isPlaying() {
361
+ return this._playing;
362
+ }
363
+ }
364
+
365
+ /**
366
+ * Helper for working with Spine animations in PixiJS v8.
367
+ *
368
+ * Optional — only works if @esotericsoftware/spine-pixi-v8 is installed.
369
+ * Provides convenience methods for creating and playing Spine animations.
370
+ *
371
+ * @example
372
+ * ```ts
373
+ * // Load spine assets via AssetManager first
374
+ * const spine = SpineHelper.create('char-data', 'char-atlas');
375
+ * app.stage.addChild(spine);
376
+ * await SpineHelper.playAnimation(spine, 'idle', true);
377
+ * await SpineHelper.playAnimation(spine, 'win');
378
+ * ```
379
+ */
380
+ class SpineHelper {
381
+ static _SpineClass = null;
382
+ static _loaded = false;
383
+ /**
384
+ * Ensure the Spine module is loaded.
385
+ * Called automatically by create/playAnimation.
386
+ */
387
+ static async ensureLoaded() {
388
+ if (SpineHelper._loaded)
389
+ return !!SpineHelper._SpineClass;
390
+ try {
391
+ const spineModule = await import('@esotericsoftware/spine-pixi-v8');
392
+ SpineHelper._SpineClass = spineModule.Spine;
393
+ SpineHelper._loaded = true;
394
+ return true;
395
+ }
396
+ catch {
397
+ console.warn('[SpineHelper] @esotericsoftware/spine-pixi-v8 not available.');
398
+ SpineHelper._loaded = true;
399
+ return false;
400
+ }
401
+ }
402
+ /**
403
+ * Create a Spine display object.
404
+ *
405
+ * @param skeletonAlias - Alias of the loaded .skel/.json asset
406
+ * @param atlasAlias - Alias of the loaded .atlas asset
407
+ * @param options - Additional Spine options
408
+ * @returns Spine container (or null if Spine is not available)
409
+ */
410
+ static async create(skeletonAlias, atlasAlias, options) {
411
+ const available = await SpineHelper.ensureLoaded();
412
+ if (!available || !SpineHelper._SpineClass)
413
+ return null;
414
+ const SpineClass = SpineHelper._SpineClass;
415
+ // Use Spine.from for v4.2, constructor for v4.3+
416
+ if (typeof SpineClass.from === 'function') {
417
+ return SpineClass.from({
418
+ skeleton: skeletonAlias,
419
+ atlas: atlasAlias,
420
+ scale: options?.scale,
421
+ autoUpdate: options?.autoUpdate ?? true,
422
+ });
423
+ }
424
+ return new SpineClass({
425
+ skeleton: skeletonAlias,
426
+ atlas: atlasAlias,
427
+ scale: options?.scale,
428
+ autoUpdate: options?.autoUpdate ?? true,
429
+ });
430
+ }
431
+ /**
432
+ * Play a named animation on a Spine object.
433
+ * Returns a promise that resolves when the animation completes.
434
+ * For looping animations, the promise never resolves.
435
+ *
436
+ * @param spine - Spine display object
437
+ * @param animationName - Name of the animation
438
+ * @param loop - Whether to loop (default: false)
439
+ * @param track - Animation track (default: 0)
440
+ */
441
+ static playAnimation(spine, animationName, loop = false, track = 0) {
442
+ return new Promise((resolve) => {
443
+ if (!spine?.state) {
444
+ resolve();
445
+ return;
446
+ }
447
+ const entry = spine.state.setAnimation(track, animationName, loop);
448
+ if (loop) {
449
+ // Looping animations never complete — resolve immediately
450
+ // so callers can fire-and-forget
451
+ resolve();
452
+ return;
453
+ }
454
+ // Wait for the animation to complete
455
+ spine.state.addListener({
456
+ complete: (completedEntry) => {
457
+ if (completedEntry === entry) {
458
+ resolve();
459
+ }
460
+ },
461
+ });
462
+ });
463
+ }
464
+ /**
465
+ * Queue an animation after the current one finishes.
466
+ *
467
+ * @param spine - Spine display object
468
+ * @param animationName - Animation name
469
+ * @param delay - Mix duration / delay before starting
470
+ * @param loop - Loop the queued animation
471
+ * @param track - Animation track
472
+ */
473
+ static addAnimation(spine, animationName, delay = 0, loop = false, track = 0) {
474
+ spine?.state?.addAnimation(track, animationName, loop, delay);
475
+ }
476
+ /**
477
+ * Get all animation names available on a Spine skeleton.
478
+ */
479
+ static getAnimationNames(spine) {
480
+ if (!spine?.skeleton?.data?.animations)
481
+ return [];
482
+ return spine.skeleton.data.animations.map((a) => a.name);
483
+ }
484
+ /**
485
+ * Get all skin names available on a Spine skeleton.
486
+ */
487
+ static getSkinNames(spine) {
488
+ if (!spine?.skeleton?.data?.skins)
489
+ return [];
490
+ return spine.skeleton.data.skins.map((s) => s.name);
491
+ }
492
+ /**
493
+ * Set the active skin on a Spine skeleton.
494
+ */
495
+ static setSkin(spine, skinName) {
496
+ spine?.skeleton?.setSkinByName(skinName);
497
+ spine?.skeleton?.setSlotsToSetupPose();
498
+ }
499
+ }
500
+
501
+ exports.Easing = Easing;
502
+ exports.SpineHelper = SpineHelper;
503
+ exports.Timeline = Timeline;
504
+ exports.Tween = Tween;
505
+ //# sourceMappingURL=animation.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"animation.cjs.js","sources":["../src/animation/Easing.ts","../src/animation/Tween.ts","../src/animation/Timeline.ts","../src/animation/SpineHelper.ts"],"sourcesContent":[null,null,null,null],"names":["Ticker"],"mappings":"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"}