"use client";

import React, { useState, useEffect } from 'react';
import Fireworks from './Fireworks'; // Usar a versão aprimorada do componente Fireworks
import Snowflakes from './effects/Snowflakes';
import GhostEffect from './effects/GhostEffect';
import Butterflies from './effects/Butterflies';
import EasterEggs from './effects/EasterEggs';
import SummerHat from './effects/SummerHat';

type Season = 'newYear' | 'spring' | 'easter' | 'summer' | 'halloween' | 'winter' | null;

// Determine current season based on date
const getCurrentSeason = (): Season => {
  const now = new Date();
  const month = now.getMonth(); // 0-11 (Jan-Dec)
  const date = now.getDate();

  // New Year (Dec 31 - Jan 1)
  if ((month === 11 && date >= 31) || (month === 0 && date <= 1))
    return 'newYear';

  // Spring (March 20 - June 20)
  if ((month === 2 && date >= 20) || month === 3 || month === 4 || (month === 5 && date <= 20))
    return 'spring';

  // Easter (variable date - let's say 2 weeks around it)
  // This is a simplification, as Easter's date changes each year
  // For 2025, Easter is April 20
  if (month === 3 && date >= 13 && date <= 27)
    return 'easter';

  // Summer (June 21 - September 22)
  if ((month === 5 && date >= 21) || month === 6 || month === 7 || (month === 8 && date <= 22))
    return 'summer';

  // Halloween (Oct 25 - Oct 31)
  if (month === 9 && date >= 25)
    return 'halloween';

  // Winter (December 21 - March 19)
  if ((month === 11 && date >= 21) || month === 0 || month === 1 || (month === 2 && date <= 19))
    return 'winter';

  // Default - no special effect
  return null;
};

interface SeasonEffectsProps {
  forceSeason?: Season;  // Para testes e demonstração
}

const SeasonEffects: React.FC<SeasonEffectsProps> = ({ forceSeason = null }) => {
  const [currentSeason, setCurrentSeason] = useState<Season>(null);

  useEffect(() => {
    if (forceSeason) {
      setCurrentSeason(forceSeason);
    } else {
      setCurrentSeason(getCurrentSeason());
    }
  }, [forceSeason]);

  return (
    <>
      {currentSeason === 'newYear' && <Fireworks isNewYear={true} />}
      {currentSeason === 'winter' && <Snowflakes />}
      {currentSeason === 'halloween' && <GhostEffect />}
      {currentSeason === 'spring' && <Butterflies />}
      {currentSeason === 'easter' && <EasterEggs />}
      {currentSeason === 'summer' && <SummerHat />}
    </>
  );
};

export default SeasonEffects;
