/**
 * Game Variants Service
 * Manages special game variants for seasonal events
 */

export interface GameVariant {
  id: string;
  baseGameId: string;
  variantName: string;
  eventId: string;
  theme: string;
  rtp: number;
  volatility: 'low' | 'medium' | 'high';
  bonusMultiplier: number;
  specialFeatures: string[];
  isActive: boolean;
}

// Game variants for seasonal events
const GAME_VARIANTS: Record<string, GameVariant> = {
  // Halloween variants
  'haunted-mansion': {
    id: 'haunted-mansion',
    baseGameId: 'mansion-slots',
    variantName: 'Haunted Mansion',
    eventId: 'halloween_2026',
    theme: 'halloween',
    rtp: 96.5,
    volatility: 'high',
    bonusMultiplier: 2.0,
    specialFeatures: ['ghost-scatter', 'phantom-multiplier', 'haunted-bonus'],
    isActive: false,
  },
  'pumpkin-patch': {
    id: 'pumpkin-patch',
    baseGameId: 'harvest-slots',
    variantName: 'Pumpkin Patch',
    eventId: 'halloween_2026',
    theme: 'halloween',
    rtp: 95.8,
    volatility: 'medium',
    bonusMultiplier: 2.0,
    specialFeatures: ['pumpkin-wild', 'scarecrow-bonus', 'harvest-multiplier'],
    isActive: false,
  },
  'ghost-fortune': {
    id: 'ghost-fortune',
    baseGameId: 'fortune-slots',
    variantName: 'Ghost Fortune',
    eventId: 'halloween_2026',
    theme: 'halloween',
    rtp: 96.2,
    volatility: 'medium',
    bonusMultiplier: 2.0,
    specialFeatures: ['ghost-wild', 'fortune-spin', 'spooky-multiplier'],
    isActive: false,
  },

  // Christmas variants
  'santa-sleigh': {
    id: 'santa-sleigh',
    baseGameId: 'sleigh-slots',
    variantName: "Santa's Sleigh",
    eventId: 'christmas_2026',
    theme: 'christmas',
    rtp: 97.0,
    volatility: 'high',
    bonusMultiplier: 3.0,
    specialFeatures: ['santa-wild', 'reindeer-scatter', 'gift-bonus'],
    isActive: false,
  },
  'christmas-tree': {
    id: 'christmas-tree',
    baseGameId: 'tree-slots',
    variantName: 'Christmas Tree',
    eventId: 'christmas_2026',
    theme: 'christmas',
    rtp: 96.5,
    volatility: 'medium',
    bonusMultiplier: 3.0,
    specialFeatures: ['ornament-wild', 'light-scatter', 'festive-multiplier'],
    isActive: false,
  },
  'gift-bonanza': {
    id: 'gift-bonanza',
    baseGameId: 'gift-slots',
    variantName: 'Gift Bonanza',
    eventId: 'christmas_2026',
    theme: 'christmas',
    rtp: 96.8,
    volatility: 'medium',
    bonusMultiplier: 3.0,
    specialFeatures: ['gift-wild', 'ribbon-scatter', 'bonus-multiplier'],
    isActive: false,
  },

  // New Year variants
  'lucky-7': {
    id: 'lucky-7',
    baseGameId: 'sevens-slots',
    variantName: 'Lucky 7',
    eventId: 'new_year_2027',
    theme: 'new_year',
    rtp: 97.2,
    volatility: 'high',
    bonusMultiplier: 2.5,
    specialFeatures: ['lucky-wild', 'firework-scatter', 'jackpot-multiplier'],
    isActive: false,
  },
  'fortune-wheel': {
    id: 'fortune-wheel',
    baseGameId: 'wheel-slots',
    variantName: 'Fortune Wheel',
    eventId: 'new_year_2027',
    theme: 'new_year',
    rtp: 96.5,
    volatility: 'medium',
    bonusMultiplier: 2.5,
    specialFeatures: ['wheel-wild', 'coin-scatter', 'spin-bonus'],
    isActive: false,
  },
  'golden-coins': {
    id: 'golden-coins',
    baseGameId: 'coins-slots',
    variantName: 'Golden Coins',
    eventId: 'new_year_2027',
    theme: 'new_year',
    rtp: 96.8,
    volatility: 'medium',
    bonusMultiplier: 2.5,
    specialFeatures: ['gold-wild', 'treasure-scatter', 'wealth-multiplier'],
    isActive: false,
  },

  // Summer variants
  'beach-party': {
    id: 'beach-party',
    baseGameId: 'beach-slots',
    variantName: 'Beach Party',
    eventId: 'summer_2026',
    theme: 'summer',
    rtp: 96.0,
    volatility: 'medium',
    bonusMultiplier: 1.5,
    specialFeatures: ['surfboard-wild', 'wave-scatter', 'summer-bonus'],
    isActive: false,
  },
  'surfing-safari': {
    id: 'surfing-safari',
    baseGameId: 'safari-slots',
    variantName: 'Surfing Safari',
    eventId: 'summer_2026',
    theme: 'summer',
    rtp: 95.8,
    volatility: 'medium',
    bonusMultiplier: 1.5,
    specialFeatures: ['surfer-wild', 'palm-scatter', 'adventure-bonus'],
    isActive: false,
  },
  'tropical-paradise': {
    id: 'tropical-paradise',
    baseGameId: 'tropical-slots',
    variantName: 'Tropical Paradise',
    eventId: 'summer_2026',
    theme: 'summer',
    rtp: 96.2,
    volatility: 'low',
    bonusMultiplier: 1.5,
    specialFeatures: ['parrot-wild', 'flower-scatter', 'island-multiplier'],
    isActive: false,
  },
};

export function getGameVariant(variantId: string): GameVariant | undefined {
  return GAME_VARIANTS[variantId];
}

export function getVariantsByEvent(eventId: string): GameVariant[] {
  return Object.values(GAME_VARIANTS).filter((variant) => variant.eventId === eventId);
}

export function getActiveVariants(): GameVariant[] {
  return Object.values(GAME_VARIANTS).filter((variant) => variant.isActive);
}

export function getVariantBonusMultiplier(variantId: string): number {
  const variant = GAME_VARIANTS[variantId];
  return variant ? variant.bonusMultiplier : 1.0;
}

export function isGameVariantActive(variantId: string, eventId: string): boolean {
  const variant = GAME_VARIANTS[variantId];
  if (!variant) return false;
  
  // Check if variant belongs to event and event is active
  return variant.eventId === eventId && variant.isActive;
}

export function getVariantFeatures(variantId: string): string[] {
  const variant = GAME_VARIANTS[variantId];
  return variant ? variant.specialFeatures : [];
}

export function getVariantRTP(variantId: string): number {
  const variant = GAME_VARIANTS[variantId];
  return variant ? variant.rtp : 96.0;
}
