/**
 * @fileoverview Utility module for useGameTour.js
 * 
 * @module hooks.useGameTour
 */

import { useTour } from "./useTour";

/**
 * Hook wrapper de useTour específico para tours de jogos.
 * Abstrai gerenciamento de chave localStorage usando nome do jogo + sufixo padrão.
 * Simplifica integração de tours com games mantendo histórico por jogo.
 *
 * @hook useGameTour
 * @param {string} gameName - Nome único do jogo (ex: 'semaforo', 'turtle')
 * @param {Array<Object>} steps - Array de passos do tour Shepherd
 * @param {Object} [options={}] - Opções customizadas para Shepherd (merged com defaults)
 * @param {number} [startDelay=1500] - Delay (ms) antes de auto-iniciar tour
 * 
 * @returns {Object} Methodos do tour:
 *   - startTour() - Inicia o tour manualmente
 *   - completeTour() - Marca como concluído e salva em localStorage
 *   - resetTour() - Reseta o tour (remove localStorage, permite replay)
 *
 * @example
 * const { startTour, completeTour } = useGameTour(
 *   'semaforo',
 *   semaphoreSteps,
 *   { theme: 'dark' },
 *   1000
 * );
 * // Salva em localStorage como: 'semaforo-tour-completed'
 */
export const useGameTour = (
  gameName,
  steps,
  options = {},
  startDelay = 1500,
) => {
  const storageKey = `${gameName}-tour-completed`;

  const { startTour, completeTour, resetTour } = useTour({
    steps,
    options,
    storageKey,
    autoStart: true,
    startDelay,
  });
  return {
    startTour,
    completeTour,
    resetTour,
  };
};
