@gamebob/axon-surge 0.5.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 (69) hide show
  1. package/LICENSE +1 -0
  2. package/README.md +24 -0
  3. package/dist/axon-surge.js +1872 -0
  4. package/dist/core/EventBus.d.ts +10 -0
  5. package/dist/core/EventBus.d.ts.map +1 -0
  6. package/dist/core/GameEngine.d.ts +52 -0
  7. package/dist/core/GameEngine.d.ts.map +1 -0
  8. package/dist/core/GameLoop.d.ts +12 -0
  9. package/dist/core/GameLoop.d.ts.map +1 -0
  10. package/dist/director/SpawnerPatterns.d.ts +13 -0
  11. package/dist/director/SpawnerPatterns.d.ts.map +1 -0
  12. package/dist/director/WaveDirector.d.ts +17 -0
  13. package/dist/director/WaveDirector.d.ts.map +1 -0
  14. package/dist/entities/CoreEntity.d.ts +15 -0
  15. package/dist/entities/CoreEntity.d.ts.map +1 -0
  16. package/dist/entities/EnemyEntity.d.ts +30 -0
  17. package/dist/entities/EnemyEntity.d.ts.map +1 -0
  18. package/dist/factory/EntityFactory.d.ts +7 -0
  19. package/dist/factory/EntityFactory.d.ts.map +1 -0
  20. package/dist/i18n/I18nService.d.ts +9 -0
  21. package/dist/i18n/I18nService.d.ts.map +1 -0
  22. package/dist/i18n/locales.d.ts +22 -0
  23. package/dist/i18n/locales.d.ts.map +1 -0
  24. package/dist/index.d.ts +15 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/input/InputManager.d.ts +17 -0
  27. package/dist/input/InputManager.d.ts.map +1 -0
  28. package/dist/physics/PhysicsEngine.d.ts +21 -0
  29. package/dist/physics/PhysicsEngine.d.ts.map +1 -0
  30. package/dist/physics/SpatialHash.d.ts +15 -0
  31. package/dist/physics/SpatialHash.d.ts.map +1 -0
  32. package/dist/platform/browser-platform.d.ts +25 -0
  33. package/dist/platform/browser-platform.d.ts.map +1 -0
  34. package/dist/platform/platform.d.ts +29 -0
  35. package/dist/platform/platform.d.ts.map +1 -0
  36. package/dist/pool/EnemyPool.d.ts +8 -0
  37. package/dist/pool/EnemyPool.d.ts.map +1 -0
  38. package/dist/pool/ObjectPool.d.ts +10 -0
  39. package/dist/pool/ObjectPool.d.ts.map +1 -0
  40. package/dist/render/CanvasRenderer.d.ts +24 -0
  41. package/dist/render/CanvasRenderer.d.ts.map +1 -0
  42. package/dist/render/JuiceEffects.d.ts +15 -0
  43. package/dist/render/JuiceEffects.d.ts.map +1 -0
  44. package/dist/strategies/FragmentClusterStrategy.d.ts +5 -0
  45. package/dist/strategies/FragmentClusterStrategy.d.ts.map +1 -0
  46. package/dist/strategies/GravityParasiteStrategy.d.ts +5 -0
  47. package/dist/strategies/GravityParasiteStrategy.d.ts.map +1 -0
  48. package/dist/strategies/ImpactStrategy.d.ts +20 -0
  49. package/dist/strategies/ImpactStrategy.d.ts.map +1 -0
  50. package/dist/strategies/PiercingCellStrategy.d.ts +5 -0
  51. package/dist/strategies/PiercingCellStrategy.d.ts.map +1 -0
  52. package/dist/strategies/ToxicSporeStrategy.d.ts +5 -0
  53. package/dist/strategies/ToxicSporeStrategy.d.ts.map +1 -0
  54. package/dist/styles.css +1 -0
  55. package/dist/theme/ThemeManager.d.ts +27 -0
  56. package/dist/theme/ThemeManager.d.ts.map +1 -0
  57. package/dist/types/game.d.ts +72 -0
  58. package/dist/types/game.d.ts.map +1 -0
  59. package/dist/ui/HUDOverlay.d.ts +15 -0
  60. package/dist/ui/HUDOverlay.d.ts.map +1 -0
  61. package/dist/ui/OnboardingTutorial.d.ts +14 -0
  62. package/dist/ui/OnboardingTutorial.d.ts.map +1 -0
  63. package/dist/ui/ProgressBar.d.ts +14 -0
  64. package/dist/ui/ProgressBar.d.ts.map +1 -0
  65. package/dist/ui/SettingsModal.d.ts +20 -0
  66. package/dist/ui/SettingsModal.d.ts.map +1 -0
  67. package/dist/ui/StartMenu.d.ts +11 -0
  68. package/dist/ui/StartMenu.d.ts.map +1 -0
  69. package/package.json +30 -0
