// Resistiré - Sistema de Tiempo (Olas y Semanas)

// Avanzar a la siguiente semana dentro de la ola
function avanzarAño() {
    if (!gameState || gameState.juegoTerminado) return false;

    const decada = getDecadaActual();
    if (!decada) return false;

    const maxAños = ESTRUCTURA_TEMPORAL.añosPorDecada;
    if (gameState.añoIndex >= maxAños - 1) {
        return avanzarDecada();
    }

    gameState.añoIndex++;
    gameState.accionesAño = 0;
    gameState.stats.añosJugados++;

    onNuevoAño();
    return true;
}

// Avanzar a la siguiente ola
function avanzarDecada() {
    if (!gameState || gameState.juegoTerminado) return false;

    if (gameState.decadaIndex >= DECADAS.length - 1) {
        terminarJuego();
        return false;
    }

    return finalizarAvanceDecada();
}

function finalizarAvanceDecada() {
    if (!gameState) return false;

    gameState.decadaIndex++;
    gameState.stats.decadasCompletadas++;
    gameState.añoIndex = 0;
    gameState.accionesAño = 0;

    const nuevaDecada = getDecadaActual();
    if (nuevaDecada) {
        onNuevaDecada(nuevaDecada);
    }

    return true;
}

function onNuevoAño() {
    const evento = getEventoAleatorio(getAnoActual());
    if (evento && !gameState.eventosVistos.includes(evento.id)) {
        gameState.eventosVistos.push(evento.id);
        mostrarEvento(evento);
    } else {
        updateDisplay();
    }
}

function onNuevaDecada(decada) {
    const evento = getEventoAleatorio(decada.year);
    if (evento && !gameState.eventosVistos.includes(evento.id)) {
        gameState.eventosVistos.push(evento.id);
        mostrarEvento(evento);
    }
    updateDisplay();
}

function terminarJuego() {
    if (!gameState) return;
    gameState.juegoTerminado = true;
    calcularPuntuacion();
    mostrarFinJuego();
}

function getProgresoAño() {
    if (!gameState) return 0;
    return (gameState.accionesAño / gameState.maxAccionesPorAño) * 100;
}

function getProgresoDecada() {
    if (!gameState) return 0;
    const añosCompletados = gameState.añoIndex;
    const progresoAño = gameState.accionesAño / gameState.maxAccionesPorAño;
    const totalAños = ESTRUCTURA_TEMPORAL.añosPorDecada;
    return ((añosCompletados + progresoAño) / totalAños) * 100;
}

function puedeAvanzarAño() {
    if (!gameState || gameState.juegoTerminado) return false;
    return gameState.accionesAño > 0 || (gameState.añoIndex === 0 && gameState.decadaIndex === 0);
}

function esUltimoAñoDecada() {
    if (!gameState) return false;
    return gameState.añoIndex >= ESTRUCTURA_TEMPORAL.añosPorDecada - 1;
}

function esUltimaDecada() {
    if (!gameState) return false;
    return gameState.decadaIndex >= DECADAS.length - 1;
}

function getAñosRestantesDecada() {
    if (!gameState) return 0;
    return ESTRUCTURA_TEMPORAL.añosPorDecada - gameState.añoIndex - 1;
}

function getDecadasRestantes() {
    if (!gameState) return 0;
    return DECADAS.length - gameState.decadaIndex - 1;
}
