export type EnemyType = 'patroller' | 'jumper' | 'flyer' | 'chaser' | 'sprinter';

export type EnemyState = 'active' | 'stunned' | 'recovering';

export interface EnemyConfig {
  type: EnemyType;
  x: number;
  y: number;
  patrolDistance?: number;
  direction?: 1 | -1;
}

export type HazardType = 'spikes' | 'fallingPlatform' | 'saw' | 'turret' | 'laser';

export interface HazardConfig {
  type: HazardType;
  x: number;
  y: number;
  width?: number;
  height?: number;
  path?: { x: number; y: number }[];
  interval?: number;
}

export interface CoinConfig {
  x: number;
  y: number;
}

export interface PlayerStats {
  speed: number;
  jumpVelocity: number;
  maxHp: number;
  maxProjectiles: number;
  projectileCooldown: number;
  projectileRange: number;
  stunDuration: number;
  hasDoubleJump: boolean;
  hasDash: boolean;
  dashCooldown: number;
  hitboxScale: number;
}

export const DEFAULT_PLAYER_STATS: PlayerStats = {
  speed: 300,
  jumpVelocity: -520,
  maxHp: 1,
  maxProjectiles: 3,
  projectileCooldown: 3000,
  projectileRange: 400,
  stunDuration: 3000,
  hasDoubleJump: false,
  hasDash: false,
  dashCooldown: 2000,
  hitboxScale: 1,
};
