// --- SISTEMA DE PERSONAJE ANIMADO ---

let characterSprite = null;
let characterQuote = null;
let lastCharacterUpdate = 0;
let lastSpriteBase = null;
const CHARACTER_UPDATE_INTERVAL = 3000; // Actualizar frase cada 3 segundos

// Inicializar referencias DOM del personaje
function initCharacterRefs() {
    characterSprite = document.getElementById('character-sprite');
    characterQuote = document.getElementById('character-quote');
}

// Obtener posicion del partido elegido en el ranking (1-4)
function getPlayerPosition() {
    const sorted = Object.entries(partidos)
        .sort((a, b) => b[1].votos - a[1].votos);

    for (let i = 0; i < sorted.length; i++) {
        if (sorted[i][0] === partidoElegido) {
            return i + 1; // Posicion 1-4
        }
    }
    return 4; // Por defecto ultima posicion
}

// Mapear posicion a sprite (devuelve nombre base sin extension)
function getSpriteForPosition(position) {
    return `sprite_${partidoElegido}_${position}`;
}

// Obtener categoria de frases segun posicion
function getQuoteCategory(position) {
    switch (position) {
        case 1: return 'feliz';
        case 2: return 'neutral';
        case 3: return 'preocupado';
        case 4: return 'muyTriste';
        default: return 'neutral';
    }
}

// Obtener frase aleatoria segun posicion
function getRandomQuote(position) {
    const category = getQuoteCategory(position);
    const frases = frasesData[category];
    return frases[Math.floor(Math.random() * frases.length)];
}

// Actualizar el sprite del personaje
function setSprite(spriteBase) {
    if (characterSprite) {
        characterSprite.src = spriteBase + '.webp';
    }
}

// Actualizar sprite y frase del personaje
function updateCharacter() {
    if (!characterSprite || !characterQuote) {
        initCharacterRefs();
        if (!characterSprite || !characterQuote) return;
    }

    const now = Date.now();
    const position = getPlayerPosition();
    const spriteBase = getSpriteForPosition(position);

    // Actualizar sprite si cambia el partido o la posicion
    if (spriteBase !== lastSpriteBase) {
        setSprite(spriteBase);
        characterSprite.alt = `Personaje - Posicion ${position}`;
        lastSpriteBase = spriteBase;

        characterQuote.textContent = getRandomQuote(position);
        lastCharacterUpdate = now;
    }

    // Actualizar frase periodicamente (cada 3 segundos)
    if (now - lastCharacterUpdate >= CHARACTER_UPDATE_INTERVAL) {
        characterQuote.textContent = getRandomQuote(position);
        lastCharacterUpdate = now;
    }
}
