// Boomermania - Sistema de Persistencia (localStorage)

// Guardar partida
function saveGame() {
    if (!gameState) return false;

    try {
        const saveData = {
            version: SAVE_VERSION,
            timestamp: Date.now(),
            state: gameState
        };

        localStorage.setItem(SAVE_KEY, JSON.stringify(saveData));
        showSaveIndicator();
        return true;
    } catch (e) {
        console.error('Error guardando partida:', e);
        return false;
    }
}

// Cargar partida
function loadGame() {
    try {
        const savedData = localStorage.getItem(SAVE_KEY);
        if (!savedData) return false;

        const data = JSON.parse(savedData);

        // Verificar versión
        if (data.version !== SAVE_VERSION) {
            console.warn('Versión de guardado diferente, iniciando nueva partida');
            return false;
        }

        // Copia profunda para evitar referencias compartidas
        gameState = JSON.parse(JSON.stringify(data.state));

        // Verificar integridad mínima
        if (!gameState.playerResources || !gameState.recursosGlobales) {
            console.warn('Datos de guardado corruptos');
            return false;
        }

        return true;
    } catch (e) {
        console.error('Error cargando partida:', e);
        return false;
    }
}

// Verificar si hay partida guardada
function hasSavedGame() {
    try {
        const savedData = localStorage.getItem(SAVE_KEY);
        if (!savedData) return false;

        const data = JSON.parse(savedData);
        return data.version === SAVE_VERSION && data.state && !data.state.juegoTerminado;
    } catch (e) {
        return false;
    }
}

// Borrar partida guardada
function deleteSave() {
    try {
        localStorage.removeItem(SAVE_KEY);
        return true;
    } catch (e) {
        console.error('Error borrando partida:', e);
        return false;
    }
}

// Mostrar indicador de guardado
function showSaveIndicator() {
    const indicator = document.getElementById('save-indicator');
    if (!indicator) return;

    indicator.classList.add('show');
    setTimeout(() => {
        indicator.classList.remove('show');
    }, 2000);
    
    // Anunciar para screen readers
    if (typeof announceToSR === 'function') {
        announceToSR('Partida guardada automáticamente');
    }
}

// Auto-guardar periódicamente
let autoSaveInterval = null;

function startAutoSave() {
    if (autoSaveInterval) clearInterval(autoSaveInterval);

    autoSaveInterval = setInterval(() => {
        if (gameState && gameState.juegoIniciado && !gameState.juegoTerminado) {
            saveGame();
        }
    }, AUTO_SAVE_INTERVAL);
}

function stopAutoSave() {
    if (autoSaveInterval) {
        clearInterval(autoSaveInterval);
        autoSaveInterval = null;
    }
}

// Guardar al cerrar/cambiar pestaña
function setupVisibilityAutoSave() {
    document.addEventListener('visibilitychange', () => {
        if (document.hidden && gameState && gameState.juegoIniciado && !gameState.juegoTerminado) {
            saveGame();
        }
    });

    window.addEventListener('beforeunload', () => {
        if (gameState && gameState.juegoIniciado && !gameState.juegoTerminado) {
            saveGame();
        }
    });
}

// Obtener info del guardado
function getSaveInfo() {
    try {
        const savedData = localStorage.getItem(SAVE_KEY);
        if (!savedData) return null;

        const data = JSON.parse(savedData);
        return {
            timestamp: data.timestamp,
            decada: DECADAS[data.state.decadaIndex]?.year || 1975,
            puntuacion: data.state.puntuacionTotal || 0
        };
    } catch (e) {
        return null;
    }
}
