// Papeles Para Todos - UI de eventos especiales entre jornadas

// Decide si dispara un evento. Si lo dispara, muestra el modal y llama onClose al cerrarlo.
// Si no, llama onClose directamente.
function intentarDispararEvento(onClose) {
    if (!gameState) { onClose && onClose(); return; }

    // Probabilidad 60% a partir del día 2 en adelante (el día 1 nunca hay eventos)
    if (gameState.dia < 2 || Math.random() > 0.6) {
        onClose && onClose();
        return;
    }

    const evento = getEventoAleatorioElegible();
    if (!evento) { onClose && onClose(); return; }

    mostrarEvento(evento, onClose);
}

function mostrarEvento(evento, onClose) {
    const modal = document.getElementById('event-modal');
    const body = document.getElementById('event-body');
    if (!modal || !body) { onClose && onClose(); return; }

    const opcionesHtml = evento.opciones.map((op, i) => `
        <div class="event-option" data-index="${i}" role="button" tabindex="0">
            <div class="event-option-title">${op.texto}</div>
            <div class="event-option-effect">${op.descripcionEfecto}</div>
        </div>
    `).join('');

    body.innerHTML = `
        <div class="event-header">⚡ IMPREVISTO</div>
        <h2 class="event-title">${evento.titulo}</h2>
        <p class="event-description">${evento.descripcion}</p>
        <div class="event-options">${opcionesHtml}</div>
    `;

    modal.classList.add('active');
    audioSystem.playAlert();

    body.querySelectorAll('.event-option').forEach(el => {
        el.addEventListener('click', () => {
            const idx = parseInt(el.getAttribute('data-index'), 10);
            seleccionarOpcionEvento(evento, idx, onClose);
        });
    });
}

function seleccionarOpcionEvento(evento, opcionIndex, onClose) {
    const opcion = evento.opciones[opcionIndex];
    if (!opcion) return;

    aplicarEfectos(opcion.efecto);
    if (!gameState.eventosVistos) gameState.eventosVistos = [];
    gameState.eventosVistos.push(evento.id);

    updateDisplay();
    checkLogros();
    saveGame();
    audioSystem.playClick();

    const modal = document.getElementById('event-modal');
    if (modal) modal.classList.remove('active');

    // Si el evento provocó 3 strikes, termina el juego por despido
    if (gameState.strikes >= STRIKES_MAX) {
        setTimeout(() => terminarJuegoPorDespido(), 400);
        return;
    }

    if (typeof onClose === 'function') onClose();
}
