// Resistiré - Sistema de Persistencia (localStorage)

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;
    }
}

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

        const data = JSON.parse(savedData);

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

        gameState = JSON.parse(JSON.stringify(data.state));

        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;
    }
}

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;
    }
}

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

function showSaveIndicator() {
    const indicator = document.getElementById('save-indicator');
    if (!indicator) return;

    indicator.classList.add('show');
    setTimeout(() => {
        indicator.classList.remove('show');
    }, 2000);

    if (typeof announceToSR === 'function') {
        announceToSR('Partida guardada automáticamente');
    }
}

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;
    }
}

function setupVisibilityAutoSave() {
    document.addEventListener('visibilitychange', () => {
        if (document.hidden && gameState && gameState.juegoIniciado && !gameState.juegoTerminado) {
            saveGame();
        }
    });

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