妖火论坛勋章全界面覆盖(紫薇版)

*://yaohuo.me/*

// ==UserScript==
// @name         妖火论坛勋章全界面覆盖(紫薇版)
// @namespace    https://yaohuo-me/
// @version      1.1
// @match        *://yaohuo.me/*
// @match        *://*.yaohuo.me/*
// @grant        none
// @license      MIT
// @description *://yaohuo.me/*
// ==/UserScript==

(function() {
    'use strict';

    // 全局的勋章数据集
    const premiumBadges = [
        {
            title: "F1跑车",
            src: "/XinZhang/upload/1000/1000_0700400.gif",
            animation: "f1-gentlespin"
        },
        {
            title: "超级金牌",
            src: "bbs/medal/%E4%B8%AD%E5%9B%BD%E5%88%B6%E9%80%A0.gif",
            animation: "gold-subtleglow"
        },
        {
            title: "财运来",
            src: "XinZhang/upload/1000/1000_1501480.gif",
            animation: "dragon-softpulse"
        },
        {
            title: "百万派币",
            src: "bbs/medal/%E7%99%BE%E4%B8%87%E6%B4%BE%E5%B8%81.gif",
            animation: "money-subtlevibrance"
        },
        {
            title: "屌",
            src: "/bbs/medal/%E5%B1%8C.gif",
            animation: "icon-softtwinkle"
        }
    ];

    // 创建动画样式
    const createStyles = () => {
        const styles = `
            @keyframes f1-gentlespin {
                0%, 100% { transform: rotateY(0deg); }
                50% { transform: rotateY(15deg); }
            }
            @keyframes gold-subtleglow {
                0%, 100% { filter: brightness(1); }
                50% { filter: brightness(1.2); }
            }
            @keyframes dragon-softpulse {
                0%, 100% { transform: scale(1); }
                50% { transform: scale(1.05); }
            }
            @keyframes money-subtlevibrance {
                0% { filter: hue-rotate(0deg); }
            100% { filter: hue-rotate(20deg); }
            }
            @keyframes icon-softtwinkle {
                0%, 100% { opacity: 1; }
                50% { opacity: 0.9; }
            }

            .compact-badge {
                width: 25px !important;
                height: 25px !important;
                margin: 0 1px !important;
                cursor: pointer;
                position: relative;
                transition: all 0.3s ease;
                object-fit: contain;
                display: inline-block !important;
                vertical-align: middle !important;
            }

            .compact-badge:hover {
                transform: scale(1.1);
                z-index: 100;
                transition: transform 0.3s ease;
            }
        `;

        const styleTag = document.createElement('style');
        styleTag.textContent = styles;
        document.head.appendChild(styleTag);
    };

    // 向指定容器插入勋章
    const insertBadgesToContainer = (container, badges) => {
        if (!container) return;

        // 创建勋章文档片段
        const fragment = document.createDocumentFragment();

        badges.forEach(badge => {
            const badgeElement = document.createElement('img');
            badgeElement.className = 'compact-badge';
            badgeElement.src = badge.src;
            badgeElement.alt = badge.title;
            badgeElement.title = badge.title;
            badgeElement.style.animation = `${badge.animation} 6s infinite linear`;

            fragment.appendChild(badgeElement);
        });

        // 批量插入到容器顶部
        container.insertBefore(fragment, container.firstChild);
    };

    // 初始化操作
    const init = () => {
        createStyles();

        // 同时增强两个区域的勋章展示效果
        const targets = [
            {
                selector: '.xunzhangtupian',  // 主帖勋章区
                badges: premiumBadges
            },
            {
                selector: '#medals span[name="mymedals"]',  // "我的勋章"区域
                badges: premiumBadges
            }
        ];

        targets.forEach(target => {
            const container = document.querySelector(target.selector);
            if (container) {
                insertBadgesToContainer(container, target.badges);
            }
        });

        // 添加点击效果
        document.addEventListener('click', function(e) {
            if (e.target.classList.contains('compact-badge')) {
                const badge = e.target;
                const originalAnim = badge.style.animation;
                badge.style.animation = 'none';

                setTimeout(() => {
                    badge.style.animation = originalAnim;
                }, 300);
            }
        });
    };

    // 页面加载完成后执行
    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', init);
    } else {
        init();
    }
})();