// Resistiré - Game Loop e Inicialización

function initGame() {
    if (typeof fontScaleSystem !== 'undefined') {
        fontScaleSystem.init();
    }

    const loaded = loadGame();

    if (loaded && gameState && gameState.juegoIniciado && !gameState.juegoTerminado) {
        console.log('Resistiré: continuando partida guardada');
        startGame(true);
    } else {
        showStartScreen();
        renderizarSeleccionPersonaje();
    }

    setupEventListeners();
    setupVisibilityAutoSave();
}

function renderizarSeleccionPersonaje() {
    const container = document.getElementById('character-list');
    if (!container) return;

    const personajes = getPersonajes();
    const seleccionado = getPersonajeSeleccionado();

    container.innerHTML = '';

    personajes.forEach(personaje => {
        const isSelected = personaje.id === seleccionado.id;

        const btn = document.createElement('button');
        btn.className = `character-option ${isSelected ? 'selected' : ''}`;
        btn.textContent = personaje.icono;
        btn.title = personaje.nombre;

        btn.addEventListener('click', () => {
            seleccionarPersonaje(personaje.id);
            renderizarSeleccionPersonaje();
            actualizarInfoPersonaje(personaje);
        });

        container.appendChild(btn);
    });

    actualizarInfoPersonaje(seleccionado);
}

function actualizarInfoPersonaje(personaje) {
    const iconEl = document.getElementById('selected-char-icon');
    const nameEl = document.getElementById('selected-char-name');
    const descEl = document.getElementById('selected-char-desc');
    const bonusEl = document.getElementById('selected-char-bonus');

    if (iconEl) iconEl.textContent = personaje.icono;
    if (nameEl) nameEl.textContent = personaje.nombre;
    if (descEl) descEl.textContent = personaje.descripcion;
    if (bonusEl) bonusEl.textContent = personaje.bonusTexto || '';
}

function startGame(fromSave = false) {
    if (!fromSave) {
        initGameState();
        gameState.juegoIniciado = true;
    }

    hideStartScreen();
    updateDisplay();

    if (!fromSave) {
        const evento = getEventoAleatorio(1);
        if (evento) {
            setTimeout(() => mostrarEvento(evento), 500);
        }
    }

    startAutoSave();
    calcularPuntuacion();
}

function setupEventListeners() {
    const startBtn = document.getElementById('start-btn');
    if (startBtn) {
        startBtn.addEventListener('click', () => startGame(false));
    }

    const advanceBtn = document.getElementById('advance-btn');
    if (advanceBtn) {
        advanceBtn.addEventListener('click', handleAdvanceDecade);
    }

    setupNavigation();
}

function handleAdvanceDecade() {
    if (!gameState) return;

    if (gameState.juegoTerminado) {
        mostrarFinJuego();
        return;
    }

    if (esUltimaDecada() && esUltimoAñoDecada()) {
        terminarJuego();
        return;
    }

    if (avanzarAño()) {
        if (gameState.añoIndex === 0) {
            mostrarFraseOla();
        } else {
            const periodo = getPeriodoAñoActual();
            if (periodo && periodo.nombre) {
                mostrarFraseAsesor(periodo.nombre);
            }
        }
        saveGame();
    }
}

document.addEventListener('DOMContentLoaded', () => {
    console.log('Resistiré inicializando...');
    initGame();
});
