/**
 * Cosmic Quest - HTML5 Slot Game
 * Megaways mechanics with expanding symbols and dynamic paylines
 */

import { HTML5GameConfig, createHTML5Game } from '../html5GameTemplate.ts';

export const cosmicQuestConfig: HTML5GameConfig = {
  id: 'cosmic-quest',
  name: 'Cosmic Quest',
  description: 'Megaways game with expanding symbols and 117,649 ways to win',
  thumbnail: '🚀',
  rtp: 96.5,
  volatility: 'high',
  minBet: 0.1,
  maxBet: 100,
  reels: 6,
  rows: 7,
  paylines: 117649, // Megaways
  symbols: [
    {
      id: 'alien',
      name: 'Alien',
      emoji: '👽',
      payouts: { 6: 50, 5: 25, 4: 10, 3: 5 },
    },
    {
      id: 'ufo',
      name: 'UFO',
      emoji: '🛸',
      payouts: { 6: 100, 5: 50, 4: 20, 3: 8 },
    },
    {
      id: 'planet',
      name: 'Planet',
      emoji: '🪐',
      payouts: { 6: 200, 5: 100, 4: 40, 3: 15 },
    },
    {
      id: 'star',
      name: 'Star',
      emoji: '⭐',
      payouts: { 6: 300, 5: 150, 4: 60, 3: 25 },
    },
    {
      id: 'galaxy',
      name: 'Galaxy',
      emoji: '🌌',
      payouts: { 6: 500, 5: 250, 4: 100, 3: 40 },
      isWild: true,
    },
    {
      id: 'cosmic-gem',
      name: 'Cosmic Gem',
      emoji: '💫',
      payouts: { 6: 2000, 5: 1000, 4: 400, 3: 150 },
      isScatter: true,
    },
  ],
  features: [
    {
      name: 'Megaways',
      description: '117,649 ways to win with dynamic reel heights',
      triggerCondition: 'Every spin',
    },
    {
      name: 'Expanding Wild',
      description: 'Galaxy symbol expands to fill entire reel',
      triggerCondition: 'Random',
    },
    {
      name: 'Cascading Wins',
      description: 'Winning symbols disappear for new ones',
      triggerCondition: 'After any win',
    },
    {
      name: 'Cosmic Jackpot',
      description: 'Get 6+ Cosmic Gems for massive jackpot',
      triggerCondition: 'Scatter symbol',
    },
  ],
  bonusRounds: [
    {
      id: 'cosmic-free-spins',
      name: 'Cosmic Free Spins',
      type: 'free_spins',
      triggerSymbol: 'cosmic-gem',
      triggerCount: 4,
      reward: 20,
    },
  ],
};

/**
 * Create Cosmic Quest game instance
 */
export function createCosmicQuestGame() {
  return createHTML5Game(cosmicQuestConfig);
}

/**
 * Cosmic Quest specific features
 */
export const cosmicQuestFeatures = {
  megaways: {
    enabled: true,
    baseWays: 117649,
    maxWays: 117649,
  },
  expandingWild: {
    enabled: true,
    symbol: 'galaxy',
    expandable: true,
  },
  cascadingWins: {
    enabled: true,
    maxCascades: 15,
    multiplierIncrease: 1,
  },
  cosmicJackpot: {
    enabled: true,
    triggerCount: 6,
    baseAmount: 10000,
    maxAmount: 100000,
  },
};

/**
 * Calculate Cosmic Quest win with megaways multiplier
 */
export function calculateCosmicQuestWin(
  baseWin: number,
  cascadeCount: number,
  isJackpot: boolean
): {
  baseWin: number;
  cascadeMultiplier: number;
  jackpotMultiplier: number;
  totalWin: number;
} {
  const cascadeMultiplier = 1 + cascadeCount * cosmicQuestFeatures.cascadingWins.multiplierIncrease;
  const jackpotMultiplier = isJackpot ? 10 : 1;
  const totalWin = baseWin * cascadeMultiplier * jackpotMultiplier;

  return {
    baseWin,
    cascadeMultiplier,
    jackpotMultiplier,
    totalWin,
  };
}
