@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.
- package/LICENSE +1 -0
- package/README.md +24 -0
- package/dist/axon-surge.js +1872 -0
- package/dist/core/EventBus.d.ts +10 -0
- package/dist/core/EventBus.d.ts.map +1 -0
- package/dist/core/GameEngine.d.ts +52 -0
- package/dist/core/GameEngine.d.ts.map +1 -0
- package/dist/core/GameLoop.d.ts +12 -0
- package/dist/core/GameLoop.d.ts.map +1 -0
- package/dist/director/SpawnerPatterns.d.ts +13 -0
- package/dist/director/SpawnerPatterns.d.ts.map +1 -0
- package/dist/director/WaveDirector.d.ts +17 -0
- package/dist/director/WaveDirector.d.ts.map +1 -0
- package/dist/entities/CoreEntity.d.ts +15 -0
- package/dist/entities/CoreEntity.d.ts.map +1 -0
- package/dist/entities/EnemyEntity.d.ts +30 -0
- package/dist/entities/EnemyEntity.d.ts.map +1 -0
- package/dist/factory/EntityFactory.d.ts +7 -0
- package/dist/factory/EntityFactory.d.ts.map +1 -0
- package/dist/i18n/I18nService.d.ts +9 -0
- package/dist/i18n/I18nService.d.ts.map +1 -0
- package/dist/i18n/locales.d.ts +22 -0
- package/dist/i18n/locales.d.ts.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/input/InputManager.d.ts +17 -0
- package/dist/input/InputManager.d.ts.map +1 -0
- package/dist/physics/PhysicsEngine.d.ts +21 -0
- package/dist/physics/PhysicsEngine.d.ts.map +1 -0
- package/dist/physics/SpatialHash.d.ts +15 -0
- package/dist/physics/SpatialHash.d.ts.map +1 -0
- package/dist/platform/browser-platform.d.ts +25 -0
- package/dist/platform/browser-platform.d.ts.map +1 -0
- package/dist/platform/platform.d.ts +29 -0
- package/dist/platform/platform.d.ts.map +1 -0
- package/dist/pool/EnemyPool.d.ts +8 -0
- package/dist/pool/EnemyPool.d.ts.map +1 -0
- package/dist/pool/ObjectPool.d.ts +10 -0
- package/dist/pool/ObjectPool.d.ts.map +1 -0
- package/dist/render/CanvasRenderer.d.ts +24 -0
- package/dist/render/CanvasRenderer.d.ts.map +1 -0
- package/dist/render/JuiceEffects.d.ts +15 -0
- package/dist/render/JuiceEffects.d.ts.map +1 -0
- package/dist/strategies/FragmentClusterStrategy.d.ts +5 -0
- package/dist/strategies/FragmentClusterStrategy.d.ts.map +1 -0
- package/dist/strategies/GravityParasiteStrategy.d.ts +5 -0
- package/dist/strategies/GravityParasiteStrategy.d.ts.map +1 -0
- package/dist/strategies/ImpactStrategy.d.ts +20 -0
- package/dist/strategies/ImpactStrategy.d.ts.map +1 -0
- package/dist/strategies/PiercingCellStrategy.d.ts +5 -0
- package/dist/strategies/PiercingCellStrategy.d.ts.map +1 -0
- package/dist/strategies/ToxicSporeStrategy.d.ts +5 -0
- package/dist/strategies/ToxicSporeStrategy.d.ts.map +1 -0
- package/dist/styles.css +1 -0
- package/dist/theme/ThemeManager.d.ts +27 -0
- package/dist/theme/ThemeManager.d.ts.map +1 -0
- package/dist/types/game.d.ts +72 -0
- package/dist/types/game.d.ts.map +1 -0
- package/dist/ui/HUDOverlay.d.ts +15 -0
- package/dist/ui/HUDOverlay.d.ts.map +1 -0
- package/dist/ui/OnboardingTutorial.d.ts +14 -0
- package/dist/ui/OnboardingTutorial.d.ts.map +1 -0
- package/dist/ui/ProgressBar.d.ts +14 -0
- package/dist/ui/ProgressBar.d.ts.map +1 -0
- package/dist/ui/SettingsModal.d.ts +20 -0
- package/dist/ui/SettingsModal.d.ts.map +1 -0
- package/dist/ui/StartMenu.d.ts +11 -0
- package/dist/ui/StartMenu.d.ts.map +1 -0
- 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"}
|
package/dist/index.d.ts
ADDED
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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"}
|
package/dist/styles.css
ADDED
|
@@ -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"}
|