// La Paguita - Minijuego: TikTok Viral (Yolanda)

(function () {
    const DURATION_S = 10;

    const CONTENIDO = [
        { emoji: '😭', texto: 'Lloro porque me discriminan', tipo: 'viral' },
        { emoji: '🥺', texto: 'Echo de menos Venezuela', tipo: 'viral' },
        { emoji: '😢', texto: 'No me dan las ayudas', tipo: 'viral' },
        { emoji: '💔', texto: 'España me rechaza', tipo: 'viral' },
        { emoji: '🤒', texto: 'Malita sin seguro médico', tipo: 'viral' },
        { emoji: '😿', texto: 'Mi hijo no puede ir al cole', tipo: 'viral' },
        { emoji: '🏚️', texto: 'Durmiendo en la calle', tipo: 'viral' },
        { emoji: '🤲', texto: 'Pidiendo ayuda a la cámara', tipo: 'viral' },
        { emoji: '😡', texto: 'Meme de política', tipo: 'neutral' },
        { emoji: '🐱', texto: 'Vídeo de gatitos', tipo: 'neutral' },
        { emoji: '💃', texto: 'Bailando reguetón', tipo: 'neutral' },
        { emoji: '🍳', texto: 'Receta de arepas', tipo: 'neutral' },
        { emoji: '🤡', texto: 'Criticar a otra influencer', tipo: 'malo' },
        { emoji: '🍺', texto: 'De fiesta con amigas', tipo: 'malo' },
        { emoji: '🛍️', texto: 'Haul de compras caro', tipo: 'malo' },
        { emoji: '🏎️', texto: 'Posando con coche ajeno', tipo: 'malo' },
        { emoji: '💸', texto: 'Enseñar fajos de billetes', tipo: 'malo' },
        { emoji: '🥂', texto: 'Brunch en restaurante caro', tipo: 'malo' },
    ];

    function shuffle(arr) {
        const a = [...arr];
        for (let i = a.length - 1; i > 0; i--) {
            const j = Math.floor(Math.random() * (i + 1));
            [a[i], a[j]] = [a[j], a[i]];
        }
        return a;
    }

    function init(area, contexto, onComplete) {
        let followers = 0;
        let posted = 0;
        let skipped = 0;
        let gameOver = false;
        let startTime = performance.now();
        let tickTimer = null;
        let deck = shuffle(CONTENIDO);
        let deckIndex = 0;

        area.innerHTML = `
            <div class="tiktok-score" id="tiktok-score">❤️ 0 seguidores</div>
            <div class="tiktok-card-area" id="tiktok-card-area">
                <div class="tiktok-card" id="tiktok-card">
                    <span class="tiktok-emoji" id="tiktok-emoji"></span>
                    <span class="tiktok-label" id="tiktok-label"></span>
                </div>
            </div>
            <div class="tiktok-controls">
                <button class="tiktok-btn-skip" id="tiktok-skip">👎 SKIP</button>
                <button class="tiktok-btn-post" id="tiktok-post">📱 SUBIR</button>
            </div>
        `;

        const scoreEl = document.getElementById('tiktok-score');
        const cardArea = document.getElementById('tiktok-card-area');
        const emojiEl = document.getElementById('tiktok-emoji');
        const labelEl = document.getElementById('tiktok-label');
        const skipBtn = document.getElementById('tiktok-skip');
        const postBtn = document.getElementById('tiktok-post');

        function nextCard() {
            if (gameOver) return;
            if (deckIndex >= deck.length) {
                deck = shuffle(CONTENIDO);
                deckIndex = 0;
            }
            const card = deck[deckIndex++];
            emojiEl.textContent = card.emoji;
            labelEl.textContent = card.texto;
            cardArea.dataset.tipo = card.tipo;

            // Slide in animation
            const cardEl = document.getElementById('tiktok-card');
            cardEl.classList.remove('slide-in');
            void cardEl.offsetWidth; // force reflow
            cardEl.classList.add('slide-in');
        }

        function handlePost() {
            if (gameOver) return;
            const tipo = cardArea.dataset.tipo;
            posted++;

            if (tipo === 'viral') followers += 15;
            else if (tipo === 'neutral') followers += 5;
            else followers -= 10;

            followers = Math.max(0, followers);
            scoreEl.textContent = `❤️ ${followers} seguidores`;

            // Flash feedback
            const flash = tipo === 'malo' ? 'flash-bad' : 'flash-good';
            cardArea.classList.add(flash);
            setTimeout(() => cardArea.classList.remove(flash), 200);

            nextCard();
        }

        function handleSkip() {
            if (gameOver) return;
            skipped++;
            nextCard();
        }

        function endGame() {
            if (gameOver) return;
            gameOver = true;
            clearInterval(tickTimer);
            document.removeEventListener('keydown', onKeyDown);

            skipBtn.disabled = true;
            postBtn.disabled = true;

            const personaje = getPersonajeActual();
            const papelesMulti = personaje && personaje.bonus ? personaje.bonus.papeles : 1;

            let papeles, alertaReduction;
            const perfecto = followers >= 80;

            if (followers >= 80) {
                papeles = Math.floor(2 * papelesMulti);
                alertaReduction = -15;
            } else if (followers >= 50) {
                papeles = Math.floor(1 * papelesMulti);
                alertaReduction = -10;
            } else if (followers >= 20) {
                papeles = 0;
                alertaReduction = -5;
            } else {
                papeles = 0;
                alertaReduction = 0;
            }

            const resultText = perfecto ? '🔥 ¡VIRAL!' : followers >= 20 ? '📱 Algo de alcance' : '😶 Nadie lo ha visto';
            labelEl.textContent = resultText;
            emojiEl.textContent = perfecto ? '🏆' : '📱';
            updateMinigameScore(`${followers} seguidores · ${posted} subidos`);

            setTimeout(() => {
                onComplete({
                    tipo: 'tiktok_viral',
                    followers: followers,
                    posted: posted,
                    skipped: skipped,
                    papeles: papeles,
                    alertaReduction: alertaReduction,
                    perfecto: perfecto,
                    contexto: contexto
                });
            }, 1200);
        }

        // Button clicks
        postBtn.addEventListener('click', (e) => { e.preventDefault(); handlePost(); });
        skipBtn.addEventListener('click', (e) => { e.preventDefault(); handleSkip(); });

        // Keyboard
        function onKeyDown(e) {
            if (e.key === 'ArrowRight' || e.key === 'd') { e.preventDefault(); handlePost(); }
            if (e.key === 'ArrowLeft' || e.key === 'a') { e.preventDefault(); handleSkip(); }
        }
        document.addEventListener('keydown', onKeyDown);

        // Timer
        tickTimer = setInterval(() => {
            if (gameOver) return;
            const elapsed = (performance.now() - startTime) / 1000;
            updateMinigameTimer(Math.max(0, DURATION_S - elapsed));
            if (elapsed >= DURATION_S) endGame();
        }, 200);

        // Start
        nextCard();
    }

    registrarMinijuego('tiktok_viral', init);
})();