@@ -0,0 +1,10 @@
1
+ import type { GameEventMap } from "../types/game";
2
+ export type EventCallback<T> = (data: T) => void;
3
+ export declare class EventBus {
4
+ private listeners;
5
+ on<K extends keyof GameEventMap>(event: K, callback: EventCallback<GameEventMap[K]>): () => void;
6
+ off<K extends keyof GameEventMap>(event: K, callback: EventCallback<GameEventMap[K]>): void;
7
+ emit<K extends keyof GameEventMap>(event: K, data: GameEventMap[K]): void;
8
+ clear(): void;
9
+ }
10
+ //# sourceMappingURL=EventBus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventBus.d.ts","sourceRoot":"","sources":["../../src/core/EventBus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;AAEjD,qBAAa,QAAQ;IACjB,OAAO,CAAC,SAAS,CAAqD;IAE/D,EAAE,CAAC,CAAC,SAAS,MAAM,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI;IAQhG,GAAG,CAAC,CAAC,SAAS,MAAM,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;IAO3F,IAAI,CAAC,CAAC,SAAS,MAAM,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI;IAOzE,KAAK,IAAI,IAAI;CAGvB"}
@@ -0,0 +1,52 @@
1
+ import { type Theme } from "../theme/ThemeManager";
2
+ import type { GamePlatform } from "../platform/platform";
3
+ import type { Language } from "../i18n/locales";
4
+ export interface GameEngineOptions {
5
+ root: HTMLElement;
6
+ language?: Language;
7
+ theme?: Theme;
8
+ platform?: GamePlatform;
9
+ }
10
+ export declare class GameEngine {
11
+ private container;
12
+ private canvas;
13
+ private i18n;
14
+ private themeManager;
15
+ private platform;
16
+ private eventBus;
17
+ private gameLoop;
18
+ private inputManager;
19
+ private physicsEngine;
20
+ private waveDirector;
21
+ private renderer;
22
+ private juice;
23
+ private hud;
24
+ private startMenu;
25
+ private settingsModal;
26
+ private onboarding;
27
+ private progressBar;
28
+ private core;
29
+ private enemies;
30
+ private ambientEnemies;
31
+ private pools;
32
+ private vortices;
33
+ private shockwaves;
34
+ private particles;
35
+ private floatingTexts;
36
+ private score;
37
+ private combo;
38
+ private isRunning;
39
+ private isPaused;
40
+ private firstPlay;
41
+ constructor(options: GameEngineOptions);
42
+ setLanguage(language: Language): void;
43
+ setTheme(theme: Theme): void;
44
+ private onLanguageChanged;
45
+ private initAmbientArena;
46
+ private resizeCanvas;
47
+ private setupEvents;
48
+ startGame(): void;
49
+ private update;
50
+ private render;
51
+ }
52
+ //# sourceMappingURL=GameEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GameEngine.d.ts","sourceRoot":"","sources":["../../src/core/GameEngine.ts"],"names":[],"mappings":"AAeA,OAAO,EAAgB,KAAK,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAGjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAGhD,MAAM,WAAW,iBAAiB;IAC9B,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,QAAQ,CAAC,EAAE,YAAY,CAAC;CAC3B;AAED,qBAAa,UAAU;IACnB,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,IAAI,CAAc;IAC1B,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,GAAG,CAAa;IACxB,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,WAAW,CAAc;IAEjC,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,aAAa,CAAsB;IAE3C,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,SAAS,CAAiB;gBAEtB,OAAO,EAAE,iBAAiB;IA2D/B,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAKrC,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAInC,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,gBAAgB;IAmBxB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,WAAW;IAsDZ,SAAS,IAAI,IAAI;IAyBxB,OAAO,CAAC,MAAM;IAgDd,OAAO,CAAC,MAAM;CAejB"}
@@ -0,0 +1,12 @@
1
+ export declare class GameLoop {
2
+ private animationFrameId;
3
+ private lastTime;
4
+ private isRunning;
5
+ private updateCallback;
6
+ private renderCallback;
7
+ constructor(updateCallback: (dt: number) => void, renderCallback: () => void);
8
+ start(): void;
9
+ stop(): void;
10
+ private tick;
11
+ }
12
+ //# sourceMappingURL=GameLoop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GameLoop.d.ts","sourceRoot":"","sources":["../../src/core/GameLoop.ts"],"names":[],"mappings":"AAAA,qBAAa,QAAQ;IACjB,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,cAAc,CAAa;gBAEvB,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,EAAE,cAAc,EAAE,MAAM,IAAI;IAKrE,KAAK,IAAI,IAAI;IAQb,IAAI,IAAI,IAAI;IAQnB,OAAO,CAAC,IAAI;CAUf"}
@@ -0,0 +1,13 @@
1
+ import { EnemyEntity } from "../entities/EnemyEntity";
2
+ import { EnemyPool } from "../pool/EnemyPool";
3
+ import type { Vector2D } from "../types/game";
4
+ export declare class SpawnerPatterns {
5
+ static getOffscreenPosition(width: number, height: number): Vector2D;
6
+ static spawnCircleOfDeath(pool: EnemyPool, corePos: Vector2D, width: number, height: number): EnemyEntity[];
7
+ static spawnDenseCluster(pool: EnemyPool, width: number, height: number, corePos: Vector2D): EnemyEntity[];
8
+ static spawnSineSnake(pool: EnemyPool, width: number, height: number, corePos: Vector2D): EnemyEntity[];
9
+ static spawnDoubleSpiral(pool: EnemyPool, width: number, height: number, corePos: Vector2D): EnemyEntity[];
10
+ static spawnMarchingWall(pool: EnemyPool, width: number, height: number, corePos: Vector2D): EnemyEntity[];
11
+ static spawnCrossfireStreams(pool: EnemyPool, width: number, height: number, corePos: Vector2D): EnemyEntity[];
12
+ }
13
+ //# sourceMappingURL=SpawnerPatterns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpawnerPatterns.d.ts","sourceRoot":"","sources":["../../src/director/SpawnerPatterns.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,OAAO,KAAK,EAAE,QAAQ,EAAa,MAAM,eAAe,CAAC;AAEzD,qBAAa,eAAe;WACV,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ;WAS7D,kBAAkB,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,EAAE;WAwBpG,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,GAAG,WAAW,EAAE;WA+BnG,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,GAAG,WAAW,EAAE;WAiBhG,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,GAAG,WAAW,EAAE;WAkBnG,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,GAAG,WAAW,EAAE;WAsBnG,qBAAqB,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,GAAG,WAAW,EAAE;CAgBxH"}
@@ -0,0 +1,17 @@
1
+ import type { Vector2D } from "../types/game";
2
+ import { EnemyEntity } from "../entities/EnemyEntity";
3
+ export declare class WaveDirector {
4
+ wave: number;
5
+ private pool;
6
+ private spawnTimer;
7
+ private waveTimer;
8
+ private patternCooldown;
9
+ private initialGracePeriod;
10
+ constructor();
11
+ reset(): void;
12
+ update(dt: number, activeEnemies: EnemyEntity[], width: number, height: number, corePos: Vector2D): EnemyEntity | null;
13
+ private spawnSingleEnemy;
14
+ private spawnPatternFormation;
15
+ private applyFlockingBehaviors;
16
+ }
17
+ //# sourceMappingURL=WaveDirector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WaveDirector.d.ts","sourceRoot":"","sources":["../../src/director/WaveDirector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAa,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAKtD,qBAAa,YAAY;IACd,IAAI,EAAE,MAAM,CAAK;IACxB,OAAO,CAAC,IAAI,CAAY;IACxB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,eAAe,CAAa;IACpC,OAAO,CAAC,kBAAkB,CAAgB;;IAMnC,KAAK,IAAI,IAAI;IAOb,MAAM,CACT,EAAE,EAAE,MAAM,EACV,aAAa,EAAE,WAAW,EAAE,EAC5B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,QAAQ,GAClB,WAAW,GAAG,IAAI;IA+BrB,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,sBAAsB;CA4CjC"}
@@ -0,0 +1,15 @@
1
+ import type { Vector2D } from "../types/game";
2
+ export declare class CoreEntity {
3
+ position: Vector2D;
4
+ radius: number;
5
+ integrity: number;
6
+ maxIntegrity: number;
7
+ pulsePhase: number;
8
+ organicSeed: number;
9
+ constructor(x: number, y: number);
10
+ update(dt: number): void;
11
+ getMembraneRadius(angle: number): number;
12
+ takeDamage(): boolean;
13
+ reset(x: number, y: number): void;
14
+ }
15
+ //# sourceMappingURL=CoreEntity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CoreEntity.d.ts","sourceRoot":"","sources":["../../src/entities/CoreEntity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,qBAAa,UAAU;IACZ,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,MAAM,CAAM;IACpB,SAAS,EAAE,MAAM,CAAK;IACtB,YAAY,EAAE,MAAM,CAAK;IACzB,UAAU,EAAE,MAAM,CAAK;IACvB,WAAW,EAAE,MAAM,CAAC;gBAEf,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAKzB,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAIxB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAOxC,UAAU,IAAI,OAAO;IAQrB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;CAK3C"}
@@ -0,0 +1,30 @@
1
+ import type { Vector2D, EnemyType } from "../types/game";
2
+ import type { IImpactStrategy } from "../strategies/ImpactStrategy";
3
+ export type DeathType = "none" | "dissolve" | "sliced";
4
+ export declare class EnemyEntity {
5
+ id: string;
6
+ position: Vector2D;
7
+ velocity: Vector2D;
8
+ radius: number;
9
+ type: EnemyType;
10
+ active: boolean;
11
+ isGrabbed: boolean;
12
+ isThrown: boolean;
13
+ wasManipulated: boolean;
14
+ rotation: number;
15
+ color: string;
16
+ strategy: IImpactStrategy | null;
17
+ hitRadiusPadding: number;
18
+ isDying: boolean;
19
+ deathType: DeathType;
20
+ deathTimer: number;
21
+ maxDeathTimer: number;
22
+ sliceAngle: number;
23
+ constructor(id: string);
24
+ getHitRadius(): number;
25
+ triggerDissolveDeath(): void;
26
+ triggerSliceDeath(angle: number): void;
27
+ update(dt: number): void;
28
+ reset(): void;
29
+ }
30
+ //# sourceMappingURL=EnemyEntity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnemyEntity.d.ts","sourceRoot":"","sources":["../../src/entities/EnemyEntity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEpE,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,UAAU,GAAG,QAAQ,CAAC;AAEvD,qBAAa,WAAW;IACb,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,QAAQ,CAAkB;IACpC,QAAQ,EAAE,QAAQ,CAAkB;IACpC,MAAM,EAAE,MAAM,CAAM;IACpB,IAAI,EAAE,SAAS,CAAa;IAC5B,MAAM,EAAE,OAAO,CAAS;IACxB,SAAS,EAAE,OAAO,CAAS;IAC3B,QAAQ,EAAE,OAAO,CAAS;IAC1B,cAAc,EAAE,OAAO,CAAS;IAChC,QAAQ,EAAE,MAAM,CAAK;IACrB,KAAK,EAAE,MAAM,CAAa;IAC1B,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAQ;IACxC,gBAAgB,EAAE,MAAM,CAAO;IAE/B,OAAO,EAAE,OAAO,CAAS;IACzB,SAAS,EAAE,SAAS,CAAU;IAC9B,UAAU,EAAE,MAAM,CAAK;IACvB,aAAa,EAAE,MAAM,CAAO;IAC5B,UAAU,EAAE,MAAM,CAAK;gBAElB,EAAE,EAAE,MAAM;IAIf,YAAY,IAAI,MAAM;IAItB,oBAAoB,IAAI,IAAI;IAS5B,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAUtC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAsBxB,KAAK,IAAI,IAAI;CAcvB"}
@@ -0,0 +1,7 @@
1
+ import { EnemyEntity } from "../entities/EnemyEntity";
2
+ import type { Vector2D, EnemyType } from "../types/game";
3
+ export declare class EntityFactory {
4
+ static createEnemy(type: EnemyType, spawnPos: Vector2D, corePos: Vector2D): EnemyEntity;
5
+ static configureEnemy(enemy: EnemyEntity, type: EnemyType, spawnPos: Vector2D, corePos: Vector2D): void;
6
+ }
7
+ //# sourceMappingURL=EntityFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntityFactory.d.ts","sourceRoot":"","sources":["../../src/factory/EntityFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAOzD,qBAAa,aAAa;WACR,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,GAAG,WAAW;WAOhF,cAAc,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,GAAG,IAAI;CAkDjH"}
@@ -0,0 +1,9 @@
1
+ import type { Language, Translations } from "./locales";
2
+ export declare class I18nService {
3
+ private currentLanguage;
4
+ constructor(initialLanguage?: Language);
5
+ setLanguage(language: Language): void;
6
+ getLanguage(): Language;
7
+ translate<K extends keyof Translations>(key: K, params?: Record<string, string | number>): string;
8
+ }
9
+ //# sourceMappingURL=I18nService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"I18nService.d.ts","sourceRoot":"","sources":["../../src/i18n/I18nService.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAIxD,qBAAa,WAAW;IACpB,OAAO,CAAC,eAAe,CAAW;gBAEtB,eAAe,CAAC,EAAE,QAAQ;IAe/B,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IASrC,WAAW,IAAI,QAAQ;IAIvB,SAAS,CAAC,CAAC,SAAS,MAAM,YAAY,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,MAAM;CAW3G"}
@@ -0,0 +1,22 @@
1
+ export type Language = "es" | "en" | "fr" | "de" | "it" | "pt" | "nl" | "sv" | "pl" | "id" | "tr" | "ru" | "ja" | "ko" | "zh";
2
+ export interface Translations {
3
+ title: string;
4
+ startButton: string;
5
+ waveLabel: string;
6
+ scoreLabel: string;
7
+ settingsTitle: string;
8
+ languageLabel: string;
9
+ themeLabel: string;
10
+ hapticsLabel: string;
11
+ hapticsOn: string;
12
+ hapticsOff: string;
13
+ creditsJam: string;
14
+ closeButton: string;
15
+ grabInstruction: string;
16
+ throwInstruction: string;
17
+ comboText: string;
18
+ }
19
+ export declare const LOCALES: Record<Language, Translations>;
20
+ export declare const LANGUAGES: Language[];
21
+ export declare function isLanguage(lang: string): lang is Language;
22
+ //# sourceMappingURL=locales.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locales.d.ts","sourceRoot":"","sources":["../../src/i18n/locales.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GACd,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,CAAC;AAEX,MAAM,WAAW,YAAY;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,YAAY,CAgQlD,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,QAAQ,EAgB/B,CAAC;AAEF,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,QAAQ,CAEzD"}
@@ -0,0 +1,15 @@
1
+ import { GameEngine } from "./core/GameEngine";
2
+ import type { GameEngineOptions } from "./core/GameEngine";
3
+ import { LANGUAGES, isLanguage } from "./i18n/locales";
4
+ import type { Language } from "./i18n/locales";
5
+ import { ThemeManager } from "./theme/ThemeManager";
6
+ import type { Theme } from "./theme/ThemeManager";
7
+ import { BrowserPlatform } from "./platform/browser-platform";
8
+ import type { GamePlatform } from "./platform/platform";
9
+ import "./styles.css";
10
+ export interface AxonSurgeOptions extends GameEngineOptions {
11
+ }
12
+ export declare function createAxonSurge(options: AxonSurgeOptions): GameEngine;
13
+ export { GameEngine, LANGUAGES, isLanguage, ThemeManager, BrowserPlatform };
14
+ export type { Language, Theme, GameEngineOptions, GamePlatform };
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,cAAc,CAAC;AAEtB,MAAM,WAAW,gBAAiB,SAAQ,iBAAiB;CAAG;AAE9D,wBAAgB,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,UAAU,CAErE;AAED,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,CAAC;AAC5E,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { Vector2D } from "../types/game";
2
+ import { EnemyEntity } from "../entities/EnemyEntity";
3
+ export declare class InputManager {
4
+ pointerPosition: Vector2D;
5
+ isPointerDown: boolean;
6
+ grabbedEnemy: EnemyEntity | null;
7
+ dragStart: Vector2D | null;
8
+ private pointerHistory;
9
+ private canvas;
10
+ constructor(canvas: HTMLCanvasElement);
11
+ private updatePointerPos;
12
+ private bindEvents;
13
+ tryGrab(enemies: EnemyEntity[]): EnemyEntity | null;
14
+ releaseAndThrow(): EnemyEntity | null;
15
+ reset(): void;
16
+ }
17
+ //# sourceMappingURL=InputManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InputManager.d.ts","sourceRoot":"","sources":["../../src/input/InputManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAQtD,qBAAa,YAAY;IACd,eAAe,EAAE,QAAQ,CAAkB;IAC3C,aAAa,EAAE,OAAO,CAAS;IAC/B,YAAY,EAAE,WAAW,GAAG,IAAI,CAAQ;IACxC,SAAS,EAAE,QAAQ,GAAG,IAAI,CAAQ;IAEzC,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,MAAM,CAAoB;gBAEtB,MAAM,EAAE,iBAAiB;IAKrC,OAAO,CAAC,gBAAgB;IAsBxB,OAAO,CAAC,UAAU;IAgDX,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,WAAW,GAAG,IAAI;IAoBnD,eAAe,IAAI,WAAW,GAAG,IAAI;IA2DrC,KAAK,IAAI,IAAI;CAMvB"}
@@ -0,0 +1,21 @@
1
+ import type { ToxicPool, GravityVortex, Shockwave, FloatingText, Particle } from "../types/game";
2
+ import { CoreEntity } from "../entities/CoreEntity";
3
+ import { EnemyEntity } from "../entities/EnemyEntity";
4
+ import { JuiceEffects } from "../render/JuiceEffects";
5
+ import { EventBus } from "../core/EventBus";
6
+ import { I18nService } from "../i18n/I18nService";
7
+ export declare class PhysicsEngine {
8
+ private spatialHash;
9
+ private eventBus;
10
+ private i18n;
11
+ private currentThrowKills;
12
+ private currentThrowPos;
13
+ constructor(eventBus: EventBus, i18n: I18nService);
14
+ update(dt: number, core: CoreEntity, enemies: EnemyEntity[], pools: ToxicPool[], vortices: GravityVortex[], shockwaves: Shockwave[], particles: Particle[], floatingTexts: FloatingText[], juice: JuiceEffects, combo: {
15
+ value: number;
16
+ }, score: {
17
+ value: number;
18
+ }, width: number, height: number, onKill?: () => void): void;
19
+ private killEnemyWithChainReaction;
20
+ }
21
+ //# sourceMappingURL=PhysicsEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PhysicsEngine.d.ts","sourceRoot":"","sources":["../../src/physics/PhysicsEngine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAY,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC3G,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGlD,qBAAa,aAAa;IACtB,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,IAAI,CAAc;IAC1B,OAAO,CAAC,iBAAiB,CAAa;IACtC,OAAO,CAAC,eAAe,CAAyB;gBAEpC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW;IAM1C,MAAM,CACT,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,WAAW,EAAE,EACtB,KAAK,EAAE,SAAS,EAAE,EAClB,QAAQ,EAAE,aAAa,EAAE,EACzB,UAAU,EAAE,SAAS,EAAE,EACvB,SAAS,EAAE,QAAQ,EAAE,EACrB,aAAa,EAAE,YAAY,EAAE,EAC7B,KAAK,EAAE,YAAY,EACnB,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,EACxB,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,EACxB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,IAAI,GACpB,IAAI;IA+TP,OAAO,CAAC,0BAA0B;CA+DrC"}
@@ -0,0 +1,15 @@
1
+ import type { Vector2D } from "../types/game";
2
+ export interface SpatialItem {
3
+ id: string;
4
+ position: Vector2D;
5
+ radius: number;
6
+ }
7
+ export declare class SpatialHash<T extends SpatialItem> {
8
+ private cellSize;
9
+ private grid;
10
+ constructor(cellSize?: number);
11
+ clear(): void;
12
+ insert(item: T): void;
13
+ getNearby(position: Vector2D, radius: number): Set<T>;
14
+ }
15
+ //# sourceMappingURL=SpatialHash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpatialHash.d.ts","sourceRoot":"","sources":["../../src/physics/SpatialHash.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,MAAM,WAAW,WAAW;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,WAAW,CAAC,CAAC,SAAS,WAAW;IAC1C,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,IAAI,CAAkC;gBAElC,QAAQ,GAAE,MAAY;IAI3B,KAAK,IAAI,IAAI;IAIb,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI;IAiBrB,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC;CAkB/D"}
@@ -0,0 +1,25 @@
1
+ import type { GamePlatform } from "./platform";
2
+ export declare class BrowserPlatform implements GamePlatform {
3
+ haptics: {
4
+ impact: (style: "light" | "medium" | "heavy") => Promise<void>;
5
+ notification: (type: "success" | "warning" | "error") => Promise<void>;
6
+ selectionChanged: () => Promise<void>;
7
+ };
8
+ share: {
9
+ share: (options: {
10
+ title?: string;
11
+ text?: string;
12
+ url?: string;
13
+ }) => Promise<void>;
14
+ };
15
+ review: {
16
+ requestReview: () => Promise<void>;
17
+ };
18
+ analytics: {
19
+ event: () => Promise<void>;
20
+ };
21
+ crashReporter: {
22
+ record: () => Promise<void>;
23
+ };
24
+ }
25
+ //# sourceMappingURL=browser-platform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-platform.d.ts","sourceRoot":"","sources":["../../src/platform/browser-platform.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,qBAAa,eAAgB,YAAW,YAAY;IACzC,OAAO;wBACY,OAAO,GAAG,QAAQ,GAAG,OAAO;6BAMvB,SAAS,GAAG,SAAS,GAAG,OAAO;;MAW5D;IAEK,KAAK;yBACe;YAAE,KAAK,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,GAAG,CAAC,EAAE,MAAM,CAAA;SAAE;MAOxE;IAEK,MAAM;;MAEX;IAEK,SAAS;;MAEd;IAEK,aAAa;;MAElB;CACL"}
@@ -0,0 +1,29 @@
1
+ export interface HapticsService {
2
+ impact(style: "light" | "medium" | "heavy"): Promise<void>;
3
+ notification(type: "success" | "warning" | "error"): Promise<void>;
4
+ selectionChanged(): Promise<void>;
5
+ }
6
+ export interface ShareService {
7
+ share(options: {
8
+ title?: string;
9
+ text?: string;
10
+ url?: string;
11
+ }): Promise<void>;
12
+ }
13
+ export interface ReviewService {
14
+ requestReview(): Promise<void>;
15
+ }
16
+ export interface AnalyticsService {
17
+ event(name: string, params?: Record<string, unknown>): Promise<void>;
18
+ }
19
+ export interface CrashReporterService {
20
+ record(error: unknown, context?: Record<string, unknown>): Promise<void>;
21
+ }
22
+ export interface GamePlatform {
23
+ haptics: HapticsService;
24
+ share: ShareService;
25
+ review: ReviewService;
26
+ analytics: AnalyticsService;
27
+ crashReporter: CrashReporterService;
28
+ }
29
+ //# sourceMappingURL=platform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../src/platform/platform.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC3B,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,YAAY,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,YAAY;IACzB,KAAK,CAAC,OAAO,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAClF;AAED,MAAM,WAAW,aAAa;IAC1B,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,gBAAgB;IAC7B,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxE;AAED,MAAM,WAAW,oBAAoB;IACjC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5E;AAED,MAAM,WAAW,YAAY;IACzB,OAAO,EAAE,cAAc,CAAC;IACxB,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,EAAE,aAAa,CAAC;IACtB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,aAAa,EAAE,oBAAoB,CAAC;CACvC"}
@@ -0,0 +1,8 @@
1
+ import { EnemyEntity } from "../entities/EnemyEntity";
2
+ export declare class EnemyPool {
3
+ private pool;
4
+ constructor(capacity?: number);
5
+ get(): EnemyEntity;
6
+ resetAll(): void;
7
+ }
8
+ //# sourceMappingURL=EnemyPool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnemyPool.d.ts","sourceRoot":"","sources":["../../src/pool/EnemyPool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,qBAAa,SAAS;IAClB,OAAO,CAAC,IAAI,CAAqB;gBAErB,QAAQ,GAAE,MAAY;IAO3B,GAAG,IAAI,WAAW;IAalB,QAAQ,IAAI,IAAI;CAK1B"}
@@ -0,0 +1,10 @@
1
+ export declare class ObjectPool<T> {
2
+ private pool;
3
+ private factory;
4
+ private resetFn;
5
+ constructor(factory: () => T, resetFn: (item: T) => void, initialCapacity?: number);
6
+ get(): T;
7
+ release(item: T): void;
8
+ clear(): void;
9
+ }
10
+ //# sourceMappingURL=ObjectPool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObjectPool.d.ts","sourceRoot":"","sources":["../../src/pool/ObjectPool.ts"],"names":[],"mappings":"AAAA,qBAAa,UAAU,CAAC,CAAC;IACrB,OAAO,CAAC,IAAI,CAAW;IACvB,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,OAAO,CAAoB;gBAEvB,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,EAAE,eAAe,GAAE,MAAW;IAS/E,GAAG,IAAI,CAAC;IAWR,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI;IAKtB,KAAK,IAAI,IAAI;CAGvB"}
@@ -0,0 +1,24 @@
1
+ import { CoreEntity } from "../entities/CoreEntity";
2
+ import { EnemyEntity } from "../entities/EnemyEntity";
3
+ import type { ToxicPool, GravityVortex, Shockwave, FloatingText, Particle, Vector2D } from "../types/game";
4
+ import { JuiceEffects } from "./JuiceEffects";
5
+ import { ThemeManager } from "../theme/ThemeManager";
6
+ export declare class CanvasRenderer {
7
+ private canvas;
8
+ private ctx;
9
+ private themeManager;
10
+ constructor(canvas: HTMLCanvasElement, themeManager: ThemeManager);
11
+ render(core: CoreEntity, enemies: EnemyEntity[], pools: ToxicPool[], vortices: GravityVortex[], shockwaves: Shockwave[], particles: Particle[], floatingTexts: FloatingText[], juice: JuiceEffects, grabbedEnemy: EnemyEntity | null, mousePos: Vector2D): void;
12
+ private drawToxicPools;
13
+ private drawShockwaves;
14
+ private drawGravityVortices;
15
+ private drawFluidCosmosBackground;
16
+ private drawCoreFilaments;
17
+ private drawOrganicConsciousnessCore;
18
+ private drawPsionicTendril;
19
+ private drawHoverTendril;
20
+ private drawOrganicEnemies;
21
+ private drawParticles;
22
+ private drawFloatingTexts;
23
+ }
24
+ //# sourceMappingURL=CanvasRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CanvasRenderer.d.ts","sourceRoot":"","sources":["../../src/render/CanvasRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC3G,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAqB,MAAM,uBAAuB,CAAC;AAExE,qBAAa,cAAc;IACvB,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,GAAG,CAAkC;IAC7C,OAAO,CAAC,YAAY,CAAe;gBAEvB,MAAM,EAAE,iBAAiB,EAAE,YAAY,EAAE,YAAY;IAM1D,MAAM,CACT,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,WAAW,EAAE,EACtB,KAAK,EAAE,SAAS,EAAE,EAClB,QAAQ,EAAE,aAAa,EAAE,EACzB,UAAU,EAAE,SAAS,EAAE,EACvB,SAAS,EAAE,QAAQ,EAAE,EACrB,aAAa,EAAE,YAAY,EAAE,EAC7B,KAAK,EAAE,YAAY,EACnB,YAAY,EAAE,WAAW,GAAG,IAAI,EAChC,QAAQ,EAAE,QAAQ,GACnB,IAAI;IAmCP,OAAO,CAAC,cAAc;IAqEtB,OAAO,CAAC,cAAc;IAmCtB,OAAO,CAAC,mBAAmB;IAoC3B,OAAO,CAAC,yBAAyB;IAgCjC,OAAO,CAAC,iBAAiB;IA2BzB,OAAO,CAAC,4BAA4B;IAkEpC,OAAO,CAAC,kBAAkB;IAwC1B,OAAO,CAAC,gBAAgB;IAkBxB,OAAO,CAAC,kBAAkB;IAuK1B,OAAO,CAAC,aAAa;IAarB,OAAO,CAAC,iBAAiB;CAc5B"}
@@ -0,0 +1,15 @@
1
+ import type { Vector2D, FloatingText, Particle } from "../types/game";
2
+ export declare class JuiceEffects {
3
+ hitstopTime: number;
4
+ shakeTime: number;
5
+ shakeDuration: number;
6
+ shakeIntensity: number;
7
+ shakeVector: Vector2D;
8
+ flashAlpha: number;
9
+ triggerHitstop(durationSeconds?: number): void;
10
+ triggerFlash(intensity?: number): void;
11
+ triggerScreenShake(direction: Vector2D, comboCount?: number): void;
12
+ update(dt: number, floatingTexts: FloatingText[], particles: Particle[]): void;
13
+ getShakeOffset(): Vector2D;
14
+ }
15
+ //# sourceMappingURL=JuiceEffects.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JuiceEffects.d.ts","sourceRoot":"","sources":["../../src/render/JuiceEffects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEtE,qBAAa,YAAY;IACd,WAAW,EAAE,MAAM,CAAK;IACxB,SAAS,EAAE,MAAM,CAAK;IACtB,aAAa,EAAE,MAAM,CAAQ;IAC7B,cAAc,EAAE,MAAM,CAAK;IAC3B,WAAW,EAAE,QAAQ,CAAkB;IACvC,UAAU,EAAE,MAAM,CAAK;IAEvB,cAAc,CAAC,eAAe,GAAE,MAAa,GAAG,IAAI;IAIpD,YAAY,CAAC,SAAS,GAAE,MAAY,GAAG,IAAI;IAI3C,kBAAkB,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAU,GAAE,MAAU,GAAG,IAAI;IAarE,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI;IAwC9E,cAAc,IAAI,QAAQ;CAQpC"}
@@ -0,0 +1,5 @@
1
+ import type { IImpactStrategy, ImpactContext } from "./ImpactStrategy";
2
+ export declare class FragmentClusterStrategy implements IImpactStrategy {
3
+ execute(ctx: ImpactContext): void;
4
+ }
5
+ //# sourceMappingURL=FragmentClusterStrategy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FragmentClusterStrategy.d.ts","sourceRoot":"","sources":["../../src/strategies/FragmentClusterStrategy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGvE,qBAAa,uBAAwB,YAAW,eAAe;IACpD,OAAO,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI;CA2D3C"}
@@ -0,0 +1,5 @@
1
+ import type { IImpactStrategy, ImpactContext } from "./ImpactStrategy";
2
+ export declare class GravityParasiteStrategy implements IImpactStrategy {
3
+ execute(context: ImpactContext): void;
4
+ }
5
+ //# sourceMappingURL=GravityParasiteStrategy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GravityParasiteStrategy.d.ts","sourceRoot":"","sources":["../../src/strategies/GravityParasiteStrategy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEvE,qBAAa,uBAAwB,YAAW,eAAe;IAC3D,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;CA+BxC"}
@@ -0,0 +1,20 @@
1
+ import type { EnemyEntity } from "../entities/EnemyEntity";
2
+ import type { ToxicPool, GravityVortex, Shockwave, Particle, FloatingText } from "../types/game";
3
+ import type { EventBus } from "../core/EventBus";
4
+ export interface ImpactContext {
5
+ thrownEnemy: EnemyEntity;
6
+ targetEnemy: EnemyEntity;
7
+ allEnemies: EnemyEntity[];
8
+ pools: ToxicPool[];
9
+ vortices: GravityVortex[];
10
+ shockwaves: Shockwave[];
11
+ particles: Particle[];
12
+ floatingTexts: FloatingText[];
13
+ eventBus: EventBus;
14
+ width: number;
15
+ height: number;
16
+ }
17
+ export interface IImpactStrategy {
18
+ execute(ctx: ImpactContext): void;
19
+ }
20
+ //# sourceMappingURL=ImpactStrategy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImpactStrategy.d.ts","sourceRoot":"","sources":["../../src/strategies/ImpactStrategy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACjG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,WAAW,aAAa;IAC1B,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,EAAE,WAAW,EAAE,CAAC;IAC1B,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC5B,OAAO,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI,CAAC;CACrC"}
@@ -0,0 +1,5 @@
1
+ import type { IImpactStrategy, ImpactContext } from "./ImpactStrategy";
2
+ export declare class PiercingCellStrategy implements IImpactStrategy {
3
+ execute(ctx: ImpactContext): void;
4
+ }
5
+ //# sourceMappingURL=PiercingCellStrategy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PiercingCellStrategy.d.ts","sourceRoot":"","sources":["../../src/strategies/PiercingCellStrategy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEvE,qBAAa,oBAAqB,YAAW,eAAe;IACjD,OAAO,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI;CA2C3C"}
@@ -0,0 +1,5 @@
1
+ import type { IImpactStrategy, ImpactContext } from "./ImpactStrategy";
2
+ export declare class ToxicSporeStrategy implements IImpactStrategy {
3
+ execute(ctx: ImpactContext): void;
4
+ }
5
+ //# sourceMappingURL=ToxicSporeStrategy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToxicSporeStrategy.d.ts","sourceRoot":"","sources":["../../src/strategies/ToxicSporeStrategy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEvE,qBAAa,kBAAmB,YAAW,eAAe;IAC/C,OAAO,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI;CAsD3C"}
@@ -0,0 +1 @@
1
+ @import"https://fonts.googleapis.com/css2?family=Orbitron:wght@700;900&family=Outfit:wght@500;700;900&display=swap";:root,[data-theme=bioluminescent]{--color-bg-deep: #03050a;--color-card-bg: #0b1424;--color-axon-cyan: #00f0ff;--color-axon-magenta: #ff00dd;--color-axon-green: #39ff14;--color-axon-gold: #ffd700;--color-axon-purple: #9d4edd;--color-text-main: #ffffff;--color-text-muted: rgba(0, 240, 255, .85);--color-btn-bg: #ff00dd;--color-btn-text: #ffffff;--color-btn-hover-bg: #00f0ff;--color-btn-hover-text: #03050a;--color-toggle-bg: #050b16;--color-toggle-active-bg: #00f0ff;--color-toggle-active-text: #03050a;--color-border-glow: rgba(0, 240, 255, .4);--color-progress-fill: #ff00dd;--halo-glow-primary: rgba(0, 240, 255, .35);--backdrop-glow: rgba(3, 5, 10, .85)}[data-theme=dark]{--color-bg-deep: #08080c;--color-card-bg: #121520;--color-axon-cyan: #00b4d8;--color-axon-magenta: #d800a6;--color-axon-green: #20bf55;--color-axon-gold: #e5a93c;--color-axon-purple: #7209b7;--color-text-main: #f0f0f5;--color-text-muted: rgba(0, 180, 216, .85);--color-btn-bg: #d800a6;--color-btn-text: #ffffff;--color-btn-hover-bg: #00b4d8;--color-btn-hover-text: #08080c;--color-toggle-bg: #0b0d14;--color-toggle-active-bg: #00b4d8;--color-toggle-active-text: #08080c;--color-border-glow: rgba(0, 180, 216, .4);--color-progress-fill: #d800a6;--halo-glow-primary: rgba(0, 180, 216, .3);--backdrop-glow: rgba(8, 8, 12, .85)}[data-theme=light]{--color-bg-deep: #f0f4f8;--color-card-bg: #ffffff;--color-axon-cyan: #0284c7;--color-axon-magenta: #c026d3;--color-axon-green: #16a34a;--color-axon-gold: #d97706;--color-axon-purple: #7c3aed;--color-text-main: #0f172a;--color-text-muted: #0284c7;--color-btn-bg: #0284c7;--color-btn-text: #ffffff;--color-btn-hover-bg: #c026d3;--color-btn-hover-text: #ffffff;--color-toggle-bg: #e2e8f0;--color-toggle-active-bg: #0284c7;--color-toggle-active-text: #ffffff;--color-border-glow: rgba(2, 132, 199, .4);--color-progress-fill: #0284c7;--halo-glow-primary: rgba(2, 132, 199, .25);--backdrop-glow: rgba(240, 244, 248, .85)}.axon-game-root{position:relative;width:100%;height:100%;overflow:hidden;background:var(--color-bg-deep);font-family:Outfit,-apple-system,sans-serif;user-select:none;transition:background .3s ease}.axon-canvas{display:block;width:100%;height:100%}.axon-hud{position:absolute;top:28px;left:36px;right:36px;display:flex;justify-content:space-between;align-items:center;pointer-events:none;z-index:30}.axon-hud-wave{background:transparent;border:none;padding:0;color:var(--color-text-muted);font-family:Orbitron,sans-serif;font-weight:700;font-size:11px;letter-spacing:3px;text-shadow:0 0 10px var(--color-axon-cyan);transition:color .3s ease,text-shadow .3s ease}.axon-hud-wave span{font-size:32px;font-weight:900;color:var(--color-text-main);display:block;margin-top:2px;text-shadow:0 0 14px var(--color-axon-cyan);transition:color .3s ease,text-shadow .3s ease}.axon-hud-level-track{width:68px;height:4px;background:var(--color-toggle-bg);border:1px solid var(--color-border-glow);border-radius:4px;margin-top:6px;overflow:hidden}.axon-hud-level-fill{width:0%;height:100%;background:var(--color-axon-cyan);box-shadow:0 0 10px var(--color-axon-cyan);border-radius:4px;transition:width .2s ease}.axon-hud-combo{position:absolute;left:50%;transform:translate(-50%);top:0;pointer-events:none}.axon-hud-combo span{font-family:Orbitron,sans-serif;font-size:48px;font-weight:900;color:var(--color-axon-magenta);text-shadow:0 0 20px var(--color-axon-magenta),0 0 40px var(--color-axon-cyan);letter-spacing:2px;display:none;animation:axon-combo-pulse .3s cubic-bezier(.25,1,.5,1)}@keyframes axon-combo-pulse{0%{transform:scale(1.4)}to{transform:scale(1)}}.axon-hud-settings-btn{pointer-events:auto;background:var(--color-toggle-bg);border:1.5px solid var(--color-axon-cyan);border-radius:50%;width:44px;height:44px;color:var(--color-axon-cyan);cursor:pointer;backdrop-filter:blur(10px);transition:all .3s ease;box-shadow:0 0 18px var(--halo-glow-primary);display:flex;align-items:center;justify-content:center;z-index:40}.axon-hud-settings-btn:hover{background:var(--color-axon-cyan);color:var(--color-bg-deep);box-shadow:0 0 30px var(--color-axon-cyan);transform:scale(1.1)}.axon-start-menu{position:absolute;inset:0;display:flex;justify-content:center;align-items:center;background:transparent;z-index:20;pointer-events:none}.axon-title-halo{position:relative;text-align:center;padding:40px;display:flex;flex-direction:column;align-items:center;gap:36px;background:transparent;pointer-events:auto}.axon-title{margin:0;font-family:Orbitron,sans-serif;font-size:64px;font-weight:900;color:var(--color-text-main);letter-spacing:8px;text-transform:uppercase;text-shadow:0 0 16px var(--color-axon-cyan);transition:color .3s ease,text-shadow .3s ease}.axon-start-button{background:var(--color-btn-bg);border:2px solid var(--color-axon-cyan);border-radius:50px;color:var(--color-btn-text);font-family:Orbitron,sans-serif;font-size:18px;font-weight:900;padding:18px 52px;cursor:pointer;letter-spacing:3px;transition:all .3s cubic-bezier(.25,1,.5,1);box-shadow:0 0 35px var(--color-btn-bg);text-shadow:0 0 8px rgba(255,255,255,.8);pointer-events:auto}.axon-start-button:hover{transform:scale(1.08) translateY(-2px);background:var(--color-btn-hover-bg);color:var(--color-btn-hover-text);border-color:var(--color-axon-cyan);box-shadow:0 0 60px var(--color-btn-hover-bg)}.axon-onboarding{position:absolute;bottom:80px;left:50%;transform:translate(-50%);z-index:15;pointer-events:none}.axon-onboarding-hint{background:var(--color-card-bg);border:1.5px solid var(--color-axon-cyan);border-radius:30px;padding:14px 28px;color:var(--color-text-main);font-family:Orbitron,sans-serif;font-size:13px;font-weight:700;letter-spacing:2px;backdrop-filter:blur(10px);box-shadow:0 0 30px var(--color-axon-cyan);animation:axon-onboarding-float 2s ease-in-out infinite alternate;transition:all .3s ease}@keyframes axon-onboarding-float{0%{transform:translateY(0)}to{transform:translateY(-8px)}}.axon-settings-modal{border:none;background:transparent;padding:0;margin:auto;z-index:100}.axon-settings-modal::backdrop{background:var(--backdrop-glow);backdrop-filter:blur(12px);transition:background .3s ease}.axon-settings-card{background:var(--color-card-bg);border:1.5px solid var(--color-axon-cyan);border-radius:28px;padding:36px 44px;color:var(--color-text-main);min-width:380px;max-width:440px;box-shadow:0 0 50px var(--halo-glow-primary);display:flex;flex-direction:column;align-items:center;transition:all .3s ease}.axon-settings-card h2{font-family:Orbitron,sans-serif;color:var(--color-axon-cyan);margin-top:0;margin-bottom:28px;font-size:24px;text-shadow:0 0 12px var(--color-axon-cyan);transition:color .3s ease,text-shadow .3s ease}.axon-setting-row{display:flex;justify-content:space-between;align-items:center;width:100%;margin-bottom:22px;font-weight:700;font-size:12px;letter-spacing:1px;color:var(--color-text-main);transition:color .3s ease}.axon-select-wrapper{position:relative;display:inline-block}.axon-select{appearance:none;-webkit-appearance:none;background:var(--color-toggle-bg);border:1px solid var(--color-border-glow);border-radius:20px;padding:8px 36px 8px 16px;color:var(--color-axon-cyan);font-family:Orbitron,sans-serif;font-size:11px;font-weight:900;cursor:pointer;outline:none;letter-spacing:1px;box-shadow:0 0 10px var(--halo-glow-primary);transition:all .2s ease}.axon-select:hover,.axon-select:focus{border-color:var(--color-axon-cyan);box-shadow:0 0 18px var(--color-axon-cyan)}.axon-select option{background:var(--color-card-bg);color:var(--color-text-main);font-family:Outfit,sans-serif;font-size:13px;padding:8px}.axon-select-arrow{position:absolute;right:14px;top:50%;transform:translateY(-50%);pointer-events:none;color:var(--color-axon-cyan);font-size:9px}.axon-toggle-group{display:flex;gap:6px;background:var(--color-toggle-bg);border:1px solid var(--color-border-glow);border-radius:20px;padding:4px;transition:all .3s ease}.axon-toggle-btn{background:transparent;border:none;border-radius:14px;color:var(--color-text-muted);font-family:Orbitron,sans-serif;font-size:10px;font-weight:900;padding:7px 16px;cursor:pointer;transition:all .2s ease;white-space:nowrap}.axon-toggle-btn.active{background:var(--color-toggle-active-bg);color:var(--color-toggle-active-text);box-shadow:0 0 14px var(--color-toggle-active-bg)}.axon-settings-credits{margin:18px 0 24px;font-size:11px;color:var(--color-text-muted);text-align:center;letter-spacing:1px;opacity:.8;transition:color .3s ease}
@@ -0,0 +1,27 @@
1
+ export type Theme = "bioluminescent" | "dark" | "light";
2
+ export interface ThemePalette {
3
+ bgInner: string;
4
+ bgMid: string;
5
+ bgOuter: string;
6
+ nebulaCyan: string;
7
+ nebulaMagenta: string;
8
+ piercerColor: string;
9
+ sporeColor: string;
10
+ clusterColor: string;
11
+ parasiteColor: string;
12
+ microColor: string;
13
+ corePrimary: string;
14
+ coreGlow: string;
15
+ tendrilMagenta: string;
16
+ tendrilCyan: string;
17
+ }
18
+ export declare const PALETTES: Record<Theme, ThemePalette>;
19
+ export declare class ThemeManager {
20
+ private currentTheme;
21
+ constructor(initialTheme?: Theme);
22
+ setTheme(theme: Theme): void;
23
+ getTheme(): Theme;
24
+ getPalette(): ThemePalette;
25
+ private applyThemeToDOM;
26
+ }
27
+ //# sourceMappingURL=ThemeManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThemeManager.d.ts","sourceRoot":"","sources":["../../src/theme/ThemeManager.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,KAAK,GAAG,gBAAgB,GAAG,MAAM,GAAG,OAAO,CAAC;AAExD,MAAM,WAAW,YAAY;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE,YAAY,CAiDhD,CAAC;AAIF,qBAAa,YAAY;IACrB,OAAO,CAAC,YAAY,CAA2B;gBAEnC,YAAY,CAAC,EAAE,KAAK;IAczB,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAU5B,QAAQ,IAAI,KAAK;IAIjB,UAAU,IAAI,YAAY;IAIjC,OAAO,CAAC,eAAe;CAG1B"}