/**
 * Retro Arcade - HTML5 Slot Game
 * Classic 3-reel game with nostalgic 80s arcade theme
 */

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

export const retroArcadeConfig: HTML5GameConfig = {
  id: 'retro-arcade',
  name: 'Retro Arcade',
  description: 'Classic 3-reel game with 80s arcade theme',
  thumbnail: '🕹️',
  rtp: 94.2,
  volatility: 'low',
  minBet: 0.1,
  maxBet: 100,
  reels: 3,
  rows: 3,
  paylines: 9,
  symbols: [
    {
      id: 'cherry',
      name: 'Cherry',
      emoji: '🍒',
      payouts: { 3: 20, 2: 5 },
    },
    {
      id: 'lemon',
      name: 'Lemon',
      emoji: '🍋',
      payouts: { 3: 30, 2: 8 },
    },
    {
      id: 'orange',
      name: 'Orange',
      emoji: '🍊',
      payouts: { 3: 40, 2: 10 },
    },
    {
      id: 'bell',
      name: 'Bell',
      emoji: '🔔',
      payouts: { 3: 75, 2: 25 },
    },
    {
      id: 'bar',
      name: 'Bar',
      emoji: '📊',
      payouts: { 3: 100, 2: 40 },
    },
    {
      id: 'seven',
      name: 'Lucky Seven',
      emoji: '7️⃣',
      payouts: { 3: 500, 2: 100 },
      isWild: true,
    },
  ],
  features: [
    {
      name: 'Wild Seven',
      description: 'Lucky Seven substitutes for any symbol',
      triggerCondition: 'Random',
    },
    {
      name: 'Bonus Multiplier',
      description: 'Get 3 Sevens for 10x multiplier',
      triggerCondition: 'All reels match',
    },
  ],
};

/**
 * Create Retro Arcade game instance
 */
export function createRetroArcadeGame() {
  return createHTML5Game(retroArcadeConfig);
}

/**
 * Retro Arcade specific features
 */
export const retroArcadeFeatures = {
  wildSeven: {
    enabled: true,
    symbol: 'seven',
    multiplier: 10,
  },
  bonusMultiplier: {
    enabled: true,
    triggerCount: 3,
    multiplier: 10,
  },
  jackpot: {
    enabled: true,
    baseAmount: 1000,
  },
};

/**
 * Calculate Retro Arcade win with bonus multiplier
 */
export function calculateRetroArcadeWin(
  baseWin: number,
  hasWildSeven: boolean,
  hasBonusMultiplier: boolean
): {
  baseWin: number;
  wildMultiplier: number;
  bonusMultiplier: number;
  totalWin: number;
} {
  const wildMultiplier = hasWildSeven ? 2 : 1;
  const bonusMultiplier = hasBonusMultiplier ? 10 : 1;
  const totalWin = baseWin * wildMultiplier * bonusMultiplier;

  return {
    baseWin,
    wildMultiplier,
    bonusMultiplier,
    totalWin,
  };
}
