/** * Easter Egg System * * Adds delightful ambient details that reward attentive viewers: * - Owl silhouettes perched in trees * - Bat flocks that occasionally fly across * - Moon glow effects * - Shooting stars * - Glowing eyes in darkness */ export type EasterEggType = "owl" | "bat" | "moon" | "shootingStar" | "glowingEyes"; export interface OwlSilhouette { id: string; x: number; y: number; scale: number; facing: "left" | "right"; blinking: boolean; blinkTimer: number; headTilt: number; silhouettePoints: Array<{ x: number; y: number; }>; } export interface Bat { id: string; x: number; y: number; velocityX: number; velocityY: number; wingPhase: number; scale: number; } export interface BatFlock { id: string; bats: Bat[]; active: boolean; startTime: number; } export interface MoonGlow { x: number; y: number; radius: number; glowRadius: number; phase: number; visible: boolean; } export interface ShootingStar { id: string; startX: number; startY: number; endX: number; endY: number; progress: number; speed: number; tailLength: number; active: boolean; } export interface GlowingEyes { id: string; x: number; y: number; separation: number; blinkPhase: number; intensity: number; color: string; } export interface EasterEggConfig { owlEnabled: boolean; maxOwls: number; owlBlinkInterval: number; batEnabled: boolean; batFlockSize: number; batSpawnChance: number; batSpeed: number; moonEnabled: boolean; moonPhase: number; moonX: number; moonY: number; shootingStarsEnabled: boolean; shootingStarChance: number; glowingEyesEnabled: boolean; maxGlowingEyes: number; } export declare class EasterEggSystem { private config; private noise; private width; private height; private owls; private batFlocks; private moon; private shootingStars; private glowingEyes; private idCounter; private time; constructor(width: number, height: number, config?: Partial, seed?: number); private initializeStaticElements; private createMoon; private createGlowingEyes; /** * Add an owl at a specific position (called by composer when placing trees) */ addOwl(x: number, y: number, scale?: number): OwlSilhouette | null; private generateOwlSilhouette; /** * Update all easter eggs * @param deltaTime Seconds since last update */ update(deltaTime: number): void; private updateOwls; private updateBatFlocks; private updateShootingStars; private updateGlowingEyes; private checkForNewEvents; private spawnBatFlock; private spawnShootingStar; getOwls(): OwlSilhouette[]; getBatFlocks(): BatFlock[]; getMoon(): MoonGlow; getShootingStars(): ShootingStar[]; getGlowingEyes(): GlowingEyes[]; /** * Get bat wing points for current wing phase */ getBatWingPoints(bat: Bat): { body: Array<{ x: number; y: number; }>; leftWing: Array<{ x: number; y: number; }>; rightWing: Array<{ x: number; y: number; }>; }; /** * Resize system */ resize(width: number, height: number): void; setConfig(config: Partial): void; getConfig(): EasterEggConfig; getStats(): { owls: number; activeBatFlocks: number; totalBats: number; activeShootingStars: number; glowingEyes: number; }; } //# sourceMappingURL=EasterEggSystem.d.ts.map